Releasemanagement
Das Releasemanagement (oder Freigabemanagement[1] bzw. Release Engineering) ist traditionell eine Managementaktivität, die sich mit der Freigabe bzw. dem Übergang von Entwicklungsständen in einen operativen Zustand befasst.[2] Es ist Bestandteil bei der Entstehung von Komponenten, Systemen oder Produkten. Beispiele sind Software, Hardware (Elektrik oder Elektronik), mechanischer Bauteile, Computersysteme und die IT[3]. Es unterstützt die übergeordnete Leitung dieser Bereiche. Weitere Begriffe, die im Zusammenhang mit Releasemanagement verwendet werden, sind Auslieferung (Deployment) und Distribution.
Hintergrund
[Bearbeiten | Quelltext bearbeiten]Unter Freigabemanagement versteht man die Bündelung und Bereitstellung von Änderungen von Versionsständen zu einem sog. Release oder Versionspaket.
Der Begriff findet häufig Verwendung in der Softwareentwicklung, jedoch bezieht sich die Aufgabe ganz allgemein auch auf z. B. Elektronikentwicklung (vgl. Musterstände), Prototypen, Systeme oder generelle Produkte. Freigabemanagement ist eine Erweiterung der Versionsverwaltung. Des Weiteren ist die Eingliederung eines freigegebenen Objektes in eine Infrastruktur oder Produktion bedeutend.[4] Als Beispiel kann man sich eine Software (oder Anteile davon) vorstellen, die bei einem Auftragnehmer kodiert wurde und nach Abschluss aller Tests an einen Auftraggeber übergeben wird, welcher diese in seinem Produkt weiterverwendet.
Das Freigabemanagement interagiert mit dem Veränderungs- und Konfigurationsmanagement sowie Integrationsmanagement. Es ist jedoch eine eigenständige Disziplin. Es bezieht außerdem Erfahrungen aus dem Produktmanagement generell.
Ziele
[Bearbeiten | Quelltext bearbeiten]Das Freigabemanagement erfüllt verschiedene Ziele, wie z. B.:
Verfügbar machen von Entwicklungsständen
[Bearbeiten | Quelltext bearbeiten]Als Grundziel dient das Freigabemanagement dem Bereitstellen von Entwicklungsständen. Das Ziel ist dabei die Abnahme (Übernahme) durch einen Kunden oder andere Partei. Es bildet damit die prozessuale Schnittstelle, z. B. beim Übergang von Software zu Hardware oder eines allgemeinen Produktes vom Ende der Entwicklungsphase zum Endverbraucher.
Risikominimierung von Änderungen
[Bearbeiten | Quelltext bearbeiten]Änderungen sind allgegenwärtiger Bestandteil in einer Produktentwicklung. Effektives Releasemanagement kann die negativen Folgen von mangelhaften Spezifikationen, Designs, Implementierungen oder Tests und deren Einfluss auf andere Prozesse, Systeme oder Geschäftspartner hemmen.
Hinweis: Das eigentliche Veränderungsmanagement beschäftigt sich explizit mit der Kontrolle von Änderungen innerhalb eines Produktlebenszyklus bzw. dessen Teilabschnitte. Das Anforderungsmanagement ist für ebenfalls als eigenständige Disziplin zu erwähnen.
Erfüllung von Standards und Normen
[Bearbeiten | Quelltext bearbeiten]Verschiedene Normen fordern Arbeitsprodukte, welche u. a. vom Releasemanagement generiert und erfüllt werden müssen. Beispiel: Automotive SPICE, dort SPL.2 Product Release.
Einfluss auf Produktqualität
[Bearbeiten | Quelltext bearbeiten]Eine Freigabe steht auch in Bezug zu einer Verifizierung und Validierung einer Komponente, Systems oder Produktes. Sie dient als formelle Grundlage dafür.
Aktivitäten
[Bearbeiten | Quelltext bearbeiten]Einige Aktivitäten, die für eine Freigabe notwendig sind, sind z. B.:
- Festlegung des Umfangs einer Freigabe (in Abstimmung mit dem Projektteam, dem Auftraggeber etc.)
- Festlegung des genauen Zeitplans einer Freigabe in Abstimmung mit dem Change- bzw. Produktmanagement
- Qualitätskontrolle der Freigabe anhand von festgelegten Kriterien bzw. Checklisten
- Dokumentation des Inhalts der Freigabe, dabei insbesondere Beschreibung der für die Rückwärtskompatibilität relevanten Eigenschaften
- Verwaltung der Versionshistorie (Versionierung), damit Sicherstellung der Reproduzierbarkeit
Ablauf, Bausteine und Phasen
[Bearbeiten | Quelltext bearbeiten]Koordination und Anforderungen
[Bearbeiten | Quelltext bearbeiten]Die Aufgabe wird meist von einem eigenständigen Releasemanager[5] bzw. Projektleiter oder sogar Team[6] durchgeführt. Inhaltlich bedeutet dies die Planung und Ausführung von Freigaben. Dabei werden festgelegte Umfänge (Anforderungen und Kriterien) berücksichtigt. Ein Verfügbar machen (intern oder extern) für den Endbenutzer bzw. Zielsystem ist dabei Hauptbestandteil der Aufgabe.
Ein Zusammenspiel erfolgt mit dem Veränderungsmanagement (Change Management (ITIL)), Integrationsmanagement, Testmanagement (Akzeptanztests), Marketing etc. bzw. anderen Unternehmenseinheiten. Die meisten an einer Produktentwicklung beteiligten Einheiten werden über das Freigabemanagement angesprochen bzw. es werden Ergebnisse aus den einzelnen Bereichen eingefordert. Unabhängig von einer Freigabe läuft die Produktentwicklung meist weiter. Jedoch kann eine Freigabe (je nach Umfang und Zielsetzung) auch einen Abschluss bzw. Neubeginn einer Projektphase darstellen (Meilensteine).
Planung
[Bearbeiten | Quelltext bearbeiten]Die Planung der Freigabe ist als eigenständiges Projekt zu verstehen. Es müssen Zeitpläne erstellt werden, Umfänge abgeschätzt und festgelegt, Kommunikation mit Stakeholdern etc. bewältigt werden, alles was notwendig ist um eine Freigabe zu ermöglichen.
Entscheidung
[Bearbeiten | Quelltext bearbeiten]Der Releasemanager entscheidet, wann ein System als Release zur Weitergabe freigegeben werden kann. Durch eine geeignete Release-Strategie muss dabei darauf geachtet werden, dass das System frei von schwerwiegenden Fehlern, also produktionssicher ist. In der traditionellen Softwareentwicklung ist dies meist der Fall, wenn der Entwicklungsprozess das Stadium Release Candidate erreicht.
Risikoanalyse
[Bearbeiten | Quelltext bearbeiten]Das Freigabemanagement integriert die Arbeitsprodukte des Risikomanagements, wie z. B. Risikoanalysen, die für den betreffenden Release Gültigkeit haben. Zu jeder Freigabe werden diverse Risiken einer Freigabe abgeschätzt. Diese können sich von anderen Risiken unterscheiden und sind speziell zugeschnitten.
Qualitätskontrolle
[Bearbeiten | Quelltext bearbeiten]Das Freigabemanagement integriert Test- und Prüfberichte (bereitgestellt von der Qualitätsabteilung) für den jeweiligen Release. Weiterhin spielen im Falle von Software auch Ergebnisse aus der Informationssicherheit eine Rolle (z. B. Penetrationstest) und können Einfluss auf eine Freigabe nehmen.
Bereitstellung der eigentlichen Freigabe
[Bearbeiten | Quelltext bearbeiten]Das Freigabemanagement arbeitet entlang der Produktentwicklung und bereitet meist eine zyklische Herausgabe vor. Wenn die reine Entwicklung abgeschlossen ist, bedeutet das aber nicht gleichzeitig eine Veröffentlichung. Dazu müssen oft noch weitere Schritte erfolgen:
- Erstellung der Konfigurationsstände, welche alle Komponenten beinhaltet
- Zusammenstellung und Bezeichnung von Software-Quellcode, Hardwaredesigns, technischen Zeichnungen oder anderer Elemente
- Bereitstellung von Benutzerhandbüchern, technischer Dokumentation usw.
- Bereitstellung/Vertrieb der Komponente, der Software, Hardware etc.
- Hilfestellung für die Ausbildung und Vorbereitung der Mitarbeiter
Dokumentation
[Bearbeiten | Quelltext bearbeiten]Die Dokumentation dient z. B. der späteren Nachproduktion oder Rückverfolgung von speziellen Releases für einzelne Kunden oder Plattformen.
Es sollte eine komplette Beschreibung der gesamten Systemumgebung und des zugrunde liegenden Systems (Programme, Versionen, Dokumente, Beschreibungen, Anleitungen, generelle Artefakte) erstellt werden.
Zusammenhang mit Softwareentwicklung
[Bearbeiten | Quelltext bearbeiten]Methodologie
[Bearbeiten | Quelltext bearbeiten]Software-Freigabemanagement verändert sich als Aufgabe ebenso wie die Softwareentwicklung selbst. Im Falle von Groß-Softwareprojekten existieren eigene Release-Teams (bzw. Release-Engineering Teams) und eigene Abläufe, die sich je nach Projekt aufstellen, anpassen und optimieren. Als Beispiel arbeitet das Release-Team der Wikimedia Foundation (MediaWiki) mit sog. Release-Trains (Freigabezügen), welche wöchentlich stattfinden.[6] Je nach Software-Kontext (z. B. Open-Source-Software[7] oder Mobile Apps[8]) ergeben sich eigenständige Anforderungen und Herausforderungen. Die hohe Komplexität (Datenmengen, Datenbanken, Schnittstellen, Benutzereingaben/UIs, Zielgeräte, Probleme usw.) von Software spiegelt sich u. a. auch bei der Freigabe wider. Dies kann am Beispiel der Corona-Warn-App detailreich nachvollzogen werden.
Werkzeuge, Services, Methodologien
[Bearbeiten | Quelltext bearbeiten]Für Releasemanagement stehen verschiedene Werkzeuge zur Verfügung, je nach Produkt und Industrie.
Hinweis: Ein reines Werkzeug zur Versionskontrolle dient noch nicht zum eigentlichen Releasemanagement. Anteilig am Releasemanagement sind auch die sog. Versionshinweise.
Beispiele
[Bearbeiten | Quelltext bearbeiten]- Apache Subversion (SVN) – Für das Projekt existieren eigenständige Software-Release Methoden für Entwickler, die sich beteiligen wollen.[9]
- DevOps – auch im DevOps existieren eigene Ansätze zum Releasemanagement.[10]
- GitHub – Git basierte Plattform, mit eigenen Freigabemechanismen[11]
- GitLab – Git-basierte Plattform, mit eigenen Freigabemechanismen[12]
- Kontinuierliche Integration (CI/CD)
- Hinweis: Kontinuierliche Integration kann als eine Art Weiterentwicklung der einfachen Versionskontrolle verstanden werden. Es kann ebenso automatische Releases verwalten. Es ist jedoch meist eine Kernfrage des Releasemanagement die genauen Inhalte (Features) und Defekte zu definieren und koordinieren.
- Release Control[13] – Ein Softwareprodukt von Micro Focus
Zusammenhang Informationstechnologie und ITIL
[Bearbeiten | Quelltext bearbeiten]Das Freigabemanagement dient dem Service Management und ist Teil des IT-Service-Management (ITSM).[14] Es ist seit ITIL v3 eine eigenständige Prozesseinheit.
Im Zusammenhang mit ITIL stehen das geforderte Definitive Hardware Library und Definitive Software Library.[15] Die Bedeutung ist jeweils die Archivierung (logische Verwaltung) von technischen bzw. Softwarekomponenten eines Unternehmens. Das DSL wurde nach der Veröffentlichung von ITIL v3 zu DML (Definitive Media Library) umbenannt.
Neuartige oder angrenzende Entwicklungen
[Bearbeiten | Quelltext bearbeiten]- Over-the-Air-Updates sind sowohl in der Telekommunikation, Internet der Dinge, als auch Automobilindustrie[16] teils im produktiven Einsatz und fordern ein robustes und geeignetes Freigabemanagement.
- Im Cloud Computing werden bei Microsoft Azure sog. Feeds genutzt, um Pakete zu bündeln und verteilen.[17]
- Ein anderes Instrument sind Container, speziell Docker.[18]
- Release Management von Microservices.[19]
- App Stores – Spezifische Fragestellungen (auch Rechtliche[20]) und Techniken[21][22] ergeben sich für Software, die in sog. App Stores veröffentlicht wird.
- Die NASA bietet seine für die Raumfahrt entwickelte Software der Öffentlichkeit an und hat dafür ein eigenständiges Programm aufgelegt.[23]
Normen
[Bearbeiten | Quelltext bearbeiten]Literatur
[Bearbeiten | Quelltext bearbeiten]Artikel
[Bearbeiten | Quelltext bearbeiten]- Eero Laukkanen, Maria Paasivaara, Juha Itkonen, Casper Lassenius: Comparison of release engineering practices in a large mature company and a startup. In: Empirical Software Engineering. Band 23, Nr. 6, Dezember 2018, S. 3535–3577, doi:10.1007/s10664-018-9616-7 (englisch).
- Bram Adams, Shane McIntosh: Modern Release Engineering in a Nutshell -- Why Researchers Should Care. In: 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER). IEEE, Suita, Osaka, Japan 2016, ISBN 978-1-5090-1855-0, S. 78–90, doi:10.1109/SANER.2016.108 (englisch).
- Pratik K. Biswas: Autonomic Software Release Management for Communications Networks. In: 2007 10th IFIP/IEEE International Symposium on Integrated Network Management. IEEE, Munich, Germany 2007, ISBN 978-1-4244-0798-9, S. 179–188, doi:10.1109/INM.2007.374782 (englisch).
- Murali Ramakrishnan: Software release management. In: Bell Labs Technical Journal. Band 9, Nr. 1, 11. Mai 2004, S. 205–210, doi:10.1002/bltj.20015 (englisch).
Moderne Lehrtexte
[Bearbeiten | Quelltext bearbeiten]- Betsy Beyer, Tim Harvey, Dinah McNutt: Release Engineering. O’Reilly Media, Inc., 2016, ISBN 978-1-4919-6521-4 (englisch, safaribooksonline.com).
- Dave Howard: IT release management: a hands-on guide. CRC Press, Boca Raton, FL 2012, ISBN 978-1-4398-8352-5 (englisch).
- Hans-Bernd Kittlaus: Software Product Management: The ISPMA®-Compliant Study Guide and Handbook. Springer Berlin Heidelberg, Berlin, Heidelberg 2022, ISBN 978-3-662-65115-5, doi:10.1007/978-3-662-65116-2 (englisch).
- Gerard O’Regan: Concise Guide to Software Engineering (= Undergraduate Topics in Computer Science). Springer International Publishing, Cham 2017, ISBN 978-3-319-57749-4, doi:10.1007/978-3-319-57750-0 (englisch).
- Michael T. Nygard: Release it! design and deploy production-ready software (= The pragmatic programmers). Second edition Auflage. Pragmatic Bookshelf, Raleigh, North Carolina 2018, ISBN 978-1-68050-239-8 (englisch).
- Stephen Rylander: Patterns of Software Construction: How to Predictably Build Results. Apress, Berkeley, CA 2022, ISBN 978-1-4842-7935-9, doi:10.1007/978-1-4842-7936-6 (englisch).
Klassische Werke
[Bearbeiten | Quelltext bearbeiten]- Michael E Bays: Software Release Methodology. Prentice Hall, Philadelphia, PA 1999 (englisch).
- Jez Humble, David Farley: Continuous delivery: reliable software releases through build, test, and deployment automation. Addison-Wesley, Upper Saddle River, NJ 2010, ISBN 978-0-321-60191-9.
- C. Michael Pilato, Ben Collins-Sussman, Brian W. Fitzpatrick, Kathrin Lichtenberg, C. Michael Pilato: Versionskontrolle mit Subversion: Software-Projekte intelligent koordinieren. 3. Aufl., komplett überarb. und aktualisiert. O’Reilly, Beijing Köln 2009, ISBN 978-3-89721-897-0 (red-bean.com).
- Tobias Wassermann: Versionsmanagement mit Subversion: Installation, Konfiguration, Administration ; [Repository-Verwaltung und -Administration, Serverkonfiguration von Apache und svnserve, grafische Oberflächen für Subversion, vollständige Befehlsreferenz] (= Programmierung). 1. Auflage. mitp, Heidelberg 2006, ISBN 978-3-8266-1662-4.
Siehe auch
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Fabian Wolf: Fahrzeuginformatik: Eine Einführung in die Software- und Elektronikentwicklung aus der Praxis der Automobilindustrie. Springer Fachmedien Wiesbaden, Wiesbaden 2018, ISBN 978-3-658-21223-0, doi:10.1007/978-3-658-21224-7 (springer.com [abgerufen am 28. Juli 2022]).
- ↑ R.J. Cloutier (Editor in Chief): Deploying, Using, and Sustaining Systems to Solve Problems - SEBoK. In: The Guide to the Systems Engineering Body of Knowledge (SEBoK), v. 2.6. The Trustees of the Stevens Institute of Technology, 28. Juli 2022, abgerufen am 28. Juli 2022 (englisch).
- ↑ Dominic Müller, Joachim Herbst, Markus Hammori, Manfred Reichert: IT Support for Release Management Processes in the Automotive Industry. In: Business Process Management. Band 4102. Springer Berlin Heidelberg, Berlin, Heidelberg 2006, ISBN 978-3-540-38901-9, S. 368–377, doi:10.1007/11841760_26 (springer.com [abgerufen am 28. Juli 2022]).
- ↑ Kim H. Pries: Project management of complex and embedded systems : ensuring product integrity and program quality. CRC Press, Boca Raton 2009, ISBN 978-1-4200-7206-8, S. 215 ff. (englisch).
- ↑ Google - Site Reliability Engineering. Abgerufen am 29. Juli 2022.
- ↑ a b Tyler Cipriani: How the Wikimedia Foundation deploys code. In: Diff. 7. Oktober 2021, abgerufen am 28. Juli 2022 (amerikanisches Englisch).
- ↑ Stefano Zacchiroli: Release management in Open Source projects. Abgerufen am 28. Juli 2022 (englisch).
- ↑ Federica Sarro: Release Management of Mobile Apps. Abgerufen am 28. Juli 2022 (englisch).
- ↑ Apache Subversion - Community Guide - Making Subversion Releases. Abgerufen am 28. Juli 2022.
- ↑ Abhinav Krishna Kaiser: Release Management in DevOps. In: Reinventing ITIL® in the Age of DevOps. Apress, Berkeley, CA 2018, ISBN 978-1-4842-3975-9, S. 271–295, doi:10.1007/978-1-4842-3976-6_10 (springer.com [abgerufen am 28. Juli 2022]).
- ↑ Managing releases in a repository. Abgerufen am 29. Juli 2022 (englisch).
- ↑ Deploy and release your application | GitLab. Abgerufen am 29. Juli 2022 (amerikanisches Englisch).
- ↑ Release Management Tool | Application Release Automation | Micro Focus. Abgerufen am 29. Juli 2022 (amerikanisches Englisch).
- ↑ Stefan Kempter, Andrea Kempter: Release Management | IT Process Wiki. IT Process Maps GbR, abgerufen am 28. Juli 2022 (englisch).
- ↑ ITIL Definitive Software Library and Definitive Hardware Store. Abgerufen am 28. Juli 2022 (amerikanisches Englisch).
- ↑ Wolfgang Rudschies: Updates over the air: Wie das Auto per Software aufgefrischt wird. In: ADAC. Allgemeiner Deutscher Automobil-Club e. V. (ADAC), 27. Juli 2021, abgerufen am 28. Juli 2022.
- ↑ ramiMSFT: What are feeds? - Azure Artifacts. Abgerufen am 28. Juli 2022 (amerikanisches Englisch).
- ↑ Orchestrating and Deploying Containers - DZone Research Guides. Abgerufen am 3. August 2022 (englisch).
- ↑ Efficient Release Management of Microservices Based Solution. 2. März 2019, abgerufen am 3. August 2022 (englisch).
- ↑ Jörn Lenz: Rechtliche Stellung von App-Stores. Springer Fachmedien Wiesbaden, Wiesbaden 2018, ISBN 978-3-658-20981-0, doi:10.1007/978-3-658-20982-7 (springer.com [abgerufen am 29. Juli 2022]).
- ↑ Radoslava Leseva Adams, Hristo Lesev: Releasing Your App in the App Store. In: Migrating to Swift from Flash and ActionScript. Apress, Berkeley, CA 2016, ISBN 978-1-4842-1667-5, S. 483–502, doi:10.1007/978-1-4842-1666-8_23 (springer.com [abgerufen am 29. Juli 2022]).
- ↑ Lee Englestone: Publishing to the App Store. In: .NET Developer's Guide to Augmented Reality in iOS. Apress, Berkeley, CA 2021, ISBN 978-1-4842-6769-1, S. 151–178, doi:10.1007/978-1-4842-6770-7_17 (springer.com [abgerufen am 29. Juli 2022]).
- ↑ Home | NASA Software Catalog. Abgerufen am 28. Juli 2022.
- ↑ ISO/IEC 20000-1:2018. In: iso.org. Abgerufen am 10. Februar 2021 (englisch).