Waterfall.

Waterfall.
Что такое каскадная модель управления проектами, каковы ее особенности и в чем ее отличие от Agile. Об этом мы расскажем в нашей статье.

Сведений об истории появления Waterfall достаточно мало. Считается, что началось все в 1970 году, когда эту модель управления проектами описал ученый Уинстон Уокер Ройс. Известно, что он написал статью, в которой обсуждал недостатки каскадного подхода и предлагал его доработать, а сам он использовал итеративную методологию. Так, за Уинстоном Ройсом закрепилось звание первопроходца. В переводе с английского Waterfall обозначает водопад. А каскадной модель называют по аналогии с теми же каскадными водопадами.

Особую популярность модель обрела в середине 90-х, однако сейчас её используют реже из-за очень большой продолжительности циклов. Чаще всего Waterfall применяют в больших проектах, когда шанс внесения дополнительных изменений в проект в процессе его реализации мал.


Методология строится на 8 главных принципах:

  • документирование необходимо;
  • все этапы работы должны быть зафиксированы;
  • каждый этап последователен, следующий этап не начинается, пока не закончится предыдущий;
  • пропуск этапов запрещен;
  • если в процессе разработки требования к функционалу, продукту поменялись после согласования, вносим изменения в ТЗ;
  • нельзя возвращаться на предыдущий этап;
  • разработка происходит в рамках одного процесса. Итераций нет;
  • работа над ошибками происходит после окончания разработки;
  • участие клиента ограничивается этапом разработки ТЗ. После, заказчик не принимает участия в процессе.

Думаю, вы с нами согласитесь, некоторые принципы каскадной модели противоположны принципам Agile. Кстати, у нас есть статья про Agile и Scrum, там много интересного: https://topremote.ru/post/agile-i-scrum-chiem-ghrozit-sliepoie-sliedovaniie-etim-mietodikam. Немного позже мы поговорим о различиях этих методологий.

А пока выясним, какие есть этапы работы при использовании «Водопада»:

  • определение требований (аналитика). На этом этапе происходит сбор требований к проекту и оформляется обобщенная версия технического задания. Расписывается план работ, роли в команде;
  • проектирование. Команда разрабатывает детализированное техническое задание. Критически важно правильно декомпозировать задачи;
  • конструирование (также «реализация» либо «кодирование»). Команда окончательно проясняет, как именно будет происходить разработка проекта, с помощью каких инструментов (языков программирования, оборудования, сервисов и так далее). Каркас, который проработали на предыдущих этапах, становится более целостным, потихоньку формируется облик продукта. На этот этап приходится большая часть работы над проектом;
  • тестирование и отладка (также «верификация»). На этом этапе продукт проверяется на соответствие техническому заданию. Происходит поиск и выявление и исправление ошибок и недочетов;
  • эксплуатация и поддержка. Готовый продукт передают заказчику. Осуществляется поддержка. В очередной раз идет поиск ошибок, сбоев и их устранение.

Отметим, может быть сразу несколько параллельных каскадов.

Каковы же основные различия между Waterfall и Agile?

  • роль заказчика. В первом случае клиент принимает участие только до окончания разработки ТЗ. В случае с Agile заказчик принимает участие на протяжении всего процесса;
  • возможность изменений. Waterfallхорошо подходит, когда концепция определена с самого начала, либо с заранее установленными ограничениями по времени и смете расходов. Agile же приветствует наличие изменений по ходу разработки;
  • финансовая составляющая. Agile отлично работает в случаях, когда деньги и время не имеют жестких ограничений, но работа ухудшается при появлении рамок. Использование Waterfall отдает предпочтение фиксированности.

Таким образом, принципиально Agileи Waterfallотличаются допустимой степенью гибкости.

Какие преимущества и недостатки есть у этой модели?

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

  • гибкость на первых этапах работы;
  • устойчивость к замене исполнителей;
  • определенность в сроках и размере бюджета;
  • инструкции и правила по всему процессу разработки;
  • строгий менеджмент.

Недостатки:

  • отсутствие гибкости;
  • заказчик не допускается до разработки и тестирования;
  • проблемы всплывают только при тестировании.

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

Если же необходима гибкость во внесении в продукт изменений, постоянное взаимодействие с заказчиком, а также возможность видеть прогресс на каждой стадии разработки, предпочтительнее использовать методологию Agile.