Тем не менее, Waterfall подход очень эффективный для проектов с четкими требованиями и неизменной средой. Условно типовые инженерно-технологические проекты (постройка здания, моста и т.д.) лучше заходят именно по данной методологии.
Поэтому когда продукт и требования к нему четко определены, технологически все определено и низковариативная среда – смело используем Waterfall.
AGILE – это итерационная методология, когда Вы двигаетесь к результату короткими итерациями. Причем важным является перечень основных характеристик продукта/результата проекта – а реализация идет по итеративным циклам.
Итерации могут касаться этапов – тогда имеем дело с итеративным жизненным циклом (рис.1.18).
Рис.1.18. Итеративный жизненный цикл (итерация этапов)
Или они могут касаться продукта\результата проекта, который делается «по-кусочку» (инкремент за инкрементом) – тогда имеем дело с инкрементным жизненным циклом (рис.1.19).
Рис.1.19. Инкрементальный жизненный цикл (итерация продукта)
Итерация или идет с продуктом, постоянно доращивая его функциональности, или с производством на каждом этапе «кусочка» (части, детали) продукта с последующей «сшивкой» в целостный продукт в конце.
Т.е., итеративный подход фокусируется на разработке целевого продукта путем выполнения ряда повторяющихся циклов, а инкрементный подход фокусируется на последовательном наращивании функциональности продукта или его целостной сборки.
На практике обычно эти оба цикла используются вместе (я уже об этом писал ранее в главе о жизненном цикле проекта), поэтому в среде практиков можно просто говорить об адаптивном жизненном цикле (Agile-методологии) как таковом.
Очевидное преимущество Agile – это учет изменений как требований клиента, так и среды. Т.е., Agile наиболее подходит для проектов с нечеткими, вариативными, высоконеопределенными требованиями и\или средой.
С моей т.з. лучше всего эту Agile-методологию (адаптивный цикл) в ее практическом виде олицетворяет SCRUM (СКРАМ) – визуализация на рис.1.19.1.
Рис.1.19.1. Визуальное представление SCRUM»а
В Скраме:
– Готовится описание результата, который разбивается на перечень всего того, что мы хотим получить (на кусочки) – Продукт-бэклог;
– Проект разбивается на маленькие отрезки (так называемые «спринты» или «забеги» если аутентичнее к русскому языку) длиной от недели до максимум месяц, каждая со своим набором задачек из Продукт-бэклога (т.е. имеет бэклонг для спринта);
– Ежедневный контроль с отчетностью перед всей командой;
– При реализации каждого спринта готовится свой результат / инкремент (или доращивается функциональность);