Жизненный цикл разработки ПО (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 — частота релизов
Лучшие практики
- Вовлекайте стейкхолдеров на всех этапах
- Документируйте решения и их обоснование
- Автоматизируйте тестирование и деплой
- Собирайте метрики для улучшения процесса
- Проводите ретроспективы после каждого этапа
- Управляйте рисками проактивно
- Поддерживайте качество кода через code review