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

SDLC: Жизненный цикл ПО

Жизненный цикл программного обеспечения (Software Development Life Cycle, SDLC) — структурированный процесс создания систем. SDLC описывает, как идея проходит путь от концепции до рабочего продукта.

Цель — обеспечить предсказуемость, качество и управляемость разработки.

Фазы жизненного цикла ПО

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

1. Инициация (Планирование)

Определяется цель проекта, его границы и заинтересованные стороны.
Оценивается бизнес-ценность, риски и целесообразность разработки.
Результат фазы — бизнес-кейс, дорожная карта проекта, первичные требования и оценка ресурсов.

2. Сбор и анализ требований

Вывляются:

  • Проблемы бизнеса, которые нужно решить.
  • Функциональные требования (что система должна делать).
  • Нефункциональные требования(какими качествами обладать: производительность, безопасность, надежность).

Выходные артефакты: ТЗ или спецификация требований к ПО (SRS,Software Requirements Specification), модели процессов, диаграммы прецедентов.

3. Проектирование

Решается как система будет удовлетворять требованиям. Создается проект:

  • Архитектура системы: выбираются технологии, определяются основные компоненты и их взаимодействие (микросервисы, монолит).
  • Проектирование данных: разрабатывается модель БД
  • Проектирование интерфейсов: как система будет взаимодействовать с пользователями (UI) и другими системами (API).

Результат — набор архитектурных и дизайнерских документов. Могут быть зафиксированы в документе DDS (Design Description Specification), который описывает архитектуру системы, модули, интерфейсы, связи компонентов и потоки данных.

4. Разработка (Реализация)

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

5. Тестирование

Проверяется соответствие продукта требованиям. Примеры типов тестирования:

  • Модульное (проверка отдельных компонентов).
  • Интеграционное (проверка взаимодействия компонентов).
  • Системное (проверка системы в сборе по всем требованиям).
  • Приемочное (финальная проверка с заказчиком).

6. Внедрение

Продукт разворачивается в целевой среде. Выполняется:

  • Развертывание на production-серверах.
  • Перенос данных из старых систем.
  • Обучение пользователей.
  • Подготовка документации.

Этап завершается релизом и переходом системы в эксплуатацию. Развертывание может выполняться поэтапно — сначала для ограниченной аудитории (пилотный релиз, UAT), а затем в полном масштабе.
Позволяет протестировать продукт в реальных условиях и скорректировать его перед массовым запуском.

7. Эксплуатация и сопровождение

После запуска система требует постоянной поддержки:

  • Исправление вновь обнаруженных ошибок.
  • Адаптация к изменениям в окружении (например, обновление ОС).
  • Реализация новых функций и улучшений.
  • Техническая поддержка пользователей.

Эта фаза продолжается до момента окончательного вывода системы из эксплуатации.

Модели жизненного цикла ПО

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

Последовательные (плановые)

Каскадная (Waterfall)

Фазы выполняются строго последовательно: от анализа до сопровождения. Переход на следующую стадию возможен только после завершения предыдущей.

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

Подходит для проектов с чётко определёнными и стабильными требованиями.

V-модель (Verification & Validation)

Развивает идею каскада, добавляя акцент на тестирование. Каждая стадия разработки имеет свой этап проверки и валидации.

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

Используется в проектах с высокими требованиями к безопасности и надёжности (финансы, здравоохранение, оборонная отрасль).

V-модель

Инкрементальные

Продукт создаётся поэтапно, небольшими инкрементами. Каждый релиз добавляет часть функционала. Каждый инкремент проходит полный цикл SDLC (анализ, проектирование, кодирование, тестирование).
В результате пользователь постепенно получает готовые части системы.

Плюсы: ранняя демонстрация результата, управляемость изменений.
Минусы: необходимость строгой приоритизации и дисциплины версионирования.

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

Итерационные (адаптивные) модели

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

Комбинирует идеи каскадной и прототипной моделей. Каждая итерация проходит все фазы SDLC, но с акцентом на анализ рисков, в который входит:

  • Планирование (определение целей и ограничений)
  • Анализ рисков (выявление и оценка потенциальных проблем)
  • Разработка и тестирование (реализация и проверка функциональности)
  • Оценка и планирование следующей итерации

Плюсы: управление рисками, гибкость.
Минусы: высокая стоимость и сложность управления.

Применяется для крупных и исследовательских проектов.

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

