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

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. Управление проектным бизнесом от Алексея Васильева