Ответ
Плюсы:
✅ Четкая структура и последовательность этапов (требования → дизайн → реализация → тестирование → поддержка)
✅ Легко управлять бюджетом и сроками из-за фиксированных требований
✅ Хорошо документируется, подходит для регулируемых отраслей (медицина, финансы)
✅ Простота понимания для заказчиков и команд без Agile-опыта
Минусы:
❌ Позднее тестирование — ошибки обнаруживаются на поздних стадиях, исправление дорого
❌ Нет гибкости — изменения требований сложно внедрить после старта
❌ Долгий срок вывода продукта (все этапы завершаются перед релизом)
❌ Риск несоответствия итогового продукта реальным потребностям (из-за изменений на рынке)
Пример:
# Waterfall-подход: нельзя вернуться к этапу дизайна после coding
def waterfall_project():
gather_requirements() # Этап 1
design_system() # Этап 2 (финализирован)
develop() # Этап 3 (если тут ошибка в дизайне — дорогая переделка)
test() # Этап 4
Итог: Waterfall работает для проектов с четкими неизменными требованиями, но проигрывает в гибкости.