ALM schafft mit Automatisierung und Standardisierung Wettbewerbsvorteile
Mehrmals pro Jahr berichten die Medien von Softwarefehlern oder -ausfällen, die die Betroffenen in grosse Schwierigkeiten bringen, meist infolge eines System- und Releasewechsels. Da ist man geneigt, kritisch zu hinterfragen, wie es zu solchen Pannen kommt und wie sie vermieden werden können. Application Lifecycle Management ist die Antwort.

Die Handhabung der betrieblichen Software stellt Unternehmen vor eine grosse Herausforderung. Heutzutage verursacht bereits ein Systemausfall von Sekunden oder Minuten einen Image- und/oder Umsatzverlust. Businesskritische Systeme müssen daher rund um die Uhr verfügbar sein. Zusätzlich zum anspruchsvollen Tagesgeschäft müssen auch ungewollte Krisen schnellstmöglich bewältigt werden.
Wie kann die benötigte ständige Verfügbarkeit gewährleistet werden? Die meisten Rechenzentren sind heute auf eine 7 x 24-Stunden-Verfügbarkeit ausgelegt, verfügen über Notstromversorgungen und sind geografisch redundant aufgestellt. In diesen Bereich wurde bereits viel investiert, aber was ist mit der Software, die in diesen Rechenzentren betrieben wird? Kann jederzeit aufgezeigt werden, wie gut die Qualität der Software ist, die auf dem Produktionssystem installiert wurde? Spätestens wenn solche oder ähnliche Fragen gestellt werden, kommt man nicht darum herum, sich mit dem Thema Application Lifecycle Management (ALM) auseinanderzusetzen.
Application Lifecycle Management ist businesskritisch
Die Fähigkeit, ein Produkt herzustellen, das einen essenziellen Bestandteil an den Umsatz und die Innovationskraft eines Unternehmens beisteuert, wird als Kernkompetenz bezeichnet. Ohne diese qualitativen und quantitativen Kompetenzen ist die Wettbewerbsfähigkeit nicht mehr gewährleistet. Dies gilt auch für ein Softwareprodukt, und zwar nicht nur für die Hersteller von Software, sondern auch für Unternehmen, die in ihrer Wertschöpfungskette auf ein Softwareprodukt angewiesen sind.
Application Lifecycle Management ist demzufolge ein businesskritischer Prozess. Nicht jede Software ist gleich wichtig oder kritisch. Das Kalendertool, in dem die Mitarbeiter ihre Absenzen eintragen, ist im Vergleich zu einer Software für die Maschinensteuerung einer Produktionsanlage weniger wichtig. Nach einer erfolgreichen ALM-Einführung kann es aber durchaus sinnvoll sein, dass jede Software nach den gleichen Prinzipien und Richtlinien umgesetzt wird.
Die Integration von ALM in bestehende Prozesse
ALM lässt sich in bestehende Frameworks und agile Prozesse problemlos integrierten, da es ein Dach bildet, das die Schnittstellen aller Beteiligten regelt und überwacht. Die Grafik auf der Folgeseite zeigt die drei Aspekte Steuerung, Entwicklung und Betrieb. Die Qualitätssicherung ist bei allen drei Aspekten ein integraler Bestandteil.
- Steuerung: Die Steuerung begleitet ein oder mehrere Softwareprodukte durch den ganzen Lebenszyklus – von der Erstellung des Business Case bis hin zur Ausserbetriebssetzung oder Ablösung.
- Entwicklung: Die agilen Prozesse bringen im Bereich Entwicklung einen echten Mehrwert; ohne Agilität ist es kaum möglich, Software zu entwickeln, die den heutigen Kundenbedürfnissen genügt. In der Entwicklung muss berücksichtigt werden, dass eine Software in den meisten Fällen mehr als nur einen Release hat, was zur Folge hat, dass sich bei einem langen Software-Lifecycle auch das Vorgehensmodell ändern kann. Was gestern noch traditionell nach Wasserfall entwickelt wurde, muss heute einem agilen Prozess genügen.
- Betrieb: Installation und Überwachung sind Bestandteil im Betrieb. Der Aspekt Betrieb ist ein wichtiger Partner der Entwicklung und umgekehrt. Die frühe und enge Zusammenarbeit während der initialen Entwicklung zahlt sich während der Betriebs- und Unterhaltsphase aus.
Das Rad dreht sich immer schneller
Die Kundenerwartungen an eine Software sind sehr hoch. Aus Kundensicht sind die Bedürfnisse legitim, da die Neuerungen einen entscheidenden Wettbewerbsvorteil gegenüber den Mitbewerbern versprechen. Provokant gesagt müssen deshalb heute umgesetzte Anforderungen bereits morgen installiert werden, und dies bei gleichbleibendem funktionalen oder nichtfunktionalen Verhalten der bestehenden Software.
Die Umsetzung ist nicht trivial. Jedes Team muss diese Fähigkeit aber früher oder später aufbauen. Das wird offensichtlich, wenn beim aufgezeigten Beispiel die neue Anforderung mit einem betriebsverhindernden Fehler auf dem Produktionssystem ersetzt wird. Oft wird der Fehler erst zu diesem Zeitpunkt richtig wahrgenommen, die Behebung drängt. Es geht darum, eine Veränderung (Change) an einem System durchzuführen. Dahinter steckt eine Menge Arbeit: Es können Folgefehler entstehen, wenn keine griffigen Qualitätsmechanismen vorhanden sind. Das Ergebnis sind Zeitverzögerungen oder ein kompletter Stillstand in der Entwicklung. Die agilen Softwareentwicklungsprozesse (z.B. Scrum) liefern ausgezeichnete Voraussetzungen, um die Fähigkeit, Veränderungen professionell zu handhaben, aufzubauen.
Die folgenden zwei Kennwerte werden verwendet, um zu messen, wie schnell eine Änderung wieder in das Produktionssystem eingespielt wird:
- Mittlere Reparaturzeit (Mean Time to Repair): Bezeichnet die Zeit von der Fehlerentdeckung bis zur Einspielung der neuen Version ins Zielsystem (Test- oder Produktionssystem, abhängig davon, wo der Fehler entdeckt wurde). Die Fehlerbeschreibung muss präzise und unmissverständlich sein. Ein langes Spezifizieren kann man sich hier nicht leisten. Das Ziel ist es, möglichst schnell wieder ein System zur Verfügung zu stellen, das sich erwartungsgemäss verhält.
- Durchlaufzeit (Cycle Time): Mit diesem Wert wird die Durchlaufzeit eines Product Backlog Item (Scrum-Begriff für Anforderung) gemessen, die zur Umsetzung benötigt wird. Was bedeutet in diesem Zusammenhang "umsetzen"? Um diese Frage beantworten zu können, muss definiert werden, was das Ziel einer Reduktion der Durchlaufzeit ist. Ein zentraler Faktor ist, dass das Entwicklungsteam rasche und wiederkehrende Rückmeldungen (Continuous Feedback) zum aktuellen Stand der Software erhält. Nur so kann garantiert werden, dass die Entwicklung auf dem richtigen Weg ist und der Kunde schnellstmöglich von den Neuerungen profitieren kann.
Automatisierung, Automatisierung und nochmals Automatisierung
Wenn alle Arbeiten in einem Release-Zyklus manuell ausgeführt werden, kann sich die Durchlaufzeit oder die mittlere Reparaturzeit nie in einem vernünftigen Rahmen einpendeln. Die Anforderungen ändern sich häufiger, das Team liefert immer langsamer und die Diskrepanz zwischen Erwartung und Realität wird grösser. Mit der Ausnahme der effektiven Programmierung müssen möglichst viele Schritte automatisiert werden. Das beginnt beim Build (Kompilieren und Paketieren) und endet mit der Installation auf dem Zielsystem. Je mehr Arbeitsschritte automatisiert werden, umso schneller und öfter können Änderungen ausliefert werden. Bei Microsoft nennt man das "Continuous Delivery". Bei diesem Konzept sind alle Schritte und Qualitätsrichtlinien so aufgebaut, dass jeder Schritt automatisiert ausgeführt werden kann. Damit könnten jeweils am Ende jedes dreiwöchigen Sprints eine neue Version installiert und falls nötig Änderungen wöchentlich oder sogar täglich eingespielt werden.
Der Wert einer kontinuierlichen Auslieferung ist immens. Auf der einen Seite kann genau analysiert werden, wie der Nutzer mit der Software arbeitet, und auf der anderen Seite werden Fehler oder Laufzeitverhalten sofort aufgedeckt. Es wird schnell ersichtlich, welche Funktionen in welchem Umfang genutzt werden. Das Nutzerverhalten erleichtert dem Product Owner die Entscheidung, in welchem Bereich die Anforderungen höher priorisiert werden müssen.
Toolunterstützung mit zwei möglichen Ausprägungen
Als die ersten Softwaresysteme, sofern sie diesen Namen verdienten, geschrieben wurden, gab es noch keine integrierten Entwicklungsumgebungen. Das "Kompilieren" und "Programmieren" geschah auf unterschiedlichen Systemen. Und an ein Debuggen, wie wir es heute kennen, war gar nicht zu denken. Moderne Entwicklungsumgebungen verfügen heute beispielsweise über statische Codeanalyse, Architekturtools, (Unit-)Testing-Integrationen und vieles mehr. So gesehen kann die These aufgestellt werden: "Effizientes Application Lifecycle Management geht nur mit Toolunterstützung". Bei der Toolunterstützung gibt es zwei möglich Ausprägungen: integrierte ALM-Lösung (ALM-Suite) oder unabhängige Tools.
Die integrierte ALM-Suite vereint alle Artefakte unter einem Dach und ermöglicht eine Nachverfolgbarkeit über alle Ebenen. So kann zum Beispiel ermittelt werden, welche Anforderung zu welchen Source-Code-Änderungen geführt hat, und in welchem Lieferpaket diese das erste Mal enthalten sind. Das medienbruchfreie Verketten der einzelnen Projektartefakte ermöglicht eine homogene Sicht auf den Zustand der einzelnen Softwareprodukte.
Bei den unabhängigen Tools wird für (fast) jede Disziplin (Unit Testing, Build Server, Source Code Verwaltung etc.) ein dezidiertes Tool eingesetzt. Diese Strategie hat den Vorteil, dass diese Tools frei wähl- und ersetzbar sind. Sie ist jedoch in der Einführung und im Unterhalt um ein Vielfaches aufwendiger als eine integrierte Lösung.
Betrieb und Entwicklung rücken näher zusammen
Im IT-Betrieb sind zentrale Verwaltungslösungen vielerorts im Einsatz. Die Systeme werden durch Logdateien und Eventinformationen minutiös überwacht. Im Falle eines Ausfalls oder Fehlverhaltens einer Applikation bleiben diese wichtigen Informationen meistens in diesem System begraben. Die Stellen ausserhalb des IT-Betriebs (z. B. Entwicklung) haben keinen Zugang zu diesen Informationen. Dabei wären gerade das die wichtigen Informationen, die darüber entscheiden, ob das Problem in Minuten, Stunden oder sogar erst in Tagen behoben werden kann.
Eine zukunftsorientierte ALM-Suite muss einen "verlängerten Arm" zum Betrieb haben. Nur so können die produktivitätssteigernden Informationen zeitgerecht den verantwortlichen Stellen zur Verfügung stehen. Der IT-Betrieb und die Entwicklung rücken so näher zusammen, sodass der Kundennutzen maximiert wird.
Mit ALM kann die gesamte Produktivität gesteigert werden
Application Lifecycle Management bietet für das Unternehmen und dessen Kunden viele Vorteile. Der Kunde kann die neuen Funktionen früher nutzen und hat zudem die Gewissheit, dass die Entwicklung das umsetzt, was spezifiziert wurde. Das Unternehmen verschafft sich einen entscheidenden Wettbewerbsvorteil, indem neue Anforderungen schneller und öfter an den Kunden ausliefert werden. Dank der hohen Automatisierung und Standardisierung müssen auch bei der Qualität keine Abstriche gemacht werden. Eine gut integrierte und anpassbare ALM-Suite liefert die Basis, sodass durch teamübergreifendes Zusammenarbeiten die gesamt Produktivität gesteigert werden kann. Immer mit dem Ziel vor Augen, das Richtige zeitgerecht in der erwartenden Qualität an die Kunden zu liefern.

Update: Googles KI-Videotool Veo 3 kommt in die Schweiz

Wie sich der CFO vom Zahlenhüter zum Zukunftsgestalter mausert

"Entscheider müssen sich überlegen, welches Cloud-Set-up sinnvoll ist"

Wie die Schweiz ihre digitalen Daten besser schützen kann

Multi-Cloud beherrschen – KI bringt Ordnung ins Chaos

Finanzwelt von morgen: KI, Sicherheit und das Rückgrat der Rechenzentren

Mehrwert statt Mehraufwand – wie Multi-Cloud Business-Innovation ermöglicht

Wie ISAE-Standards Sicherheit im Finanzsektor schaffen

ETH-Spin-off Tinamu ernennt neuen CTO