RUP (Rational Unified Process)

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

  • Инициация: определение границ проекта и его жизнеспособности.
  • Уточнение: проектирование архитектуры системы и планирование основных итераций. Здесь создается работающий прототип, который доказывает реализуемость ключевых функций и нивелирует главные риски.
  • Построение: основной объем разработки. Создается полнофункциональный продукт через серию итераций.
  • Внедрение: финальные доработки, бета-тестирование, релиз и передача продукта пользователям.

Плюсы: структурированность, масштабируемость, адаптивность.
Минусы: требует зрелой команды и высокой дисциплины процессов.

Гибкие (Agile) модели

Scrum

Разработка ведётся короткими итерациями — спринтами (1–4 недели). Команда поставляет работающий инкремент продукта к концу каждого спринта.

Плюсы: высокая скорость реакции на изменения, прозрачность, регулярная обратная связь.
Минусы: риск потери фокуса без Product Owner’а и чётких приоритетов.

Kanban

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

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

Экстремальное программирование XP (Extreme Programming)

Сосредоточен на качестве кода и скорости разработки в условиях нестабильных или быстро меняющихся требований.
Используются практики парного программирования, TDD и частых релизов.
Cуть — доведение полезных практик до «экстремальной» степени.

Парное программирование: когда над кодом одновременно работает два программиста: один пишет, второй комментирует вслух. При этом второй исправлять ничего не может — это задача первого.
Разработка через тестирование (TDD): сначала пишется авто-тест, который падает, затем код, который его проходит, и затем рефакторинг.

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

Сравнение моделей

КатегорияГибкостьУправляемостьПодходит дляОсновной риск
ПоследовательныеНизкаяВысокаяПроекты с фиксированными требованиямиОшибки на ранних этапах выявляются поздно
ИтерационныеСредняяСредняяКрупные проекты с изменяющимися требованиямиРост сложности управления
Гибкие (Agile)ВысокаяСредняяБыстро меняющиеся, инновационные проектыПотеря контроля без зрелой команды

Материалы

  1. Этапы жизненного цикла разработки ПО или что такое SDLC?
  2. SDLC
  3. База про жизненный цикл разработки ПО (SDLC): этапы, виды моделей и их различия
  4. Жизненный цикл приложения и стадии разработки программ
  5. Жизненный цикл программного обеспечения
  6. Примеры описания жизненного цикла
  7. SDLC: пойди туда, не знаю куда, но непременно по плану
  8. Связь ITSM и SDLC: цикл непрерывного совершенствования
  9. DevOps vs. SDLC
  10. Что такое SDLC? Этапы, методология и процессы жизненного цикла программного обеспечения
  11. Безопасная разработка приложений — что такое Secure SDLC и на что обратить внимание
  12. Модели жизненного цикла программного обеспечения
  13. Ещё раз про семь основных методологий разработки
  14. Что такое каскадная разработка
  15. Каскадная модель разработки ПО: 5 принципов работы и применение
  16. Битва титанов: Waterfall VS Agile — какую методологию управления проектами выбрать
  17. Инкрементальная модель против спиральной модели
  18. Методология IBM Rational Unfied Process
  19. Опыт перехода с Waterfall на методологию RUP для реализации больших ИТ проектов
  20. Унифицированный процесс Rational (RUP)
  21. Экстремальное программирование: полное руководство
  22. Что такое экстремальное программирование и как оно работает
  23. Экстремальное программирование: ключевые принципы и преимущества
  24. Экстремальное программирование или управление: как не путаться в терминах
  25. TDD: методология разработки, которая изменила мою жизнь

Видео

  1. SDLС - Жизненный цикл разработки программного обеспечения. Подробный разбор этапов разработки.
  2. Гибкие методологии. Agile, Scrum, Kanban, Lean, Экстремальное программирование
  3. Жизненный цикл и команда разработки ПО
  4. Жизненный цикл ПО. Каскадная, v-образная, спиральная, итеративная модели разработки ПО
  5. Продуктовая разработка. Часть 7 - Incremental & Iterative
  6. Экстремальное программирование. Методика Scrum, RUP, MSF. Метод Канбан
  7. Тестировщик с нуля / Урок 7. Модели разработки ПО. Водопадная, итерационная и V-модель
  8. Что такое RUP за 7 минут
  9. Что такое экстремальное программирование за 9 минут

Книги

  1. Подборка книг по Agile
  2. Подборка книг по Scrum
  3. Подборка книг по Kanban
  4. Экстремальное программирование. Разработка через тестирование - Кент Бек
  5. Управление проектным бизнесом от Алексея Васильева