Автоматизация верификации программ
Творческая работа, 01 Июня 2013, автор: пользователь скрыл имя
Описание работы
Верификация программ – метод установления правильности программ при помощи строгих средств.
При этом программа будет считаться правильной, если решит поставленную задачу.
В основе метода верификации лежит предположение о том, что существует некоторая программная документация, соответствие которой нужно доказать.
Верификация программ - трудоемкий процесс, и его целесообразно автоматизировать. Проблемы корректности программы алгоритмически неразрешимы, поэтому не следует рассчитывать на полную автоматизацию.
Файлы: 1 файл
Автоматизация верификации программ.ppt
— 2.10 Мб (Скачать файл)- Верификация программ – метод установления правильности программ при помощи строгих средств.
- При этом программа будет считаться правильной, если решит поставленную задачу.
- В основе метода верификации лежит предположение о том, что существует некоторая программная документация, соответствие которой нужно доказать.
- Верификация программ - трудоемкий процесс, и его целесообразно автоматизи
ровать. Проблемы корректности программ ы алгоритмически неразрешимы, поэтому не следует рассчитыват ь на полную автоматизацию.
Нельзя автоматизировать:
- процесс аннотирования программы
- доказательство истинности условий верификации.
- Синтез инвариантов циклов можно автоматизировать, однако на практике этого не делают из-за ограниченности разработанных методов. Генерацию условий верификации можно выполнять автоматически.
- В связи с этим применение комп
ьютеров для верификации програ мм в настоящее время идет преи мущественно по пути создания а втоматизированных систем вериф икации, предусматривающих диалог с пол ьзователем на некоторых этапах работы. Такие программы также называют верификаторами.
- На вход системы поступает подг
отовленная пользователем аннот ированная программа. В ней предусмотрены формулы ло гического языка спецификации д ля входного и выходного услови й программы, а также инвариант для каждого цикла.
- В ходе анализа программы выпол
няется контроль лексической и синтаксической правильности ан нотированной программы подобно тому, как это делается в транслятора х. Затем программа переводится на промежуточный язык, в качестве которого обычно исп ользуется одна из форм бесскоб очной записи. Анализ аннотированной программ ы выполняется автоматически.
- Генерация условий верификации
основана на применении аксиома тической системы используемого языка программирования и такж е осуществляется без участия п ользователя.
Аксиоматической системой назыв
- Имеются два альтернативных алг
оритма генерации условий вериф икации: - алгоритм прямого прослеживания;
- алгоритм обратного прослеживания.
- Алгоритм прямого прослеживания строит формулы условий, просматривая программу от начала к концу. При этом в соответствии с семантикой операторов программы их предусловия преобразуются в постусловия.
- Обратное прослеживание происходит от конца программы к ее началу и предполагает последовательное преобразование постусловий операторов в их предусловия. Естественно, правила вывода, образующие аксиоматическую систему одного и того же языка программирования, будут различны для разных алгоритмов прослеживания.
- При доказательстве условий вер
ификации могут выполняться нек оторые эквивалентные преобразо вания и упрощения условий вери фикации. Например, арифметические и логические вы ражения приводятся к каноничес кой форме, определенные части выражений з амещаются логическими констант ами и т.д.
- Каноническая форма арифметичес
кого выражения - это упорядоченная сумма произведений. Логическое выражение представляется как последовательность конъюнкций более простых выражений, не содержащих других логических операций, кроме отрицания. В некоторых случаях элементарные упрощения позволяют убедиться в истинности отдельных условий верификации.
Результаты доказательства усло
- Все условия верификации истинны. Работа завершается.
- Доказательство отдельных условий верификации не завершено. Такие условия возвращаются на доказательство с применением дополнительной информации (аксиом пользователя), вводимой пользователем в ходе работы верификатора.
- Среди условий верификации обна
ружены ложные. В этом случае ошибки могут быть как в спецификации программы, так и в операторах самой программы, причем формально разделить эти ситуации невозможно. Пользователь может выполнить модификацию аннотированной программы и повторить всю процедуру ее обработки.
- Принятие окончательных решений
в ходе анализа верификатором результатов доказательства воз лагается на пользователя.