Agil und DevOps stehen für eine maximale Flexibilisierung der Projektarbeit und dem Zusammenwachsen von Development und Operations. Die agile Vorgehensweise mit dem Ziel einer geplanten Flexibilität des Entwicklungszyklus und DevOps mit der Zusammenarbeit von Development und Operations sind umfassende Bausteine einer Transformation der Informationstechnologie im Allgemeinen und der Softwareentwicklung als wichtige Teildisziplin im Speziellen.

Zunächst beginnen wir mit einem kompakten Überblick über die agilen Methoden, danach skizzieren wir den Grundgedanken der DevOps-Bewegung. Anschließend werden wir die Schnittmengen beider Konzepte herausarbeiten und erkennen, an welcher Stelle die Chancen, aber auch mögliche Stolpersteine der Zusammenarbeit liegen.

Agile Methoden bringen Flexibilität

Bekanntermaßen ist die strikte Abarbeitung eines Entwicklungsvorhabens streng gestaffelt nach Phasen eher schwierig. Das Hauptproblem besteht darin, dass eine vollständige und korrekte Erhebung der Anforderungen zu Projektbeginn nahezu unmöglich ist. Eine Tatsache ist, dass auch die Kunden und die späteren Nutzer der Software oft nur eine ungefähre Vorstellung davon haben, in welcher Form eine Software das bestehende Problem lösen soll. Darüber hinaus ist es schwierig, diese ungefähren Anforderungen den Entwicklern der Software zu vermitteln. Ein weiteres Problem ergibt sich aus der Dynamik der Geschäftsmodelle. Anforderungen und Rahmenbedingungen, welche zum Zeitpunkt der erstmaligen Analyse galten, sind nicht über die gesamte Projektlaufzeit konstant. Dabei ist zu beobachten, dass das Ausmaß an Dynamik im Laufe der Zeit zunimmt.

Es gibt unterschiedliche Ansätze agiler Entwicklungsmethoden. Scrum ist die häufigste angewendete agile Methode, welche als Rahmenwerk für agile Prozesse bekannt ist. Der Begriff „Scrum“ stammt aus der Sportart Rugby. Die Idee ist, dass bei umfangreichen Projekten der Erfolg nur durch ein regelmäßiges Feedback zu erreichen ist. Dadurch werden die Abweichungen vom Soll schnell erkannt und notwendige Anpassungen ermöglicht. Die gesamte Entwicklung wird in Iterationen mit einer Dauer zwischen einer und vier Wochen strukturiert und durchgeführt.

Nach diesem kurzen Abriss zu den agilen Methoden der Softwareentwicklung kommen wir nun zum Grundgedanken von DevOps, als zweiter Baustein unserer Symbiose moderner Projektsteuerung und Durchführung.

Im Duo schlagkräftig

Beide Konzepte sind bereits für sich betrachtet mächtig und es bedarf großer Anstrengungen diese in eine etablierte Arbeits- und Projektkultur zu integrieren. Eine agile Vorgehensweise, zum Beispiel Scrum und der Ansatz von DevOps können sich ergänzen. Wie könnte denn nun ein solches kombiniertes Vorgehen aussehen? Ausgangspunkt unserer Überlegungen ist Abbildung 1.

Lücken im Software Lifecycle
Abbildung 1: „Lücken im Software Lifecycle [2]

Wir haben es mit den beiden Bereichen Business und Informationstechnik (IT) zu tun. Business steht stellvertretend für den Anwender, den Kunden und letztendlich auch den Auftraggeber. Dieser möchte mit der Software arbeiten und erhofft sich durch den Einsatz von Software Vorteile bei der Erledigung seines Geschäftes. Auf der anderen Seite steht IT. IT wird zur Lösung von Problemen eingesetzt. Als Business Innovator wird IT immer wichtiger. Für den Kunden spielt jedoch Struktur und Organisation der IT keine Rolle. Das Ziel ist die Bereitstellung von Software. Zwischen Business und IT klafft allzu oft eine Lücke (Gap). Diese Lücke resultiert aus mehreren Aspekten. Dem Anwender fällt es schwer seine Anforderungen genau auszudrücken und die IT kann aus dieser unspezifischen Formulierung der Anforderungen oft nur ein ungenügendes Bild von der zu entwickelnden Software zeichnen.
Die gemeinsame Aufgabe der agilen Arbeitsweise und des DevOps-Ansatzes ist es diese Lücken zu schließen. Wir nähern uns der Idee, wenn wir uns die Zuständigkeiten der Beteiligten genauer ansehen (Abbildung 2).

