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

Жизненный цикл разработки ПО (SDLC)

Software Development Life Cycle — процесс создания программного обеспечения от идеи до вывода из эксплуатации.

Основные этапы

1. Планирование

Цель: Определить цели проекта, бюджет, сроки, ресурсы.

Действия:

  • Анализ бизнес-потребностей
  • Оценка осуществимости
  • Определение scope проекта
  • Формирование команды
  • Создание roadmap

Артефакты:

  • Project Charter
  • Бизнес-кейс
  • Предварительная оценка
  • План проекта

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

Цель: Понять что нужно создать.

Действия:

  • Сбор требований от стейкхолдеров
  • Анализ существующих систем
  • Выявление функциональных и нефункциональных требований
  • Приоритизация требований

Артефакты:

  • Техническое задание (ТЗ)
  • User Stories
  • Use Cases
  • Функциональные спецификации

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

Цель: Определить как система будет работать.

Действия:

  • Проектирование архитектуры
  • Дизайн базы данных
  • Проектирование API
  • Создание прототипов UI/UX
  • Выбор технологий

Артефакты:

  • Архитектурная документация
  • ER-диаграммы
  • API спецификации
  • Wireframes и mockups
  • Технический дизайн

4. Разработка

Цель: Написать код согласно спецификациям.

Действия:

  • Написание кода
  • Code review
  • Unit тестирование
  • Интеграция компонентов
  • Документирование кода

Артефакты:

  • Исходный код
  • Документация API
  • Unit тесты
  • Технические комментарии

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

Цель: Убедиться что система работает корректно.

Виды тестирования:

  • Unit — тестирование отдельных компонентов
  • Integration — тестирование взаимодействия компонентов
  • System — тестирование системы целиком
  • UAT — приемочное тестирование пользователями
  • Performance — нагрузочное тестирование
  • Security — тестирование безопасности

Артефакты:

  • Тест-кейсы
  • Баг-репорты
  • Отчеты о тестировании
  • Метрики качества

6. Внедрение (Deployment)

Цель: Запустить систему в продакшн.

Действия:

  • Подготовка окружения
  • Миграция данных
  • Развертывание приложения
  • Обучение пользователей
  • Мониторинг запуска

Артефакты:

  • Deployment план
  • Инструкции для пользователей
  • Rollback план
  • Отчет о внедрении

7. Поддержка и сопровождение

Цель: Обеспечить стабильную работу системы.

Действия:

  • Мониторинг работы системы
  • Исправление багов
  • Обновления и патчи
  • Техническая поддержка пользователей
  • Сбор обратной связи

Артефакты:

  • Инциденты и их решения
  • Changelog
  • Метрики производительности
  • Запросы на улучшения

Модели SDLC

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

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

Плюсы:

  • Простота управления
  • Четкая документация
  • Подходит для проектов с фиксированными требованиями

Минусы:

  • Негибкость
  • Поздняя обратная связь
  • Высокие риски

Agile (Гибкая)

Итеративная разработка короткими циклами (спринтами).

Плюсы:

  • Быстрая обратная связь
  • Гибкость к изменениям
  • Ранняя поставка ценности

Минусы:

  • Требует вовлеченности заказчика
  • Сложнее планировать долгосрочно
  • Может быть хаос без дисциплины

V-Model

Расширение Waterfall с акцентом на тестирование на каждом этапе.

Spiral

Итеративная модель с фокусом на управление рисками.

DevOps

Интеграция разработки и операций для непрерывной поставки.

Роль аналитика в SDLC

ЭтапРоль аналитика
ПланированиеУчастие в оценке, определение scope
АнализКлючевая роль — сбор и анализ требований
ПроектированиеПроектирование решений, создание спецификаций
РазработкаКонсультации, уточнение требований
ТестированиеUAT, проверка соответствия требованиям
ВнедрениеОбучение пользователей, документация
ПоддержкаАнализ инцидентов, сбор обратной связи

Метрики SDLC

  • Lead Time — время от идеи до продакшна
  • Cycle Time — время разработки одной фичи
  • Defect Density — количество багов на 1000 строк кода
  • Code Coverage — покрытие кода тестами
  • MTTR — среднее время восстановления после сбоя
  • Deployment Frequency — частота релизов

Лучшие практики

  1. Вовлекайте стейкхолдеров на всех этапах
  2. Документируйте решения и их обоснование
  3. Автоматизируйте тестирование и деплой
  4. Собирайте метрики для улучшения процесса
  5. Проводите ретроспективы после каждого этапа
  6. Управляйте рисками проактивно
  7. Поддерживайте качество кода через code review