Wordcube

Der Weg zurück – Versionsverwaltung in der Software-Entwicklung

Die Entwicklung von Software ist ein in hohem Maße dynamischer Prozess. Die einzelnen Module durchlaufen unterschiedliche Stadien, Änderungen werden getestet, eventuell wieder zurückgenommen. In bestimmten Intervallen wird aus den zu diesem Zeitpunkt gültigen Modulen eine Version des Gesamtprogrammes erstellt, eventuell weiterentwickelt oder wieder verworfen.

Immer ist es jedoch wichtig, die Entwicklungsstände aller Einzelkomponenten zu verfolgen und gegebenenfalls von einem alten Stand aus die Entwicklung erneut fortzuführen. Zum Teil entstehen dadurch mehrere Zweige eines Softwaredesigns. Verschärft wird die Situation noch dadurch, dass in der Regel an komplexeren Projekten mehrere Entwickler mitarbeiten. Sie alle sind darauf angewiesen einen jederzeit konsistenten Zugriff auf alle Modulversionen zu erhalten.

Als Ausweg aus der Misere gelten Versionsverwaltungssysteme, die seit vielen Jahren in zahllosen Ausprägungen auf dem Markt sind. Allen gemeinsam ist, dass die Informationen zum Quellcode und den daran erfolgten Änderungen in einer Datenbank, dem sogenannten Repository gehalten werden. Neben den eigentlichen Änderungen am Quellcode werden meist noch zusätzliche Informationen und Kommentare mit abgelegt, um den Änderungsprozess für alle Beteiligten transparent zu dokumentieren.

Elementare Funktion der Versionierungssoftware ist das Auschecken (Check Out), Bearbeiten und Zurückspeichern (Check In, Commit) des Quellcodes. Die beim Check Out entstehende Kopie des Quellcodes nennt man Arbeitskopie. Module, die sich in der Bearbeitung befinden, sind im Normalfall gegen ein weiteres Check Out gesperrt (Lock). Ansonsten würden beim Zurückschreiben unweigerlich zwei verschiedene Varianten des Moduls entstehen. Manchmal ist dies allerdings notwendig, um einen neuen Entwicklungszweig zu eröffnen. Daher kann die Lock-Funktion bei den meisten Versionsprogrammen auch umgangen werden.

Manche Versionssysteme erlauben nicht nur die Verwaltung von Quellcode in der Softwareentwicklung sondern funktionieren für alle Arten von digitalen Daten. Damit sind sie auch als Dokumentverwaltungsystem (DMS) einzusetzen.

Arbeitet das Projektteam innerhalb einer gemeinsamen Netzwerkinfrastruktur an der Softwareentwicklung, wird in der Regel auch die Versionsverwaltung in diesem lokalen Netz installiert. Für Projekte, die an mehreren nicht vernetzten Standorten bearbeitet werden sollen, bietet sich dagegen das Hosting auf Webservern oder in der Cloud an. Dadurch können alle Projektbeteiligten von jedem Arbeitsplatz mit Internetzugang auf den aktuellen Quellcode zugreifen.

Zum Einsatz kommt dabei meistens die gleiche Versionsverwaltungs-Software, die auch im lokalen Netz zum Einsatz kommt. Häufig handelt es sich dabei um Open Source Software wie Git oder Subversion (SVN), die auch in lokalen Entwicklernetzen eingesetzt wird. Die Versionierungssoftware ist auf den Servern bereits installiert und wird in verschiedenen Paketen, je nach erforderlichem Datenvolumen, als „Software as a Service“ (SAAS) vermietet.

Es gibt zahlreiche Anbieter in diesem Marktsegment, die vom kostenlosen Git- oder Subversion-Hosting in der Cloud mit wenig Speicherplatz und einem öffentlichen Repository bis zum professionellen SVN-Hosting auf einem dedizierten Server mit unbegrenztem Datenvolumen und einer ausgeklügelten Benutzerverwaltung alle Varianten anbieten. Je nach Komplexität der Anwendung und verfügbarem Budget können die Projektteams aus einer Vielzahl an Angeboten wählen. Subversion-Hosting hat sich dabei als eines der von Kunden stark nachgefragten Systemen gezeigt, da SVN-Hosting mit dem Nachfolger des weitverbreiteten CVS eine geringe Einarbeitungszeit verspricht.