Was ist agile Entwicklung?Nächster Artikel

Agil heisst beweglich sein. Agile Methoden helfen dabei, angesichts komplexer Entwicklungsprojekte nicht zu erstarren. Sie sind schlank, verlangen aber viel von den Akteuren – diese müssen alte Gewohnheiten und Hierarchiestrukturen überdenken.

Die Softwareentwicklung unterliegt heute anderen Rahmenbedingungen als noch vor wenigen Jahren. Die Kadenz technischer Quantensprünge ist überwältigend. Noch vor drei Jahren war kaum abzusehen, dass Google bald vom sozialen Netzwerk Facebook bedrängt werden würde, hatten Googles revolutionäre Ideen doch gerade erst etablierte Grössen wie Microsoft in Bedrängnis gebracht. Ein weiterer Faktor ist der Boom mobiler Endgeräte, die in vielen Belangen Laptop-Computern technologisch überlegen sind. Dies sind nur zwei Beispiele von vielen, die auch die Softwareentwicklung massiv beeinflussen. Die Anforderungen steigen: Vor allem im Bereich der Websoftware werden Anwendungen immer komplexer und zunehmend unternehmenskritisch.

Klassische Softwareprojekte werden in drei Blöcke unterteilt: In die Spezifikationsphase, gefolgt von der Entwicklungs- und der Testphase. Auf der Zeitschiene werden diese Blöcke oft kaskadierend visualisiert, daher wird dieser Projekttyp auch als Wasserfallprojekt bezeichnet.

Die Spezifikationsphase endet mit der Ausarbeitung eines detaillierten Pflichtenhefts. Dieses gilt für die gesamte Projektdauer. Ob das Projekt auch tatsächlich den gewünschten Geschäftswert generiert, kann oft erst in der Testphase gesagt werden. Dann gibt es aber keinen Spielraum mehr für Änderungen – Frustration ist vorprogrammiert.

Agile Methoden basieren auf zwei Grundannahmen: Die Welt verändert sich und wir akzeptieren, dass wir nichts mit Sicherheit wissen.

Wenn wir diese Grundannahmen akzeptieren, müssen wir auch Bestehendes in Frage stellen: So sind umfangreiche Softwarespezifikationen oft gut gemeint, behindern aber Innovation. Hingegen fördert man durch den frühzeitigen Einbezug aller Interessensgruppen, insbesondere der Anwender, den offenen Austausch und schafft damit die Grundlage für Neues.

Der Trend geht weg von Top-down-Managemententscheidungen hin zu echten, kollaborativen Lösungen. Der übermächtige Projektleiter, der alles wissen muss, weicht dem Wissen des Teams.

Komplexe Anforderungen werden in überschaubare Stapel unterteilt. Die Umsetzung erfolgt iterativ: In kurzen Zeiteinheiten werden die einzelnen Stapel abgearbeitet. Am Ende jeder Iteration steht ein auslieferbarer Produktteil. Wo das Wissen fehlt, wird Wissen geschaffen. Produktteile werden so schnell wie möglich Anwendern zur Verfügung gestellt. Auf diese Weise kann das Team lernen: Es erhält Zugriff auf wertvolles Userfeedback, das in die nächsten Versionen einbezogen wird.

Funktionen können dem Markt schneller zur Verfügung gestellt werden, was in einem besseren Cash-Flow resultiert. Auf die permanenten Veränderungen in modernen Softwareprojekten kann elegant reagiert werden. Dies führt zu einer Minderung des Projektrisikos.

Zuletzt wird auch die Softwarearchitektur positiv beeinflusst. Agile Methoden zielen auf den Kern der Sache: Sie wollen so schnell wie möglich Geschäftswert liefern. Die Entwickler schaffen daher tendenziell flexiblere Architekturen, die schnell verändert und erweitert werden können.

Eine der bekanntesten agilen Methoden ist Scrum. Einige wenige Rollen, Artefakte, Meetings und Regeln umfasst das schlanke Interaktionsframework.

Es gibt drei Rollen: Während der Product Owner die Business-Sicht einnimmt, sorgt der Scrum Master für die Steuerung des agilen Prozesses und schafft Hindernisse aus dem Weg. Beide gehören sie zum Scrum-Team, der dritten Rolle. Das Team übernimmt mit seinem Commitment die Gesamtverantwortung für die Umsetzung der Anforderungen. Das wichtigste Artefakt ist das Product Backlog. Es umfasst eine priorisierte Liste der Anforderungen. Diese werden in sogenannten User Stories verfasst – also aus Sicht der relevanten Anwendergruppen. Das Team weiss so zu jedem Zeitpunkt, für wen eine bestimmte Funktion entwickelt wird. Das Product Backlog wird in übersichtliche Stapel unterteilt, die das Team in kurzen Zeitzyklen – den sogenannten Sprints – umsetzt.

Zu Beginn jedes Sprints – im Sprint Planning – priorisiert das Team gemeinsam mit dem Product Owner einen übersichtlichen Stapel– den sogenannten Sprint Backlog. In einem demokratischen Prozess erfolgt eine Einigung auf ein Sprintziel. Wie das Ziel erreicht werden soll, liegt ganz alleine im Ermessen des Entwicklerteams, die Planung dazu findet ohne den Product Owner statt.

Im Daily Scrum, einem Meeting, das zumeist im Stehen abgehalten wird, informiert sich das Team gegenseitig in 15 Minuten über den Stand der Arbeiten. So wird das neu gewonnene Wissen des Vortags über das ganze Team verteilt. Am Ende jedes Sprints – im Review Meeting – teilen die Teammitglieder die Arbeitsergebnisse mit dem Product Owner und projektnahen Personen. Das Ziel am Ende jedes Sprints ist es, potenziell auslieferbare Software präsentieren zu können.

Am Ende des Ablaufs steht die Retrospektive. Dort werden funktionierende Verhaltensweisen gefestigt und Verbesserungspotenzial identifiziert. Dieser Prozess wiederholt sich so oft, bis die geschäftskritischen Funktionen des Produkts umgesetzt sind.

Die Popularität agiler Methoden führt dazu, dass sich mehr Unternehmen für die Umsetzung agiler Projekte entscheiden, fundamentale Prinzipien und Ansätze agiler Methoden aber nicht immer respektiert werden. Nicht zuletzt deshalb werden Methoden mit dem Attribut «agil» heute kritischer begutachtet.

Agile Methoden sind nicht das Wundermittel für die Lösung aller Probleme in Softwareprojekten. Es sind die beteiligten Akteure, die über Erfolg oder Misserfolg eines Projekts entscheiden – unabhängig von der gewählten Projektmethodik. Demnach ist es falsch, von nicht korrekt umgesetzten agilen Projekten auf das Scheitern der Methode im Allgemeinen zu schliessen.

Gefordert wird eine grosse persönliche Agilität im Denken und ein gleichberechtigter Umgang aller Teammitglieder: Das Scrum-Team als Ganzes hat die volle Verantwortung für das Projekt. Echte Kollaboration ist nicht nur innerhalb des Scrum-Teams der Schlüssel zum Erfolg, sondern auch zwischen Anbieter und Kunde.

Die Verantwortung des Einzelnen wird ersetzt durch die Verantwortung des Kollektivs. Nur wenn dieser Grundsatz respektiert wird, entfaltet sich der Nutzen von agiler Softwareentwicklung voll und ganz.

Zusatzinformationen