Жизненный цикл
Жизненный цикл системы (system life cycle) — это деятельность всех обеспечивающих систем, ведущих целевую систему от её замысла до вывода из эксплуатации, обычно эта деятельность разбита на стадии, которые вполне могут быть не только последовательными, но и перекрываться во времени друг с другом. Когда говорят “управление жизненным циклом” как раз говорят об управлении деятельностью (управлении обеспечивающей системой), обеспечивающей переход от одной стадии жизненного цикла к другой.
Жизненный цикл проекта (project life cycle) — это часть жизненного цикла системы, которая укладывается в рамки проекта. Иногда жизненный цикл проекта совпадает во времени с какой-то стадией жизненного цикла, иногда не совпадает. Более того, совершенно необязательно, что в рамки жизненного цикла проекта (деятельности проекта) попадает вся деятельность какой-то стадии жизненного цикла системы. Проект обычно бьётся на этапы (чтобы хоть как-то отделять этапы проекта от стадий жизненного цикла).
Содержание
Рабочие продукты
Альфа определения (definition) жизненного цикла выражается в рабочих продуктах — описаниях (description) жизненного цикла, чаще всего это разного сорта диаграммы (простейшими из которых являются одномерные “стрелочки времени с зарубками на границах стадий” и “колбаски с именами стадий”, более сложные представляются двумерными диаграммами, а самые сложные подразумевают использование графических языков ситуационной инженерии методов).
Стадии жизненного цикла
Стадии жизненного цикла выделяют по изменению в ходе жизненного цикла преимущественного образа мышления (согласно ISO 24744 — change of mental framework). Это не слишком формальное определение, но оно как минимум не предлагает сосредотачиваться на “состоянии целевой системы”, а даётся именно в терминах обеспечивающих систем. На разных стадиях жизненного цикла системы люди думают про разное: на стадии проектирования люди думают о проектировании, на стадии строительства о стройке, на стадии эксплуатации — об эксплуатации.
Управление жизненным циклом
см. Управление жизненным циклом
Модели жизненного цикла
Водопадная (каскадная)
Модель, в которой жизненный цикл выглядит как поток, последовательно проходящий фазы анализа требований, проектирования, реализации, тестирования, интеграции и поддержки.
Спиральная
Спиральная модель стала существенным прорывом в понимании природы разработки ПО. Она представляет собой процесс разработки программного обеспечения, сочетающий в себе как итеративность, так и этапность.
Отличительной особенностью этой модели является специальное внимание рискам, влияющим на организацию жизненного цикла. Боэм формулирует десять наиболее распространённых (по приоритетам) рисков:
- Дефицит специалистов.
- Нереалистичные сроки и бюджет.
- Реализация несоответствующей функциональности.
- Разработка неправильного пользовательского интерфейса.
- «Золотая сервировка», перфекционизм, ненужная оптимизация и оттачивание деталей.
- Непрекращающийся поток изменений.
- Нехватка информации о внешних компонентах, определяющих окружение системы или вовлечённых в интеграцию.
- Недостатки в работах, выполняемых внешними (по отношению к проекту) ресурсами.
- Недостаточная производительность получаемой системы.
- Разрыв между квалификацией специалистов и требованиями проекта.
Большая часть этих рисков связана с организационными и процессными аспектами взаимодействия специалистов в проектной команде.
Каждый виток спирали соответствует созданию фрагмента или версии программного обеспечения, на нем уточняются цели и характеристики проекта, определяется его качество и планируются работы следующего витка спирали. Таким образом углубляются и последовательно конкретизируются детали проекта и в результате выбирается обоснованный вариант, который доводится до реализации. Каждый виток разбит на 4 сектора:
- оценка и разрешение рисков,
- определение целей,
- разработка и тестирование,
- планирование.
Главная задача — как можно быстрее показать пользователям системы работоспособный продукт, тем самым активизируя процесс уточнения и дополнения требований. Основная проблема спирального цикла — определение момента перехода на следующий этап. Для её решения необходимо ввести временные ограничения на каждый из этапов жизненного цикла. Переход осуществляется в соответствии с планом, даже если не вся запланированная работа закончена. План составляется на основе статистических данных, полученных в предыдущих проектах, и личного опыта разработчиков.
V-диаграмма
Используется чаще всего, чтобы пояснять самые общие черты системноинженерного процесса/метода/жизненного цикла:
- Фундаментальную разницу между практиками определения системы (работы с информацией), реализации системы (работы с веществами и полями), а также использованием системы. В том числе на V-диаграмме показывается основная идея системной инженерии “восемь раз отмерь, один раз отрежь”: рекомендуется максимизировать трату ресурсов на более ранних стадиях, чтобы потом экономить трату много больших ресурсов на более поздних стадиях.
- Соответствие определений и воплощений системы, поддерживаемое через проверки (верификация) и приёмки (валидация).
- Ведущие практики жизненного цикла (дисциплины-рабочие продукты- инструменты).
- Разницу между системноинженерными практиками (выше пунктирной линии), имеющими дело с системой в целом и “обычными” инженерными практиками, имеющие дело с частями системы.
- Взаимодействие между практиками: работа идёт отнюдь не по той практике-стадии, которой соответствует точка времени на диаграмме! Нет, одновременно задействована вся “вертикаль” практик — архитектор общается и с инженерами по требованиям, и с занимающимися рабочим проектированием, а инженер-интегратор общается и с эксплуатационщиками, и с производителями оборудования.
Эта простейшая диаграмма имеет огромное число вариаций и модификаций (например Dual V-model).
Горбатая диаграмма
На этой диаграмме phases (фазы) это стадии жизненного цикла, которые в свою очередь разбиты на итерации. Практики названы “дисциплинами”. Чётко видно, что работы по требованиям продолжаются вплоть до стадии передачи в эксплуатацию (transition), а тестирование начинается на начальных стадиях, а не только при подготовке к передаче в эксплуатацию.
Практики (processes) жизненного цикла в версии ISO 15288
С целевой системой в плане продвижения альф определения и воплощения системы непосредственно работают главным образом технические практики из ISO 15288. Остальные практики жизненного цикла системной инженерии работают с обеспечивающей системой, продвигая альфы работы, технологии, команды, возможностей и стейкхолдеров. Само определение вида жизненного цикла входит как отдельная практика (2.1).
Для некрупных проектов этот стандарт избыточен.
Паттерны жизненного цикла
Паттерны жизненного цикла выделяют в зависимости от распределения различных рисков по стадиям жизненного цикла (см.):
- Купи готовое (Use Single NDI),
- Гибкий (Agile),
- Гибкий с архитектурой (Architected Agile),
- Формальные методы (Formal Methods),
- Оборудование с программными компонентами (Hardware with embedded Software component),
- Неделимость для начала эксплуатации (Indivisible Initial Operational Capability),
- Много закупок (NDI-intensive) — проектирование (в отличие от конструирования),
- Гибрид гибкости и плана (Hybrid agile/plan-driven system),
- Много собственников в системе систем (Multi-owner system of systems),
- Семейство систем (Family of systems),
- Brownfield (модернизация),
- Акцент на сервисах (Services-Intensive).