Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7.2.docx
Скачиваний:
4
Добавлен:
12.09.2019
Размер:
119.46 Кб
Скачать
    1. Основные проблемы доказательства корректности программ

Недостатки [28]:

  1. Программы, правильность которых доказана, могут содержать ошибки, так как правильность доказывается только по отношению ко входным и выходным утверждениям. Если выходное утверждение неправильно или неполно, то в принципе может быть доказана правильность, и ошибки в общем останутся необнаруженными.

  2. Входное утверждение описывает исходные предположения и среду, в которой работает программа, но нет гарантий, что они будут справедливы в момент выполнения программы.

  3. Само доказательство может быть неправильным, так как легко допустить ошибку в его процессе.

  4. Ограничения реальных аппаратно-программных средств обычно не учитываются при доказательстве.

  5. Ошибки в сопряжении между модулями (порядок следования фактических параметров не соответствует порядку следования формальных параметров) обычно не обнаруживаются при доказательстве.

  6. Доказательство правильности нечисленных программ гораздо сложнее численных программ, реализующих какие-то алгоритмы.

Достоинства:

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

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

    1. Проблема автоматизации верификации программ

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

Проблемы [28]:

  1. Генератор условий верификаций должен уметь манипулировать логическими верификациями, упрощать их, интерпретировать в операторы программы. Самая сложная задача - снабдить систему необходимыми аксиомами, для этого должны быть описаны все детали синтаксиса и семантики.

  2. Связана с системой доказательств. Относится к области ИИ, т.к. человек при доказательстве теорем использует дедуктивные приемы рассуждений.

Процесс доказательства слишком трудоемок, так как велико число аксиом. Полностью автоматизированная система доказательства правильности программ - недостижимая цель. Реальный путь достижения процесса автоматизации доказательства - доказательство правильности в диалоговом режиме с системой правильности доказательств:

пользователь в процессе диалога может предоставить дополнительную информацию или направить рассуждения по другому пути.

В настоящее время используются автоматизированные системы проверки доказательства.

Если данной системе сообщить шаги доказательства, выполненного человеком, то система проверяет соответствие каждого шага известным ей правилам вывода.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]