Konfigurationsmanagement
# Konfigurationsmanagement

Konfigurationsmanagement (abgekürzt auch: KM; englisch configuration management, CM) ist eine Managementdisziplin "zur Herstellung und Erhaltung einer Übereinstimmung der Produktleistungen sowie der funktionalen und physikalischen Eigenschaften des Produkts". Das "Konfigurationsmanagement soll sicherstellen, dass das Produkt und seine Artefakte vollständig reproduzierbar sind."
KM korreliert mit dem Dokumentationsmanagement im Projektmanagement (z. B. PRINCE2), sowie mit Referenzmodellen wie CMMI.

## Grundlagen

KM basiert auf sogenannten Konfigurationseinheiten. Häufiger genannt auch Konfigurationselement (englisch: configuration item) bedeutet es ein "Element oder Aggregation von Hardware, Software oder beidem, das für das Konfigurationsmanagement vorgesehen und behandelt ist als einzelne Entität im Konfigurationsverwaltungsprozess". Per ISO/IEC 24765 existieren weitere sechs Definitionen aus verschiedenen ISO-Normen, die sich leicht unterscheiden, jedoch grob dasselbe aussagen.
Konfigurationsmanagement ist somit nicht per se an einen bestimmten Anwendungskontext und eine Systemkonfiguration gebunden. Konfigurationsmanagement geschieht innerhalb eines sogenannten Konfigurationsmanagement-Prozesses (KMP), welcher einer Organisation und Planung (KMO) bedarf.
Es sind vier Teilgebiete (Teilprozesse) des KM definiert:
* Konfigurationsidentifizierung (KI),
* Konfigurationsbuchführung (KB),
* Konfigurationsüberwachung (KÜ) und
* Konfigurationsaudit (KA).
Die koordinierte Umsetzung der Prozesse ist z. B. Teil der Aufgabe eines Konfigurationsmanagers bzw. -verantwortlichen, eines Integrators oder in Vertretung eines Projektleiters.

## Geschichte

Auslöser für die Etablierung bzw. Entwicklung des KM war die stetig steigende Produktkomplexität. Als Reaktion auf daraus resultierende Probleme (z. B. wahrgenommene Unbeherrschbarkeit) wurde KM in den 1950er Jahren in der Luft- und Raumfahrtindustrie als Lösungsansatz entwickelt. Instrument der Umsetzung waren zu diesem Zeitpunkt einfache Karten, die den Status einer Konfiguration kennzeichneten.
Ähnliche Komplexitätsprobleme zeigten sich in Folge auch in anderen Produktbereichen. Entsprechend wurden die Methoden und Instrumente des KM für verschiedene Anwendungsbereiche verfeinert und spezialisiert. KM-Umsetzungen sind heute Teil vieler weitreichenderer Management-Disziplinen bspw. des Produktdatenmanagements oder im Bereich der Informatik des Softwarekonfigurationsmanagements.
Frühe Ansätze für KM waren z. B. Prüfsummenverfahren, welche heutzutage noch im Einsatz sind, wenn Software für Kunden oder Benutzer bereitgestellt wird, um Versionsstatus und (unerwünschte) Änderungen sichtbar zu machen, um damit die Konfiguration der Software abzusichern.

## Definition

Aus verschiedenen Fachbereichen wurden unterschiedliche, jedoch im Kern ähnliche Definitionen für das Konfigurationsmanagement hergeleitet. Die folgenden Definitionen sind bekannt:

### ANSI

Das ANSI (American National Standards Institute) hat in Zusammenarbeit mit der EIA (Electronic Industries Alliance) folgende Definition veröffentlicht:
"Configuration Management ... is a management process for establishing and maintaining consistency of a product's performance, its functional and physical attributes, with its requirements, design and operational information, throughout its life."
Zu Deutsch:
"Konfigurationsmanagement ist ein Managementprozess zur Herstellung und Erhaltung einer Übereinstimmung der Produktleistungen sowie der funktionalen und physischen Eigenschaften des Produktes mit den Anforderungen, dem Produktdesign und den operativen Informationen während des gesamten Produktlebenszyklus."

### Automotive SPICE

