Введение

Моделирование проекта последовательными этапами

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

История

Первая известная презентация, описывающая использование таких фаз в разработке программного обеспечения, была представлена Гербертом Д. Бенингтоном на Симпозиуме по передовым методам программирования для цифровых компьютеров 29 июня 1956 года. Эта презентация была посвящена разработке программного обеспечения для системы SAGE. В 1983 году работа была переиздана с предисловием Бенингтона, в котором он объяснял, что фазы были намеренно организованы в соответствии со специализацией задач, и отмечал, что процесс на самом деле не выполнялся строго сверху вниз, а зависел от прототипа. Однако он также считал, что в нем есть существенные недостатки, обусловленные тем, что тестирование проводилось только в конце процесса, что он назвал "рискованным и ведущим к сбоям". Возможно, термин "водопад" впервые был использован в статье Белла и Тайера в 1976 году. В 1985 году Министерство обороны США приняло модель "водопад" в стандарте DOD STD 2167 для работы с подрядчиками по разработке программного обеспечения. В этом стандарте итерации разработки программного обеспечения определялись как "последовательные фазы цикла разработки программного обеспечения", и утверждалось, что "подрядчик должен реализовать цикл разработки программного обеспечения, включающий следующие шесть фаз: анализ требований к программному обеспечению, предварительное проектирование, детальное проектирование, кодирование и модульное тестирование, интеграция и тестирование".

Критика

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