Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
11 / тп / Venchkovsky.doc
Скачиваний:
113
Добавлен:
19.05.2015
Размер:
515.07 Кб
Скачать

3.4.Нисходящее и восходящее программирование

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

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

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

Метод восходящего программирования использует противопо­ложную стратегию. Программа образуется путем объединения про­стых программных компонент для создания компонент более высо­кого уровня.

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

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

Глава 4.Модульное программирование

4.1.Основные понятия и определения

Идеи модульного программирования связаны с принципами "разделяй и властвуй" и иерархического упорядочения. Основные цели модульного программирования формируются как:

1. Декомпозиция программы на независимые фрагменты — мо­дули, которые могут быть в дальнейшем реализованы в виде от­дельных процедур или функций, либо в виде модулей (unit), являю­щихся конструкциями конкретного языка программирования.

2. Разделение сложной проблемы на более мелкие и простые подпроблемы.

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

Модульное программирование это организация программы в \.\\:\е небольших независимых блоков, называемых модулями, струк-, \ ра и поведение которых определяется некоторой совокупностью ,:равил.

Таким образом, модуль — основной строительный блок струк-\рной программы. Каждый модуль должен соответствовать одной ; .роблемно-ориентированной задаче.

Достоинства модульного программирования:

1. Модульная программа проще для понимания, поскольку есть возможность в каждый момент времени рассматривать один мо­дуль.

2. Упрощено тестирование программы.

3. Упрощен процесс обнаружения и исправления ошибок.

4. Изменения, вносимые в программу, могут быть ограничены немногими модулями, т.е. не требуют просмотра всего текста про­граммы.

5. Упрощен процесс повышения эффективности программы.

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

7. Время разработки сложной программы может быть заметно сокращено, поскольку разработка отдельных модулей может быть поручена разным программистам, работа которых может выпол­няться более или менее независимо.

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