Agile и Waterfall: главное о методологиях разработки ПО



Разделение всех методологий на Agile и Waterfall — это общепринятый способ классифицировать подходы к организации процесса разработки ПО.



🌊 Waterfall (водопадная/каскадная модель) — это классическая методология, при которой проект делится на последовательные этапы, которые выполняются один за другим. Переход к следующему этапу возможен только после завершения предыдущего. Клиент видит результат только в конце проекта.



Эта методология подходит для проектов с четкими и стабильными требованиями, небольшим размером и сроком выполнения, и не требующих частых релизов и обновлений.



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



1. Фиксированный бюджет и сроки, так как всё фиксируется на этапе составления ТЗ



2. Простота и понятность. Каждый этап имеет четкие входные и выходные данные, сроки и ответственных. Все участники проекта знают, что и когда нужно делать, и какой результат ожидать



Недостатки Waterfall



1. Отсутствие гибкости. В проект нельзя вносить изменения. Если на каком-то из этапов возникнут проблемы, изменятся требования или станет ясно, что что-то не учли, придётся начинать сначала.



2. Риски. Если на каком-то этапе возникнут ошибки или недочеты, они могут быть обнаружены только в конце проекта, когда будет поздно



3. Отсутствие обратной связи. Меньше обратной связи – меньше уверенности, что мы делаем то, что действительно нужно



Где можно применять водопадную модель



● Несложные проекты, где объём работ можно легко определить и сформулировать в ТЗ.

● Проекты с очень строгими требованиями к бюджетам и срокам.



Для современной разработки в ИТ, где требования меняются регулярно, а обновления приложений необходимо выпускать как можно чаще, чистый Waterfall не подходит.





🔁 Agile — это семейство гибких методологий управления проектами.



Вся суть Agile содержится в четырёх пунктах его манифеста:



1️⃣ Люди и их взаимодействие важнее процессов и инструментов проектного управления.

2️⃣ Рабочее программное обеспечение (результат проекта) важнее всеобъемлющей документации.

3️⃣ Сотрудничество с клиентами важнее переговоров по контракту.

4️⃣ Реагирование на изменения важнее следования плану.



К Agile относят Scrum, Kanban, Lean, XP, FDD, TDD, SoS, LeSS, SAFe, AgilePM.



В Agile проект делится на небольшие итерации или спринты (примерно 2 недели). Каждая итерация имеет какой-либо результат – готовую функциональность. Клиент участвует в процессе разработки и может давать свою обратную связь по каждой итерации. Продукт постоянно улучшается и адаптируется к изменяющимся требованиям.



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



1. Гибкость к изменениям и скорость. Например, если конкуренты выпустили новую функцию, её можно быстро разработать в уже начатом проекте.



2. Риски ниже — прямо в процессе команда получает обратную связь от пользователей. А если какая-то итерация растянется, следующую можно будет адаптировать под изменившиеся сроки и условия.



3. Ориентация на людей и команду даёт большую вовлечённость в проект.



Недостатки Agile



1. Сложность внедрения. Его нужно уметь использовать. С умом. К тому же, люди часто привыкают к текущему способу работы и не всегда приветствуют изменения



2. Сложно планировать бюджет и сроки по причине большей неопределённости, новые хотелки от клиента могут возникнуть в любой момент.



3. Заспамленность созвонами. Вытекает из первого пункта в случае ошибок при внедрении. Однако забитый бессмысленными встречами календарь – это бич не только аджайла. Проблема шире, чем просто подход к разработке ПО.



Как правило, применять чистую методологию скажем, Scrum или Waterfall может оказаться менее эффективным, чем использовать сочетание наиболее подходящих инструментов из различных фреймворков.



📎 Материалы

1. Битва титанов: Waterfall VS Agile

2. Agile и «водопад». Сравнение подходов

3. Управление проектом по Agile методике

4. Об оценках сроков в разработке ПО

5. Гибридное управление проектами: как смешать модный Agile с традиционным проектным менеджментом



О минусах Agile

1. Scrum ужасен

2. Обратная сторона Agile

3. Как правильно имитировать Agile?



#управление_проектами