26. Проектирование сверху вниз
С увеличением размеров и сложности программ их становится все труднее проектировать, программировать и сопровождать. Практически к любому сложному проекту с успехом можно применить методологию деления больших и сложных задач на более мелкие и простые.
Представьте, что нам нужно описать типичную повседневную задачу — сходить в магазин и купить продукты — для пришельца с Марса. Весь процесс можно разбить на следующую последовательность шагов:
1. Сесть в машину.
2. Доехать до магазина.
3. Припарковать машину.
4. Войти в магазин.
5. Купить продукты.
6. Вернуться в машину.
7. Доехать до дома.
8. Припарковать машину.
9. Войти в дом.
Однако инопланетянину с Марса почти наверняка потребуется больше деталей. Задачу «Припарковать машину» мы могли разбить на еще более мелкие шаги.
1. Найти место на парковке.
2. Поставить машину на это место.
3. Выключить двигатель.
4. Поставить на стояночный тормоз.
5. Выйти из машины.
6. Запереть машину.
Подзадачу «Выключить двигатель» можно разбить на еще более мелкие шаги, например «Выключить зажигание», «Вынуть ключ зажигания» и так далее, пока все шаги посещения магазина не будут определены во всех деталях.
Подобный процесс идентификации высокоуровневых шагов и проработку все более мелких деталей этих шагов называют проектированием сверху вниз. Этот прием позволяет разбивать большие, сложные задачи на множество мелких и простых задач. Проектирование сверху вниз часто используется в разработке программного обеспечения и хорошо подходит для программирования на языке командной оболочки.
В этой главе воспользуемся приемом проектирования сверху вниз для дальнейшей разработки сценария генератора отчетов.