Материал для канала Мы ж программист

Разработка приложений – внушительная доля IT-индустрии. Чтобы процесс разработки был эффективным и предсказуемым, придумали и описали ряд подходов и методологий.

Один из самых популярных подходов — каскадная модель, Waterfall, Водопад. Подходит для небольших проектов, но также для крупных, например, государственных заказчиков, когда бюджет и сроки должны быть известны заранее. Все этапы производства идут последовательно: формируются требования, проводится анализ, затем проектирование, разработка, тестирование, внедрение. Всегда понятно, где мы находимся и что осталось. Но нужен очень четкий план в начале, а результат будет виден только в конце, и сложно адаптироваться при обнаружении каких-то несоответствий. Разновидность Водопада – V-образная модель, когда тестирование планируется параллельно с разработкой.

Недостатки Водопада учитывает инкрементальная модель. Продукт создается частями, версиями. Для каждой небольшой части формируется ТЗ, проводится анализ, разработка и внедрение. С учетом результатов проектируется следующая версия. Формат может подойти для новых бизнесов, когда нужно как можно быстрее вывести продукт на рынок, чтобы «засветиться» и получить первых клиентов.

Похожий подход — итеративная модель. Хорошо подходит стартапам, когда происходит поиск своей ниши и аудитории, и не известно, что за продукт в итоге получится. Сначала создается простая, базовая версия, часто MVP (минимально жизнеспособный продукт), публикуется, получает первых клиентов, собирается обратная связь и корректируется дальнейшее развитие продукта. Недостаток: не понятно, сколько в итоге будет стоить продукт и сколько времени займет разработка.

На основе итеративной и инкрементальной моделей строится спиральная модель. Каждая версия — это виток спирали, но делается она только с учетом оценки рисков, исходя из опыта предыдущих итераций.

Для продуктов, которые уже запущены и планомерно развиваются, часто выбирают Agile — гибкую методологию, точнее, набор принципов, ориентированных на гибкость и адаптацию. В рамках Agile существует ряд интересных подходов.

Очень популярен Scrum — итеративный подход для небольших команд. Улучшения продукта реализуются короткими (неделя-две) циклами — спринтами. Это позволяет постоянно корректировать вектор развития в зависимости от запросов пользователей, бюджетов, технологий, рынков и других факторов. Для больших команд Scrum адаптирован в виде фреймворков SAFe и LeSS.

Вместе с Scrum часто используют Kanban — этот метод позволяет визуализировать производственные задачи на специальной доске. Каждая задача имеет текущий статус и может его менять, например, переходить из статуса «В работе» в статус «Тестирование».

К Agile можно отнести ряд интересных подходов:

  • Lean — это «бережливая» разработка, постоянная оптимизация процесса для повышения эффективности и снижения затрат.
  • XP — экстремальное программирование, подходит для проектов со сжатыми сроками и высокими требованиями. Короткие циклы разработки, частые релизы. Но не подходит для длинной дистанции.
  • Rapid Application Development, RAD — применяют для быстрой разработки приложений. Используются визуальные конструкторы, low-code и no-code платформы. Подход может не подойти для больших сложных проектов.
  • Функционально-ориентированная разработкаFeature Driven Development, FDD — определение набора функций, по каждой из которых будет проведена производственная итерация.
  • Разработка через тестированиеTest-Driven Development, TDD — подразумевает, что сначала описываются тестовые сценарии, а потом реализуются функции приложения так, чтобы соответствовать этим сценариям.

Еще можно почитать про методологию «чистой комнаты» (Cleanroom Software Engineering), методологию Microsoft Solutions Framework (MSF), метод Dynamic Systems Development Method (DSDM).

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