Модели разработки

Каскадная модель (Waterfall)

Каскадная модель - последовательный процесс разработки, где каждый этап начинается только после завершения предыдущего. Разработал данную модель Уинстон Ройс в 1970 году.

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

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

Критические недостатки, которые не дают воспользоваться моделью в больших проектах:

  1. В конце получается не то, что нужно, потому что все требования были приняты в самом начале пути
  2. Слишком поздно идёт тестирование продукта
  3. Очень тяжело попасть в сроки и бюджет, так как внести правки становится сложно
  4. Внесение изменений - это проблема, так как в начале такой функционал не предусматривался

Плюсы модели:

  1. Простота управления - каждый этап имеет чёткие deliverables и точки контроля
  2. Хорошо документирован каждый этап
  3. Подходит для проектов с фиксированными требованиями и регуляторными ограничениями

V-модель

V-модель - расширение каскадной модели, где каждому этапу разработки соответствует свой этап тестирования. Левая ветвь V описывает декомпозицию требований и создание проектной документации, а правая - интеграцию и валидацию на каждом уровне.

Соответствие этапов:

Этап разработкиЭтап тестирования
Сбор требованийПриёмочное тестирование
Системное проектированиеСистемное тестирование
АрхитектураИнтеграционное тестирование
Детальный дизайн модулейМодульное тестирование

Модель активно применяется в отраслях с повышенными требованиями к безопасности - автомобилестроение (ISO 26262), авиация (DO-178C), медицинское оборудование (IEC 62304). В этих доменах стоимость ошибки крайне высока, поэтому формальная верификация на каждом уровне оправдана.

Плюсы:

  1. Ранее планирование тестов - тест-кейсы создаются параллельно с проектированием
  2. Дефекты обнаруживаются раньше, чем в классическом Waterfall
  3. Высокая прослеживаемость требований

Минусы:

  1. Такая же негибкость к изменениям, как и в Waterfall
  2. Не подходит для проектов с нечёткими или эволюционирующими требованиями
  3. Высокая стоимость документации

Спиральная модель

Спиральная модель, предложенная Барри Боэмом в 1986 году, опирается на потребность в изготовлении раннего прототипа, тестировании и анализе рисков. Каждый виток спирали проходит через четыре квадранта: определение целей, анализ рисков, разработка и тестирование, планирование следующей итерации.

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

Плюсы:

  1. Фокус на управлении рисками - самые рискованные части разрабатываются первыми
  2. Раннее прототипирование позволяет получить обратную связь до полной реализации
  3. Гибкость в выборе подхода на каждом витке

Недостатки:

  1. Тестирование реального продукта происходит на позднем этапе
  2. Частые промахи по срокам и бюджету
  3. Долгий Time to Market
  4. Требует высокой квалификации в оценке рисков
  5. Сложность в управлении для небольших проектов

Rational Unified Process (RUP)

RUP использует итеративную модель разработки. В конце каждой итерации проектная команда должна достичь запланированных целей, создать или доработать проектные артефакты и получить промежуточную, но функциональную версию конечного продукта. Итерации в идеале продолжаются от 2 до 6 недель.

Процесс делится на четыре фазы: Inception (начало), Elaboration (проработка), Construction (построение), Transition (внедрение). Каждая фаза может содержать несколько итераций.

Плюсы:

  1. Ранняя идентификация и устранение рисков
  2. Концентрация на выполнении требований заказчика
  3. Изменения в продукте от заказчика ожидаются
  4. Компонентная архитектура, которая реализуется и тестируется на ранних стадиях
  5. Постоянное обеспечение качества на всех этапах разработки продукта
  6. Работа в сплочённой команде с ключевой ролью у архитекторов

Недостатки:

  1. Большой Time to Market
  2. Срыв сроков и бюджета
  3. Тяжеловесность фреймворка - большое количество артефактов и ролей
  4. Тестирование реального продукта происходит на позднем этапе

Впоследствии IBM переименовала RUP в OpenUP, сделав его более легковесным и открытым. OpenUP сохраняет ключевые принципы RUP, но убирает избыточную формализацию.

Waterfall vs Agile

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

Agile - это обратная сторона, где постоянно ищутся идеи, поощряется инициатива, ведётся разработка ценности. Он актуален для продуктового подхода. Тут важно найти свой особенный подход для продукта.

Waterfall стремится за производительностью, а Agile за результативностью.

Особенности

МетрикаПроектный подход (Waterfall)Продуктовый подход (Agile)
ЦельВыполнить в срок и бюджетДостичь целей и максимизировать ценность
ФокусЗавершение проектаУдовлетворение потребности пользователя
ДлительностьЯвное начало и конецПродолжается, пока приносит ценность
Мера успехаСоблюдён бюджет, сдан в срок, воспроизведено заявленное качествоМетрики, удовлетворение пользователя, рыночная доля, рентабельность

Культура

Проектный подходПродуктовый подход
СпециализацияОткрытость к изменениям
ИерархияСотрудничество
Аналитические навыкиСамоорганизация
Планирование и исполнениеПрозрачность
Дисциплина и ответственностьПостоянное обучение и рефлексия
Ориентация на процессПостоянное улучшение продукта
Исполнительность и терпениеВысокая мотивация
Ценность-дривен мышление

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

Сравнение

WaterfallAgile
Очень прибыленПозволяет создавать сложные продукты, которые, возможно, ещё никто никогда не разрабатывал
Снижаются требования к разработчикуОчень способствует развитию
Легко масштабируется за счёт воспроизводимых процессов

Agile создаёт продукт, а Waterfall его воспроизводит

Когда какую модель использовать

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

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

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

Спиральная модель полезна в проектах с высоким уровнем неопределённости и рисков, где нужно сначала проверить гипотезы через прототипы. Часто используется в R&D и оборонных проектах.

RUP/OpenUP оправдан для крупных enterprise-проектов со сложной архитектурой, где нужна итеративность, но при этом важна формальная структура процесса и ролей.

Agile/Scrum - выбор для продуктовой разработки с нечёткими или меняющимися требованиями, где важна скорость доставки ценности и постоянная обратная связь от пользователей.

Сводная таблица

МодельЛучше всего дляРазмер командыТолерантность к рискуГибкость
WaterfallФиксированные требования, регулируемые отрасли, короткие проектыЛюбойНизкаяМинимальная
V-модельSafety-critical домены, сертифицируемые системыСредний - большойОчень низкаяМинимальная
СпиральнаяВысокий риск, R&D, раннее прототипированиеСредний - большойВысокаяСредняя
RUP/OpenUPEnterprise, сложная архитектура, большие командыБольшойСредняяСредняя
Agile/ScrumПродуктовая разработка, инновации, неопределённые требованияМалый - среднийВысокаяВысокая

Размер команды - не жёсткое ограничение. Agile масштабируется через фреймворки типа SAFe, LeSS и Nexus, а Waterfall может использоваться в маленьких командах на коротких проектах.

Гибридные подходы

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

Water-Scrum-Fall

Самый распространённый гибрид. Планирование и утверждение бюджета проходят по каскадной модели, непосредственно разработка ведётся по Scrum с итерациями, а релиз и внедрение снова следуют формальному каскадному процессу.

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

Когда гибрид оправдан

  • Организация переходит от Waterfall к Agile и не может перестроить всё сразу
  • Часть проекта имеет фиксированные требования (интеграция с внешней системой), а часть - неопределённые (пользовательский интерфейс)
  • Регуляторные требования обязывают к формальной документации на определённых этапах, но внутри этих рамок команда может работать итеративно
  • Разные компоненты системы находятся на разных стадиях зрелости

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