Dem Build- und Release-Management wird in vielen Projekten nicht der nötige Stellenwert eingeräumt. Im Budget- und Projektplan taucht das Thema nur selten auf. Dabei kann sowohl eine sorgfältige Planung der Software-Releases als auch ein weitgehend standardisierter und automatisierter Prozess für das Erstellen der Software aus den verschiedenen Quellcodes einen wesentlichen Einfluss auf die termin- und kostengerechte Lieferung der Software haben.
Insbesondere große, mehrschichtige Anwendungssysteme mit vielen Benutzern stellen hohe Anforderungen an die Releaseplanung. Muss Client-Software ausgeliefert werden, dann spielen Aspekte wie Internationalisierung, zeitlicher Vorlauf für den Roll-out und Distributionsmechanismen eine Rolle. Der von den verschiedenen Schichten (Client, Middleware, Server, Backend-Systeme) angebotene Funktionsumfang sowie die Schnittstellen müssen zueinander passen. Auch hier ist der Release-Manager gefragt. Was aber, wenn die Entwickler bereits an der übernächsten Version arbeiten? Kein Problem – wenn die Versionskontrolle funktioniert. Durch Definition verschiedener Entwicklungsstränge (Branches) kann die Weiterentwicklung parallelisiert werden.
Allerdings muss gewährleistet sein, dass zeitgleich die in der produktiven Softwareversion auftretenden Fehler behoben werden können. Das lässt sich durch die Definition getrennter Umgebungen für Entwicklung, Test, Schulung und produktiven Betrieb erreichen. Wird das Anwendungssystem von externen Dienstleistern entwickelt, dann sollte man als Kunde darauf bestehen, dass das System jederzeit aus dem Quellcode erzeugt werden kann. Neben den geeigneten Werkzeugen und Verfahren gilt es aber vor allem, den Entwicklungs- und Release-Prozess zu definieren und Verantwortliche zu benennen. Erst dann kann die Software jederzeit von (fast) jedermann gebaut werden – falls nötig auch am Sonntag. Im Rahmen der iX-Konferenz haben wir die wesentlichen Aspekte des Build- und Release-Managements in großen Projekten beleuchtet und Best Practices aus unserem Projektalltag vorgestellt:
- Versionsverwaltung mit mehreren Entwicklern
- Branch & Merge
- Automatisiertes Build-Management
- Codegenerierung
- Der Kunde baut sich seine Software selbst
- Roll-out von Client-Software
- Releaseplanung und- dokumentation
- Softwareentwicklungsprozess
- Standards und Werkzeuge