• deutsch
  • english

Best Practice Releasemanagement – Tipps zur Verwaltung neuer Versionen

Die Planung von neuen Versionen einer Software, auch Releasemanagement genannt, ist bei der Softwareentwicklung in vielerlei Hinsicht eine Herausforderung. So bedarf es bei der Vorbereitung einer neuen Version (Release) mehrerer zeitintensiver Schritte: das Sammeln und Priorisieren von Anforderungen, die präzise Zeitplanung für die Umsetzung der Features oder Bugfixes sowie die Festlegung eines Zeitrahmens für das Qualitätsmanagement und die Testphase.

 

Ein-optimales-Releasemanagement-sorgt-fuer-eine-bessere-Zusammenarbeit

Ein optimales Releasemanagement sorgt für eine bessere Zusammenarbeit

In Bezug auf Features und Bugfixes eignen sich Projektmanagement-Tools oder Ticket-Systeme am besten. Supportmitarbeiter können Anforderungen aus Anfragen von Kunden oder Mitarbeitern in Listen zusammentragen. Diese Arbeitspakete werden daraufhin von Projektmanagern und Entwicklern priorisiert, der Aufwand geschätzt und die Features oder Bugfixes in die Planung eines Releases mit aufgenommen. Bei der Umsetzung dieser Arbeitspakete ergibt sich eine weitere Herausforderung: die Versionsverwaltung. Diese sollte zur Konfliktprävention eingesetzt werden, da viele Entwickler gemeinsam an gleichen Projekten und damit denselben Dateien arbeiten.

Eine Versionsverwaltung bietet die folgenden Vorteile:

Backup: Durch einen zentralen Speicherort des Quellcodes kann dieser automatisch sicher verwahrt werden.
Difference: Eine gute Versionsverwaltung kann den Unterschied zweier Zustände (Commits) anzeigen. Änderungen eines Entwicklers zu dem vorigen Zustand sind möglich.
Merge: Da gemeinsames Arbeiten auch bedeutet, dass mehrere Entwickler die gleichen Dateien bearbeiten, ist es notwendig, dass eine Versionsverwaltung Entwickler beim Zusammenführen dieser Dateien unterstützt.
History: Um Änderungen zwischen Zuständen nachzuvollziehen, kann eine Versionsverwaltung die Unterschiede zeilenbasiert aufzeigen.
Revert: Es ist jederzeit möglich, zu einem alten, funktionierenden Zustand zurückzukehren und einzelne Änderungen rückgängig zu machen.
Blame: Bei jeder Bearbeitung einer Datei, die ein Entwickler in das Versionsverwaltungsystem legt, wird der Benutzer gespeichert. Damit ist es möglich, in der Historie jede Veränderung einem User zuzuordnen.
Branch and Merge: Versionsverwaltungen erlauben das Abzweigen von Zuständen (Branching). Änderungen können in diesem Zweig durchgeführt und dann zum Stamm zurückgeführt werden (Merging). Der Stamm selbst kann jedoch in dieser Zeit auch Änderungen erfahren haben, was in den meisten Fällen ein manuelles Bearbeiten beidseitig veränderter Dateien erfordert.
Tag: Viele Versionsverwaltungen erlauben das Kennzeichnen von einzelnen Zuständen. TAGS sind im Vergleich zu Zuständen (Revisionen) natürlich-sprachig und damit einfacher zu erfassen und wiederzufinden. Es ist somit möglich, eine interne Revisionsbezeichnung, wie beispielsweise 'r3921' oder '4f37029...', z. B. als 'Release-1.1' zu kennzeichnen.
Hook: Viele Versionsverwaltungen können vor und nach bestimmten Aktionen Skripte ausführen. Dies erlaubt es, beim Bereitstellen einer neuen Revision zum Beispiel, E-Mails mit allen Änderungen dieses Zustands an alle Entwickler zu verschicken.

Die am meisten eingesetzten Versionsverwaltungen sind kostenfrei, wie CVS (Concurrent Versions System), Subversion, GIT und Mercurial. Daneben gibt es viele weitere proprietäre Systeme, wie MS Source Safe oder MS Team Foundation Server. Alle Systeme lassen sich in zwei Gruppen unterteilen: zentrale und dezentrale Versionsverwaltungssysteme. Die dezentralen verstehen sich als Weiterentwicklung der zentralen Systeme, welche im Zuge der steigenden Vernetzung und der Art, wie an Softwareprojekten heutzutage an unterschiedlichen Standorten mit festen und freien Mitarbeitern gearbeitet wird, herauskristallisiert hat. Mithilfe leichtgewichtiger Verzweigungsmöglichkeiten (Branch und Merge), die auf der Graphentheorie beruhen, können klare Prozesse für die Entwicklung von Features und Bugfixes definiert werden.

Dadurch kann einfach und strukturiert an Paketen gearbeitet werden, die sich später innerhalb des Teams problemlos miteinander teilen lassen. Der Einsatz von dezentralen Versionsverwaltungsystemen verbessert damit das Releasemanagement und das Projektmanagement für räumlich verteilte oder lokale Teams maßgeblich. Gegenüber zentralen Systemen bieten dezentrale Versionsverwaltungen Entwicklern den Vorteil, schnell und ohne großen Aufwand zwischen Arbeitspaketen zu wechseln oder, wenn diese vom Projektmanagement höher priorisiert werden, fertig zu stellen und zur vorigen Arbeit ohne Verlust beziehungsweise aufwendige Sicherung des Standes zurückzukehren.

Releasemanagement wird durch dezentrale Systeme vereinfacht, da einzelne Arbeitspakete direkt aus der Versionsverwaltung ausgewählt und in ein Release integriert werden können. Dabei ist eine volle Historie der integrierten Pakete für jeden Projektbeteiligten sichtbar. Arbeitspakete, die nicht in ein Release integriert werden, können ohne aufwendiges Kopieren erhalten bleiben, bis die Entscheidung zur Integration fällt.

Weiterhin machen Versionsverwaltungen ein automatisches Deployment möglich. Das stellt die Einbindung eigener Skripte sicher, die alle Aktionen für ein Deployment im gewünschten Szenario durchführen. Zusammenfassend lässt sich festhalten, dass durch den Einsatz von dezentralen Systemen, mit einem guten Branching-Konzept und einem definierten Releasemanagement unterstützt, die Arbeit innerhalb und zwischen Teams sowie die Softwarequalität verbessert und nicht zuletzt auch die Fehleranfälligkeit deutlich reduziert wird.



Schreibe einen Kommentar





Erforderliche Felder sind mit (*) markiert.