Нисходящее проектирование

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

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

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

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

3. Тестируется вся система в целом.

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

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

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

Техника нисходящего проектирования может быть использована при создании упоминавшихся ранее цифровых весов:

1. Разрабатывается общая блок-схема (рис. 6.4), в которой пока не предусмотрена возможность возникновения ошибок.

Программа в первоначальном варианте просто обращается к подпрограмме ввода информации от АЦП (программная заглушка) и, если введенные данные не равны нулю, обращается к другим подпрограммам (программные заглушки), а затем вновь возвращается к вводу данных через АЦП.

2. Детализируется программная заглушка, которая читает данные с АЦП и выполняет следующие операции (в предположении, что от преобразователя информация поступает в виде трех двоично-десятичных цифр, которые процессор должен выбрать по одной):

а) послать сигнал НАЧАТЬ ПРЕОБРАЗОВАНИЕ в АЦП;

б) проверить линию ПРЕОБРАЗОВАНИЕ ЗАВЕРШЕНО. Ждать пока преобразование не завершится;

в) выбрать одну цифру;

г) проверить, не равна ли цифра нулю;

д) повторить шаги «в» и «г» 3 раза;

е) если все цифры равны нулю, повторить процедуру, начиная с шага «а»;

ж) повторить шаги «а» — «е», чтобы убедиться, что преобразователь получил окончательное значение;

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

и) запомнить окончательное значение введенной величины в памяти.

На рис. 6.5 приведена блок-схема частично расширенной программной заглушки. Шаги «ж» — «и» на блок-схеме не детализированы.
 



Мастерская по ремонту стиральных машин бош www.rukami-experta.ru.