Перейти к основному содержимому

Модели жизненного цикла для конструирования

Руководителю Разработчику

Модели жизненного цикла — Waterfall, Agile и гибриды

От модели жизненного цикла (ЖЦ) зависит когда вы пишете код, сколько его переписываете и какие документы требуют до первой строки. На экзамене по конструированию часто спрашивают Waterfall, инкремент, RAD, спираль, CBSE — как они задают ритм реализации.

С чего начать новичку

Модель ЖЦ отвечает на вопрос: в каком порядке и крупными или мелкими кусками мы проходим планирование → проект → код → тест → внедрение.

Методология (Scrum, Kanban) отвечает: как команда организует работу внутри спринта или потока задач. Можно вести инкрементный ЖЦ по Scrum — это нормальная пара.

СловоЗапомнить одной фразой
Waterfall (каскад)Сначала всё спроектировали, потом долго пишем код, потом тестируем
ИнкрементКаждый релиз добавляет новую функцию для пользователя
ИтерацияПовторяем цикл «спроектировали → закодировали → проверили»; функция может не расти, но качество растёт
RADБыстро показать экран заказчику, много готовых UI-компонентов
СпиральНа каждом витке снимаем риски прототипом, потом пишем prod-код
CBSEСистема = покупные и готовые компоненты + наш «клей»
Модель ЖЦ ≠ методология

Модель жизненного циклакак распределены фазы (линейно, витками, порциями). Scrum/Kanbanкак команда работает внутри итераций. Один и тот же инкрементный ЖЦ можно вести по Scrum или без него.

Общая карта SDLC — в 7-03/1. Здесь — угол конструирования: что меняется в объёме кода, в рефакторинге и в тестах.


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

МодельРитм конструированияКогда уместнаГлавный риск для кода
Waterfall / VОдин большой блок после проектаСтабильное ТЗ, регуляторика«Замороженный» дизайн устарел к концу кодирования
Инкремент / итерацияПорции + наращиваниеПродукт, эволюцияТехдолг между инкрементами без рефакторинга
RADБыстрые прототипы → prodUI-критичные MVP, CRUDПрототип без архитектуры в production
Спiral (Boehm)Прототип на рисках → prod-кодВысокая неопределённость, Р&DБесконечные витки «ещё один POC»
CBSEИнтеграция + доработка компонентМного COTS, ERP, интеграцииВерсионный ад и «склеивание» API
ПрототипированиеThrowaway или эволюционный кодНеясные требованияПутаница прототипа и финальной системы

Классический (каскадный) Waterfall

Идея: фазы последовательно — требования → проект → кодирование → тест → внедрение. Выход одной фазы — вход следующей; возврат «назад» формален и дорог.

Для конструированияСледствие
Код после детального проектаМеньше «переписывания архитектуры в коде», больше следования spec
Изменения дорогиТЗ и проект должны быть согласованы до старта кодирования
Большой объём кода разомНужны coding standards, review, статический анализ до merge
Длинный цикл без релизаИнтеграция «Big Bang» — первые баги всплывают поздно

Где встречается: госконтракты, embedded, медтехника (IEC 62304), авионика — там, где нужна traceability требование → модуль → тест.

Для разработчика: конструирование — «исполнение чертежа». Отклонение от проекта — через change request (заявку на изменение требований), а не тихий рефакторинг в пятницу.

Жизненный пример Waterfall

Госконтракт на АСУ: год пишут ТЗ и проект, полгода — код без релиза пользователям, потом три месяца приёмочных тестов. Плюс: всё прослеживается от пункта ТЗ до модуля. Минус: если за год рынок изменился, часть кода устарела ещё до первого запуска — правки дороги.


V-модель и конструирование

V-модельнадстройка: каждому уровню разработки соответствует уровень тестирования.

Уровень разработкиПарный тестКто на конструировании
Модули / unit designUnit-тестыРазработчик пишет вместе с кодом
Интеграция модулейIntegrationDev + QA после сборки
СистемаSystemQA по сценариям из ТЗ
ПриёмкаUATЗаказчик / пользователи

Практический смысл: тест-план и кейсы для модульного уровня закладывают при проектировании интерфейса, а не «когда всё закодировали». Подробнее — 130, 119.


Инкрементная и итерационная модель

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

Итерацияповторение цикла «спроектировали → закодировали → проверили» над одной областью или всем продуктом; функциональность может не расти, но качество и полнота растут.

Инкремент 1: auth + профиль → релиз 0.1 (можно войти)
Инкремент 2: каталог → релиз 0.2 (можно смотреть товары)
Инкремент 3: корзина + оплата → релиз 1.0 (можно купить)

Итерация внутри инкремента 2:
Sprint A — API каталога
Sprint B — фильтры + пагинация
Sprint C — hardening, NFR
АспектДля конструирования
Короткие волны кодаМеньше «длинных веток», чаще merge в main
Рефакторинг между инкрементамиМодульность критична — иначе каждый инкремент ломает предыдущий
CI обязателенКаждый инкремент — потенциально поставляемый артефакт
Definition of DoneКод + тесты + review + документация API

Scrum — частный случай итераций фиксированной длины (спринт) с инкрементом на выходе. Kanban — непрерывный поток без жёсткого «конца спринта», но конструирование всё равно порциями по карточкам.

Жизненный пример инкремента

Маркетплейс: в 0.1 пользователь только регистрируется; в 0.2 смотрит каталог без покупки; в 1.0 платит. Каждый инкремент — рабочий релиз на staging/prod. Код каталога пишут, когда auth уже в main — иначе некому «войти и посмотреть товар».

