Waterfall или Agile? Битва методологий при разработке ПО
На современном этапе развития менеджмента не придуман универсальный способ, который можно было применить к процессу разработки программного обеспечения. Нет оптимального метода, подходящего под любой проект. Во главе любого метода встали стандарты, определения, процедуры, функции и пр.
Каждая методология, выбираемая руководителем проектной команды, подбирается под определенные задачи, стоящие в проекте, а также сроки, выделенный заказчиком бюджет. К тому же, область IT-компаний характеризуется своей спецификой: сопровождение проектов, техническая поддержка, аутсортинг – все это требует от компаний индивидуальных подходов.
Наиболее популярные и востребованные в современной сфере разработки программных обеспечений методологии – это Waterfall (каскадная) и Agile (гибкая). В данной статье мы кратко опишем каждую из них, выявим достоинства и преимущества, разберемся какая методология и под какой проект подходит наилучшим образом.
Agile
Метод реализации проектов Agile основан на итерациях. Весь процесс разработки нового программного продукта разделяется на несколько циклов протяженностью 1-4 недели. Каждый этап рассматривается как отдельный микропроект, в котором есть подготовительный этап, этап планирования, создания и этапа, на котором происходит проверка совместимости продукта с требованиями заказчика. Результатом каждой итерации становится продукт с определенным набором технических характеристик, который можно показать заказчику для внесения корректировок, если это потребуется.
Вся разработка ПО с использованием методологии Agile подчинена 12 ключевым принципам. Ключевыми же являются:
- Лучший показатель эффективного взаимодействия проектной команды – рабочий продукт;
- Изменение требований может происходить на любой стадии разработки;
- Лучшим методом коммуникации всегда является личностное общение;
- Новый продукт с определенными характеристиками появляется, либо в конце каждой итерации, либо один раз в 1-2 месяца; все зависит от проекта и уловных договоренностей.
К гибким методам Agile чаще всего относят такие методы программирования, как Scrum, FDD и другие.
Waterfall
Метод Waterfall, что в переводе с английского означает «водопад», основан на последовательной разработке. Весь процесс делиться на следующие этапы:
- Исследование необходимых требований к конечному продукту;
- Планирование работ по разработке ПО;
- Создание продукта;
- Интеграция;
- Выполнение тестовых мероприятий;
- Выпуск нового программного продукта;
- Техническая поддержка и сопровождение.
Переход от одного этапа к другому происходит только тогда, когда один из этапов полностью завершен. Изменение функционала готового продукта происходит только после его выпуска на потребительский рынок (релиза).
Достоинства методов разработки
Agile
- Внедрение нового функционала и внесение необходимых корректировок интегрированы в сам процесс разработки, что позволяет делать это на любом из этапов создания продукта. Это повышает конкурентные преимущества готового программного обеспечения;
- Весь проект – это набор прозрачных итераций, завершающихся за короткие промежутки времени;
- За счет существующего механизма внесения корректировок уменьшаются риски проекта;
- Первая версия ПО выходит довольно быстро.
Waterfall
- Прозрачная и интуитивно понятная структура работы, которая подходит для опытных команд;
- Высокое качество и детализации всей документации;
- Каскадная модель позволяет легко отслеживать ресурсы, риски и время, потраченное на реализацию проекта;
- Поставленные задачи максимально стабильны на всем протяжении разработки.
Недостатки методов разработки
Agile
- Отсутствие возможности рассчитать полную сумму, затраченную на создание нового программного обеспечения, в связи с постоянно меняющимися требованиями в ходе реализации;
- Так как Agile больше всего напоминает философию, все участники проекта должны полностью погрузиться в нее, что часто бывает крайне тяжело;
- Члены команды должны быть опытными, высококвалифицированными специалистами; они должны работать на удовлетворение потребностей клиента;
- Возникновение новых требований может вступить в конфликт с существующей структурой и функционалом;
- Возможность постоянного внесения корректировок может привести к тому, что проект перейдет в категорию бесконечных.
Waterfall
- Определение в начальном этапе всех требований приводит к тому, что проект перестает быть гибким;
- Проект требует большего объема ресурсов и сроков;
- Заказчик увидит результаты работы проектной команды в самом конце этапа разработки;
- Полное отсутствие коммуникативного взаимодействия между этапами реализации.
Выбирать внедрение Agile-методологии необходимо, если удовлетворены следующие условия:
- Члены команды – опытные сотрудники;
- Окончательные параметры продукта неопределенны, а изменения должны вноситься в максимально короткие сроки;
- Заказчик участвует в создании продукта с самого начала;
- Нужна скорость разработки;
- Если создание программного продукта является стартапом.
Каскадная модель должна применяться в случае, когда:
- Требования, которые предъявляются к продукту, известны и стабильны;
- Качество результата намного важнее вложенных в проект ресурсов и потраченного времени;
- Для разработки используется аутсортинг;
- Заказчик не принимает прямого участия в создании нового ПО, а лишь является проверяющим полученного результата.
Каждый из вышеописанных методов может помочь вам в реализации ваших проектов. Важно понимать, что, выбирая методологию, вы должны ориентироваться на высокое качество конечного продукта и собственный бюджет.
В тот момент, когда вы начнете движение по финишной прямой, всех перестанет интересовать выбранный вами метод реализации. Поэтому, даже в том случае, если методология была выбрана неверно, команда должна обладать богатым опытом и компетентностью, чтобы получить высокие результаты в ходе своей работы.
Перед выбором метода, проанализируйте ваш проект, посоветуйтесь с коллегами по цеху, пообщайтесь с заказчиками и подчиненными. Ведь именно от выбранного метода, будь это Agile или Waterfall, зависит скорость реализации, качество, издержки и пр.
3 комментария. Оставить новый
Из вашей статьи я понял, что при разработке программного обеспечения можно использовать любую из методологий, и agile, и waterfall, и что это будет влиять на сроки реализации и затраченные ресурсы. Можно ли как-то спрогнозировать, какой эффект будет от применения этих двух методов?
Добрый день, Сергей
Все зависит от развитости у вас проектного управления. Agile методология управления проектами безусловно сократит сроки и повысит качество реализуемого проекта, в разрезе ожиданий клиента. Однако не для всех типов клиентов она подходит. Есть много подводных камней в использовании agile, начиная с того, что у клиента может просто не быть времени на постоянное вовлечение в процесс разработки ПО и заканчивая тем, что документацию по коду все таки придется писать, иначе вам сложно будет разобраться с кодом при возникновении текучки кадров.
Спасибо, у нас клиент не хочет agile, ему нужен график со сроками, а нам больше по душе скрам метод, как лучше поступить?