KM ist Teil der sogenannten Supporting Life Cycle Processes (kurz: SUP) der Automotive SPICE Norm, und dort ist es "SUP.8" mit folgender Definition: "Der Zweck des Konfigurationsmanagement-Prozesses ist es, die Integrität aller Arbeitsprodukte eines Prozesses oder Projekts herzustellen und zu erhalten und sie den betroffenen Parteien zur Verfügung zu stellen."
Dabei gibt die Norm sieben Prozessschritte vor für eine erfolgreiche Implementierung des KM sowie neun "Base practices" und hat sieben "Work products".

### IEEE Std 828-2012 - IEEE Standard for Configuration Management in Systems and Software Engineering

Die IEEE Norm 828 (IEEE Standard for Configuration Management in Systems and Software Engineering) definiert KM wie folgt:
* (1) eine Disziplin, die technische und administrative Anweisungen und Überwachung anwendet, um: die funktionalen und physischen Merkmale eines Konfigurationsobjekts zu identifizieren und zu dokumentieren, Änderungen an diesen Merkmalen zu kontrollieren, den Status der Änderungsverarbeitung und der Implementierung aufzuzeichnen und zu melden
* (2) technische und organisatorische Aktivitäten, die die Identifizierung, Steuerung, den Status und die Aktivitäten, die Konfigurationsidentifikation, -steuerung, -statusbuchhaltung und -prüfung umfassen.
Es ist zu beachten, dass sich die IEEE- und die ISO-Norm leicht unterscheiden (siehe Norm-Annex L).
Weiterhin erhebt die IEEE-Norm einen Fokus auf Software.

### ISO 10007 - Qualitätsmanagement – Leitfaden für Konfigurationsmanagement

Die international verabschiedete Definition gibt die ISO 10007:
Konfigurationsmanagement "ist eine Managementtätigkeit, die die technische und administrative Leitung des gesamten Produkt- und Dienstleistungslebenszyklus, dessen Konfigurationsangaben und Status und der produkt- und dienstleistungskonfigurationsbezogenen Angaben übernimmt."
Weiterhin, "Konfigurationsmanagement dokumentiert die Produkt- oder Dienstleistungskonfiguration." sowie "Konfigurationsmanagement sorgt für Kennzeichnung und Rückverfolgbarkeit des Produkts und hält den erreichten Stand seiner physischen und funktionellen Anforderungen sowie den Zugang zu genauen Informationen in allen Phasen seines Lebenszyklus bereit."
Eine Konfiguration ist somit die Summe "miteinander verbundener funktioneller und physischer Merkmale eines Produktes, wie sie in den Konfigurationsangaben beschrieben sind".

### NIST

Das NIST Computer Security Resource Center definiert KM wie folgt:
"Eine Sammlung von Aktivitäten, die sich auf die Einrichtung und Aufrechterhaltung der Integrität von IT-Produkten und Informationssystemen konzentrieren, und zwar durch die Kontrolle von Prozessen zur Initialisierung, Änderung und Überwachung der Konfigurationen dieser Produkte und Systeme während des gesamten Lebenszyklus der Systementwicklung."

### PRINCE2 (Agile 2016)

PRINCE2 definiert eine sog. Konfigurationsmanagementstrategie: "Mithilfe einer Konfigurationsmanagementstrategie wird ermittelt, wie und von wem die Produkte des Projekts gesteuert und geschützt werden."

### Andere Definitionen

Weitere Definitionen von KM finden sich in verschiedenen Büchern (teils als Buchkapitel) oder anderen Medien, wie z. B. SWEBOK.
Im Folgenden sind Definitionen von Herstellern aufgezeigt:
* IBM Engineering Requirements Management (ERM) DOORS:
CCM - Change and Configuration Management - "A systematic approach to establish and maintain the consistent performance of a system or product throughout its lifecycle, and to effectively manage changes in that product or system."
Zu Deutsch:
"Ein systematischer Ansatz, um die konsistente Leistung eines Systems oder Produkts über seinen gesamten Lebenszyklus hinweg zu etablieren und aufrechtzuerhalten und um Änderungen an diesem Produkt oder System effektiv zu verwalten."
* Red Hat:
Unter KM versteht man "die Verwaltung von Computersystemen, Servern und Software in der gewünschten Einheitlichkeit." mit dem Ziel "damit Unternehmen sicherstellen können, dass ihre Systeme auch bei ständigen Veränderungen wie erwartet funktionieren."
* Änderungsanträge oder -prozesse (Software)
Zusätzlich, kann unter KM auch verstanden werden: "Planung von Änderungsanträgen" und die "interpretationsfreie Vergabe von Prioritäten für die weitere Bearbeitung von Änderungsanträgen, die Festlegung der Wirksamkeit des umgesetzten Änderungsantrags und die Gruppierung von Änderungsanträgen zur gemeinsamen Bearbeitung."

