Ответ
Waterfall (каскадная модель) применяется в проектах с четкими, неизменными требованиями, жесткими сроками и бюджетом, где процесс разработки проходит через последовательные, не перекрывающиеся этапы.
Типичные сценарии применения:
- Регуляторные проекты: Разработка ПО для банков, медицинского оборудования, авиации, где каждый этап требует формального одобрения и аудита.
- Проекты с фиксированным контрактом: Когда требования, сроки и бюджет зафиксированы в договоре с заказчиком.
- Разработка аппаратного обеспечения: Где этапы (проектирование, производство, сборка) физически последовательны.
Плюсы Waterfall:
- Простота управления: Четкий план, понятные этапы и контрольные точки.
- Легкость оценки: Трудозатраты и бюджет проще оценить на старте.
- Хорошая документация: Каждый этап завершается созданием детальной документации.
Минусы Waterfall:
- Негибкость: Внесение изменений на поздних этапах крайне затратно.
- Позднее тестирование: Дефекты обнаруживаются только на этапе тестирования, что делает их исправление дорогим.
- Риск несоответствия: Финальный продукт может не отвечать актуальным потребностям пользователя, если они изменились за время разработки.
Роль тестирования в Waterfall: Тестирование — это отдельный этап, начинающийся только после полного завершения разработки. Тест-планы создаются на основе спецификаций.
# Тестирование в Waterfall — это валидация против изначальных спецификаций
def test_calculator_waterfall():
# Спецификация: "Калькулятор должен складывать два числа"
calc = Calculator()
# Тест выполняется строго по заранее написанному плану
assert calc.add(2, 3) == 5 # Проверка соответствия спецификации
# Новые пожелания (например, сложение трех чисел) не могут быть проверены без изменения контракта.