SDLC: как устроены этапы и контрольные точки

Короткий ответ
SDLC (Software Development Life Cycle) — жизненный цикл программной системы: от появления потребности и требований до эксплуатации и вывода из эксплуатации. В некоторых источниках аббревиатура раскрывается как System Development Life Cycle. Это более широкий уровень, который включает не только ПО, но и оборудование, людей, процессы и операционную среду.
Главный тезис: SDLC описывает, какие работы нужно выполнить и какие результаты получить за время жизни системы. Он не задаёт единственный порядок этапов: процессы могут выполняться параллельно, итеративно и рекурсивно, а команда выбирает подходящую модель жизненного цикла.1 В контрольных точках (gates) принимают решения о следующем шаге — например, начинать ли дорогую разработку или запускать систему.2
Моё рабочее правило: чем выше цена ошибки, тем важнее заранее определить, что считать готовностью и чем её подтвердить.
Карта жизненного цикла
Для этой статьи необходимые работы собраны в учебную карту из девяти этапов:
| Этап | Какую неопределённость снимает | Главный результат | Решение в контрольной точке |
|---|---|---|---|
| 1. Потребность и реализуемость | нужна ли система и реализуема ли она | границы, ожидаемый эффект, исходные риски | продолжать работу или остановиться |
| 2. Требования | что именно требуется и как это проверить | согласованный набор требований и критериев приёмки | переходить к архитектуре |
| 3. Архитектура | каким способом достичь требуемых свойств | архитектурная схема, интерфейсы, ключевые решения | переходить к проектированию компонентов |
| 4. Проектирование компонентов | достаточно ли решение конкретно для реализации | спецификации компонентов, данных и поведения | начинать реализацию |
| 5. Реализация | существует ли воспроизводимо собираемый продукт | код, конфигурация, сборка и автоматические проверки | допускать сборку к системным проверкам |
| 6. Тестирование и приёмка | соответствует ли продукт требованиям и реальной задаче | отчёты о проверках, дефекты, оценка готовности | принимать продукт и готовить запуск |
| 7. Внедрение и переход в эксплуатацию | готова ли система к безопасному запуску | план поставки, отката, мониторинга и поддержки | запускать систему |
| 8. Эксплуатация и сопровождение | сохраняет ли система ценность и управляемость | метрики, инциденты, исправления и новые требования | выпускать изменение |
| 9. Вывод из эксплуатации | можно ли безопасно прекратить работу | миграция/архивирование данных и отключение системы | отключать систему |
Почему списки этапов различаются
Эта карта — синтез, а не обязательная схема стандарта. Software Engineering Institute перечисляет потребности и ограничения, требования, архитектуру, проектирование компонентов (detailed design), реализацию, тестирование, внедрение и сопровождение, но прямо называет список неполным.3 Вывод из эксплуатации добавлен из полного жизненного цикла ISO/IEC/IEEE 12207 и исторической модели NIST.14
Стандарты и команды группируют одну и ту же работу с разной подробностью. Например, NIST объединял её в пять крупных фаз: инициирование, приобретение или разработку, внедрение, эксплуатацию и сопровождение, вывод из эксплуатации.4 Поэтому процессы жизненного цикла — это необходимые виды работ, а этапы — способ расположить и сгруппировать их в выбранной модели.
Что важно не перепутать
- Жизненный цикл (SDLC) — работы, которые нужно выполнить от замысла до прекращения эксплуатации.
- Модель жизненного цикла — как эти работы организованы во времени: Waterfall, V-model, спиральная, итеративная, инкрементальная или гибридная модель.
- Метод управления работой — как команда планирует и выполняет короткие участки цикла: например, Scrum, Kanban или внутренний процесс компании.
- Управление решениями (governance) — кто и на основании каких доказательств разрешает переходить дальше.
Классический SDLC — не обязательно Waterfall. Одни и те же процессы жизненного цикла могут выполняться и в каскадной, и в итеративной разработке, но их группировка, порядок, размер инкрементов и контрольные точки будут различаться.1
Этапы классического SDLC
Таблица даёт обзор, но этап полезен только тогда, когда у него понятны цель, входы, результат, ответственный и критерии выхода. Эти границы не обязаны совпадать с календарными отрезками: требования уточняются во время проектирования, проектное решение проверяется прототипом, а эксплуатация порождает новые требования.
1. Потребность и реализуемость
Сначала команда выясняет, чью проблему решает система, какой эффект ожидается и что ограничивает решение. Результат — описание границ задачи и исходных рисков. На этой основе решают, продолжать работу, изучать альтернативы или остановиться.
2. Требования
Потребности заинтересованных сторон переводятся в проверяемые требования, сценарии использования, бизнес-правила, интерфейсы и ограничения качества. Требования должны дать команде способ проверить результат, а не только описать желаемую функцию. В формальной среде их готовность может оцениваться отдельной экспертной проверкой.7
3. Архитектура и системное проектирование
Архитектура задаёт крупные компоненты, границы ответственности, потоки данных, интеграции, топологию развёртывания и ключевые компромиссы. Она должна объяснять, как система сохраняет требуемые свойства при отказах, росте нагрузки и изменениях, а также какие рискованные решения ещё нужно проверить прототипом.
4. Проектирование компонентов
Следующий уровень отвечает на более узкий вопрос: достаточно ли конкретно описано устройство компонентов, чтобы их можно было реализовать и проверить? Здесь появляются алгоритмы, структуры данных, схемы БД, состояния, протоколы, форматы ошибок и правила валидации. Граница с архитектурой подвижна, но спецификации компонентов не должны противоречить архитектурным решениям. Перед реализацией формальная экспертная проверка может оценивать зрелость проектного решения.8
5. Реализация
Проектное решение превращается в код, конфигурацию, инфраструктуру и миграции. Воспроизводимая сборка, ревью кода, статический анализ, проверки безопасности и модульные тесты выполняются вместе с реализацией, а не откладываются до отдельной «фазы качества».
6. Тестирование и приёмка
Верификация отвечает на вопрос, соответствует ли реализация спецификации. Валидация — решает ли система исходную задачу в реальном контексте. Состав модульных, интеграционных, системных, нагрузочных, приёмочных и других проверок определяется риском. Перед формальным тестированием отдельная экспертная проверка подтверждает готовность системы, среды, документации и тестовых материалов.9
7. Внедрение и переход в эксплуатацию
Работающий код ещё не означает готовность к запуску. Нужны управляемое развёртывание, миграции, мониторинг, резервное копирование, откат, поддержка и передача ответственности эксплуатационной команде. Перед запуском отдельная экспертная проверка подтверждает готовность системы и людей к работе в целевой среде.10
8. Эксплуатация и сопровождение
После запуска команда исправляет дефекты, управляет зависимостями, наблюдает за системой и развивает продукт. Метрики, обращения пользователей и инциденты возвращаются в цикл как основания для новых требований и изменений.
9. Вывод из эксплуатации
Жизненный цикл заканчивается управляемым прекращением работы: миграцией и архивированием данных, отключением интеграций, отзывом доступов, удалением инфраструктуры и выполнением юридических обязательств. В ранней модели NIST этот этап называется disposition.4
Что V-модель добавляет к карте этапов
V-модель полезна не как ещё один список фаз, а как карта соответствий. Слева система определяется от потребности к требованиям, архитектуре и компонентам. Справа собранный продукт проходит соответствующие уровни интеграции, верификации и валидации. Реализация находится в нижней точке V.
| Что определяется до реализации | Чем подтверждается после реализации |
|---|---|
| Потребность и ожидаемый эффект | валидацией результата в пользовательском и продуктовом контексте |
| Системные требования и критерии приёмки | системными и приёмочными проверками |
| Архитектура и интерфейсы | интеграционными, контрактными и архитектурными проверками |
| Проектирование компонентов | модульными, статическими и основанными на свойствах проверками |
В NASA Systems Engineering Handbook каждому уровню определения слева соответствует уровень интеграции и проверки справа. Способ проверки предлагают определять одновременно с разработкой требования, чтобы не получить требование, соответствие которому невозможно измерить или доказать.11
Это не означает, что весь проект должен один раз пройти большую V от начала до конца. Процессы жизненного цикла могут выполняться параллельно, итеративно и рекурсивно.1 Для продуктовой разработки полезнее повторять такую связь на масштабе отдельного изменения: сначала связать цель, спецификацию и проектное решение со способами проверки, затем выполнить реализацию и собрать доказательства в обратном направлении.
Я называю такую адаптацию микро-V одного изменения. Это авторская рабочая модель, а не отдельный отраслевой стандарт.
Почему это особенно важно при работе с агентами разработки
Агент ускоряет появление реализации, но сам по себе не доказывает её правильность. В эксперименте OpenAI с полностью агентно создаваемой кодовой базой рост потока изменений сделал человеческую QA-ёмкость ограничением. Команда отвечала на это не более длинными отчётами агентов, а доступными агенту интерфейсом приложения, логами и метриками, воспроизводимыми окружениями и механически исполняемыми архитектурными ограничениями.12
Anthropic формулирует близкое требование к проверке агентов разработки: нужны ясно определённые задачи, стабильные тестовые среды и полноценные тесты созданного кода. При оценке важно отличать журнал действий агента от фактического состояния системы после его работы.13
Мой вывод: с внедрением агентной разработки V-модель становится полезнее не как способ вернуть Waterfall, а как дисциплина трассировки: для каждого решения заранее определить соответствующее доказательство.
Практически это означает четыре правила:
- До передачи изменения агенту связать существенные критерии с методом проверки и ожидаемыми доказательствами.
- Давать агенту автономность до той контрольной точки, где результат можно проверить автоматически или дёшево перепроверить.
- Для дорогих и труднообратимых решений не считать тест или самооценку, созданные тем же агентом, достаточным независимым подтверждением.
- Оставлять человеку выбор цели, бизнес-валидацию и принятие остаточного риска, даже если техническая верификация автоматизирована.
Как работает контрольная точка (gate)
Четыре соседних понятия описывают разные события:
| Термин | Что это | Обязательно ли решение |
|---|---|---|
| Веха (milestone) | значимая точка на плане или календаре | нет |
| Экспертная проверка (review) | оценка результатов, рисков и доказательств экспертами | не всегда |
| Контрольная точка (gate/KDP) | момент, когда уполномоченная сторона определяет следующий шаг | да |
| Базовая версия (baseline) | утверждённая версия требований, проектного решения, конфигурации или плана, которая дальше меняется контролируемо | нет, это состояние артефакта |
Команда готовит результаты и доказательства, экспертная проверка оценивает их, а в контрольной точке уполномоченная сторона принимает решение. После этого требования, проектное решение или план могут получить новую базовую версию — зафиксированную точку отсчёта для дальнейших изменений.
Решение обычно укладывается в один из пяти вариантов:
- переходить дальше (go);
- переходить с условиями (go with conditions): зафиксировать условия и их владельцев;
- приостановить (hold): собрать недостающие доказательства;
- вернуть на доработку (rework): вернуться к предыдущему этапу;
- остановить (stop): закрыть проект или выбрать другой вариант.
В небольшом проекте решение в контрольной точке можно зафиксировать в запросе на включение изменений, согласовании релиза или подтверждении владельца продукта; основанием может служить короткий чек-лист. В регулируемой или критичной для безопасности системе состав участников и форма протокола определяются применимыми стандартами. NASA называет формальную точку такого решения KDP (Key Decision Point).2
Перед экспертной проверкой и решением команда разделяет:
- входные критерии (entrance criteria): что должно быть готово, чтобы проверку вообще имело смысл проводить;
- критерии успешного прохождения проверки (success criteria): что должно быть подтверждено по итогам проверки;
- критерии выхода (exit criteria): какие условия должны быть выполнены, чтобы разрешить переход;
- доказательства (evidence): чем команда подтверждает выполнение критериев.
Учебный пример: команда готовит тест скорости поиска. По плану он должен пройти на базе из миллиона записей. Команда представляет сборку и план теста, но на экспертной проверке выясняется, что тестовая база пуста. Ответственный откладывает тест. Команда заполняет базу сгенерированными данными и прикладывает отчёт с числом записей. После повторной проверки ответственный разрешает начать тест.
Автоматическая проверка качества оценивает более узкий набор условий: например, успешность тестов или отсутствие критических уязвимостей. При решении о следующем шаге учитывают также ожидаемую пользу, стоимость, сроки и оставшиеся риски.
Пример минимального маршрута контрольных точек
Для обычного бизнес-продукта полный набор формальных проверок обычно несоразмерен риску. Я бы начинал с такого сокращённого маршрута:
| Переход | Решение в контрольной точке | Что подтверждает готовность |
|---|---|---|
| Идея → Исследование или создание | начинать работу | записаны проблема пользователя, ожидаемый эффект и ограничения; владелец продукта подтвердил задачу |
| Требования → Архитектура | переходить к архитектуре | у требований есть критерии приёмки и приоритеты; зафиксировано, кто их согласовал |
| Проектирование → Реализация | начинать реализацию | описаны интерфейсы, записаны причины выбора проектного решения и оставшиеся риски |
| Реализация → Тестирование | допускать сборку к системным проверкам | сборка воспроизводится и развёрнута в тестовой среде; отчёт подтверждает прохождение автоматических проверок |
| Тестирование → Внедрение | принимать продукт и готовить запуск | отчёт тестирования подтверждает выполнение критериев приёмки; зафиксировано, кто принял оставшиеся дефекты и риски |
| Внедрение → Эксплуатация | запускать систему | есть результаты проверки развёртывания и отката; мониторинг включён, ответственные за поддержку назначены, инструкции доступны |
| Изменение в эксплуатации → Новый выпуск | выпускать изменение | есть результаты тестов затронутых функций и ревью изменений; оставшиеся риски приняты ответственным за выпуск |
В итеративной разработке эти решения принимаются чаще и на меньшем объёме работы. Небольшое изменение проверяют по короткому списку критериев готовности; отдельные проверки архитектуры, безопасности и эксплуатации проводят там, где этого требует риск.
Где в SDLC находится безопасность и качество
Безопасность, качество, конфигурационное управление, документация и управление рисками проходят через весь цикл. Качество задаётся требованиями, поддерживается проектными решениями и ревью кода, проверяется тестами и наблюдается по данным эксплуатации. Требования безопасности влияют на архитектуру; журналирование, резервное копирование и восстановление проектируются до развёртывания; результаты проверок и данные эксплуатации возвращаются в требования. Такую сквозную работу описывал исторический NIST SP 800-64 Rev. 2, а актуальное руководство по системному проектированию безопасности содержится в NIST SP 800-160 Vol. 1 Rev. 1.56
Как проверить свой жизненный цикл
Связность процесса можно проверить по шести признакам:
- ясная связь между целями, требованиями, проектными решениями, кодом и тестами;
- явные владельцы решений и критериев приёмки;
- контроль соразмерен риску: высокая цена ошибки требует более тщательной и независимой проверки;
- возможность вернуться назад, если доказательств недостаточно;
- воспроизводимые сборка, тестирование и поставка;
- обратная связь из эксплуатации в новые требования.
У каждого этапа должны быть понятны результат и неопределённость или риск, которые он помогает снять. Контрольная точка отвечает на вопрос: достаточно ли доказательств, чтобы принять решение о следующем шаге?
Источники
-
IEEE/ISO/IEC 12207-2026, “Software life cycle processes” — действующий стандарт: общий процессный каркас от замысла до retirement, возможность параллельного, итеративного и рекурсивного применения процессов и построения собственной модели из stages. ↩ ↩2 ↩3 ↩4
-
NASA Software Engineering Handbook, KDP and phase transitions — связь критериев перехода, формальных проверок и Key Decision Points. ↩ ↩2
-
SEI, “Rethinking the Software Life Cycle” — перечень типичных SDLC activities, его неполнота и оговорка, что он не задаёт конкретную модель разработки. ↩
-
NIST SP 800-64 Rev. 1 — историческая общая пятифазная модель SDLC: initiation, acquisition/development, implementation, operations/maintenance и disposition. ↩ ↩2 ↩3
-
NIST SP 800-64 Rev. 2, “Security Considerations in the System Development Life Cycle” — историческое руководство по встраиванию security activities во весь SDLC; NIST отозвал публикацию 31 мая 2019 года как устаревшую. ↩
-
NIST SP 800-160 Vol. 1 Rev. 1, “Engineering Trustworthy Secure Systems” — актуальное руководство NIST по системной инженерии защищённых и заслуживающих доверия систем на всём жизненном цикле. ↩
-
NASA Software Engineering Handbook, SWE-019 и Entrance/Exit Criteria, SRR — роль проверки требований и критериев перехода между фазами. ↩
-
NASA Software Engineering Handbook, CDR criteria — назначение Critical Design Review перед implementation/testing. ↩
-
NASA Software Engineering Handbook, TRR criteria — условия готовности к тестированию. ↩
-
NASA Software Engineering Handbook, ORR criteria — условия готовности к operational use. ↩
-
NASA Systems Engineering Handbook, “The Project Cycle for Major NASA Systems” — Vee как соответствие декомпозиции и определения слева интеграции и проверке справа; метод проверки определяется при разработке требований. ↩
-
OpenAI, “Harness engineering: leveraging Codex in an agent-first world” — первичный инженерный отчёт о спецификации намерения, feedback loops, машиночитаемом окружении и исполняемых архитектурных ограничениях в полностью агентно создаваемой кодовой базе. ↩
-
Anthropic, “Demystifying evals for AI agents” — первичный инженерный отчёт о требованиях к evals агентов разработки: определённым задачам, стабильным средам, проверкам кода и оценке фактического результата. ↩