Process & Methodology

SDLC

Software Development Life Cycle — жизненный цикл разработки ПО, набор этапов от идеи до вывода системы из эксплуатации.

Что такое SDLC

SDLC (Software Development Life Cycle, жизненный цикл разработки программного обеспечения) — модель, описывающая полный набор этапов, через которые проходит система: от появления идеи до вывода из эксплуатации. Иногда аббревиатуру расшифровывают как Systems Development Life Cycle — тогда речь шире, чем про софт: про информационную систему целиком.

SDLC — не методология и не конкурент Scrum. Это перечень работ, которые всё равно придётся выполнить: требования кто-то соберёт, архитектуру кто-то придумает, код кто-то протестирует. Разные методологии отличаются не составом этапов, а их порядком, размером и тем, сколько раз цикл повторяется.

Этапы SDLC

Этап Что происходит Артефакт
1. Планирование Оценка целесообразности, бюджет, риски Устав, дорожная карта
2. Анализ требований Что система должна делать Требования, критерии приёмки
3. Проектирование Как это будет устроено Архитектура, модель данных, контракты API
4. Разработка Написание кода Код, code review
5. Тестирование Проверка соответствия требованиям Отчёт о тестировании
6. Внедрение Выкатка в production Релиз, стратегия деплоя
7. Эксплуатация Мониторинг, поддержка, доработки SLA, инциденты
8. Вывод Отключение, миграция данных Архив, план миграции

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

Требования на этапе 2 делят на функциональные («что делает»: пользователь может восстановить пароль) и нефункциональные («каким должно быть»: 500 RPS при p95 ниже 300 мс, доступность 99,9%). Нефункциональные требования — самые дорогие в пропуске: их нельзя дописать после релиза, они определяют архитектуру. Формулирует и те, и другие обычно аналитик.

Модели SDLC

  • Waterfall (водопад) — этапы строго последовательно, каждый закрывается перед началом следующего. Работает, только когда требования известны заранее и не изменятся. Главная слабость: ошибка в требованиях обнаруживается на приёмке, когда всё построено.
  • V-модель — водопад, где каждому этапу слева сопоставлен уровень тестирования справа: требованиям — приёмочные тесты, проектированию — интеграционные, коду — модульные. Распространена там, где обязательна прослеживаемость: медтехника, транспорт.
  • Итеративная и инкрементальная — цикл повторяется, продукт растёт кусками. Каждая итерация проходит все этапы в миниатюре.
  • Спиральная — итерации с явной оценкой рисков на каждом витке. Для дорогих и рискованных проектов.
  • Agile — итерации в 1–4 недели, требования уточняются по ходу. Сегодня доминирует в продуктовой разработке.
  • DevOps — цикл замыкается: эксплуатация даёт обратную связь обратно в планирование, а этапы 4–7 автоматизируются в CI/CD-пайплайн.

Разница между водопадом и Agile — не в наличии этапов, а в длине цикла:

Waterfall:  ─ Требования ─ Дизайн ─ Код ─ Тест ─ Релиз ─→   (месяцы, один проход)

Agile:      ┌ Требования ─ Дизайн ─ Код ─ Тест ─ Релиз ┐
            └──────────── обратная связь ──────────────┘   (2 недели, много проходов)

Secure SDLC

Secure SDLC (SSDLC) — вариант, где на каждом этапе есть свои требования информационной безопасности, а не отдельная проверка в конце:

  • анализ требований — модель угроз, требования к защите данных;
  • проектирование — архитектурный разбор рисков;
  • разработка — статический анализ (SAST), проверка зависимостей на известные уязвимости;
  • тестирование — динамический анализ (DAST), пентест;
  • эксплуатация — мониторинг уязвимостей и патч-менеджмент.

Принцип называется shift-left — сдвиг проверок влево по циклу, ближе к началу. Логика та же, что у code review: уязвимость, найденная на этапе требований, стоит разговора, а найденная в production — инцидента.

Зачем знать SDLC

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

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер