Формальная верификация
Формальная верификация или формальное доказательство — формальное доказательство соответствия или несоответствия предмета верификации его формальному описанию. Предметом выступают алгоритмы, программы и другие доказательства.
Из-за рутинности даже простой формальной верификации и теоретической возможности их полной автоматизации под формальной верификацией обычно подразумевают автоматическую верификацию с помощью программы.
Обоснование
Тестирование программного обеспечения не может доказать, что система, алгоритм или программа не содержит никаких ошибок и дефектов и удовлетворяет определённому свойству. Это может сделать формальная верификация.
Области применения
Формальная верификация может использоваться для проверки таких систем, как программное обеспечение, представленное в виде исходных текстов, криптографические протоколы, комбинаторные логические схемы, цифровые схемы с внутренней памятью.
Теоретические основы
Верификация представляет собой формальное доказательство на абстрактной математической модели системы, в предположении о том, что соответствие между математической моделью и природой системы считается изначально заданным. Например, по построению модели либо математического анализа и доказательства правильности алгоритмов и программ.
Примерами математических объектов, часто используемых для моделирования и формальной верификации программ и систем являются:
- формальная семантика языков программирования, например [англ.], [англ.], [англ.] (логика Хоара),
- теории и системы типов — в первую очередь, системы с зависимыми типами (см. лямбда-куб)
- логика разделения (расширение логики Хоара)
- конечный автомат
- помеченная
- сеть Петри
- исчисление процессов
Подходы к формальной верификации
Существуют следующие подходы к формальной верификации:
- формальная семантика языков программирования
- написание программ, которые верны по построению (см. зависимый тип, лямбда-куб, [англ.])
- проверка моделей (model checking)
- логический вывод (logical inference)
- [англ.]
- [англ.]
- систематический анализ алгоритмов и программ
- технологии доказательного программирования
Доказательное программирование
Доказательное программирование — использовавшаяся в 1980-х годах в академических кругах технология разработки программ для ЭВМ с доказательствами правильности — доказательствами отсутствия ошибок в программах (понимая, в рамках данной теории, ошибки как несоответствия между задуманным алгоритмом и фактическим алгоритмом, реализуемым программой).
Автоматическая проверка доказательства
Доказательство может быть автоматизировано полностью лишь для очень небольшого круга простых теорий, поэтому важное значение получает его автоматическая проверка и для этого преобразование к проверяемому виду. [источник не указан 1615 дней] Значительное количество практически важных задач, в том числе, например, задача остановки, является алгоритмически неразрешимыми.
Для поддержания строгости при проверке доказательства верификатором следует проверить ещё и верификатор, для чего нужен ещё один верификатор и так далее. Получившуюся бесконечную цепь верификаторов можно было бы свернуть, построив верифицирующий себя верификатор, обладающий способностью развернуться до применимого на практике. [источник не указан 1615 дней]
Примеры интерактивного доказательства
Код аутентификации HMAC от OpenSSL из 134 строк на языке C был верифицирован с использованием 2832 строк на Coq.
Еще одним примером является файловая система FSCQ. Код и его верификация выполнялись на Coq, занимая 31 тысяч строк доказательства и кода в сумме. Для сравнения, непроверенная файловая система написана на C и занимает всего 3 тысяч строк. Несмотря на то что первоначальные работы, включая создание логического каркаса для Coq, требовали нескольких человеко-лет, эксперименты выявили поэтапное снижение стоимости при внесении изменений в код и доказательство.
См. также
- Формальная верификация криптографических протоколов
- Контрактное программирование
- Логика Хоара
- Тестирование программного обеспечения
- (англ. Language-based security)
Литература
- А. М. Миронов. Методы верификации программ.
- А. С. Камкин. Введение в формальные методы верификации программ: учебное пособие.
- Lathouwers, Sophie; Zaytsev, Vadim (2022). Modelling Program Verification Tools for Software Engineers. Proceedings of the 25th International Conference on Model Driven Engineering Languages and Systems. MODELS '22. Montreal, Quebec, Canada: Association for Computing Machinery. pp. 98–108. doi:10.1145/3550355.3552426. ISBN 9781450394666.
Примечания
- O'Hearn, Peter (2019). Separation logic. Commun. ACM. 62 (2). Association for Computing Machinery: 86–95. doi:10.1145/3211968. ISSN 0001-0782.
Ссылки
- Sophie Lathouwers, Vadim Zaytsev. ProVerB: Program Verification Book (англ.). (один из вариантов классификации и большой список средств формальной верификации)
Для улучшения этой статьи желательно: |
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Формальная верификация, Что такое Формальная верификация? Что означает Формальная верификация?
Formalnaya verifikaciya ili formalnoe dokazatelstvo formalnoe dokazatelstvo sootvetstviya ili nesootvetstviya predmeta verifikacii ego formalnomu opisaniyu Predmetom vystupayut algoritmy programmy i drugie dokazatelstva Iz za rutinnosti dazhe prostoj formalnoj verifikacii i teoreticheskoj vozmozhnosti ih polnoj avtomatizacii pod formalnoj verifikaciej obychno podrazumevayut avtomaticheskuyu verifikaciyu s pomoshyu programmy ObosnovanieTestirovanie programmnogo obespecheniya ne mozhet dokazat chto sistema algoritm ili programma ne soderzhit nikakih oshibok i defektov i udovletvoryaet opredelyonnomu svojstvu Eto mozhet sdelat formalnaya verifikaciya Oblasti primeneniyaFormalnaya verifikaciya mozhet ispolzovatsya dlya proverki takih sistem kak programmnoe obespechenie predstavlennoe v vide ishodnyh tekstov kriptograficheskie protokoly kombinatornye logicheskie shemy cifrovye shemy s vnutrennej pamyatyu Teoreticheskie osnovyVerifikaciya predstavlyaet soboj formalnoe dokazatelstvo na abstraktnoj matematicheskoj modeli sistemy v predpolozhenii o tom chto sootvetstvie mezhdu matematicheskoj modelyu i prirodoj sistemy schitaetsya iznachalno zadannym Naprimer po postroeniyu modeli libo matematicheskogo analiza i dokazatelstva pravilnosti algoritmov i programm Primerami matematicheskih obektov chasto ispolzuemyh dlya modelirovaniya i formalnoj verifikacii programm i sistem yavlyayutsya formalnaya semantika yazykov programmirovaniya naprimer angl angl angl logika Hoara teorii i sistemy tipov v pervuyu ochered sistemy s zavisimymi tipami sm lyambda kub logika razdeleniya rasshirenie logiki Hoara konechnyj avtomat pomechennaya set Petri ischislenie processovPodhody k formalnoj verifikaciiSushestvuyut sleduyushie podhody k formalnoj verifikacii formalnaya semantika yazykov programmirovaniya napisanie programm kotorye verny po postroeniyu sm zavisimyj tip lyambda kub angl proverka modelej model checking logicheskij vyvod logical inference angl angl sistematicheskij analiz algoritmov i programm tehnologii dokazatelnogo programmirovaniyaDokazatelnoe programmirovanieDokazatelnoe programmirovanie ispolzovavshayasya v 1980 h godah v akademicheskih krugah tehnologiya razrabotki programm dlya EVM s dokazatelstvami pravilnosti dokazatelstvami otsutstviya oshibok v programmah ponimaya v ramkah dannoj teorii oshibki kak nesootvetstviya mezhdu zadumannym algoritmom i fakticheskim algoritmom realizuemym programmoj Avtomaticheskaya proverka dokazatelstvaDokazatelstvo mozhet byt avtomatizirovano polnostyu lish dlya ochen nebolshogo kruga prostyh teorij poetomu vazhnoe znachenie poluchaet ego avtomaticheskaya proverka i dlya etogo preobrazovanie k proveryaemomu vidu istochnik ne ukazan 1615 dnej Znachitelnoe kolichestvo prakticheski vazhnyh zadach v tom chisle naprimer zadacha ostanovki yavlyaetsya algoritmicheski nerazreshimymi Dlya podderzhaniya strogosti pri proverke dokazatelstva verifikatorom sleduet proverit eshyo i verifikator dlya chego nuzhen eshyo odin verifikator i tak dalee Poluchivshuyusya beskonechnuyu cep verifikatorov mozhno bylo by svernut postroiv verificiruyushij sebya verifikator obladayushij sposobnostyu razvernutsya do primenimogo na praktike istochnik ne ukazan 1615 dnej Primery interaktivnogo dokazatelstvaKod autentifikacii HMAC ot OpenSSL iz 134 strok na yazyke C byl verificirovan s ispolzovaniem 2832 strok na Coq Eshe odnim primerom yavlyaetsya fajlovaya sistema FSCQ Kod i ego verifikaciya vypolnyalis na Coq zanimaya 31 tysyach strok dokazatelstva i koda v summe Dlya sravneniya neproverennaya fajlovaya sistema napisana na C i zanimaet vsego 3 tysyach strok Nesmotrya na to chto pervonachalnye raboty vklyuchaya sozdanie logicheskogo karkasa dlya Coq trebovali neskolkih cheloveko let eksperimenty vyyavili poetapnoe snizhenie stoimosti pri vnesenii izmenenij v kod i dokazatelstvo Sm takzheFormalnaya verifikaciya kriptograficheskih protokolov Kontraktnoe programmirovanie Logika Hoara Testirovanie programmnogo obespecheniya angl Language based security LiteraturaA M Mironov Metody verifikacii programm neopr A S Kamkin Vvedenie v formalnye metody verifikacii programm uchebnoe posobie neopr Lathouwers Sophie Zaytsev Vadim 2022 Modelling Program Verification Tools for Software Engineers Proceedings of the 25th International Conference on Model Driven Engineering Languages and Systems MODELS 22 Montreal Quebec Canada Association for Computing Machinery pp 98 108 doi 10 1145 3550355 3552426 ISBN 9781450394666 PrimechaniyaO Hearn Peter 2019 Separation logic Commun ACM 62 2 Association for Computing Machinery 86 95 doi 10 1145 3211968 ISSN 0001 0782 SsylkiSophie Lathouwers Vadim Zaytsev ProVerB Program Verification Book angl odin iz variantov klassifikacii i bolshoj spisok sredstv formalnoj verifikacii Dlya uluchsheniya etoj stati zhelatelno Najti i oformit v vide snosok ssylki na nezavisimye avtoritetnye istochniki podtverzhdayushie napisannoe Oformit statyu po pravilam Pozhalujsta posle ispravleniya problemy isklyuchite eyo iz spiska parametrov Posle ustraneniya vseh nedostatkov etot shablon mozhet byt udalyon lyubym uchastnikom
