Cтраница 3
Оба метода обладают как достоинствами, так и недостатками. При использовании метода нисходящего проектирования практически до его завершения остаются неизвестными размер программы и ее эксплуатационные характеристики, так как они определяются в основном модулями нижнего уровня. Кроме того, на последних этапах проектирования может возникнуть необходимость в структурных изменениях, требующих пересмотра уже разработанных модулей верхнего уровня. А в методе восходящего проектирования принципиальные ошибки в проекте модулей нижнего уровня будут выявлены лишь на заключительной стадии работ. [31]
Видимы ли переменные, модуля В основному программному модулю. Напомним, что ничто из модуля невидимо за пределами модуля, если только оно не экспортируется, а переменные В не экспортировались модулем А. Именно поэтому мы говорили об игнорировании модуля В в списке экспорта модуля А. Обратите внимание, что переменные В экспортируются из А путем экспортирования имени модуля В. Это единственный имеющийся метод сделать переменные В доступными для основного программного модуля. Этот последний пример показывает, что, прежде чем объект из модуля нижнего уровня из группы вложенных модулей может стать видимым за пределами этой группы, его необходимо экспортировать через все уровни вложенных модулей. [32]
Бывают и исключения из этого правила. Например, для двух модулей нижнего уровня, не связанных друг с другом и находящихся на разных ветвях схемы иерархии, можно скомбинировать тестовые данные так, чтобы один тест проверял сразу оба модуля. Другое исключение - когда присоединяется модуль, требующий нетривиальной заглушки. Проблема в том, что заглушка сложна и ее программирование может потребовать таких же усилий, как и программирование полного модуля. Последнее исключение - в случае модуля ( модулей) самого верхнего уровня, когда может понадобиться несколько модулей нижнего уровня только для того, чтобы хоть что-нибудь заработало. [33]
При проверке сверху вниз в первую очередь проверяется модуль самого верхнего уровня, а все модули, к которым он обращается, имитируются. Если этим модулям передается только параметрическая информация ( что означает, что модуль верхнего уровня не имеет дело с обрабатываемыми программой данными), то имитация существенно упрощается. Уже отсюда видно, какую роль для проверки и отладки играет продуманное проектирование. Когда модуль верхнего уровня проверен и отлажен, то он начинает играть роль программной среды для модулей следующего уровня, но не имитируемой среды, а реальной. Из модулей следующего уровня сначала проверяются те, работа которых не связана с непосредственной обработкой данных, или те, которые работают непосредственно с исходными данными, а потом проверяются модули, работающие с данными, полученными в результате работы с исходными данными других, уже проверенных модулей. Каждый проверенный модуль включается в среду, в которой проверяются последующие модули. В тот момент, когда проверен последний модуль нижнего уровня, проверенной оказывается и вся программа. [34]