Экзаменная формулировка

Инкремент отвечает на «что нового в продукте»; итерация — «какой очередной цикл работы». Один инкремент часто занимает несколько итераций.


RAD (Rapid Application Development)

Идея: сжать время до видимого результата за счёт прототипов, генераторов, готовых UI-kit и параллельных мини-команд (users + developers together).

Фазы RAD (классическая схема)

ФазаСодержаниеКонструирование
Business modelingПотоки данных, ролиМинимум кода
Data modelingERD, сущностиМиграции, ORM-модели
Process modelingСценарии, экраныПрототип UI
Application generationСборка из компонентCRUD, low-code, scaffolding
Testing & turnoverОбратная связь пользователейДоработка + «закалка»
ПлюсРиск
Заказчик видит UI через недели, а не месяцы«Прототип в prod» без слоя домена
Reuse UI-kit, ORM, admin-панелейТехдолг, если нет явного этапа refactor
Параллельные команды по модулямНесогласованные контракты между командами

RAD в COCOMO II — Application Composition — отдельный режим оценки (много готовых частей, мало «с нуля»). См. 7-13/1.

Когда уместен: внутренние админки, MVP с типовым CRUD, пилоты с жёстким дедлайном. Когда опасен: ядро домена с регуляторикой без проектирования границ.


Спиральная модель (Barry Boehm)

Идея: каждый виток спирали — мини-проект: цели → риски → разработка/прототип → план следующего витка. Риски снимают до массового кодирования.

Что кодируют на разных витках

ВитокТип кодаПример
РаннийThrowaway prototypeUI на макетах, spike на новом протоколе
СреднийПилотные модулиИнтеграция с внешней системой-риском
ПозднийProduction codeПолное покрытие тестами, NFR, hardening

Хорошо для: заказных систем с высокой неопределённостью (новый домен, жёсткие NFR, много внешних интеграций). Плохо без дисциплины: бесконечные POC без решения «выбрали архитектуру — пишем prod».

Связь с Agile: спринтовый «spike» — родственник риск-ориентированного витка; разница в том, что спираль явно ставит анализ рисков перед объёмным кодом.


Прототипирование (throwaway и evolutionary)

ТипСутьКонструирование
Throwaway (быстрый)Прототип выбрасывают после уточнения требованийКод «на коленке», без тестов — не в prod
Evolutionary (эволюционный)Прототип дорастают до системыНужны тесты и рефакторинг с первых витков

Типичная ошибка: throwaway-прототип «вдруг» попал в production, потому что «и так работает». На экзамене просят различить типы и назвать критерий (выбрасываем vs эволюционируем).


Компонентно-ориентированная модель (CBSE)

Идея: система = сборка готовых (COTS) и заказных компонентов с опубликованными интерфейсами. Конструирование смещается от «писать всё» к интегрировать и адаптировать.

Жизненный цикл CBSE (упрощённо)

ЭтапРабота конструктора
Поиск COTSОценка лицензий, SLA, roadmap вендора
АдаптацияAdapter/Facade, маппинг DTO, версионирование API
Разработка недостающегоТолько «дыры» в функциональности — по контракту
СборкаИнтеграционные и контрактные тесты (121)

CBSE как модель ЖЦкомпонентная архитектура (REP/CCP/CRP в 103): первое — процесс поставки; второе — принципы упаковки модулей в репозитории.

Экономика: reuse снижает Size в COCOMO (множитель RUSE), но добавляет интеграционные риски и зависимость от чужих релизов.


Стратегии выбора модели (для экзамена и практики)

КонтекстЧастый выборПочему для конструирования
Госконтракт, жёсткое ТЗWaterfall + VTraceability, формальная приёмка
Продукт, меняющиеся требованияИнкремент / ScrumКороткие циклы кода + feedback
Неясный UI, много UX-рисковRAD / throwaway prototypeБыстрая проверка гипотез
Новая технология, Р&D, интеграцииSpiral / spikesРиски до массового кодирования
ERP, CRM, много SaaSCBSE + Agile внутриМеньше «с нуля», больше glue-кода
Сжатые сроки MVPRAD с явным refactor-sprintНе оставлять прототип навсегда

Гибрид «Agile внутри, Waterfall снаружи» для ГИС — 7-03/2: команда работает спринтами, а заказчик принимает версии по регламенту.


Типичные ошибки

  1. Назвать Scrum «моделью ЖЦ» — это фреймворк; под ним может быть инкремент, спираль или гибрид.
  2. Путать инкремент и итерацию — см. таблицу выше.
  3. Спiral без выхода — бесконечные прототипы вместо prod-кода.
  4. CBSE = «скачать библиотеку» — без квалификации, версий и контрактных тестов интеграция ломается на каждом апдейте.

Частые вопросы на экзамене

Чем Waterfall отличается от V-модели?
Waterfall — порядок фаз; V — парность уровней разработки и тестирования.

Когда RAD не подходит?
Когда доменная логика сложна, регуляторика жёсткая, а «быстрый UI» не снимает риски ядра системы.

Что такое один виток спирали?
Цели → анализ рисков (часто прототип) → разработка и тест витка → план следующего витка.


Куда читать дальше

ТемаМатериал
Планирование сроковПланирование конструирования
Стандарты стадииКонструирование, 12207
Модульность при инкрементахСвязность и сцепление
ЭкономикаCOCOMO II
Scrum, Kanban, XP7-03/1

См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).