Что такое Waterfall (каскадная модель) в разработке ПО?

«Что такое Waterfall (каскадная модель) в разработке ПО?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Waterfall (водопад, каскадная модель) — это линейная и последовательная методология разработки ПО, где процесс строго разделен на независимые этапы. Переход к следующему этапу происходит только после полного завершения предыдущего, возврат назад затруднен или требует formal change request.

Основные этапы (фазы):

  1. Сбор и анализ требований — фиксация всех функциональных и нефункциональных требований.
  2. Проектирование системы — создание архитектурных и детальных дизайн-спецификаций.
  3. Реализация (кодирование) — написание кода согласно проектной документации.
  4. Тестирование (верификация) — проверка готового продукта на соответствие требованиям.
  5. Развертывание и сопровождение — внедрение системы и ее последующая поддержка.

Преимущества:

  • Простота управления: Четкие сроки, бюджет и план работ.
  • Хорошая документация: Каждая фаза имеет формализованный результат.
  • Предсказуемость: Подходит для проектов с неизменными, хорошо понятными требованиями (например, в регулируемых отраслях).

Недостатки:

  • Негибкость: Сложно и дорого вносить изменения на поздних этапах.
  • Позднее обнаружение дефектов: Ошибки в требованиях или дизайне обнаруживаются только на этапе тестирования.
  • Отсутствие обратной связи от заказчика: Рабочий продукт виден только в самом конце цикла.
Сравнение с Agile: Waterfall Agile (например, Scrum)
Линейный и последовательный Итеративный и инкрементальный
Требования фиксированы в начале Требования адаптируются по ходу работы
Тестирование — отдельная поздняя фаза Тестирование интегрировано в каждую итерацию

Когда использовать Waterfall? Для небольших проектов с абсолютно ясными, стабильными требованиями и жесткими compliance-стандартами.