Methoden und Werkzeuge des Konfigurationsmanagements Zunächst ein paar Fragen:! Was ist euer Bild des Konfigurationsmanagements?! Welche Aufgaben hat eurer Meinung nach das Konfigurationsmanagement?! Wer hat schon Erfahrungen im Konfigurationsmanagement?! Welcher Art sind diese Erfahrungen? Methoden und Werkzeuge des SE 1 / 17 Agenda: Methoden und Werkzeuge des Konfigurationsmanagements! Definitionen und Historie des Konfigurationsmanagements! Ein praktisches Beispiel! Werkzeuge für das Konfigurationsmanagement Methoden und Werkzeuge des SE 2 / 17
Definitionen configuration management (CM). A discipline applying technical and administrative direction and surveillance to: identify and document the functional and physical characteristics of a configuration item, control changes to those characteristics, record and report change processing and implementation status, and verify compliance with specified requirements. See also: baseline; configuration identification; configuration control; configuration status accounting, configuration audit. IEEE Std 610-12! Konfigurationsmanagement als Fachgebiet umfasst also mehr als den reinen Einsatz einer Konfigurationsmanagement-Software.! Rekursive Definition: Konfigurationsmanagement befasst sich mit der Verwaltung von Konfigurationseinheiten. Im Sinne des Software-Konfigurationsmanagements sind Konfigurationseinheiten gleichbedeutend mit Software-Einheiten. Methoden und Werkzeuge des SE 3 / 17 Definitionen Software-Einheit Ein Stück Software, das im Software-Lebenszyklus entsteht und für die Entwicklung, den Betrieb oder die Wartung des Software-Systems relevant ist. Ludewig, Lichter, 2007! Im Konfigurationsmanagement werden also alle Teile der Software Programme, Abläufe, Regeln, auch Dokumentation und Daten, die mit dem Betrieb des Rechnersystems zu tun haben verwaltet.! Das Konfigurationsmanagement erstreckt sich über den gesamten Software-Lebenszyklus. Methoden und Werkzeuge des SE 4 / 17
Definitionen Configuration management (CM) is the discipline of managing change in large, complex systems. Its goal is to manage and control the numerous corrections, extensions, and adaptations that are applied to a system over its lifetime. (...) The objective of SCM, then, is to ensure a systematic and traceable software development process in which all changes are precisely managed, so that a software system is always in a well-defined state. Estublier et.al: Impact of Software Engineering Research on the Practice of Software Configuration Management. ACM Trans. on Software Engineering Methodology, 14(4): 383-430, Oktober 2005.! Konfigurationsmanagement ist die Grundlage für einen systematischen und verfolgbaren Software-Entwicklungsprozess.! Der Artikel von Estublier et.al beschreibt umfassend die Historie und den aktuellen Stand des Konfigurationsmanagements und wagt einige Ausblicke auf die Zukunft. Methoden und Werkzeuge des SE 5 / 17 Historie! Konfigurationsmanagement hat seinen Ursprung in der Luftfahrtindustrie der 50er Jahre, um Problemen mit unzureichend dokumentierten Änderungen bei der Entwicklung von Flugzeugen zu begegnen.! In der frühen Softwareentwicklung wurden Veränderungen durch farblich markierte Lochkarten hervorgehoben.! In den späten 70er Jahren war eine erste Hochzeit des (Software-) Konfigurationsmanagements. So wurden z. B. 1979 Make von Feldman und 1982 RCS von Tichy entwickelt.! In dieser Zeit entstand ein einheitliches Verständnis darüber, was das Konfigurationsmanagement leisten soll:! Dateien verwalten, die bei der Softwareentwicklung entstehen,! Änderungen an diesen Dateien nachverfolgen und! bei der Erstellung eines ausführbaren Systems unterstützen. Methoden und Werkzeuge des SE 6 / 17
Historie! In den 90er Jahren wurde die Verwaltung nicht-textueller (ASCII-) Objekte immer wichtiger.! Durch immer günstigere Speichermedien und immer schnellere Prozessoren rückten komplizierte Delta-Algorithmen beim Konfigurationsmanagement in den Hintergrund und wurden durch eine einfache Kompression der Daten ersetzt.! Heutzutage sind Mechanismen des Konfigurationsmanagements in vielen Software-Systemen enthalten. So haben wir uns alle z. B. an die Änderungsverfolgung in Word längst gewöhnt. Methoden und Werkzeuge des SE 7 / 17 Ein praktisches Beispiel: CVS Concurrent Versions System Aufgabe:! Wie ist ein Konfigurationsmanagement aufgebaut?! Warum werden die verschiedene Umgebungen eingeführt?! Welchen Sinn hat die strikte Trennung dieser Umgebungen? Diskussion mit dem Nachbarn; in 10 Minuten sammeln wir die Ergebnisse Methoden und Werkzeuge des SE 8 / 17
Methoden und Werkzeuge des SE 9 / 17 Ein praktisches Beispiel: CVS Concurrent Versions System Aufgabe:! Wie kann diese Konfigurationsmanagement-Umgebung mit CVS (oder ein anderes CM-Werkzeug) umgesetzt werden? Diskussion mit dem Nachbarn; in 10 Minuten sammeln wir die Ergebnisse Methoden und Werkzeuge des SE 10 / 17
CVS-Repository Methoden und Werkzeuge des SE 11 / 17 Ein praktisches Beispiel: CVS Concurrent Versions System Einrichten des Repository! Anlegen des Repository-Verzeichnisses mkdir mycvs! Umgebungsvariable für das Repository setzen export CVSROOT=<vollständiger Pfad>/mycvs! Initialisierung des Repository cvs -d <vollständiger Pfad>/mycvs! Bestehendes Verzeichnis myplanner dem Repository hinzufügen cd myplanner cvs import -m "Beschreibung" myplanner <Autor> start! Projekt kann nun von den anderen Teammitgliedern ausgecheckt werden cvs co myplanner Methoden und Werkzeuge des SE 12 / 17
lokales Verzeichnis cvs co cvs -P -d update cvs add Spez.sxw cvs commit CVS-Repository cvs tag Release cvs co cvs tag Test alternativ: cvs tag -b Test (Branching) cvs co Test neues lokales Verzeichnis neues lokales Verzeichnis Methoden und Werkzeuge des SE 13 / 17 Ein praktisches Beispiel: CVS Concurrent Versions System Aufgabe:! Welche Werkzeuge für das Konfigurationsmanagement sind bekannt?! Welche Charakteristiken haben diese Werkzeuge?! Für welchen Arbeitsumgebungen sind die Werkzeuge geeignet? Diskussion mit dem Nachbarn; in 10 Minuten sammeln wir die Ergebnisse Methoden und Werkzeuge des SE 14 / 17
Das richtige Werkzeug! Softwarepraktikum : Subversion! 3 Teammitglieder! Keinen dedizierten Administrator! Keine verteilte Entwicklung! Kleine zu entwickelnde Software! Problem: Verwaltung von Binärdateien! Studienprojekt : Subversion! Ca. 10 Teammitglieder! Teilzeit-Administrator! Teilweise verteilte Entwicklung auf gemeinsamer Code-Basis! Keine Teilprojekte! Problem: Verwaltung von Binärdateien Methoden und Werkzeuge des SE 15 / 17 Das richtige Werkzeug! Open-Source-Projekt : Subversion! Kernteam ca. 10 Personen! Verteilte Entwicklung auf gemeinsamer Code-Basis! Keine Teilprojekte! ASCII-Dateien! Industrieprojekt : ClearCase (eventuell Subversion)! Bis zu mehrere Hundert Teammitglieder! Prinzip des Modul-Ownership! Verteilte Entwicklung! Teilprojekte! Eigener CM-Administrator Methoden und Werkzeuge des SE 16 / 17
Das richtige Werkzeug Zusammenfassung:! Subversion ist schnell eingerichtet und benötigt wenig Administrationsaufwand. Es hat sich in der Open-Source- Entwicklung vielfach bewährt.! Man merkt Subversion jedoch seinen Open-Source-Ursprung an: Merging von Dateien, ein zentrales Repository, Verwaltung einzelner (ASCII-)Dateien in einem Dateisystem.! ClearCase ist ein bewährtes Industrieprodukt. Es ist für eine große Anzahl an Mitarbeiter und große Datenbestände geeignet. Die verteilte Entwicklung wird durch verteilte Repositories unterstützt.! ClearCase benötigt jedoch einen sehr großen Administrationsaufwand und ausreichende Ressourcen. Methoden und Werkzeuge des SE 17 / 17