Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TRPP_gotovoe.doc
Скачиваний:
4
Добавлен:
11.11.2019
Размер:
769.02 Кб
Скачать

Верификация программ.

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

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

Верификация – идея математического доказательства корректности программ.

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

Наиболее известный метод называется методом индуктивных утверждений.

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

Если они оказываются истинными, то программа корректна относительно входных и выходных данных.

Если доказать истинность условий невозможно, то либо в программе есть ошибки, либо ошибки есть в процедуре доказательства (например, неверное утверждение в некоторой точке разреза).

Если программист хочет написать правильную программу, ему необходимо выполнить следующие этапы:

  1. написать программу;

  2. определить входные и выходные условия для этой программы;

  3. разрезать циклы и снабдить каждую точку разреза индуктивным утверждением;

  4. получить верификационные условия;

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

Очевидно, что методы верификации найдут широкое применение в практике в том случае, если удастся их формировать настолько явно, что можно будет осуществлять верификацию программ с помощью ЭВМ.

Выводы:

  1. Использование в практике программирования систем доказательства правильности программ эффективно лишь при помощи ЭВМ.

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

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

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