Software Configuration Management

Software Configuration Management

Das Software Configuration Management (SCM) oder Softwarekonfigurationsmanagement ist eine Spezialisierung des Konfigurationsmanagements auf alle Aktivitäten im Bereich der Software-Entwicklung.

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

Das SCM wird in weiten Teilen manuell gehandhabt. Das typische, in einem Unternehmen anzutreffende Szenario ist die Versionsverwaltung, die mit Datenbanken auf Basis von Lotus Notes oder Excel ergänzt wird. Der Umgang wird mit einem Regelwerk beschrieben, das mehr oder weniger, in keinem Fall jedoch zu 100%, eingehalten wird. Eine durchgängige Software-Lösung, die etliche anfallende Probleme beseitigt, wird kaum eingesetzt. Versuche in dieser Richtung scheitern gemeinhin am zeitlichen und finanziellen Aufwand.

Inhaltsverzeichnis

Grundlegende Betrachtungen

Eine akademische Forschung zu dem Thema findet nur in sehr bescheidenem Umfang statt, und im universitären Lehrplan der Informatiker erscheint das Thema SCM ü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 eigenwillige Ansichten über Umfang, Begriffe, Integrationen, Verfügbarkeit und Kompatibilität.

Grundlegende Objekte, die ein SCM-Werkzeug haben muss, sind Projekt, Datei, Baseline und Produkt.

Projekt

Ein Projekt zeichnet sich durch Anfang, Ende und Umfang aus. Weil in der Entwicklung gemeinhin damit etwas Größeres gemeint ist, wird dieser Teil häufig Teilprojekt, Änderung, Change Order, Change Request, Task o.ä. genannt. Es ist zwar möglich, mit nur einer Hierarchiestufe auszukommen, doch wird die Arbeit damit meist umständlich. Deshalb geben die Werkzeuge mehrere Stufen vor oder lassen es zu, diese frei zu definieren, um eine Delegation an andere Personen oder Teams zu gewährleisten. Typische Hierarchien sind Project-Task-Subtask.

Datei

Beim SCM wird meist die Datei als Basisobjekt angesehen, das verwaltet werden muss. Neben der einfachen Versionierung ist es häufig für einen beschleunigten Produktionsablauf nötig, die Entwicklung zu verzweigen und wieder zusammenzuführen. Im Detail treten jedoch weitere Probleme auf, die bei der Auswahl des SCM-Werkzeugs nicht beachtet werden, hinterher jedoch zu Problemen führen können. Es beginnt mit dem Thema Umbenennung der Datei, die bei einfachen Versionsverwaltung nicht möglich ist. Weiter gehören zu dem Problemkreis das Verschieben in ein anderes Verzeichnis oder das Löschen. Unterschiedlich gelöst, mitunter auch ignoriert, sind Verzeichnisse. Letztere können entweder lediglich in der Abbildung auf das Dateisystem erscheinen oder tatsächlich ebenfalls als Objekte versioniert werden.

Der Transfer zwischen der Versionsverwaltung und dem Dateisystem sorgt für weitere Komplikationen, wenn mehr als ein Betriebssystemtyp versorgt werden muss. Problempunkte sind Groß- und Kleinschreibung bzw. deren Konflikte sowie Sondertypen wie symbolische und harte Links, Devices, Pipes etc. Weitere Stellen, die beachtet werden müssen, sind Zeichensätze für Dateinamen und Inhalte, die separat behandelt werden müssen, oder Zeitstempel. Weil die Betriebssysteme unterschiedliche Zeiten unterstützen, Windows z. B. die Creation-Time, Unix dagegen nicht, müssten solche Dinge behandelt werden, entfallen jedoch bei den meisten Produkten. Die Änderungszeit wird jedoch häufiger beachtet, weil sie beim Ausspielen in das Dateisystem zwei mögliche Werte annehmen kann: die tatsächliche Zeit oder die Änderungszeit vor dem Archivieren. Welche Zeit gewählt werden muss, hängt vom Build-System ab, das der Anwender benutzt.

Baseline

Weil sich im Archiv zahlreiche Versionen tummeln, muss es einen Mechanismus geben, der die zusammengehörigen Versionen auch kennzeichnet. Dies wird als „Tagging“ oder „Baselining“ bezeichnet. Die möglichen Varianten, die zur Erstellung führen, sind zahlreich. Mit unter wird eine Ansicht auf die Versionen mit Regeln erstellt und diese dann markiert. Alternativ können auch Regeln dazu führen. Meist sinnvollste Methode, dafür am seltensten gut unterstützt, ist das Veränderungsmanagement mittels Projekten, weil Änderungen nur so durchgeführt werden dürfen, wenn die Prozesse und deren Kontrolle ausgereift sind.

Produkt

Ziel der Software-Entwicklung ist ein Produkt, welches meist aus einem oder mehreren Programmen besteht. Die Unterteilung nach Produkten ist notwendig, damit das SCM-Werkzeug für mehrere Anwendungen genutzt werden kann, ohne mehrfach installiert zu werden. Für die meisten realen Entwicklungen ist die Einteilung nach Produkten zu grob. Deshalb existieren meist Unterkategorien, wobei diese Hierarchie häufig als Aufhänger für Zugriffsberechtigungen dient.