Zuständigkeiten der Beteiligten im Software Lifecycle
Abbildung 2: Zuständigkeiten der Beteiligten im Software Lifecycle [2]

Neue Ansätze zur Gestaltung des Entwicklungs- und Bereitstellungsprozesses haben das Ziel, die Aufgaben zusammenzufassen, künstliche Schnittstellen zu beseitigen und für einen viel schnelleren Durchlauf des Softwarelebenszyklus zu sorgen. Die Rede ist von Collaborative Development, Continuous Testing, Continuous Release und Continuous Monitoring and Optimization. Ihre Bedeutung wird sofort klar, wenn Sie die Weiterentwicklung der Infografik betrachten, wie diese in Abbildung 3 dargestellt ist.

Zusammenfassung von Prozessen zu einem kontinuierlichen Zyklus
Abbildung 3: Zusammenfassung von Prozessen zu einem kontinuierlichen Zyklus [2].

Mittels agiler Softwareentwicklung und DevOps wird nun versucht die oben beschrieben „Lücken“ zu schließen. Bereits aus den Ausführungen zu den agilen Ansätzen hat sich ergeben, dass die Problemlage zwischen Business und IT auf der ungenauen Formulierung der Anforderungen beruht. Das Requirements Engineering stößt an seine Grenzen, wenn es versucht die Anforderungen an das zu entwickelnde System im Vorhinein „generalstabsmäßig“ zu planen und auch umzusetzen. Wie man es besser machen kann, zeigen die agilen Methoden, wie zum Beispiel Scrum.
DevOps schließt die Lücke innerhalb der IT und hat sehr viel mit Organisation und Change-Management zu tun. Werden beide Ansätze umfassend, korrekt und vor allem durchgängig angewendet, dann entsteht eine neue Form des Software Lifecycle (Abbildung 4).

Abbildung 3: Agile Methoden und DevOps im Zusammenhang

Von der Idee, über die Erhebung der Anforderungen, dem Development bis hin zur Bereitstellung arbeiten alle Beteiligten zusammen. Lücken und Systembrüche werden weitgehend vermieden. Der gesamte Vorgang wird agil gestaltet, so dass Änderungen in den Anforderungen und Rahmenbedingungen kein Dilemma mehr darstellen und die Verantwortung der Beteiligten auf Seiten der IT sind stets umfassend und nicht an Silos (Development, Operations) gebunden. Vielmehr hat man es mit einem multidisziplinären Team zu tun, dessen Ziel eine zügige und qualitativ hochwertige Software ist.

Fazit

Die agile Arbeitsweise und DevOps passen wunderbar zusammen. DevOps bietet den Rahmen für die Zusammenarbeit innerhalb der IT. Es wird nicht mehr danach gefragt, wer zuständig ist, sondern die IT liefert die Innovation für den künftigen Geschäftserfolg. Mit agilen Arbeiten wird dem Umstand Rechnung getragen, dass sich Anforderungen und Bedingungen jederzeit ändern können.

[1] Bächle, M.; Kolb, A.: Einführung in die Wirtschaftsinformatik, 3. Auflage, Oldenburg Verlag, 2012

[2] Eeles, P: Architecture, Agile and DevOps, https://www.researchgate.net/publication/330202499_Architecture_Agile_and_DevOps

[3] https://dzone.com/articles/is-devops-agile