Управление конфигурацией
Конфигурация — это знание о том, какова работающая (актуальная) система, выделенная из множества ее возможных вариантов. Конфигурация находится под контролем, если конфигурация определения системы соответствует конфигурации воплощения системы. Если какие-то части этих конфигураций не соответствуют друг другу, то говорят о конфигурационных коллизиях.
Управление конфигурацией (configuration management) — техническая дисциплина системной инженерии, обеспечивающая поддержание надлежащей (задуманной, одобренной) конфигурации системы во время всего её жизненного цикла. Если говорить попроще, то управление конфигурацией - это практика, обеспечивающая на протяжении всего жизненного цикла совместимость версий (отсутствие коллизий!) и полноту частей системы (отсутствие коллизий!).
Управление конфигурацией - практика системноинженерного менеджмента — она занимается поддержанием целостности системы на протяжении всего ЖЦ. В рамках этой практики выпускаются различные виды спецификаций закупаемого/изготавливаемого оборудования/изделий — BOM (bill of materials, список комплектующих).
Отнесение управления конфигурацией к системной инженерии означает, что конфигурация обязательно относится ко всей системе.
Управляющий конфигурацией - системный инженер, наряду с инженером по требованиям, системным архитектором, интегратором.
Содержание
Основные понятия
Управление конфигурацией включает в себя следующие понятия:
- базис (configuration baseline) - исходная (утвержденная) конфигурация. Базис определяется на следующих этапах:
Базис | Определяется на этапе | Тип спецификации | Характеристики | Описываемый элемент |
---|---|---|---|---|
Функциональный
(Functional) |
Выбор концепции | A | Функциональные спецификации | Система |
Физический (Allocated) | Техническое проектирование | B | Проектная документация | Элемент конфигурации |
Продукции (Product) | Техническое проектирование | C, D, E | Производственно-технологическая документация | Элемент конфигурации |
- версия/ревизия (version/revision);
- элемент конфигурации (configuration item, CI) - элемент системы, который является основой для описания и формального управления проектированием системы, базовая часть системы, которая проектируется, конструируется и создается силами одной организации. Характеристики и интерфейсы CI с другими составными частями должны быть определены и контролироваться, чтобы гарантировать надлежащее функционирование CI в составе системы в целом. Различают:
- аппаратные элементы конфигурации (hardware CI - HWCI)
- элементы конфигурации программного обеспечения компьютера (computer software CI - CSCI)
Практики
Дисциплина управления конфигурацией имеет следующие основные основные практики:
- Идентификация - поддержка инженерных разбиений (классификаций, кодировок) и именования/кодировки отдельных конфигурационных единиц (configuration items).
- Именно тут обсуждаются PBS, GBS, WBS и разные системы кодировок типа RDS-PP, KKS, RTM, S1000D и т.д.
- Конфигурационный учет/регистрация - административное обеспечение взаимного соответствия:
- проекта (включая требования),
- исполнительной документации (as built, "что мы думаем о реальной системе"),
- самой системы "в железе и бетоне".
- Обычно обеспечивается:
- наличием конфигурационной базы данных (CMDB - сonfiguration management data base)
- административными процедурами по её ведению (в т.ч. по назначению ведущего учёт (регистратора), передаче ведения учёта от регистратора регистратору, делегированию полномочий по учёту в порядке распределенной учётной деятельности и т.д.)
- Контроль версий (version/revision control):
- обеспечение того, что базис (утвержденная для каких-то целей конфигурация) собирается из взаимно соответствующих версий частей системы (будь то версии проектной или исполнительной документации, или же версии самой системы "в железе и бетоне"). Софтверщикам с их CVS и SVN против git и Mercurial должно быть понятно, о чем это.
Основные принципы
Управление конфигурацией очень просто, когда есть один административный центр, который вводит
- обязательную идентификацию
- обязательный регламент учёта
- централизованное версионирование
При распределенной разработке (collaborative engineering, concurrent engineering) каждая из участвующих в проекте организаций имеет собственные предпочтения по управлению конфигурацией (кодировки, учётные регламенты, версионирование). Собрать из этого распределенного конфигурационного месива базис обычно представляет собой непростую задачу.
Так, любая PLM-cистема поддерживает управление конфигурацией. Но если в расширенной организации (extended enterprise) используется несколько разных PLM-систем, то немедленно начнутся проблемы. Еще бОльшие проблемы будут, если нет полноценной (организация+софт) системы управления жизненным циклом (СУЖЦ), а есть только неподдержанный организационными решениями (необходимым для управления конфигурацией workflow) софт PLM.
Коллизии, возникающие из проблем управления конфигурацией - самые распространенные. Отсутствие управления конфигурацией как раз и характеризуется словами "у них там бардак". Поэтому разворачивание технологии управления конфигурацией - центральная забота при создании СУЖЦ.
Управление конфигурацией требует:
- указания метода (управлять конфигурацией можно очень и очень по-разному, есть самые разные теории на этот счёт - теории идентификации, учёта, версионирования).
- обучения людей - это дисциплина, её нужно знать, и ей нужно дисцилинированно следовать.
- разворачивания в организациях технологии: конфигурационных баз данных, справочников по кодировкам, систем версионирования и т.д.
Инструментарий
Для управления конфигурацией определения системы сейчас используют информационные системы:
- VCS (version control system) — система управления версиями в программной инженерии;
- PDM-система (product data management) — система хранения информации проекта-design;
- PLM-система (product life cycle management) — система управления жизненным циклом, это PDM + система управления изменениями и поддержка интерфейсов в другие информационные системы других стадий жизненного цикла — системы закупок, например;
- EAM (enterprise asse management) — система управления активами, используется для учёта установленного оборудования на стадии эксплуатации.
Управление конфигурацией в программной инженерии
Конфигурационное управление (англ. software configuration management, SCM) в программной инженерии — комплекс методов, направленных на систематический учёт изменений, вносимых разработчиками в программный продукт в процессе его разработки и сопровождения, сохранение целостности системы после изменений, предотвращение нежелательных и непредсказуемых эффектов, формализацию процесса внесения изменений.
Изначально управление конфигурацией применялось не в программировании. Под конфигурацией понимался состав деталей конечного продукта и «взаимное расположение частей» физического изделия. Таким образом, конфигурацией можно управлять, контролируя документы, описывающие конечный продукт, требования к нему, всю его проектную и технологическую документацию.
В связи с высокой динамичностью сферы разработки ПО, в ней конфигурационное управление особенно полезно. К процедурам можно отнести: - создание резервных копий, - контроль исходного кода, - контроль требований проекта, - контроль документации - и т. д.
Степень формальности выполнения данных процедур зависит от размеров проекта, и при правильной её оценке данная концепция может быть очень полезна.
Ссылки
- федерирование инженерных информационных систем разных стадий жизненного цикла (этот текст в существенной мере относится к практике управления информацией, необходимой для надлежащего контроля конфигурации. Он требует для своего понимания профессионального знания моделирования данных).