# Software-Configuration-Management

Das Software-Configuration-Management (SCM) oder Software-Konfigurationsmanagement ist eine Spezialisierung des Konfigurationsmanagements auf alle Aktivitäten und Ergebnisse im Bereich der Software-Entwicklung sowie deren Nutzung in Produkten. Dazu gehört unter anderem die geeignete Berücksichtigung andockender systemeigener Produktkomponenten und deren Varianten (bspw. über Kompatibilitätsmatrizen) über den gesamten Produktlebenszyklus hinweg.

## Grundlegendes

SCM-Systeme sind Schwergewichte unter den Werkzeugen zur Softwareentwicklung. Neben Minimalforderungen, die sie in stark fortgeschrittener Version bereitstellen, bieten sie kleinteilige Rechteverwaltungen, Variantenmanagement und ausgereifte Lifecycle-Verwaltungen. Sie sind deutlich komplexer als die leichtgewichtigen Versionsverwaltungssysteme.
SCM hat mehrere Ziele:
* Definition und Verfolgung von Prozessen
* Dokumentation aller Vorgänge
* Versionierung und Konfliktbehandlung
* Verwaltung von Voraussetzungen
* Effizienzsteigerungen bei der automatisierten Applikationserstellung
* Integration aller vorhandenen Werkzeuge
* Zugriffskontrolle
Eine akademische Forschung zu dem Thema findet nur in sehr bescheidenem Umfang statt, im universitären Lehrplan der Informatiker erscheint das Thema SCM oftmals überhaupt nicht. Infolgedessen sind viele der auftretenden und grundsätzlich zu lösenden Problematiken den Jungakademikern nicht präsent, was wiederum zu keiner Nachfrage am Markt führt. Dadurch sieht keine der großen Firmen den Bedarf, den Markt für sich zu besetzen und damit abseits der akademischen Pfade Standards zu schaffen. Die Folge ist somit eine starke Zersplitterung des Marktes und jeweils spezifische Ansichten über Umfang, Begriffe, Integrationen, Verfügbarkeit und Kompatibilität.

## Konfigurationen gemäß internationalem Standard

In der 24765-2017 – ISO/IEC/IEEE, die als internationaler Standard Begriffe für System- und Software-Engineering festlegt, werden Konfigurationen wie folgt umschrieben:
* Anordnung eines Computersystems oder einer Komponente, die sich durch die Anzahl, Art und Verbindungen seiner Bestandteile bestimmt.
* die funktionellen und physikalischen Eigenschaften von Hardware oder Software, wie sie in der technischen Dokumentation festgehalten oder in einem Produkt verwendet werden.
* Anordnung eines Systems oder Netzwerks, wie durch die Art, Anzahl und Hauptmerkmale seiner Funktionseinheiten definiert ist.
* Anforderungen, Entwurf und Implementierung, die eine bestimmte Version eines Systems oder einer Systemkomponente definieren.
* Art und Weise, in der die Hard- und Software einer Informationsverarbeitung systematisch organisiert und miteinander verbunden sind.
* Sammlung von Objekten, die an Schnittstellen interagieren können.
Wer also über Konfigurationen bzw. Konfigurationsmanagement spricht, sollte sicherstellen, dass alle Gesprächsteilnehmer über dasselbe terminologische Verständnis zum Sachverhalt verfügen. Bei der Produkt- und Softwareentwicklung fallen viele unterschiedliche Arbeitsergebnisse an, z. B. Programme und Komponenten, Dateien wie Lastenhefte und Architekturskizzen, Release Notes oder Changelogs, Testspezifikationen und Testdaten, Änderungsanträge oder Quellcode.
Das Konfigurationsmanagement verwaltet und labelt zusammengehörende Arbeitsergebnisse (Konfigurationseinheiten) als sogenannte Konfigurationen.