Waterfall модель
Продолжая тему методологий разработки, в сегодняшней статье мы поговорим о Каскадной модели.
Каскадная модель или «Водопад» (англ. Waterfall model) представляет собой модель процесса разработки, который имеет вид потока, последовательно проходящего следующие фазы:
1) анализ требований проекта. Здесь определяются программные требования для информационной предметной области системы;
2) проектирование. Здесь разрабатывается и формируется логически последовательная техническая характеристика программной системы. Происходит детализация системы;
3) реализация ПО. Здесь происходит воплощение полноценного проекта;
4) тестирование продукта. Здесь реализуется тестовая эксплуатация продукта;
5) интеграция системы. Здесь происходит установка и официальный прием продукта;
6) поддержка. Здесь предоставляется техническая помощь по продукту после запуска в коммерческую эксплуатацию.
Моделью Waterfall подразумевается однократное и строго последовательное выполнение каждой фазы проекта. Переход от фазы к фазе возможен только после того, как предыдущий этап будет успешно завершен.
Преимущества методологии:
+ Высока прозрачность разработки фаз проекта;
+ Требования стабильны;
+ Четкая последовательность;
+ Строгий контроль менеджмента проекта;
+ Облегчение работы по составлению плана проекта и сбора команда проекта;
+ Хорошее определение процедуры по контролю качества.
Недостатки методологии:
— постоянная необходимость актуализации документации. Избыточная документация;
— недостаточная гибкость;
— отсутствие возможности ознакомления заказчика с системой заранее, даже с «Пилотом» системы;
— пользователь не имеет возможности привыкать к продукту постепенно;
— уже в начале жизненного цикла проекта должен быть известен максимум требований;
— во избежание выхода проекта из графиков необходимы жесткое управление и постоянный контроль;
— отсутствие возможности переделки, т.к. весь проект делается за один раз.
Что касается применения методологии Waterfall, то здесь существует два основных условия. Это, как правило, средние/большие проекты, где задействованы десятки программистов и несколько разных команд проекта, а также проекты, требования и границы которых прозрачны и точно известны в начале жизненного цикла проекта.