## Ziele
### Generell

Ziel des KM ist es, den Grad der Erfüllung physischer und funktionaler Anforderungen an eine Konfigurationseinheit zu dokumentieren und diesbezüglich volle Transparenz herzustellen. Diese soll zudem dazu führen, dass jede an einer Konfigurationseinheit beteiligte Partei die richtigen und zutreffenden Informationen verwendet.
Als Beispiel für den Bedarf von KM dient eine Studie der IAEA über 50 Missionen ("OSART Missions") und kommt zu dem Ergebnis, dass "die Konfigurationsprobleme immer noch ein sehr reales Problem sind, egal welche Größe oder Nationalität des Versorgungsunternehmens, und dass Anstrengungen erforderlich sind, um die Situation zu verbessern."

#### Generelle Ziele des KM

* KM soll Reproduzierbarkeit von Produktständen (Konfigurationen) ermöglichen
* KM soll effizientes, verteiltes Arbeiten ermöglichen
* KM als professionelles Änderungsmanagement

#### Des Weiteren die Vermeidung von Problemen

* Fehlende Nachvollziehbarkeit von/bei Änderungen
* Mangelhafte oder erschwerte Möglichkeit zur Rücknahme von Änderungen
* Unwissen bei Produktversionen oder Testversionen im Zusammenhang mit Kundenlieferungen
* Dokumentation und Speicherorte von Artefakten
* Unzureichende Qualität bei Entwicklung und Produkt

### IT-Kontext

Im IT-Kontext werden die folgenden Ziele mit KM verfolgt bzw. davon abgedeckt:
* Revisionssicherheit
* Qualitätssteigerung und Sicherheit der Systeme
* Effizienzsteigerung des Projekt-/Produktzyklus
* Komplexe Entwicklung und Wartung absichern
Im Sinne von ITIL 4, wird Konfigurationsmanagement dem Service Management Practice nebst Service Assets (siehe Asset Management, auch AM) zugeordnet. Zwischen KM und AM existieren Parallelen, aber es gibt auch Unterschiede.

### Normenerfüllung

KM dient u. a. der Erfüllung weiterer Normen wie z. B. Funktionale Sicherheit, ISO 26262 (dort Teil 8) oder ISO 20000.

## Konzeptionelle Teilgebiete
### KMO – Organisation und Planung des Konfigurationsmanagements

Im Rahmen der KMO werden die organisatorischen und technischen Festlegungen zu KI, KB, KÜ und KA getroffen. Dies kann sowohl projekt- als auch produktspezifisch erfolgen. Wesentliche Entscheidungen betreffen die Auswahl der einzusetzenden Werkzeuge, die Zuweisung von zu erfüllenden Aufgaben an Aufgabenträger sowie deren Informationsrechte und -pflichten und die Festlegung von Prozessdefinitionen. Zudem fällt die Auditierung des Gesamtsystems zur Überprüfung der Einhaltung und Wirksamkeit der getroffenen Entscheidungen der KMO zu.

### KI – Konfigurationsidentifizierung

KI ist die Voraussetzung für die Durchführung von KB, KA, und KÜ. Sie umfasst die Auswahl von Konfigurationseinheiten, deren Gliederung zu einer Produktstruktur, Dokumentation sowie Nummernbildung zum Zweck der eindeutigen Identifizierung. Wesentliche Fragestellungen beziehen sich auf die Granularität einer Konfigurationseinheit, die Festlegung von Bezugskonfigurationen (Baselines) sowie die Auswahl einer Nummernsystematik.

### KÜ – Konfigurationsüberwachung

