Wie Sie sicherlich wissen, bezeichnet Softwarekonfigurationsmanagement (SCM) im Software Engineering einen Prozess zur Aufrechterhaltung von Computersystemen, Servern und Software in einem gewünschten, konsistenten Zustand.
Manchmal auch als Softwareänderungsmanagement oder IT-Automatisierung bezeichnet, ist die Idee, ein System zu etablieren, das alle im Rahmen des Softwareentwicklungsprozesses vorgenommenen Änderungen im System nachverfolgt und vergleicht sowie identifiziert, wer diese Änderungen vorgenommen hat.
Das Ziel ist es, das Projektmanagement zu erleichtern, Fehler zu minimieren, die Nachvollziehbarkeit zu verbessern und die allgemeine Softwarequalität zu erhöhen.
Die Vorteile eines SCM-Prozesses sind:
- Mehrbenutzer-Updates: Oft arbeiten viele Personen an der Softwareentwicklung, was ständige Aktualisierungen und Änderungen bedeutet. Durch SCM können Sie jeglichen Code und alle Konfigurationen, die in die Produktion übernommen wurden (auch als Konfigurationsaudit bezeichnet), nachverfolgen und erhalten zudem Nachvollziehbarkeit, indem Sie bestimmen, welcher Mitwirkende jede Änderung vorgenommen hat.
- Produktivität: SCM steigert die Produktivität der Software, da es minimale Fehler sicherstellt. Beispielsweise können Sie so gewährleisten, dass Ihre Test- und Produktionsumgebung immer übereinstimmen.
- Kommunikation und Zusammenarbeit: Mit SCM ist die Kommunikation zwischen Teammitgliedern leicht möglich, sodass alle Projektbeteiligten einfach zusammenarbeiten und die Qualität des Produkts steigern können.
- Plattform- und Betriebssystem-Tests: Sicherstellen, dass die Software auf mehreren Plattformen und Betriebssystemen effektiv läuft.
- Umgang mit Änderungen: SCM macht es einfacher, auf Änderungen im Zeitplan, Richtlinien oder bei Nutzern zu reagieren.
- Kostenkontrolle: Durch die Nachverfolgung von Teammitgliedern und Arbeitsabläufen hilft SCM dabei, Kosten zu kontrollieren und die Effizienz zu steigern.
In diesem Artikel führe ich Sie durch die verschiedenen Schritte eines SCM-Prozesses, zeige auf, wer einbezogen werden sollte, und welche Tools zur Unterstützung zur Verfügung stehen.
Die 5 Schritte eines SCM-Plans
Der Softwarekonfigurationsmanagement-Prozess ist eine Abfolge von Schritten, die entworfen wurden, um alle Defekte, Ressourcen, Codes, Dokumente, Hardware und Budgets während eines Projekts nachzuverfolgen und zu verwalten.
SCM ist ein interdisziplinärer Prozess, an dem Menschen auf allen Ebenen beteiligt sind – darunter DevOps, Entwickler, Projektmanager/Eigentümer, Systemadministratoren und Tester.
1. Planung und Identifikation
Der erste Schritt im Prozess ist die Planung und Identifikation. In diesem Schritt geht es darum, die Entwicklung des Softwareprojekts zu planen und die Elemente im Projektumfang zu identifizieren. Dies geschieht in Meetings und Brainstorming-Sitzungen mit Ihrem Team, um die grundlegenden Kriterien für den weiteren Projektverlauf zu erarbeiten.
Teil dieses Prozesses ist es auch, festzulegen, wie das Projekt ablaufen soll und die Ausstiegskriterien zu definieren. So weiß Ihr Team, wann alle Projektziele erreicht wurden.
Zu den speziellen Aktivitäten in diesem Schritt gehören:
- Identifizieren von Elementen wie Testfällen, Spezifikationsanforderungen und Codemodulen
- Identifizieren jedes einzelnen Softwarekonfigurationselements im Prozess
- Gruppierung der grundlegenden Details darüber, warum, wann und welche Änderungen gemacht werden und wer dafür verantwortlich ist
- Erstellen einer Liste erforderlicher Ressourcen wie Tools, Dateien, Dokumente usw.
2. Versionskontrolle und Baseline
Der Schritt der Versionskontrolle und Baseline stellt die kontinuierliche Integrität des Produkts sicher, indem eine akzeptierte Version der Software identifiziert wird. Diese Baseline wird zu einem bestimmten Zeitpunkt im SCM-Prozess festgelegt und darf nur über ein formelles Verfahren geändert werden.
Ziel dieses Schrittes ist es, die an dem Produkt vorgenommenen Änderungen zu kontrollieren. Mit der Weiterentwicklung des Projekts werden neue Baselines erstellt, sodass mehrere Versionen der Software entstehen.
Folgende Aktivitäten fallen in diesen Schritt:
- Identifikation und Klassifizierung der vom Projekt abgedeckten Komponenten
- Entwicklung einer Methode, um die Hierarchie verschiedener Softwareversionen zu verfolgen
- Identifikation der wesentlichen Beziehungen zwischen verschiedenen Komponenten
- Festlegung von unterschiedlichen Baselines für das Produkt, einschließlich Entwicklungs-Baseline, funktionaler Baseline und Produkt-Baseline
- Entwicklung eines standardisierten Kennzeichnungssystems für alle Produkte, Revisionen und Dateien, damit alle im Team denselben Informationsstand haben.
Das Festlegen einer Baseline für ein Projektelement erzwingt formale Kontrollprozesse für Konfigurationsänderungen, falls an diesen Attributen Änderungen vorgenommen werden.
3. Änderungssteuerung
Änderungskontrolle ist das Verfahren, das sicherstellt, dass alle vorgenommenen Änderungen mit dem Rest des Projekts übereinstimmen. Diese Kontrollen tragen zur Qualitätssicherung sowie zur Genehmigung und Freigabe neuer Baselines bei. Änderungskontrolle ist entscheidend für den erfolgreichen Abschluss des Projekts.
In diesem Schritt werden Anträge auf Änderung von Konfigurationen beim Team eingereicht und vom Softwarekonfigurationsmanager genehmigt oder abgelehnt. Die häufigsten Anfragen sind das Hinzufügen oder Bearbeiten verschiedener Konfigurationsobjekte oder das Ändern von Benutzerrechten.
Dieses Verfahren umfasst:
- Kontrolle der vom Kunden angeforderten Ad-hoc-Änderungen
- Überprüfung des Nutzens der Änderungsanfrage durch Analyse der Gesamtfolgen für das Projekt
- Vornahme genehmigter Änderungen oder Erklärung, weshalb Änderungsanträge abgelehnt wurden.
4. Konfigurationsstatus-Auswertung
Der nächste Schritt besteht darin, sicherzustellen, dass das Projekt gemäß dem Plan verläuft, indem gemäß den festgelegten Baselines getestet und überprüft wird. Dabei werden Release Notes und verwandte Dokumente geprüft, um sicherzustellen, dass die Software alle funktionalen Anforderungen erfüllt.
Die Konfigurationsstatus-Auswertung verfolgt jede während des Prozesses veröffentlichte Version und bewertet, was in jeder Version neu ist und warum die Änderungen notwendig waren. Zu den Aktivitäten in diesem Schritt gehören:
- Dokumentation und Bewertung von Änderungen zwischen den einzelnen Baselines
- Überwachung des Status und der Lösung aller Änderungsanfragen
- Pflege der Dokumentation zu jeder erfolgten Änderung infolge von Änderungsanfragen und zum Erreichen einer weiteren Baseline
- Überprüfung vorheriger Versionen zu Analyse- und Testzwecken.
5. Audits und Überprüfungen
Der letzte Schritt ist eine technische Überprüfung jeder Phase im Lebenszyklus der Softwareentwicklung. Audits und Überprüfungen betrachten den Prozess, die Konfigurationen, den Workflow, Änderungsanfragen und alles, was in die Entwicklung jeder Baseline des Projekts eingeflossen ist.
Das Team führt mehrere Überprüfungen der Anwendung durch, um deren Integrität zu überprüfen, und erstellt zudem wichtige Begleitdokumente wie Release Notes, Benutzerhandbücher und Installationsanleitungen.
Zu den Aktivitäten in diesem Schritt gehören:
- Sicherstellung, dass die im Planungs- und Identifikationsschritt festgelegten Ziele erreicht werden
- Überprüfung, ob die Software mit definierten Konfigurationskontrollstandards übereinstimmt
- Sicherstellung, dass Änderungen an Baselines mit den Berichten übereinstimmen
- Validierung, dass das Projekt gemäß den Projektzielen konsistent und vollständig ist.
Im Gegensatz zu traditionellen Dateisystemen kann eine spezialisierte Datenbankmanagement-Software fortgeschrittene Funktionen wie Datenintegrität und Sicherheit bieten, die für ein effektives Softwarekonfigurationsmanagement von entscheidender Bedeutung sind.
Wer ist am Softwarekonfigurationsprozess beteiligt?
Der SCM-Prozess ist interdisziplinär und bezieht nahezu jedes Mitglied des Softwareentwicklungsteams ein.
Konfigurationsmanager
Der Konfigurationsmanager ist dafür verantwortlich, wer im Verlauf des Entwicklungsprozesses wofür zuständig ist. Er sorgt dafür, dass das SCM-Verfahren über das gesamte Projekt hinweg eingehalten wird und hat das letzte Wort bei allen Änderungsanfragen.
Projektmanager
Die Rolle des Projektmanagers ist ein zentraler Bestandteil des SCM-Prozesses. Er legt den Zeitrahmen des Projekts fest, um sicherzustellen, dass die Fertigstellungstermine eingehalten werden, und erstellt Berichte über die Fortschritte des Teams. Eine weitere wichtige Aufgabe des Projektmanagers ist es, sicherzustellen, dass alle Mitglieder des Teams die vorgegebenen Richtlinien für die Erstellung, Änderung und das Testen der Software einhalten.
Softwareentwickler
Entwickler sind für das Schreiben des Codes während der Entwicklung sowie die Umsetzung genehmigter Änderungsanfragen verantwortlich.
Auditor
Diese Rolle ist für alle Audits und Überprüfungen zuständig und muss sicherstellen, dass die Endversion vollständig und konsistent ist.
Welche Vorteile bieten Konfigurationsmanagement-Tools?
Es gibt zahlreiche Tools, die den Softwarekonfigurationsmanagement-Prozess unterstützen. Ziel dieser Werkzeuge ist die Automatisierung traditionell manueller Aufgaben, um mehr Genauigkeit, Geschwindigkeit und Kontrolle zu ermöglichen. Insbesondere können sie dabei helfen:
- Warnungen und Berichte: Ein gutes SCM-Tool liefert Warnungen und Berichte, wenn es Abweichungen von der vereinbarten Basislinie gibt. Diese Daten werden nahezu in Echtzeit weitergegeben, sodass Manager schnell reagieren können, falls etwas aus dem Ruder läuft.
- Änderungen verfolgen: SCM-Tools verfolgen automatisch Änderungen an Servern oder Anwendungen und ermöglichen auch die manuelle Eingabe solcher Daten. Änderungsprüfungen können auch durch die Überwachung von Skriptausgaben erfolgen.
- Konfigurationsvergleiche: Die besten Tools für Softwarekonfigurationsmanagement bieten die Möglichkeit, Unterschiede zwischen Konfigurationen zu identifizieren.
- Schnellere Fehlerbehebung: Fehler, Missgeschicke und Probleme werden schnell erkannt, damit Entwickler eingreifen können, bevor das Problem größer wird.
- Inventarisierung: Die meisten SCM-Tools bieten eine Möglichkeit, Hard- und Software-Assets zu verfolgen, sodass Sie keine manuelle Liste führen müssen.
- Patch-Management: SCM-Tools helfen Ihnen, alle Details rund um das Patch-Management zu verfolgen, während Sie aktualisierte Software verteilen.
Gibt es Nachteile bei der Verwendung eines Softwarekonfigurationsmanagement-Tools?
Es gibt einige Dinge, die Sie bedenken sollten, bevor Sie ein SCM-Tool einführen, darunter:
- Ressourcenaufwand: Sie müssen die Ressourcen haben, um den Prozess von Anfang bis Ende zu unterstützen
- Wissenslücken: Jeder Beteiligte muss ein profundes Wissen über die verwendeten Softwaremanagement-Tools besitzen
- Nachteile für KMU: Der Umfang dessen, was erforderlich ist, um diese Tools effektiv zu nutzen, kann für kleine Unternehmen schwierig zu stemmen sein
- Hardwareanforderungen: Für einen reibungslosen Ablauf werden schnelle und leistungsfähige Hardware benötigt.
Fazit zum Softwarekonfigurationsmanagement
Oben habe ich einen allgemeinen Überblick darüber gegeben, was Sie wissen müssen, um einen Softwarekonfigurationsmanagement-Prozess einzurichten, der es Ihnen ermöglicht, Ihre Projekte nachzuverfolgen, zu steuern und zu verwalten.
SCM-Tools wie Ansible oder TeamCity unterstützen die Automatisierung vieler Aspekte des SCM-Prozesses und können eine lohnende Investition sein. Unsere Auswahl dieser Tools finden Sie im Artikel 10 beste Softwarekonfigurationsmanagement-Tools.
Die Welt des Softwarekonfigurationsmanagements und der Qualitätssicherung entwickelt sich rasant. Abonnieren Sie den The QA Lead Newsletter für weitere hilfreiche Tipps, Tricks und Tools direkt in Ihrem Posteingang.
Oder lernen Sie weiter, indem Sie diesen Podcast hören: DIE ÄRA DER AUTONOMEN AUTOMATISIERUNG UND WIE SIE AUSSIEHT (MIT BERTOLD KOLICS VON MABL) oder diese Liste lesen: 10 NEUESTE SOFTWARE-TESTTOOLS, DIE QAS VERWENDEN
