Модель водопада как модель проектирования программного обеспечения

Рубрика:

Одной из наиболее доступных и простых в понимании моделей, определяющих процесс проектирования программного обеспечения, является модель «Водопада» (англ. название - waterfall model). Это последовательная модель, в которой разработка программного обеспечения представляет собой поток, состоящий из прохождения отдельных фаз: анализ требований к ПО, проектирование, непосредственная реализация, проведения тестирования, внедрения и обучения пользователей (поддержки). При этом каждая фаза следует строго одна за другой.

Само название модели водопада появилось из-за характерного внешнего вида диаграммы, изображающей процесс разработки. Возникновение концепции модели «Водопад» связывают, чаще всего со статьей, опубликованной в 1970 году У. У. Ройсом. В ней раскрывается сущность концепции и недостатки процесса разработки, основанного на этой модели. В этой же статье Ройсом была показана возможность улучшения этой модели до итеративной.
Оригинальная модель водопада по статье Ройса, представляет собой следующие фазы, следующие в таком порядке:

1. определение требований к проекту;
2. этап проектирования;
3. реализация (кодирование, конструирование);
4. интеграция;
5. тестирование и верификация (а также отладка);
6. инсталляция ПО;
7. осуществление поддержки.

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

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

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

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

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

Именно жесткая формализация фаз разработки способна значительно снизить многие риски масштабного проекта, сделав его разработку максимально прозрачной. Поэтому в руководстве PMBOK (Project Management Body of Knowledge) версии 3, официально была закреплена именно модель «Водопада», несмотря на существование альтернативных вариантов (итеративная модель).
И, тем не менее, начиная с PMBOK версии 4, был достигнут компромисс между методом формального, последовательного управления проектом и гибкими итеративными методами.

 

Другие статьи по методам разработки программного обеспечения: