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 Bearbeiten

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 Bearbeiten

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.

Versionsverwaltungssysteme Bearbeiten

Der Einsatz von Versionsverwaltungssystemen ist in der Softwareentwicklung inzwischen selbstverständlich geworden. Insgesamt spricht man von vier Generationen von Software-Versionsverwaltungssystemen. Die ersten beiden Generationen sind durch eine zentrale Datenhaltung gekennzeichnet. Die dritte Generation ist dezentral ausgerichtet, siehe Git, Bazaar, Mercurial. Insbesondere bei Open-Source-Projekten nimmt das dezentrale Versionsverwaltungssystem „Git“ eine dominierende Stellung ein.[1]

Während das Software-Konfigurationsmanagement Teil des Softwaregestaltungsprozesses ist – und damit zum Softwaredesign gehört, ist die Versionsverwaltung von Software ein davon unabhängiges Unterfangen.

Teilweise werden die Aufgaben eines SCM in der Versionsverwaltung manuell gehandhabt.

Ein typisches in Unternehmen anzutreffendes Szenario ist die Versionsverwaltung, die mit Datenbanken auf Basis von Lotus Notes oder Excel ergänzt wird. Dem stehen leistungsfähige Tools gegenüber, die ebenfalls in der Industrie eingesetzt werden.

Siehe auch Bearbeiten

Literatur Bearbeiten

  • Gerhard Versteegen: Konfigurationsmanagement. (= Xpert.press). Springer, Berlin 2003, ISBN 978-3-540-43622-5.
  • Rainer Heinold: Rechtzeitiges Konfigurationsmanagement. In: Gerhard Versteegen (Hrsg.): Software Management: Beherrschung des Lifecycles (= Xpert.press). Springer, Berlin, Heidelberg 2002, ISBN 978-3-642-56367-6, S. 137–159.
  • Jörg Noack: Konfigurationsmanagement. In: ders. (Hrsg.): Techniken der objektorientierten Softwareentwicklung (= Xpert.press). Springer, Berlin, Heidelberg 2001, ISBN 978-3-642-63991-3, S. 340–376.

Einzelnachweise Bearbeiten

  1. Der Marktanteil von Git 6sense Analyse. Abgerufen am 27. November 2023.