Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PGTU / 5 семестр / Надежность / Nadezhnost_4-ya_redaktsia.doc
Скачиваний:
336
Добавлен:
29.03.2015
Размер:
12.07 Mб
Скачать

Пошаговая детализация

Структурное программирование до сих пор было у нас представлено как свойство или оценка окончательного текста программы. Необходимо добавить еще один ключевой элемент: методологию, или особенности мыслительного процесса, управляющего проектированием модуля для по­лучения структурной программы. Этот мыслительный процесс, который мы будем сейчас рассматривать, называется пошаговой детализацией [1].

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

Для иллюстрации этого процесса применим его для разработки фрагмента программы имитирующую передачу отсчетов по каналу связи для определения вероятностных и статистических характеристик. Исход­ная формулировка такова:

(обнуление счетчиков)

While(не достигли максимального числа переданных сообщений)do

Begin

If(вес вектора ошибки меньше кратности исправляемой ошибки)

Then (передача отсчета произошла без искажения, увеличиваем на единицу счетчик правильных передач);

If (вес вектора ошибки больше кратности исправляемой ошибки)

Then (при передаче сообщения произошла ошибка, и поскольку она не была исправлена при декодировании на приемной стороне, уве­личиваем на единицу счетчик трансформаций);

Увеличиваем счетчик переданных сообщений:

End;

Очевидно, это первоначальная формулировка выражена на языке, уровень которого существенно выше уровня выбранного нами языка про­граммирования. Следующий шаг состоит в ее детализации. Для этого рас­кроем содержимое условного оператора ifиwhile:

(обнуление счетчиков)

While N<100000 do

Begin

If (e<=s)

Then (передача отсчета произошла без искажения, увеличиваем на единицу счетчик правильных передач);

If (e>s)

Then (при передаче сообщения произошла ошибка, поэтому она была исправлена при декодировании на приемной стороне, уве­личиваем на единицу счетчики правильных передач и исправленных ошибок);

N=N+1;

End;

В качестве третьего шага расшифруем последовательность действий при выполнении условия:

(обнуление счетчиков)

While N<100000 do

Begin

If (e<=s)

Then Cpr=Cpr+1;

If (e>s)

Then Ctrns=CTrns+1;

N=N+1;

End;

Последним шагом расшифруем обнуление всех счетчиков исполь­зуемых в блоке программы:

N:=0;

Cpr:=0;

Ctrns:=0;

D:=0;

While N<100000 do

Begin

If (e<=s)

Then Cpr=Cpr+1;

If (e>s)

Then Ctrns=Ctrns+1;

N=N+1;

End;

Достоинство пошаговой детализации состоит в том, что она позво­ляет проектировщику упорядочить свои рассуждения. Альтернативный подход – попытка написать окончательный текст модуля за один шаг – го­раздо более сложен и чреват ошибками. Шаги детализации программы – не академические и теоретические рассуждения, а в точности тот метод, ко­торым разрабатывалась данная программа.

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

Соседние файлы в папке Надежность