Понятие жизненного цикла информационной системы
Жизненный цикл охватывает систему от появления потребности до отключения последнего экземпляра и удаления либо переноса данных. Релиз — середина, а не конец цикла.
Этапы
- Инициация — проблема, владельцы, ожидаемый эффект и ограничения.
- Анализ — требования, процессы, данные, риски и критерии приёмки.
- Проектирование — архитектура, интерфейсы, модель данных, эксплуатационный контур.
- Реализация — код, конфигурация, миграции и документация.
- Проверка — функциональные и нефункциональные испытания.
- Внедрение — выпуск, перенос данных, обучение, план отката.
- Эксплуатация — наблюдение, инциденты, обновления, управление ёмкостью.
- Развитие — изменения на основе новой потребности и обратной связи.
- Вывод — остановка трафика, архив или удаление данных, отзыв доступов, закрытие зависимостей.
Этапы перекрываются и повторяются. В итеративной разработке маленький фрагмент системы проходит этот цикл много раз.
Модели жизненного цикла
| Модель | Сильная сторона | Риск |
|---|---|---|
| каскадная | понятные фазы и документы | поздняя обратная связь |
| итеративная | уточнение решения по результатам циклов | нужна дисциплина границ |
| инкрементальная | ранняя поставка полезных частей | временная архитектура может закрепиться |
| спиральная | явная работа с рисками и прототипами | высокая стоимость управления |
| непрерывная поставка | короткий путь изменения до эксплуатации | требует автоматизации и наблюдаемости |
Название процесса не гарантирует качество. Важно, как быстро реальный результат возвращается в требования.
Артефакты, которые должны жить вместе с системой
- требования и критерии;
- архитектурные решения;
- API и схема данных;
- тесты;
- инструкции выпуска, отката и восстановления;
- владельцы и каналы поддержки;
- план миграции и вывода из эксплуатации.
Управление качеством: Системы управления качеством программного обеспечения.
Самопроверка
- Почему сопровождение относится к жизненному циклу разработки?
- Какие данные нужны для безопасного вывода системы?
- Чем итерация отличается от инкремента?