Управление конфигурациями

Управление конфигурациями (сокращённо также: УК; англ. 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

Американский национальный институт стандартов (ANSI; англ. American National Standards Institute) совместно с Электронным отраслевым альянсом (EIA; англ. Electronic Industries Alliance) сформулировал следующее определение:[14]

«Управление конфигурациями — это управленческий процесс, направленный на установление и поддержание соответствия между характеристиками изделия, его функциональными и физическими свойствами, требованиями, проектированием и эксплуатационной документацией на протяжении всего жизненного цикла.»

Automotive SPICE

В Automotive SPICE управление конфигурациями является частью Supporting Life Cycle Processes (SUP) и обозначается как «SUP.8», где целью процесса является обеспечение целостности всех рабочих продуктов процесса или проекта и их предоставление заинтересованным сторонам[15].

Стандарт определяет семь этапов процесса и девять базовых практик, а также семь рабочих продуктов[15].

IEEE Std 828-2012 — Стандарт IEEE для управления конфигурациями в системной и программной инженерии

Стандарт IEEE 828 (англ. IEEE Standard for Configuration Management in Systems and Software Engineering) определяет управление конфигурациями следующим образом:[7]

  • (1) дисциплина, применяющая технические и административные процедуры и контроль для: идентификации и документирования характеристик объекта конфигурации, управления изменениями этих характеристик, фиксации и информирования о статусе изменений и их реализации;
  • (2) совокупность технических и организационных мероприятий, включающих идентификацию, контроль, учёт и аудит конфигураций.

Отметим, что определения IEEE и ISO отличаются в деталях (см. приложение L к стандарту[7]). Кроме того, стандарт IEEE акцентируется на программном обеспечении[16].

ISO 10007 — Руководство по управлению качеством: управление конфигурациями

Международный стандарт ISO 10007 определяет:[17]

Управление конфигурациями — это управленческая деятельность, осуществляющая техническое и административное руководство в течение всего жизненного цикла продукта или услуги, ведущее учёт конфигурации и статуса, а также управляет связанной информацией.

Также отмечается, что управление конфигурациями обеспечивает маркировку и отслеживаемость продукта и поддержку доступа к точной информации на всех стадиях его жизненного цикла.

Конфигурация определяется как совокупность связанных между собой функциональных и физических характеристик продукта, описанных в документации по конфигурации[18].

NIST

Компьютерное исследовательское и ресурсное отделение NIST определяет управление конфигурациями как:

Совокупность мероприятий по созданию и поддержанию целостности ИТ-продуктов и информационных систем через контроль процессов инициализации, изменения и мониторинга конфигураций этих продуктов и систем в течение всего жизненного цикла.[19][20]

PRINCE2 (Agile 2016)

В методологии 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) — локальная система управления версиями.

Инструменты для управления конфигурациями, ALM/PLM-комплексы

Специализированные средства (в том числе для DevOps и облаков, часть — свободные)

Примечания

Литература

  • 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.

Ссылки

  • NASA Sample Configuration Management Plan: (DOC) (PDF)