Software-Konfigurationsmanagement
Software-Konfigurationsmanagement (SCM) ist die Disziplin der Identifizierung, Kontrolle und Nachverfolgung von Versionen und Änderungen von Software-Artefakten, sodass der Zustand eines Systems während seines gesamten Lebenszyklus bekannt und reproduzierbar ist.
Definition
Software-Konfigurationsmanagement ist die Menge von Aktivitäten zur Identifizierung von Konfigurationselementen, zur Kontrolle von Änderungen an diesen, zur Aufzeichnung und Berichterstattung des Änderungsstatus sowie zur Überprüfung der Vollständigkeit und Korrektheit, sodass die sich entwickelnde Software auf eine kontrollierte, reproduzierbare Weise verwaltet wird.
Scope
Dieses Thema behandelt die Konfigurationsidentifikation und Baselines; Versionskontrollsysteme sowie Branching- und Merging-Modelle; Änderungskontrolle und die Rolle eines Änderungskontrollgremiums; Build- und Release-Management; Konfigurationsstatusbuchhaltung und -prüfung; sowie Standards wie ISO/IEC/IEEE 828, die SCM-Prozesse definieren.
Core questions
- Wie werden Konfigurationselemente identifiziert und als Baseline festgelegt?
- Wie verwalten Versionskontrolle und Branching-Modelle gleichzeitige Änderungen?
- Wie werden Änderungen vorgeschlagen, überprüft und genehmigt?
- Wie werden der Status und die Integrität von Konfigurationen erfasst und geprüft?
Key theories
- Baselines und Konfigurationskontrolle
- Eine Baseline ist eine formal überprüfte Konfiguration, die als stabile Referenz dient; Änderungen an baselined Elementen durchlaufen eine kontrollierte Überprüfung und Genehmigung, wodurch das System in einem bekannten, reproduzierbaren Zustand gehalten wird.
- Verteilte Versionskontrolle und Branching
- Moderne Systeme wie Git geben jedem Entwickler ein vollständiges Repository und unterstützen kostengünstiges Branching und Merging, was paralleles Arbeiten und Integrations-Workflows ermöglicht, die Continuous Integration und Delivery zugrunde liegen.
Clinical relevance
SCM macht Builds reproduzierbar, Änderungen nachvollziehbar und Releases kontrollierbar; ohne SCM können Teams eine ausgelieferte Version nicht zuverlässig reproduzieren, gleichzeitige Arbeit nicht koordinieren oder Änderungen nicht prüfen, was für eine zuverlässige Bereitstellung und für die DevOps-Automatisierung grundlegend ist.
Evidence & guidelines
ISO/IEC/IEEE 828 spezifiziert Konfigurationsmanagement-Prozesse, und der SWEBOK Software Configuration Management Wissensbereich bietet eine Konsensreferenz für SCM-Aktivitäten.
History
Die Versionskontrolle entwickelte sich von frühen Tools wie SCCS und RCS in den 1970er und 1980er Jahren über zentralisierte Systeme wie CVS und Subversion bis hin zu verteilten Systemen wie Git in den 2000er Jahren; die formale Konfigurationsmanagement-Praxis wanderte von Hardware- und Verteidigungsstandards in die allgemeine Softwareentwicklung ab.
Debates
- Branching-Strategien
- Teams diskutieren Workflows wie Trunk-based Development versus langlebige Feature-Branches und Git-Flow; Trunk-based Development mit häufiger Integration unterstützt Continuous Delivery, während stärkeres Branching die Arbeit isolieren kann, jedoch auf Kosten schmerzhafter Merges.
Key figures
- Walter Tichy
- Linus Torvalds
- Marc Rochkind
Related topics
Seminal works
- ieee828
- chacon2014
- swebok2014
Frequently asked questions
- Ist Konfigurationsmanagement nur Versionskontrolle?
- Nein. Versionskontrolle ist ein zentrales Werkzeug, aber SCM ist breiter gefasst: Es umfasst auch die Konfigurationsidentifikation, Baselines, Änderungskontrolle, Build- und Release-Management sowie die Statusbuchhaltung und -prüfung aller Konfigurationselemente, nicht nur des Quellcodes.
- Warum sind Baselines wichtig?
- Eine Baseline erfasst eine als gut bekannte Konfiguration, die reproduziert und weiterentwickelt werden kann; sie bietet eine stabile Referenz für kontrollierte Änderungen, ermöglicht es Teams, zurückzurollen, und ist unerlässlich für reproduzierbare Releases und Audits.