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 определяют, как эти фазы взаимодействуют друг с другом, их последовательность
Последовательные (плановые)
Фазы выполняются строго последовательно: от анализа до сопровождения. Переход на следующую стадию возможен только после завершения предыдущей.
Плюсы: простота, прозрачность, предсказуемость сроков.
Минусы: низкая гибкость, высокая цена ошибок на ранних этапах.
Подходит для проектов с чётко определёнными и стабильными требованиями.
V-модель (Verification & Validation)
Развивает идею каскада, добавляя акцент на тестирование. Каждая стадия разработки имеет свой этап проверки и валидации.
Плюсы: высокое качество, прозрачная связь требований и тестов.
Минусы: всё ещё низкая гибкость, большие затраты на документацию.
Используется в проектах с высокими требованиями к безопасности и надёжности (финансы, здравоохранение, оборонная отрасль).
Инкрементальные
Продукт создаётся поэтапно, небольшими инкрементами. Каждый релиз добавляет часть ф ункционала.
Каждый инкремент проходит полный цикл SDLC (анализ, проектирование, кодирование, тестирование).
В результате пользователь постепенно получает готовые части системы.
Плюсы: ранняя демонстрация результата, управляемость изменений.
Минусы: необходимость строгой приоритизации и дисциплины версионирования.
Итерационные (адаптивные) модели
Спиральная модель
Комбинирует идеи каскадной и прототипной моделей. Каждая итерация проходит все фазы SDLC, но с акцентом на анализ рисков, в который входит:
- Планирование (определение целей и ограничений)
- Анализ рисков (выявление и оценка потенциальных проблем)
- Разработка и тестирование (реализация и проверка функциональности)
- Оценка и планирование следующей итерации
Плюсы: управление рисками, гибкость.
Минусы: высокая стоимость и сложность управления.
Применяется для крупных и исследовательских проектов.
RUP (Rational Unified Process)
Итерационный процесс, разделённый на четыре фазы. Каждая итерация включает полный цикл разработки с чётко определёнными ролями и артефактами:
- Инициация: определение границ проекта и его жизнеспособности.
- Уточнение: проектирование архитектуры системы и планирование основных итераций. Здесь создается работающий прототип, который доказывает реализуемость ключевых функций и нивелирует главные риски.
- Построение: основной объем разработки. Создается полнофункциональный продукт через серию итераций.
- Внедрение: финальные доработки, бета-тестирование, релиз и передача продукта пользователям.
Плюсы: структурированность, масштабируемость, адаптивность.
Минусы: требует зрелой команды и высокой дисциплины процессов.
Гибкие (Agile) модели
Разработка ведётся короткими итерациями — спринтами (1–4 недели). Команда поставляет работающий инкремент продукта к концу каждого спринта.
Плюсы: высокая скорость реакции на изменения, прозрачность, регулярная обратная связь.
Минусы: риск потери фокуса без Product Owner’а и чётких приоритетов.
Ориентирован на непрерывный поток задач и визуализацию процессов. Основной инструмент — канбан-доска, где задачи перемещаются по статусам.
Плюсы: простота внедрения, фокус на оптимизации потока.
Минусы: отсутствие чётких итераций может осложнить контроль сроков.
Экстремальное программирование XP (Extreme Programming)
Сосредоточен на качестве кода и скорости разработки в условиях нестабильных или быстро меняющихся требований.
Используются практики парного программирования, TDD и частых релизов.
Cуть — доведение полезных практик до «экстремальной» степени.
Парное программирование: когда над кодом одновременно работает два программиста: один пишет, второй комментирует вслух. При этом второй исправлять ничего не может — это задача первого.
Разработка через тестирование (TDD): сначала пишется авто-тест, который падает, затем код, который его проходит, и затем рефакторинг.
Плюсы: минимизация дефектов, высокая адаптивность.
Минусы: требует высокого уровня инженерной культуры.
Сравнение моделей
| Категория | Гибкость | Управляемость | Подходит для | Основной риск |
|---|---|---|---|---|
| Последовательные | Низкая | Высокая | Проек ты с фиксированными требованиями | Ошибки на ранних этапах выявляются поздно |
| Итерационные | Средняя | Средняя | Крупные проекты с изменяющимися требованиями | Рост сложности управления |
| Гибкие (Agile) | Высокая | Средняя | Быстро меняющиеся, инновационные проекты | Потеря контроля без зрелой команды |
Материалы
- Этапы жизненного цикла разработки ПО или что такое SDLC?
- SDLC
- База про жизненный цикл разработки ПО (SDLC): этапы, виды моделей и их различия
- Жизненный цикл приложения и стадии разработки программ
- Жизненный цикл программного обеспечения
- Примеры описания жизненного цикла
- SDLC: пойди туда, не знаю куда, но непременно по плану
- Связь ITSM и SDLC: цикл непрерывного совершенствования
- DevOps vs. SDLC
- Что такое SDLC? Этапы, методология и процессы жизненного цикла программного обеспечения
- Безопасная разработка приложений — что такое Secure SDLC и на что обратить внимание
- Модели жизненного цикла программного обеспечения
- Ещё раз про семь основных методологий разработки
- Что такое каскадная разработка
- Каскадная модель разработки ПО: 5 принципов работы и применение
- Битва титанов: Waterfall VS Agile — какую методологию управления проектами выбрать
- Инкрементальная модель против спиральной модели
- Методология IBM Rational Unfied Process
- Опыт перехода с Waterfall на методологию RUP для реализации больших ИТ проектов
- Унифицированный процесс Rational (RUP)
- Экстремальное программирование: полное руководство
- Что такое экстремальное программирование и как оно работает
- Экстремальное программирование: ключевые принципы и преимущества
- Экстремальное программирование или управление: как не путаться в терминах
- TDD: методология разработки, которая изменила мою жизнь
Видео
- SDLС - Жизненный цикл разработки программного обеспечения. Подробный разбор этапов разработки.
- Гибкие методологии. Agile, Scrum, Kanban, Lean, Экстремальное программирование
- Жизненный цикл и команда разработки ПО
- Жизненный цикл ПО. Каскадная, v-образная, спиральная, итеративная модели разработки ПО
- Продуктовая разработка. Часть 7 - Incremental & Iterative
- Экстремальное программирование. Методика Scrum, RUP, MSF. Метод Канбан
- Тестировщик с нуля / Урок 7. Модели разработки ПО. Водопадная, итерационная и V-модель
- Что такое RUP за 7 минут
- Что такое экстремальное программирование за 9 минут