Software-Configuration-Management

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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 | Quelltext 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 | Quelltext 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 | Quelltext bearbeiten]

Der Gebrauch von Versionsverwaltungssystemen ist mittlerweile in der Softwareentwicklung selbstverständlich geworden. Man spricht insgesamt von vier Generationen von Software-Versionsverwaltungssystemen. Die ersten zwei Generationen sind von zentral gehaltener Datenhaltung bestimmt. Die dritte Generation ist dezentral orientiert, siehe Git, Bazaar, Mercurial. Speziell bei Open-Source-Projekten nimmt das dezentrale Versionsverwaltungssystem „Git“ eine dominante 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 | Quelltext bearbeiten]

Literatur[Bearbeiten | Quelltext 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 | Quelltext bearbeiten]

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