Автор работы: Пользователь скрыл имя, 19 Декабря 2011 в 17:53, реферат
В соответствии с Доктриной информационной безопасности Российской Федерации, утвержденной Президентом Российской Федерации 9 сентября 2000 года № Пр-1895, одна из составляющих национальных интересов Российской Федерации в информационной сфере включает в себя «развитие современных информационных технологий, отечественной индустрии информации, в том числе индустрии средств информатизации, телекоммуникации и связи, обеспечение потребностей внутреннего рынка ее продукцией и выход этой продукции на мировой рынок, а также обеспечение накопления, сохранности и эффективного использования отечественных информационных ресурсов».
if B → SL1 □ non B → SL2 endif,
где один из операторов SLi может состоять из оператора пропустить. Поскольку оператор условного ветвления состоит из элементарных операторов условного ветвления, то для его исследования достаточно провести анализ элементарного оператора условного ветвления.
Рассмотрим охраны оператора элементарного условного ветвления. Очевидно, что ситуация, когда у оператора подобного типа BB = "false" невозможна, поскольку
BB = B or non B = "true"
по определению
оператора элементарного
Другим
свойством оператора
Синтаксическая запись обобщенного оператора цикла определяется следующим образом:
while B1 → SL1 □ B2 → SL2 □ ... □ Bn → SLn endwhile
Неформальное описание новой определяемой конструкции, называемой while-endwhile таково: после запуска проверяются все предохранители. Если нет ни одного истинного значения предохранителя, то работа завершается. Если же имеются предохранители с истинными значениями, то один из соответствующих списков операторов запускается, а после его завершения реализация снова начинает общую проверку всех предохранителей. Отметим, что после срабатывания оператора некоторые предохранители, бывшие ложными, могут стать истинными (и наоборот).
Для
устранения недетерминированности, в
целях дальнейшего
Очевидно, что такой конструкцией цикла является цикл с одним охраняемым списком операторов:
while B → SL endwhile.
Если значение B истинно всегда, тело цикла SL повторяется бесконечно и цикл никогда не завершится. Следовательно, результат выполнения цикла с условием продолжения определен, если:
Для доказательства корректности программы, записанной на формальном языке, (верификация) формулируется математическая теорема Q {S} R, которая затем доказывается. Доказательство теоремы о корректности принято разбивать на две части. Одна часть служит для доказательства того, что рассматриваемый алгоритм вообще может завершить работу (проводится анализ всех циклов). В другой части доказывается корректность постусловия в предположении, что алгоритм завершает работу.
Чтобы понять как происходит доказательство корректности, рассмотрим небольшой пример.
Пусть необходимо проверить правильность утверждения:
{10<y<x+N and 0≤x<13} x := x-5 {10<y and x<8}
Здесь отметитим, что форма записи a≤b<c не что иное, как сокращенная запись выражения (a≤b and b<c). Поэтому приведенное утверждение эквивалентно следующему:
{10<y and y<x+N and 0≤x and x<13} x := x-5 {10<y and x<8}
Для того, чтобы получить предусловие оператора присваивания относительно его постусловия, заменим в постусловии переменную x на выражение, задаваемое оператором присваивания, т.е. на x-5. После выполнения данного шага надо показать, что
{10<y and y<x+N and 0≤x and x<13} → {10<y and x-5<8}.
Данное выражение эквивалентно следующему выражению
{10<y and y<x+N and 0≤x and x<13} → {10<y and x<13},
в котором заданное предусловие (левая часть импликации) сильнее полученного предусловия (правая часть импликации). Т.о. полученная импликация является истинной, а значит наш алгоритм, состоящий из одного оператора присваивания, корректен относительно заданных пред- и постусловий.■
Будем надеется, что тривиальность данного примера никого не ввела в заблуждение. Доказательство корректности более сложных программ, содержащих циклы и операторы условного ветвления, существенно превосходит по сложности доказательство корректности одного оператора присваивания.
С
другой стороны, может возникнуть вопрос,
а зачем вообще использовать доказательство
корректности алгоритмов и программ,
если они настолько трудоемки
и требуют соответствующей
Литература
Информация о работе Основные подходы к обеспечению качества программного обеспечения