Weitere Objekte

Praktisch immer existieren, abhängig von der Philosophie des Werkzeugs, weitere Objekte. Diese betreffen häufig die Beziehungen der Objekte untereinander oder die Sicht auf diese, insbesondere auf die Dateien (Views, Worksets). Es kann sich um Hilfestellungen für den Umgang mit bestimmten Bestriebssystemen handeln, Gruppenberechtigungen, Delegationen, externe Prozesse etc. Ungelöst ist das Problem, wie Versionsänderungen an Datenbanken durchgeführt werden. Pragmatischer Ansatz ist die Verwaltung der SQL-Skripte, doch löst es nicht das Problem, dass sowohl die Datenmodelldifferenz zum Vorgänger als auch der Neuaufbau bereitgestellt werden müssen.

Reale Betrachtungen

Datenhaltung

Oben wurde aufgezeigt, dass die Strukturen in einem SCM-Werkzeug meist hierarchisch in unbestimmter Tiefe sind, während die einzelnen Teile meist die Eigenschaften von Objekten haben. Das macht die Speicherung in den weit verbreiteten relationalen Datenbanken schwierig, weil die Strukturen und Flexibilität nur schwer performant und wartbar abzubilden sind. Die Geschichte von IBM mit seinen SCM-Werkzeugen macht es deutlich.

IBM benutzte ursprünglich für Windows und Unix CMVC mit einer relationalen Datenbank. Sein Nachfolger war TeamConnect, das auf Objectstore, einer objektorientierten Datenbank, basierte. Die nächste Version wechselte zu DB2. IBM beendete die Linie und kaufte das Unternehmen Rational ein, welches Clearcase im Portfolio hatte. Die Anwendung basiert auf einer selbstentwickelten, objektorientierten Datenbank, während die Ergänzung ClearQuest für die Prozessverfolgung verschiedene relationale Datenbanken benutzt.

Das Produkt Dimensions benutzt dagegen relationale Datenbanken, ergänzt um das Dateisystem des Servers als Versionsarchiv. Das Datenmodell ist nur teilweise normiert.

Kompatibilität

Der Mangel an akademischer Forschung und die fehlende Marktmacht eines einzelnen Herstellers sowie die oben nur angedeutete Komplexität, die sich auf der Zeitachse noch deutlich erhöht, sorgen für geringe Kompatibilität zwischen den einzelnen Produkten. Die Hersteller stellen zwar Werkzeuge bereit, die die Daten bei einem Wechsel in ihr Produkt bringen, doch geschieht dies auf sehr niedrigem Niveau. Eine Migration ist daher genau zu planen, sehr aufwändig und in der Konsequenz meist unvollständig, weil die Kosten den Nutzen der Altdaten bei weitem übersteigen. Nach der Einführung sind weitere, erhebliche Investitionen zu tätigen, damit die SCM-Umgebung nutz- und wartbar ist. Die Situation ist den Herstellern bekannt und wird genutzt, um den Wettbewerb auf den Verkauf zu beschränken. Ein betriebenes System wird nur abgelöst, wenn Anforderungen und Lösungserbringung weit auseinander klaffen.

Ebenso ist die Integration in die Entwicklungsumgebung immer schlecht. Der einzig verbreitete Standard SCC von Microsoft ist auf reine Versionsverwaltung ausgelegt, wird aber von Herstellern für deutlich komplexere Dinge benutzt. In Konsequenz bedeutet dies, dass Entwicklungs- und Verwaltungswerkzeuge häufig bestimmte Versionskombinationen benötigen, um miteinander zu funktionieren. Sind diese Versionen jedoch noch von anderen Faktoren abhängig, kann als Schnittmenge schnell die leere Menge herauskommen. Nicht selten unterbleibt deshalb eine tiefere Integration oder die Übergänge weisen Brüche auf, die meist auch Sicherheitslücken öffnen (inoffizielle Versionen). Dabei sollten Projektverwaltung, SCM, Entwicklungsumgebungen sowie Testwerkzeuge integriert sein, um den Arbeitsprozess weitgehend zu automatisieren.

Es bedeutet auch keine Schwierigkeit, ein SCM-Werkzeug für Windows und eine bekannte Unix-Variante zu bekommen (Linux, Solaris, AIX, HP-UX). Doch darüber hinausgehend sind Plattformen wie MVS, AS400, OS/2 oder noch exotischere nur vereinzelt, häufig gar nicht unterstützt, wenn man von Open-Source-Versionsverwaltungen absieht.

Abgrenzung

SCM-Systeme sind Schwergewichte der Software-Entwicklung. Neben den oben dargestellten Minimalforderungen, die sie in stark fortgeschrittener Version bereitstellen, bieten sie kleinteilige Rechteverwaltungen, Variantenmanagement und ausgereifte Lifecycle-Verwaltungen. Sie sind deutlich komplexer als die leichtgewichtigen Verwandten „ Versionskontrollsysteme“. SCM-Systeme sind als Open Software nicht bekannt.

