Нисходящее проектирование
Нисходящее проектирование —
неформальная стратегия при разбиении крупной проблемы на подпроблемы меньшего размера. Это пошаговый процесс, начинающийся с общей функции системы, которая разделяется на подфункции; процесс повторяется до тех пор, пока все подфункции не станут достаточно простыми, чтобы их можно было представить на языке программирования.
Нисходящее проектирование применимо к проектированию систем, программ, отдельного модуля, а также к проектированию структур данных. Как и другие структурные методы, нисходящее проектирование имеет целью:
• систематизировать процесс проектирования;
• создать модульный проект программы;
• дать структуру для эффективного решения проблемы. Процесс пошаговой детализации — это процесс принятия наилучшего решения на каждом шаге проектирования, основой чему служит опыт и интуиция проектировщика. Хотя метод не предлагает строгих правил для выбора решения, однако можно указать следующие общие руководства:
• принимать те решения, которые при разделении проблемы на части обеспечивают наибольшую логическую связность внутри каждой части (подпроблемы);
• при принятии решения обязательно рассматривать альтернативные проекты;
• на каждом шаге принимать как можно меньше решений;
• в первую очередь пытаться выполнять простейшие решения. Для успешного применения метода каждый проектировщик должен следовать следующим основополагающим принципам:
1. Для каждого модуля (на любом уровне иерархии) должны быть определены: функция, его входы и выходы.
2. Функция каждого модуля должна расшифровываться не более, чем на одном листе инструкции (или на экране дисплея). Описание функции модуля верхнего уровня, т.е. всего проекта, не может превышать десяти строк кода или вызовов модулей следующего уровня.
3. Для описания интерфейсов между модулями данным необходимо уделять такое же внимание, как и процедурам обработки.
Проект программного изделия, полученный в результате нисходящего проектирования, документируется обычно в графической форме, построенной с использованием структурных средств (структурных схем, схем действий и т.п.). Схема сопровождается описанием модулей в повествовательной форме на естественном языке или на псевдокоде.