Контроль программного модуля.

Применяются следующие методы контроля программного модуля:

· статическая проверка текста модуля;

· сквозное прослеживание;

· доказательство свойств программного модуля.

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

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

Доказательству свойств программ посвящена следующая лекция. Здесь следует лишь отметить, что этот метод применяется пока очень редко.

Структурное программирование — методология разработки и проектирования программного обеспечения, в основе которой лежит представление и структуризация программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом и Харланом Милзом. Технология структурного программирования и проектирования в 80-ых годах ХХ века была описана в школьных и вузовских учебниках информатики А.П.Ершова, В.А.Каймина и А.Г.Кушниренко.

Структурный подход к разработке программного обеспечения имеет два подхода: 1) использование языков струrтурного программирования (языки Pascal, C, Ada, Modula, Java и т.д.), 2) структурное проектирование программ с использованием структурированных алгоритмов, записываемых на структурном псевдокоде с использованием лексики родного (русского языка) для документирования всего комплекса программ, предложенного Харланом Миллзом (IBM,1972) и В.А.Кайминым (МИЭМ,1978-1983)

В соответствии с данной методологией

1. Структурированная программа (структурированный алгоритм) представляет собой структуру, построенную из трёх типов базовых конструкций:

· последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы (алгоритма);

· альтернативное исполнение — однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторых заданных условий;

· цикл — многократное исполнение одной и той же операции вплоть до выполнення некоторых заданных условий (условий продолжения либо завершения цикла).

В современных языках программирования "ветвления" допускают несколько альтернативных операций, а в "циклах" - несколько условий выхода с различными условиями выхода из цикла. Структурный псевдокод в силу его гибкости допускает многоальтернативные ветвления и циклы, используемые в наиболее современных языках программирования, для которых В.А.Кайминым были предложены оригинальные процедуры верификации и анализа правильности алгоритмов, изложенные с самого начала в учебниках информатики (1985, 1989,1994, 199 и во всех остальных переизданиях).

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

2. Повторяющиеся фрагменты программы (представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм (процедур,функций или модулей). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. При выполнении такой инструкции выполняется вызванная подпрограмма, после чего исполнение программы продолжается с инструкции, следующей за командой вызова подпрограммы.

3. Разработка структурированных программ ведётся пошагово, методом «сверху вниз».

Структурное проектирование программ означает, что сначала пишется текст основной программы, в котором, вместо каждого связного логического фрагмента текста, вставляется вызов подпрограммы, которая будет выполнять этот фрагмент. Вместо настоящих, работающих подпрограмм, в программу вставляются «заглушки», которые ничего не делают. Полученная программа проверяется и отлаживается. После того, как программист убедится, что подпрограммы вызываются в правильной последовательности (то есть общая структура программы верна), подпрограммы-заглушки последовательно заменяются на реально работающие, причём разработка каждой подпрограммы ведётся тем же методом, что и основной программы.

Разработка заканчивается не тогда, когда не останется ни одной «затычки», которая не была бы удалена, а когда протестирован каждый модуль, функция и подпрограмма. Тестирование и разработку программ можно вести как "сверху-вниз" так и "снизу-вверх" от автономной к комплексной отладке.

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