Формальная верификация: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 1: Строка 1:
В контексте программных и аппаратных систем формальная верификация — доказательство с помощью [[формальные методы|формальных методов]] корректности или некорректности (правильности или неправильности) алгоритмов, программ и систем в соответствии с формальным описанием их свойств.
{{орисс}}
В контексте аппаратный и программных систем формальная верификация — доказательство с помощью [[формальные методы|формальных методов]] правильности или неправильности алгоритмов, программ и системы в соответствии с формальным описанием их свойств.


== Обоснование ==
== Обоснование ==


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


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


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


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


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


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


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


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


* формальная семантика языков программирования
* [[проверка моделей]] (model checking)
* [[проверка моделей]] (model checking)
* [[логический вывод]] (logical inference)
* [[логический вывод]] (logical inference)
Строка 41: Строка 38:


==См. также==
==См. также==

* [[Тестирование программного обеспечения]]
* [[Тестирование программного обеспечения]]
* [[Контрактное программирование]]
* [[Контрактное программирование]]
Строка 48: Строка 46:


[[Категория:Математическая логика]]
[[Категория:Математическая логика]]
[[Категория:Информатика]]


[[cs:Formální verifikace]]
[[cs:Formální verifikace]]

Версия от 14:34, 21 марта 2009

В контексте программных и аппаратных систем формальная верификация — доказательство с помощью формальных методов корректности или некорректности (правильности или неправильности) алгоритмов, программ и систем в соответствии с формальным описанием их свойств.

Обоснование

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

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

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

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

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

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

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

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

См. также