Agile Prinzipien erfordern einen hohen Grad an Automatisierung, zum Beispiel bei Entwickler- und Integrationstests. Doch es gibt noch viele andere Schritte in einem Softwareprozess, deren Automatisierung Agilität stark befördern kann. In diesem Artikel wird deshalb stärker darauf eingegangen, inwiefern sich der gesamte Entwicklungsprozess einer Automatisierung oder zumindest einer Optimierung unterziehen kann.
Agile Prinzipien – allen voran die kurzen Release-Zyklen – erfordern einen hohen Grad an Automatisierung. Viele verstehen darunter in erster Linie die Automatisierung von Entwickler- und Integrationstests. Aber natürlich gibt es neben den verschiedenen Testarten und -stufen noch viele andere Schritte in einem Softwareprozess, auf die sich der Bedarf nach Automatisierung nicht weniger bezieht. Ergebnisse solcher weitergehenden Überlegungen werden in der Literatur häufig mit dem Begriff Continuous Delivery in Verbindung gebracht. Er definiert eine Pipeline, entlang der sich verschiedene Methoden und Werkzeuge zur Automatisierung und Optimierung von Softwareprozessen einsortieren lassen. Dabei subsumiert er verwandte Begriffe wie Continuous Build, Continuous Integration und Continuous Deployment unter einem gemeinsamen Konzept zur stetigen Auslieferung von Software (siehe Abbildung).
Auf den ersten Blick mag diese Pipeline einem klassischen Softwareprozess sehr ähneln. Es gibt aber ein paar wesentliche Unterschiede: Erstens ist die Batch-Größe in agilen Projekten um ein Vielfaches geringer. Das heißt, der Entwickler bringt beispielsweise eine neue Funktion ein, die er innerhalb eines Sprints realisiert hat, nicht eine ganze Komponente oder gar eine ganze Anwendung. Zweitens mag die Reihenfolge der Tests für einen Entwickler ohne Agilitätserfahrung für Verwirrung sorgen. Schließlich finden die Akzeptanztests nicht, wie im ISTQB-Standard vorgesehen, als letzter Schritt vor Inbetriebnahme der Software statt, sondern unmittelbar nach der Integration.
Wir machen Ihre IT agil! Fordern Sie jetzt Ihr kostenloses Whitepaper über unsere Fleximity-Methode zur strukturierten Einführung von nachhaltiger Agilität an:
- Fleximity: Hier Ihr kostenloses Whitepaper anfordern.
Der Aufwand, eine solche Pipeline in einem Unternehmen zu etablieren, ist nicht unerheblich. Schließlich muss eine gesamte Software-Produktionskette so mithilfe von Werkzeugen, Testumgebungen und anderer Infrastruktur ausgestattet werden, dass jede noch so kleine Änderung am Code automatisiert kompiliert, integriert, getestet und ausgeliefert wird. Dieser Aufwand wird mit den folgenden Vorteilen gerechtfertigt:
- Time-to-Market: Wer schneller Funktionalität live bringen kann, hat einen strategischen Vorteil.
- Risikominimierung: Die einzelnen Releases sind deutlich überschaubarer und die häufigen Iterationen lassen den Prozess besonders schnell reifen. Hier gilt: „If it hurts, do it more often!“
- Schnelles Feedback: Die Entwickler erhalten nach jedem Commit ein Feedback. Dadurch erhält das Team ein stärkeres Vertrauen darin, dass die Software stets die Anforderungen erfüllt. Das „große Zittern“ vor großen Auslieferungen bleibt aus.
Im Übrigen: Wer sich die Mühe macht, eine Continuous Delivery Pipeline zumindest für eine Pilot-Technologie einzuführen, der hat schon eine Menge Vorarbeit für die Umstellung auf DevOps geleistet. Laut Fachautor und JAX-Referent Rafał Kuć ist das nämlich eine der wesentlichen Hürden für eine solche Veränderung der IT-Organisation.
Allen Lesern, die tiefer in das Thema einsteigen wollen, empfehle ich einen der Tageskurse zum Thema Agilität.