Управление конфигурациями
Управление конфигурациями (сокращённо также: УК; англ. configuration management, CM) — это управленческая дисциплина[1] по достижению и поддержанию соответствия эксплуатационных, функциональных и физических свойств продукта. Управление конфигурациями обеспечивает воспроизводимость продукта и его артефактов.
Управление конфигурациями тесно связано с управлением документацией в управлении проектами (например, PRINCE2), а также с такими модельными рамками, как CMMI.[2][3][4][5]
Основы
Управление конфигурациями основывается на так называемых единицах конфигурации. Часто встречающийся термин — элемент конфигурации (англ. configuration item): это элемент или агрегат аппаратного, программного обеспечения или их совокупности, который предназначен для управления конфигурациями и рассматривается как единая сущность в процессе управления конфигурациями[6]. Согласно ISO/IEC 24765, существуют ещё шесть определений из различных стандартов ISO, немного различающихся в деталях, но аналогичных по сути[6].
Управление конфигурациями не привязано к какому-либо определённому приложению или системе. Оно осуществляется в рамках так называемого процесса управления конфигурациями (ПУК), который требует организации и планирования (ОПУК)[7].
Выделяют четыре области (подпроцесса) управления конфигурациями:[6][8][9][10]
- Идентификация конфигураций (ИК);
- Ведение учёта конфигураций (ВУК);
- Контроль изменений конфигураций (КИК);
- Аудит конфигураций (АК).
Координированное выполнение этих процессов, как правило, является задачей менеджера по управлению конфигурациями или ответственного, интегратора или, в отдельных случаях, руководителя проекта[7].
История
Необходимость внедрения и развития управления конфигурациями была вызвана постоянно растущей сложностью продуктов[9].[11] Как реакция на возникающие сложности, в 1950-х годах управление конфигурациями было разработано в аэрокосмической промышленности. Тогда для контроля статуса конфигураций использовались простейшие карточки.
Похожие проблемы были обнаружены и в других сферах, в результате чего методы и инструменты управления конфигурациями были адаптированы и специализированы под различные области применения. Сегодня управление конфигурациями является частью многих комплексных управленческих дисциплин — например, управления данными о продукции, а в вычислительной технике — управления конфигурациями программного обеспечения.
Ранние подходы включали, например, методы проверки контрольных сумм, которые до сих пор используются для идентификации версий программ и отслеживания изменений, позволяя поддерживать конфигурацию программного обеспечения[12][13].
Определение
Американский национальный институт стандартов (ANSI; англ. American National Standards Institute) совместно с Электронным отраслевым альянсом (EIA; англ. Electronic Industries Alliance) сформулировал следующее определение:[14]
«Управление конфигурациями — это управленческий процесс, направленный на установление и поддержание соответствия между характеристиками изделия, его функциональными и физическими свойствами, требованиями, проектированием и эксплуатационной документацией на протяжении всего жизненного цикла.»
В Automotive SPICE управление конфигурациями является частью Supporting Life Cycle Processes (SUP) и обозначается как «SUP.8», где целью процесса является обеспечение целостности всех рабочих продуктов процесса или проекта и их предоставление заинтересованным сторонам[15].
Стандарт определяет семь этапов процесса и девять базовых практик, а также семь рабочих продуктов[15].
Стандарт IEEE 828 (англ. IEEE Standard for Configuration Management in Systems and Software Engineering) определяет управление конфигурациями следующим образом:[7]
- (1) дисциплина, применяющая технические и административные процедуры и контроль для: идентификации и документирования характеристик объекта конфигурации, управления изменениями этих характеристик, фиксации и информирования о статусе изменений и их реализации;
- (2) совокупность технических и организационных мероприятий, включающих идентификацию, контроль, учёт и аудит конфигураций.
Отметим, что определения IEEE и ISO отличаются в деталях (см. приложение L к стандарту[7]). Кроме того, стандарт IEEE акцентируется на программном обеспечении[16].
Международный стандарт ISO 10007 определяет:[17]
Управление конфигурациями — это управленческая деятельность, осуществляющая техническое и административное руководство в течение всего жизненного цикла продукта или услуги, ведущее учёт конфигурации и статуса, а также управляет связанной информацией.
Также отмечается, что управление конфигурациями обеспечивает маркировку и отслеживаемость продукта и поддержку доступа к точной информации на всех стадиях его жизненного цикла.
Конфигурация определяется как совокупность связанных между собой функциональных и физических характеристик продукта, описанных в документации по конфигурации[18].
Компьютерное исследовательское и ресурсное отделение NIST определяет управление конфигурациями как:
Совокупность мероприятий по созданию и поддержанию целостности ИТ-продуктов и информационных систем через контроль процессов инициализации, изменения и мониторинга конфигураций этих продуктов и систем в течение всего жизненного цикла.[19][20]
В методологии PRINCE2 управление конфигурациями реализуется через стратегию управления конфигурациями, в которой определяются принципы, участники и механизмы контроля и защиты продуктов проекта[21].
Разные определения управления конфигурациями приведены и в специализированной литературе и источниках, например в SWEBOK. Крупные разработчики определяют УК так:
- IBM Engineering Requirements Management (ERM) DOORS:
Управление изменениями и конфигурациями — это систематический подход к поддержанию согласованной работы системы или продукта на протяжении всего жизненного цикла и эффективному управлению изменениями[22].
- Red Hat:
Под управлением конфигурациями понимается управление компьютерными системами, серверами и программным обеспечением для достижения заданной однородности, чтобы предприятия могли быть уверены, что их системы работают ожидаемо при любых изменениях[23].
- Заявки на изменения и процессы (ПО):
Также, УК может трактоваться как планирование заявок на изменения, их приоритизация, контроль внедрения и группировка запросов для совместной обработки[24][25].
Цели
Целью управления конфигурациями является[26] документирование выполнения физических и функциональных требований к единице конфигурации и достижение полной прозрачности по ним. Это позволяет участникам использовать только актуальную и достоверную информацию[7].
Пример необходимости УК: исследование МАГАТЭ по 50 миссиям (OSART Missions) показало, что проблемы управления конфигурацией остаются актуальной задачей, вне зависимости от размера или страны поставщика, и требуют постоянной работы по устранению.[27]
- Обеспечение воспроизводимости конфигураций продуктов,
- Эффективная и распределённая организация работы,
- Профессиональное управление изменениями.
- Отсутствие прослеживаемости изменений,
- Затруднённость отката изменений,
- Неизвестные версии или тестовые экземпляры при работе с клиентами,
- Сложности хранения артефактов или документации,
- Недостаточное качество разработки и продукта.
В ИТ управление конфигурациями призвано обеспечить:[28]
- Аудитируемость версий,
- Рост качества и защищённости систем,
- Рост эффективности проекта/продукта,
- Управление сложными разработками и сопровождением.
В рамках ITIL 4 управление конфигурациями относится к разделу управления сервисными активами (см. Управление ИТ-активами). УК и управление активами пересекаются, но различаются по сути.[29][30][31][32][33]
УК, помимо прочего, способствует выполнению отраслевых стандартов, например, Функциональная безопасность, ISO 26262 (часть 8)[34] и ISO 20000[35][36].
Концептуальные области
В рамках ОПУК принимаются организационные и технические решения по процессам ИК, ВУК, КИК и АК. Это может быть реализовано как на проектном, так и на продуктовом уровне. В числе важнейших решений — выбор инструментов, назначение ролей, распределение прав и обязанностей, определение процессов и аудит системы для проверки их соблюдения[7].
ИК необходима для осуществления ВУК, АК и КИК. В её рамках выполняется отбор единиц конфигурации, построение их структуры, документирование и присвоение идентификаторов. Ключевые вопросы касаются гранулярности, определения базовых конфигураций (базовые линии) и системы нумерации.[7]
КИК охватывает проблемы возникновения изменений в конфигурации. Главная задача — управление изменениями: идентификация, описание, классификация, оценка, утверждение и внедрение всех изменений для единиц конфигурации и относящихся к ним документов. Решения принимаются комитетом по контролю изменений (англ. change control board; CCB). Эффективный контроль требует формализованного процесса с этапами заявки, рассмотрения, утверждения, внедрения и документирования изменений. Важные документы — заявка на изменение (англ. change request, CR), протокол заседания CCB и приказ на изменение. Базовой точкой отсчёта служит соответствующая конфигурация на конкретный момент.[7]
Ведение учёта конфигураций обеспечивает отслеживаемость и документирование изменённых состояний и единиц конфигурации. Для максимальной эффективности должно сопровождать процесс с момента первой фиксации данных. ВУК охватывает всю информацию по ИК и КИК.[7]
Аудит конфигураций — это формальная проверка конфигураций на предмет соответствия заявленным физическим и функциональным характеристикам, а также соответствия реализованного продукта и его документации. Различают функциональный и физический аудит, которые возможны как для всей конфигурации, так и для отдельной единицы. Особенно необходим аудит перед утверждением базовой конфигурации.[7]
Методы и инструменты ведения учёта конфигураций
Для эффективного УК требуется присваивать уникальный идентификатор каждому состоянию объекта (файлу, коду, документу, спецификации, программе, системе и др.), вне зависимости от ручного или автоматизированного метода учёта.
Ручные методы — это способы, не использующие цифровые инструменты (компьютер, софт), при которых версионирование и управление конфигурациями осуществляется вручную. Например, долгое время перфокарты использовались для каталогизации архивов и библиотек без компьютера. Елементарно единицы конфигурации можно фиксировать и на бумаге, отмечая версию и другие параметры. Этот подход теоретически применим и к ПО, но нецелесообразен либо невозможен из-за сложности современных систем, что требует автоматизации.[9]
Автоматизированные инструменты для управления конфигурациями обеспечивают учёт данных, архивирование и процессы управления ими. Как правило, они поддерживают версионность, фиксируют автора, время изменения, дают атрибуцию и сопровождают процесс УК. История версий, часто реализованная через обратное „дельта“-кодирование, сохраняется в базе для отслеживания. Современные инструменты позволяют обеспечивать идентификацию конфигураций без дублирования элементов, предоставляют доступ с разграничением прав, предотвращают конфликтные или потерянные изменения посредством механизмов слияния (merge). В крупных проектах автоматизация управления конфигурациями является жизненно необходимой.
Возможны разные типы инструментов для УК, включая коммерческие и свободные решения.
SWEBOK выделяет следующие классы инструментов:[5]
- инструменты управления библиотеками;
- инструменты учёта изменений (tracking);
- системы управления версиями;
- средства управления выпусками (release management).
Важно: инструменты УК идут дальше обычных систем версий (например, Git), обеспечивая интеграцию и возможность сквозной прослеживаемости между различными инструментами и процессами, вплоть до требований. В простейшем случае для учёта может использоваться Excel; крупные системы (PLM, ALM) поддерживают управление требованиями и прочими аспектами жизненного цикла продукта. Немногие решения поддерживают управление продуктовыми линиями и вариантами[37].
Примечание: Перечень не исчерпывающий.
- Apache Subversion (SVN) — централизованная система управления версиями;
- Bazaar — распределённая система;
- BitKeeper — распределённая система;
- Concurrent Versions System (CVS) — централизованная система;
- Fossil SCM[38] — распределённая система;
- Gerrit Code Review (Gerrit (ПО)) — надстройка над Git, в том числе используется Wikimedia;
- Git — распределённая система; (реализован в коммерческих сервисах GitLab, GitHub) зачастую используется централизованно;
- Mercurial — распределённая система;
- Source Code Control System (SCCS) — локальная система управления версиями.
- CodeBeamer[39];
- IBM Rational Synergy;
- IBM Rational ClearCase;
- Kovair ALM[40];
- Micro Focus Dimensions CM[41] (ранее Serena Software)[42];
- PTC Windchill[43];
- Siemens Polarion ALM[44][45].
Примечания
Литература
- Brakel, R. и др. “Configuration Management for Wendelstein 7-X.” Fusion engineering and design. 84.2–6 (2009): 505–508.
- Colin Hood, Simon Wiedemann, Stefan Fichtinger, Urte Pautz. Requirements Management: Interface Between Requirements Development and All Other Systems Engineering Processes. Springer, Berlin, 2007. ISBN 3-540-47689-X.
- Hees, Andreas и др. “Konfigurationsmanagement für rekonfigurierbare Produktionssysteme”. ZWF Zeitschrift für wirtschaftlichen Fabrikbetrieb 111.1–2 (2016): 11–14.
- ISO 10007 — Руководство по управлению качеством: управление конфигурациями
- Quigley, Jon M., и Kim L. Robertson. Configuration Management: Theory, Practice, and Application. Philadelphia, PA: Auerbach, 2015.
- МАГАТЭ. Конфигурационное управление на АЭС. Вена, Австрия: МАГАТЭ, 2003.
- PMI. Practice standard for project configuration management : [англ.]. — Newtown Square : Project Management Institute, 2007. — ISBN 978-1-930699-47-2.