KÜ adressiert Probleme, die sich aus der Veränderung einer Konfiguration ergeben. Zentrale Aktivität stellt daher das Änderungsmanagement dar. Ziel dessen ist es, alle Änderungen an Konfigurationseinheiten sowie deren zugeordneten Dokumenten zu identifizieren, beschreiben, klassifizieren, bewerten, genehmigen und einzuführen. Die mit entsprechenden Kompetenzen und Befugnissen ausgestattete Instanz wird als Konfigurationsausschuss (engl. change control board (CCB) bzw. configuration control board) bezeichnet. Sinnvolle Konfigurationsüberwachung setzt einen festgeschriebenen, formalen Prozess für die Behandlung von Änderungen voraus. Übliche Prozessschritte sind die Beantragung, Bewertung, Entscheidung, Beauftragung, Review der umgesetzten Änderungen und Freigabe. Alle Schritte werden möglichst standardisiert dokumentiert. In diesem Zusammenhang relevante Dokumente sind Änderungsantrag (engl. change request (CR)), Sitzungsprotokoll des CCB und Änderungsauftrag. Referenzobjekt für das Änderungsmanagement ist eine Bezugskonfiguration. Zu einem bestimmten Zeitpunkt stellt diese zusammen mit allen bis dahin freigegebenen Änderungen die gültige Konfiguration dar.

### KB – Konfigurationsbuchführung

Der Prozess der Konfigurationsbuchführung hat die rückverfolgbare Dokumentation der Konfigurationen und Konfigurationseinheiten zum Ziel. Sie sollte daher sinnvollerweise bereits mit der ersten Erstellung von Konfigurationsdaten einsetzen. Gegenstand der KB sind alle Daten zur Konfigurationsidentifizierung und -überwachung.

### KA – Konfigurationsaudit

Ein Konfigurationsaudit ist die formale Überprüfung von Konfigurationen hinsichtlich der Erfüllung von vertraglich zugesicherten funktionellen und physischen Merkmalen sowie der Übereinstimmung von realisiertem Produkt und zugehöriger Konfigurationsdokumentation. Es werden in diesem Sinne funktionale und physische Konfigurationsaudits unterschieden. Konfigurationsaudits können sowohl für ganze Konfigurationen als auch einzelne Konfigurationseinheiten durchgeführt werden. Insbesondere vor der Festlegung einer Bezugskonfiguration sollte ein Konfigurationsaudit angestrengt werden.

## Methoden und Werkzeuge zur Konfigurationsbuchführung

Für ein funktionierendes KM wird gefordert, jeden Stand eines Elementes (Datei, Quellcode, Dokument, Spezifikation, Software, Hardware, System etc.) eine eindeutige Identifizierung zuzuordnen, unabhängig davon ob die Methodik manuell oder automatisch erfolgt.

### Manuelle Methoden

Manuelle Verfahren sind Methoden, die ohne Verwendung eines digitalen Werkzeuges (Computer, EDV, Software) eine Versionierung bzw. Konfigurierung darstellen bzw. KM-Verwaltung ermöglichen. Zum Beispiel stellten Randlochkarten lange Zeit eine effiziente Verwaltung von Karteikarten für Archive und Bibliotheken ohne Einsatz der Computertechnik sicher. Im einfachsten Falle können Konfigurationseinheiten z. B. auf einem Papier erfasst und dokumentiert werden mit entsprechender Zuordnung des Gültigkeitsstands (Version) und weiterer Merkmale. Dies würde sogar möglich sein, um Software aus Sicht des KM zu "konfigurieren", jedoch wäre der Aufwand für manuelle Dokumentation, Prozesse und Integration der Änderungen praxisfern oder aufgrund hoher Komplexität von Systemen wie z. B. einem PKW oder Flugzeug sogar unmöglich, weshalb man sich heutzutage computergestützter, automatischer Werkzeuge bedient.

### Automatische Werkzeuge

