сеньорчикОткрыть в Telegram
← вся теориятеория к собесу · Agile и Scrum

Waterfall, V-model, Agile

Waterfall, V-model, Agile

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

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

// Формулировки: «чем каскад отличается от Agile?», «когда каскад уместнее?», «что такое V-модель?»

Цена одной и той же ошибки на разных этапах

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

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

// Частично лечится прототипами и ранними показами: они не ломают формат, но приближают обратную связь. Полностью риск не снимают, поэтому каскад и живёт там, где требования устойчивы, а поставка неделима: миграция по фиксированному контракту, системы с сертификацией, оборудование.

V-модель: тесты растут прямо из требований

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

Вывод для аналитика прямой и очень практичный: тест-дизайн начинается вместе с требованием, а не после кода. Если ты не можешь придумать приёмочный тест для своего требования, требование непроверяемо, и узнать это лучше сейчас, чем через полгода. «Интерфейс должен быть удобным» разваливается на этом вопросе за секунду.

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

Итерации: короткий цикл обратной связи

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

Манифест при этом читают неправильно чаще, чем правильно. Он расставляет приоритеты в парах - работающий продукт важнее исчерпывающей документации, готовность к изменениям важнее следования плану. Это приоритет при конфликте, а не запрет правой части. Планирование остаётся, меняются горизонт и частота.

// Название процесса определяется не словами, а моментом обратной связи. Полгода анализа до первой поставки - каскад, даже если встречи называются стендапами, а доска висит в модном трекере.

Как выбирают на самом деле

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

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

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

Как отвечать: «Заказчик требует каскад, но требования точно будут меняться»

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

Кандидат не спорит с форматом, называет два конкретных механизма против известной слабости модели и предлагает развести стабильное и изменчивое.

На чём валятся

  • − Читают манифест как запрет документации и планирования.
  • − Называют гибким процесс, где до первой поставки полгода анализа.
  • − Идут по каскаду с меняющимися требованиями, не договорившись о процедуре изменений.
  • − Выбирают модель по моде, а не по цене поздней ошибки и устойчивости требований.
  • − Начинают тест-дизайн после разработки и теряют самую дешёвую проверку требований.
  • − Пишут требование, для которого нельзя придумать приёмочный тест.

Проверьте себя

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

  1. #ana_met_models1 / 5
    Что из перечисленного — ценность из Agile-манифеста?
    A)Отказ от планирования в пользу импровизации
    B)Готовность к изменениям важнее следования плану
    C)Устные договорённости важнее письменных
    D)Скорость поставки важнее качества продукта
    показать ответ и разбор
    +B)Готовность к изменениям важнее следования плану

    // разбор: Манифест противопоставляет пары, не отменяя правую часть: работающий продукт важнее документации, сотрудничество важнее контракта, готовность к изменениям важнее следования плану. Речь о приоритете при конфликте, а не о запрете. Отсюда частая ошибка чтения: «раз Agile, значит не планируем и не документируем».

  2. #ana_met_models2 / 5
    Для какого проекта каскадная модель уместнее итеративной?
    A)Стартап проверяет продуктовую гипотезу
    B)Внутренний сервис с частой обратной связью от коллег
    C)Мобильное приложение с еженедельными релизами
    D)Замена системы по фиксированному контракту
    показать ответ и разбор
    +D)Замена системы по фиксированному контракту

    // разбор: Каскад выигрывает там, где требования известны заранее и стабильны, а поставка неделима: миграция на аналог по фиксированному контракту, системы с сертификацией. Итеративность там мало что даёт — промежуточный результат нельзя ни показать пользователю, ни изменить по его отклику.

  3. #ana_met_models3 / 5
    Команда называет себя agile, но требования собирает полгода до старта разработки. Как это назвать?
    A)Каскад с гибкой терминологией
    B)Нормальный вариант Scrum
    C)Kanban с длинным циклом
    D)Экстремальное программирование
    показать ответ и разбор
    +A)Каскад с гибкой терминологией

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

  4. #ana_met_models4 / 5
    Какой главный риск берёт на себя проект, идущий по каскаду?
    A)Команда не успеет освоить инструменты
    B)Тестирование окажется слишком дорогим
    C)Документация устареет к моменту сдачи
    D)Ошибка требований вскроется в конце
    показать ответ и разбор
    +D)Ошибка требований вскроется в конце

    // разбор: Все ставки делаются на этапе требований, а проверка гипотезы приходит на испытаниях — когда переделка стоит дороже всего. Классический исход: система соответствует ТЗ и при этом не решает задачу пользователя. Частично лечится прототипами и ранними демонстрациями, но природа риска остаётся.

  5. #ana_met_models5 / 5
    Заказчик по договору требует каскад, но требования заведомо будут меняться. Что сделает опытный аналитик?
    A)Согласится и заложит запас в сроки
    B)Заранее договорится о процедуре изменений
    C)Будет вести разработку итеративно втайне
    D)Откажется от проекта на этапе переговоров
    показать ответ и разбор
    +B)Заранее договорится о процедуре изменений

    // разбор: Каскад не запрещает изменения — он делает их дорогими и неявными. Если заранее зафиксировать процедуру: как подаётся запрос, кто оценивает влияние, как пересматриваются сроки и бюджет, — изменения становятся управляемыми. Без такой договорённости каждая правка превращается в конфликт о том, кто за неё платит.

дальше

Теорию прочитали. Навык ставится повторением

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