Was ist agile Entwicklung?
Teil 1
In der übrigen Welt der Softwareentwicklung bedient man sich inzwischen neuer Methoden wie der agilen Entwicklung, die es ermöglicht, Softwareänderungen und Updates für kritische Systeme schneller und effizienter zu entwickeln und bereitzustellen.
In dieser zweiteiligen Blogserie erläutern wir, was agile Entwicklung ist, wie sie dabei hilft, Software schneller auszuliefern und wie sich das Konzept in der SAP-Welt implementieren lässt.
Beginnen wir mit den Grundlagen.
Was ist agile Entwicklung?
Dabei handelt es sich um einen Ansatz der Softwareentwicklung, bei dem man statt auf lange Entwicklungszyklen auf kleine, häufige Produkt-Releases setzt. Große, komplexe Projekte, deren Abwicklung Monate dauern kann, werden dabei in kleinere Arbeitseinheiten aufgesplittet, die sich viel schneller ausliefern lassen.
Diese Einheiten haben die Form von User Storys, in denen detailliert aufgeführt ist, was ein Benutzer mit dem betreffenden System erreichen will. User Storys müssen aussagekräftig sein und klar formulierte Ergebnisse enthalten, damit die Entwickler:innen wissen, wer der Benutzer ist, was er erreichen will und warum das für ihn wichtig ist.
Eine User Story könnte beispielsweise so aussehen: „Als Manager möchte ich wissen, wie viel Resturlaub meine Mitarbeiter:innen dieses Jahr insgesamt noch haben, damit ich unsere Kapazität für die Annahme neuer Projekte planen kann.“
Das Konzept der agilen Entwicklung reicht zurück bis in die 1990er. Im Jahr 2001 gab eine Gruppe von Entwicklern das „Manifesto for Agile Software Development“ – geläufiger unter dem Namen „Agile Manifesto“ – heraus.
In diesem Manifest werden Entwicklungsteams dazu angehalten, sich auf drei Hauptprinzipien zu konzentrieren:
- Reagieren auf Veränderungen ist wichtiger als die Verfolgung eines Plans
- Funktionierende Software ist wichtiger als umfangreiche Dokumentation
- Zusammenarbeit ist wichtiger als Vertragsverhandlungen und Prozesse
Im Kern soll die agile Entwicklung die Herangehensweise eines Unternehmens an die Softwareentwicklung optimieren, damit IT-Teams wichtige Funktionen und Updates in einem Tempo entwickeln können, das den modernen Geschäftsanforderungen (Innovationsdruck) der heutigen Zeit Rechnung trägt.
Es gibt verschiedene Arten, agile Workflows zu organisieren; zwei davon sind weit verbreitet:
Kanban eignet sich gut, wenn Arbeit leicht vorhersagbar ist, wie z. B. bei Support-Tickets und Bug Fixes. Dabei dient ein Kanban-Board der Visualisierung der laufenden Arbeiten: Jede Arbeitseinheit wird von einer Karte am Board repräsentiert. Spalten veranschaulichen die Schritte im Prozess, und die Karten werden gemäß dem Fortschritt der Arbeit von links nach rechts durch die Spalten bewegt. Wenn Sie schon mit Trello® gearbeitet haben, werden Sie dieses System kennen. Kanban stammt ursprünglich aus der Lean-Manufacturing-Philosophie und hilft, laufende Arbeiten auf überschaubaren Niveaus zu halten. Schlüssel für Kanban ist das Konzept der limitierten WIP (Work in Progress). Die gesamte WIP darf nie eine vereinbarte Kapazität übersteigen – wenn Sie am Limit sind, muss etwas abgeschlossen werden, bevor eine neue Aufgabe begonnen werden kann.
Scrum ist das Konzept, dass bei SAP-Teams am weitesten verbreitet ist. Es ist geprägt von kurzen Entwicklungszyklen mit fester Länge von zwei bis vier Wochen – den so genannten Sprints. Während eines Sprint arbeitet das Team eine vereinbarte Anzahl von User Storys ab. Durch das Arbeiten in kurzen Zyklen können schneller wertschöpfende Funktionen bereitgestellt werden. Das Team erhält früher Feedback und kann iterativ die Qualität der Software optimieren. Die kontinuierliche Verbesserung von Produkt- und Entwicklungsprozess sind entscheidende Aspekte der Scrum-Philosophie.
Warum ist das agile Konzept so wichtig?
Die agile Entwicklung hat viele Vorteile gegenüber dem traditionellen Wasserfall-Entwicklungsmodell, das in einer SAP-Umgebung in der Regel zum Einsatz kommt.
Beim Wasserfall-Modell wird die Arbeit vor Entwicklungsbeginn von Anfang bis Ende durchgeplant. Das gesamte Design erfolgt vor dem Start des eigentlichen Programmierens und erst, wenn das Programmieren abgeschlossen ist, beginnt das Testen. Solange alles vorhersagbar ist, funktioniert das gut. Leider ist das nur selten der Fall. Wenn in der Programmierphase (oder sogar erst in der Testphase) Probleme mit dem Design auftreten, kann viel Nacharbeit nötig sein, um das Projekt zurück in die Spur zu bringen.
Wasserfall-Projekte können sich über Monate oder sogar Jahre hinziehen. Das macht es äußerst schwierig, schnell auf sich ändernde Geschäftserfordernisse zu reagieren. Zu dem Zeitpunkt, zu dem die Software dann bereitgestellt wird, haben sich wahrscheinlich schon wieder die Benutzeranforderungen geändert. Wenn Unternehmen gezwungenermaßen monatelang auf ein Minor Update warten müssen, leidet ihre Wettbewerbsfähigkeit.
Ein agiler Ansatz bei der Softwareentwicklung hilft:
- Schneller Mehrwert zu liefern: Die wichtigsten geforderten Funktionen können viel schnell schneller geliefert werden. Beim Wasserfall-Modell wird nichts bereitgestellt, bevor nicht alles entwickelt und getestet wurde.
- Unsicherheiten zu minimieren: Mit dem agilen Ansatz lässt sich auf Änderungen in den Anforderungen reagieren – das ist sogar ausdrücklich so vorgesehen. Er trägt der Tatsache Rechnung, dass die Entwicklung von Software ein iterativer Prozess ist und es nicht immer möglich ist, von Beginn an alle Anforderungen zu formulieren.
- Folgen und Risiken zu reduzieren: Bei kleineren Änderungen ist die Gefahr kleiner, etwas kaputt zu machen. Es ist einfacher, Probleme zu antizipieren, wenn der Umfang kleiner ist, und auch das Testen ist leichter. Die Folgen für die Benutzer sind geringer, wenn kleine Updates in kürzeren Abständen geliefert werden – verglichen mit selteneren, dafür aber umfangreichen Änderungen.
- Prioritäten zu setzen und relevant zu bleiben: Agile Teams entscheiden, welche User Storys sie in jedem Sprint entwickeln, und können diese auf der Basis der aktuellen geschäftlichen Prioritäten auswählen.
- Im Budget zu bleiben: Die Nachverfolgung der Kosten ist bei der agilen Entwicklung einfacher, weil in regelmäßigen Abständen fertige Funktionen geliefert werden. Bei einem langen Entwicklungsprojekt, bei dem vor dem Abschluss nichts live geht, ist dies viel schwieriger.
- Die Transparenz zu erhöhen: Häufiger Funktionen auszuliefern und mit dem Kunden zusammenzuarbeiten, erhöht die Transparenz und das Verständnis innerhalb des Unternehmens.
Aber was ist mit der Einführung von agilen Methoden in komplexen Umgebungen wie SAP? SAP-Landschaften haben zwar einzigartige Entwicklungsanforderungen, dennoch lassen sich agile Methoden verwenden. In unserem nächsten Blog werden wir uns mit diesem Thema näher befassen.