Формальная верификация

Формальная верификация

Формальная верификацияформальное доказательство соответствия или несоответствия формального предмета верификации его формальному описанию. Предметом выступают алгоритмы, программы и другие доказательства.

Из-за рутинности даже простой формальной верификации и теоретической возможности их полной автоматизации под формальной верификацией обычно подразумевают автоматическую верификацию с помощью программы.

Содержание

Обоснование

Тестирование программного обеспечения не может доказать, что система, алгоритм или программа не содержит никаких ошибок и дефектов и удовлетворяет определённому свойству. Это может сделать формальная верификация.

Области применения

Формальная верификация может использоваться для проверки таких систем, как программное обеспечение, представленное в виде исходных текстов, криптографические протоколы, комбинаторные логические схемы, цифровые схемы с внутренней памятью.

Теоретические основы

Верификация представляет собой формальное доказательство на абстрактной математической модели системы, в предположении о том, что соответствие между математической моделью и природой системы считается изначально заданным. Например, по построению модели либо математического анализа и доказательства правильности алгоритмов и программ.

Примерами математических объектов, часто используемых для моделирования и формальной верификации программ и систем являются:

  • формальная семантика языков программирования, например операционная семантика, денотационная семантика, аксиоматическая семантика (логика Хоара), [математическая семантика программ].
  • конечный автомат
  • помеченная модель состояний и переходов
  • сеть Петри
  • временной автомат
  • гибридный автомат
  • исчисление процессов
  • структурированные алгоритмы
  • структурированные программы

Подходы к формальной верификации

Существуют следующие подходы к формальной верификации:

  • формальная семантика языков программирования
  • проверка моделей (model checking)
  • логический вывод (logical inference)
  • cимвольное выполнение (symbolic execution)
  • абстрактная интерпретация (abstract interpretation)
  • систематический анализ алгоритмов и программ
  • технологии доказательного программирования

Доказательное программирование

Доказательное программирование — использовавшаяся в 1980-х годах в академических кругах технология разработки программ для ЭВМ с доказательствами правильности — доказательствами отсутствия ошибок в программах (понимая, в рамках данной теории, ошибки как несоответствия между программой и реализуемым ею алгоритмом).

Автоматическая проверка доказательства

Доказательство может быть автоматизировано полностью лишь для очень небольшого круга простых теорий, поэтому важное значение получает его автоматическая проверка и для этого преобразование к проверяемому виду.

Для поддержания строгости при проверке доказательства верификатором следует проверить ещё и верификатор, для чего нужен ещё один верификатор и так далее. Получившуюся бесконечную цепь верификаторов можно было бы свернуть, построив верифицирующий себя верификатор, обладающий способностью развернуться до применимого на практике.

См. также

Литература

  • П.Грогоно, Программирование на языке Pascal, М.:Мир, 1982, с.295, (Тестирование и верификация).



Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Формальная верификация" в других словарях:

  • Верификация — Позитивизм …   Википедия

  • верификация и аудит — (ITIL Service Transition) Виды деятельности, отвечающие за обеспечение точности информации в системе управления конфигурациями, а также за то, что все конфигурационные единицы определены и записаны. Верификация включает в себя регламентированные… …   Справочник технического переводчика

  • Формальная спецификация — В информатике формальная спецификация  это математическое описание программной или аппаратной системы, которая может быть реализована в соответствии с этим описанием. Специфицируется, что должна делать система, но не то, как она должна это… …   Википедия

  • Верифицируемость — В различных сферах деятельности человека под верификацией могут подразумеваться немного различные вещи. Например: Верификация (от лат. verus  истинный, facere  делать)  это подтверждение соответствия конечного продукта предопределённым эталонным… …   Википедия

  • Доказуемость — В различных сферах деятельности человека под верификацией могут подразумеваться немного различные вещи. Например: Верификация (от лат. verus  истинный, facere  делать)  это подтверждение соответствия конечного продукта предопределённым эталонным… …   Википедия

  • Проверяемость — В различных сферах деятельности человека под верификацией могут подразумеваться немного различные вещи. Например: Верификация (от лат. verus  истинный, facere  делать)  это подтверждение соответствия конечного продукта предопределённым эталонным… …   Википедия

  • Cadence Design Systems — Тип …   Википедия

  • Статический анализ кода — (англ. static code analysis)  анализ программного обеспечения, производимый без реального выполнения исследуемых программ (анализ, производимый с выполнением программ, называется динамический анализ кода). В большинстве случаев анализ… …   Википедия

  • Логика Хоара — (англ. Hoare logic, также Floyd Hoare logic, или Hoare rules)  формальная система с набором логических правил, предназначенных для доказательства корректности компьютерных программ. Была предложена в 1969 году английским учёным в… …   Википедия

  • Cleanroom Software Engineering — Разработка программного обеспечения Процесс разработки ПО Шаги процесса Анализ • Проектирование • Программирование • Докумен …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»