Automatische bzw. assistierende Konfigurationsmanagementwerkzeuge sind Werkzeuge, um Konfigurationsmanagement datenbasiert zu praktizieren. Sie verwenden Archivierungsverfahren und Datenbanken und darauf aufbauend Prozesse, um den Benutzer sinnvoll im KM zu unterstützen. Ein KM-Werkzeug verwaltet die Versionsnummerierung und auch weitere Informationen wie Bearbeiter, Modifizierungszeitpunkt, ein "Label" oder ein Attribut eines zur archivierenden Objektes, und unterstützt den gesamten KM-Prozess. Die Historie wird als Beziehung in der Datenbank für Rückverfolgbarkeit hinterlegt. Es werden z. B. die Differenzen der Dateistände zumeist mit „Reverse-Delta“-Verfahren in einer Archivdatei gespeichert. Konfigurationen des Systems können mit fortgeschrittenen Konfigurationsmanagementwerkzeugen ebenfalls mit eindeutiger Kennzeichnung im Archiv festgehalten werden, ohne dass die einzelnen Elemente dabei mehrfach in der Datenbank vorhanden sind. Diese Werkzeuge bieten auch eine geregelte Zugriffskontrolle, so dass konkurrierende Änderungen von verschiedenen Bearbeitern an einem Element entweder gar nicht zugelassen werden oder – wenn sie zugelassen wurden – nicht verloren gehen, sondern kontrolliert mit Merge-Mechanismen zusammengeführt werden können. Bei komplexeren Projekten ist eine Werkzeugunterstützung im Bereich Konfigurationsmanagement dringend angeraten.

### Beispiele für Werkzeuge

Die folgenden Listen beinhalten verschiedene Werkzeuge, teils kommerziell, die für KM eingesetzt werden oder eingesetzt werden können. Eine weitere Vergleichsliste mit Fokus auf Open-Source-Software existiert.
Per Software Engineering Body of Knowledge, kurz SWEBOK, dienen die folgenden Werkzeugklassen für KM:
* Bibliotheksverwaltung
* Tracking und Änderungsmanagement
* Versionsverwaltung
* Release-Management
Zu beachten ist, dass ein KM-Werkzeug über den Umfang eines gewöhnlichen Versionsmanagement-Werkzeugs wie Git hinausgeht, da das Versionsmanagement-Werkzeug selbst als eine Konfigurationseinheit gilt und eine Rückverfolgbarkeit zu anderen Werkzeugen gewährleistet sein muss. Im einfachsten Falle kann z. B. Excel als KM-Werkzeug zum Einsatz kommen. Größere Werkzeuge (PLM, ALM) unterstützen KM nebst Versionskontrolle und decken z. B. auch Anforderungsmanagement ab. Wenige der genannten Werkzeuge beherrschen auch Funktionalitäten im Bereich Produktlinien- und Variantenmanagement.
Hinweis: Die folgende Liste ist nicht vollständig.

#### Versionsverwaltung

* Apache Subversion (SVN), zentrales Versionsverwaltungssystem (Client/Server-basiert)
* Bazaar, verteiltes Versionsverwaltungssystem
* BitKeeper, verteiltes Versionsverwaltungssystem
* Concurrent Versions System (CVS), zentrales Versionsverwaltungssystem
* Fossil SCM, verteiltes Versionsverwaltungssystem
* Gerrit Code Review bzw. Gerrit (Software), aufbauend auf Git, genutzt u. a. von Wikimedia für die Entwicklung
* Git, verteiltes Versionsverwaltungssystem – zur Linux-Kernel-Entwicklung erschaffen (als kommerzielle Onlineplattform auf Git-Basis umgesetzt durch z. B. GitLab, GitHub), auf Plattformen häufig wieder ähnlich einem zentralen System eingesetzt
* Mercurial, verteiltes Versionsverwaltungssystem
* Source Code Control System (SCCS), lokales Versionsverwaltungssystem

#### Konfigurationsmanagement & Hybriden, ALM/PLM-Suiten

* CodeBeamer
* IBMs Rational Synergy
* IBMs Rational ClearCase
* Kovair ALM
* Micro Focus’ Dimensions CM (früher Serena Software)
* PTCs PLM Windchill (siehe auch PTC Integrity Lifecycle Manager, vormals MKS Integrity)
* Siemens Polarion ALM (siehe Siemens PLM Software)

#### Spezialisierte KM-Werkzeuge (z. B. für DevOps oder Cloud), teils Open-Source

* Ansible
* CFEngine
* Chef
* Microsoft Azure DevOps Server (vormals Team Foundation Server)
* Microsoft Endpoint Manager oder System Center Configuration Manager, SCCM
* Puppet
* Rudder
* Saltstack
* Universal Discovery and Universal CMDB von Micro Focus