Betriebseinführung

Die Einführung in den Betrieb ist schwierig und meist eine strategische Entscheidung. Die Kosten beschränken sich nicht auf den Kauf und die Wartung für das erste Jahr, sondern beinhalten zahlreiche Beratungen, die zu hohen Stundensätzen vom Hersteller erbracht werden. Dieses Geschäftsmodell ist von den Herstellern geduldet oder gar gewollt, weil Sekundärliteratur zu den Produkten nicht existiert. Die Produktdokumentation beschränkt sich meist auf Erklärung der Einzelheiten, lässt jedoch das Zusammenspiel der Komponenten zu einem gewünschten Ziel außen vor. Weiterhin sind Kosten für die Schulungen der Anwender zu erwarten, weil die meisten Produkte in der Benutzung nicht selbsterklärend sind, oder, soweit die Benutzerfreundlichkeit beim Basisprodukt gegeben ist, die Unternehmensprozesse in ihrer Komplexität nicht hinreichend einfach dargestellt werden können.

Darüber hinaus behindern meist die Entwicklungsteams die Einführung, weil häufig Prozesse und Arbeitsweisen geändert werden müssen, das laufende Geschäft gestört wird und „es nicht notwendig ist“. Die Benutzung des SCM-Werkzeugs beschleunigt typischerweise die Arbeit, doch der Mehrwert ist, weil er meist auf Kleinigkeiten basiert, kostenrechnerisch nicht erfassbar und damit argumentativ nicht verwendbar. Selten wird auch gesehen, dass vorgeschriebene oder gewünschte Berichte automatisiert erstellt werden können.

In Deutschland ist zudem die Zustimmung des Betriebsrats zwingend notwendig, weil alle Änderungen mitarbeiterbezogen protokolliert werden. Dadurch kann das SCM-Werkzeug zur Leistungskontrolle herangezogen werden.

Produktübersicht

Es gibt viele verschiedene Systeme auf dem Markt. Eine Übersicht über bekanntere Produkte:

Folgende Produkte sind keine SCM-Systeme, sondern lediglich Versionskontrollsysteme:

Siehe auch


Wikimedia Foundation.

Игры ⚽ Поможем написать реферат

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Software configuration management — Saltar a navegación, búsqueda Software Configuration Management (SCM) ó en castellano Gestión de configuración de software es una especialización de la Gestión de configuración a todas las actividades en el sector del desarrollo de software. SCM… …   Wikipedia Español

  • Software configuration management — In software engineering, software configuration management (SCM) is the task of tracking and controlling changes in the software. Configuration management practices include revision control and the establishment of baselines.SCM concerns itself… …   Wikipedia

  • Software-Configuration-Management — Das Software Configuration Management (SCM) oder Softwarekonfigurationsmanagement ist eine Spezialisierung des Konfigurationsmanagements auf alle Aktivitäten im Bereich der Software Entwicklung. SCM hat mehrere Ziele: Definition und Verfolgung… …   Deutsch Wikipedia

  • Software Configuration Management — Разработка программного обеспечения Процесс разработки ПО Шаги процесса Анализ | Проектирование | Реализация | Тестирование | Внедрение | Сопровождение Модели / методы Agile | Cleanroom | Итеративная | Scrum | RUP | MSF | Спиральная | Водопад | …   Википедия

  • Software Configuration Management Plan — Definitionen von IEEE SQAP – Software Quality Assurance Plan IEEE 730 SCMP – Software Configuration Management Plan IEEE 828 STD – Software Test Documentation IEEE 829 SRS – Software Requirements Specification IEEE 830 SVVP – Software Validation… …   Deutsch Wikipedia

  • History of software configuration management — The history of software configuration management (SCM) in computing can be traced back as early as the 1950s, when CM (for Configuration Management), originally for hardware development and production control, was being applied to software… …   Wikipedia

  • Vesta (Software configuration management) — Vesta is a software configuration management system released by Compaq under the LGPL. Compaq claims that Vesta is a mature system and is the result of over 10 years of research and development at the Compaq/Digital Systems Research Center.… …   Wikipedia

  • Software quality management — The computer scientist Ian Sommerville uses software quality management (SQM) as an umbrella term that includes:* Software quality assurance * Software configuration management * Verification and Validation.SQM aims to put in place software… …   Wikipedia

  • Configuration management — Top level Configuration Management Activity model Configuration management (CM) is a field of management that focuses on establishing and maintaining consistency of a system or product s performance and its functional and physical attributes with …   Wikipedia

  • Software Project Management Plan — Definitionen von IEEE SQAP – Software Quality Assurance Plan IEEE 730 SCMP – Software Configuration Management Plan IEEE 828 STD – Software Test Documentation IEEE 829 SRS – Software Requirements Specification IEEE 830 SVVP – Software Validation… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”