Перейти к основному содержимому

Управление конфигурацией программных комплексов

Руководителю Разработчику Аналитику

Что такое SCM и чем оно шире Git

Управление конфигурацией (Software Configuration Management, SCM) — дисциплина, которая отвечает на вопросы:

  • Что входит в состав конкретной версии продукта?
  • Кто и почему изменил артефакт?
  • Можно ли через полгода собрать ту же версию, что сдали заказчику?
  • Согласованы ли код, документация и среда эксплуатации?

Git хранит историю файлов и помогает команде работать параллельно. SCM добавляет правила: что считается конфигурационной единицей, когда фиксируется baseline (базовая линия), кто утверждает change request, как связываются код, ТЗ и ПМИ.

Аналогия

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

В учебниках по производству ПО (гл. 2.7) SCM стоит рядом с документированием: формуляр, руководства и исходники должны соответствовать друг другу в момент сдачи заказчику.

Мини-глоссарий

ТерминПростыми словами
CI (Configuration Item)Элемент, который версионируют отдельно (сервис, ТЗ, образ Docker)
BaselineУтверждённый «снимок» набора версий CI
Change request (CR)Формальная заявка на изменение с оценкой влияния
CCBChange Control Board — кто разрешает менять baseline
Аудит конфигурацииПроверка: факт = учёт = договор

Процессы SCM по ISO/IEC 12207

Стандарт жизненного цикла выделяет пять процессов — в Agile они те же по смыслу, другие названия:

ПроцессСмыслКак это выглядит в Scrum-команде
Идентификация конфигурацииРешить, что входит в «изделие»Список репозиториев, сервисов, документов в Confluence/Git
Управление конфигурациейВерсии, ветки, метки, baselinemain, tag v2.3.1, lock-файлы
Контроль измененийЗаявка → анализ → утверждение → внесениеPR + code review + approval PO/архитектора
Учёт состоянияОтчёты: что в какой версииChangelog, release notes, dashboard версий
Аудит конфигурацииСоответствие факта и учётаСверка поставки с ведомостью, SBOM

Конфигурационная единица (CI)

Configuration Item — элемент, который версионируют и контролируют отдельно, потому что от него зависит состав релиза или ответственность.

Примеры для заказного комплекса программ:

CIПримерыПочему отдельно
Исходный кодСервис billing, библиотека common-authРазные команды, разный цикл релизов
СборкаDocker-образ app:2.3.1, NuGet-пакетПоставка заказчику — артефакт, не «коммит»
ДокументацияТЗ v1.4, ПМИ v2.0, руководство оператораПриёмка по документам
КонфигурацияHelm chart, appsettings.Production.jsonМеняется без перекомпиляции кода
ДанныеМиграции Flyway, справочникиВлияют на поведение после деплоя
СредаTerraform/Ansible описание staging«У нас работало» = код + среда

:::tip Мини-разбор Монолит в одном репозитории — часто одна CI «приложение». Микросервисы — несколько CI; SCM сложнее, зато границы ответственности яснее. Общий release train (одна дата релиза всех сервисов) или независимые версии — решение архитектора и контракта. :::


Baseline — «снимок, с которым работаем»

Baseline (базовая линия) — утверждённая версия набора CI в точке времени. После утверждения изменения идут только через контроль изменений.

Тип baselineКогда фиксируютПример
FunctionalСогласованы требованияТЗ v1.0 подписано
AllocatedТребования распределены по модулямМатрица «требование → сервис»
ProductГотовый релиз для эксплуатацииПоставка 2.3.1 заказчику

В Git product baseline ≈ tag v2.3.1 + lock-файлы (package-lock.json, poetry.lock) + образ в registry с тем же тегом или digest sha256:….

Зачем заказчику: он принимает конкретный baseline, а не «что-то из main вчера вечером». Спор «что сдавали» решается тегом и актом, а не памятью разработчика.


Контроль изменений (Change Control)

Типовой цикл для госсектора и критичных систем:

CCB (Change Control Board) — совет по изменениям: заказчик, архитектор, QA, иногда ИБ.

КонтекстКто играет роль CCB
Продуктовая Scrum-командаPO + tech lead на refinement
Госконтракт (44-ФЗ)Комиссия, протокол, допсоглашение
СопровождениеОтдельный регламент на патчи vs доработки

Оценка влияния отвечает на вопросы: какие CI затронуты? нужен ли регресс? меняется ли ТЗ/ПМИ? сколько человеко-дней (COCOMO, change request)?


Связь SCM с трассировкой требований

Для заказного ПО недостаточно «закоммитили фикс». Нужна цепочка для аудита и приёмки:

Требование ТЗ → задача → коммит → тест → версия в релизе

ЗвеноЗачем
ТЗ п. 4.2.1Что обещали
Jira PROJ-123Кто и зачем делал
Commit PROJ-123 fix VATЧто изменили в коде
Тест TC-045 в ПМИКак доказали
Tag v2.3.1Что попало к заказчику

Инструменты: Jira + Git (smart commits), GitLab links, Azure DevOps work items, матрица трассировки.


SCM и CI/CD — как pipeline поддерживает дисциплину

Этап pipelineРоль SCM
CommitИдентификация автора, ссылка на задачу
BuildВоспроизводимая сборка из зафиксированного commit + lock
TestПроверка артефакта против требований baseline
DeployПромotion того же digest/sha, не «похожей» сборки
RollbackВозврат к известному baseline

Подробнее — DevOps.

:::info Воспроизводимость Заказчик через год спросит: «Соберите 2.3.1 для расследования инцидента». Без tag, lock-файлов и сохранённого образа в registry это невозможно или дорого — отсюда требования к SCM в госконтрактах. :::


Документирование и SCM

По ГОСТ версия документа должна соответствовать версии ПО в поставке.

Практика:

  • ТЗ, ПМИ, руководства — в Git или ECM с историей версий;
  • на титуле: «Для версии ПО 2.3.1»;
  • при change request обновляют и код, и затронутые документы в одном релизе.

См. техническое письмо.


Аудит конфигурации

Вид аудитаВопросКто проводит
ФункциональныйСделали то, что в ТЗ?Испытания по ПМИ
ФизическийВ поставке те файлы и версии, что в ведомости?Комиссия, checksum, SBOM

SBOM (Software Bill of Materials) — «составная ведомость» зависимостей и версий; всё чаще требуют при поставке в регулируемых отраслях.

Для сертификации и госконтрактов физический аудит обязателен: расхождение версии в акте и в registry — основание для отказа в приёмке.


Типичные ошибки

  1. Только Git, без baseline релиза — нельзя воспроизвести поставку.
  2. Конфиг только у админа — не CI, не под контролем, при увольнении — катастрофа.
  3. Документы в Word без версий — ТЗ описывает 2.0, в prod — 2.3.1.
  4. Hotfix мимо процесса — «потом оформим» → провал аудита и спор с заказчиком.
  5. Tag без артефакта — тег на коммите есть, образ в registry перезаписан.

Куда читать дальше

ТемаМатериал
Жизненный цикл, 12207Конструирование, стандарты
Приёмка и актыСертификация и приёмка
Сопровождение после сдачиСопровождение ПО
Квалификация командыКвалификация команды

См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).