Agile Softwareentwicklung: Ein umfassender Leitfaden
Einführung in die agile Softwareentwicklung
Agile Softwareentwicklung ist eine moderne und iterative Methode zur Softwareentwicklung, die in den letzten Jahren an Popularität gewonnen hat. Diese Methode zeichnet sich durch ihre Flexibilität und die Aufteilung der Entwicklung in kurze Zyklen, sogenannte Sprints, aus. Dabei stützt sich der Prozess auf vier zentrale Werte und zwölf Prinzipien, die im agilen Manifest verankert sind. Dieser Leitfaden bietet Ihnen einen detaillierten Überblick über die agile Softwareentwicklung, erklärt die zugrunde liegenden Prinzipien und Werte und gibt praxisnahe Tipps zur Umsetzung.
Was ist agile Softwareentwicklung?
Agile Softwareentwicklung bezeichnet eine Reihe von Ansätzen zur iterativen und flexiblen Anwendungsentwicklung. Diese Methoden streben ein hohes Maß an Transparenz und Flexibilität an, sodass Prozesse möglichst einfach und agil gestaltet werden können. Durch diese Vorgehensweise lassen sich Risiken im Entwicklungsprozess minimieren und Anwendungen können schneller und kontinuierlich bereitgestellt werden. Im Vergleich zu herkömmlichen Entwicklungsverfahren lassen sich so Zeit und Kosten sparen.
Die vier Werte der agilen Softwareentwicklung
Das agile Manifest, das vor über 20 Jahren veröffentlicht wurde, bildet die Grundlage der agilen Softwareentwicklung. Es basiert auf vier zentralen Werten:
Individuen und Interaktionen mehr als Prozesse und Werkzeuge: Der Fokus liegt auf der Zusammenarbeit zwischen Menschen, nicht auf starren Prozessen.
Funktionierende Software mehr als umfassende Dokumentation: Der Hauptzweck der Dokumentation ist die Unterstützung der Softwareentwicklung, nicht das Erstellen von umfangreichen Dokumenten.
Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlung: Kunden sollten als Teil des Entwicklungsteams betrachtet werden, um sicherzustellen, dass ihre Anforderungen erfüllt werden.
Reagieren auf Veränderung mehr als das Befolgen eines Plans: Flexibilität und Anpassungsfähigkeit sind entscheidend, um auf Änderungen in den Anforderungen reagieren zu können.
Die zwölf Prinzipien des agilen Manifests
Zusätzlich zu den vier Werten gibt es zwölf Prinzipien, die den agilen Entwicklungsprozess leiten:
Kundenzufriedenheit durch frühe und kontinuierliche Lieferung wertvoller Software.
Willkommen heißen von sich ändernden Anforderungen, selbst spät in der Entwicklung.
Lieferung funktionierender Software in kurzen Zeitspannen, bevorzugt alle zwei bis vier Wochen.
Tägliche Zusammenarbeit zwischen Fachexperten und Entwicklern.
Aufbau von Projekten um motivierte Individuen, denen das notwendige Umfeld und Unterstützung gegeben wird.
Effektivste und effizienteste Methode der Informationsübermittlung: Face-to-Face-Kommunikation.
Funktionierende Software ist das primäre Maß für Fortschritt.
Nachhaltige Entwicklung, bei der das Tempo auf unbestimmte Zeit beibehalten werden kann.
Kontinuierliche Aufmerksamkeit für technische Exzellenz und gutes Design.
Einfachheit – die Kunst, die Menge nicht getaner Arbeit zu maximieren.
Selbstorganisierende Teams, die die besten Architekturen, Anforderungen und Designs entwickeln.
In regelmäßigen Abständen reflektiert das Team, wie es effektiver werden kann und passt sein Verhalten entsprechend an.
Diese Prinzipien sollen die Transparenz und Flexibilität im Entwicklungsprozess erhöhen und helfen, Fehlentwicklungen zu minimieren.
Wasserfallmodell vs. Agile Softwareentwicklung
Zur Verdeutlichung der Leitsätze und Prinzipien des agilen Manifests werden die dort angesprochenen Konzepte dem traditionellen Wasserfallmodell gegenübergestellt.
Bei dieser klassischen Programmiermethode ist das Entwicklungsprojekt in aufeinanderfolgende Phasen organisiert. Die Prozesse einer Phase müssen vollständig abgeschlossen sein, bevor mit der nächsten Phase begonnen werden kann. Gleichzeitig ist es bei notwendigen Rückschritten nur möglich, zur unmittelbar vorangehenden Phase zurückzukehren.
Aufgrund des phasenhaften Ablaufs klassischer Modelle können diese nur mühsam auf veränderte Anforderungen reagieren, welche sich im fortgeschrittenen Verlauf des Entwicklungszyklus ergeben. Dies ist insofern problematisch, als gerade bei Neuentwicklungen erst im Laufe des Entwicklungsprozesses überhaupt erkennbar wird, welche Funktionen tatsächlich benötigt werden. Die dann erforderlichen Nachverhandlungen zwischen Kunden und Entwicklern und das erneute Durchlaufen der einzelnen Projektphasen bedeuten je nach Umfang des Projekts einen möglicherweise beträchtlichen Zeit- und Kostenaufwand.
Der agile Ansatz
Der agile Ansatz wurde mit dem Ziel entworfen, die Nachteile und Einschränkungen phasenbasierter Entwicklungsmodelle zu umgehen. Im Gegensatz zum Wasserfallmodell, bei dem der Entwicklungszyklus sequenziell aufeinanderfolgende Phasen durchläuft, setzt die agile Softwareentwicklung grundsätzlich auf die parallele und iterative Ausführung unterschiedlicher Prozesssequenzen. So finden bspw. Entwicklungs- und Testphasen gleichzeitig statt und werden im Laufe des Application Lifecycle Managements (ALM) kontinuierlich wiederholt. Dies ermöglicht häufige kleine Releases lauffähiger Anwendungsfeatures, welche von Anwendern dann unter realen Bedingungen getestet werden können.
Agile Frameworks
Die agile Softwareentwicklung baut auf verschiedenen Frameworks auf, welche die Grundlage für gängige Entwicklungsansätze und deren konkrete Praktiken bilden. Zu den bekanntesten agilen Frameworks zählen:
Scrum: Ein auf Sprints basiertes Projektmanagement-Modell.
Extreme Programming (XP): Ein auf Risikomanagement bedachter Ansatz, der sich von formalisierten Protokollen zugunsten der Lösung konkreter Programmieraufgaben löst.
Kanban: Eine Methode zur agilen Gestaltung eines flexiblen, dezentralen Aufgabenmanagements.
Scrumban: Eine Hybridmethode, welche die Vorteile von Scrum und Kanban miteinander vereint.
DSDM (Dynamic Systems Development Method): Eine Erweiterung des Rapid Application Development (RAD), die sich mit dem gesamten Projektlebenszyklus beschäftigt.
Feature Driven Development (FDD): Eine schlanke Methode, welche den Entwicklungsprozess anhand eines Feature-Plans organisiert.
Adaptive Software Development (ASD): Ein Ansatz, der auf Kreativität und Ergebnisqualität bedacht ist und daher so wenige Richtlinien wie möglich vorgibt.
Crystal Family: Eine “Familie” von Methoden, die je nach Anzahl der beteiligten Personen und verbundenen Risiken unterschiedliche Regelsätze vorgibt.
Lean Startup: Ein Ansatz zur Unternehmensgründung und der Umsetzung von Geschäftsideen, bei dem schlanke Prozesse und das Lernen durch kundenzentriertes Testen im Vordergrund stehen.
Scrum
Scrum stellt eine Form des Projektmanagements ohne Projektmanager dar. In einem Scrum-Modell arbeiten interdisziplinäre Teams von bis zu neun Personen gemeinsam an einem Projekt. Das Team setzt sich dabei aus einem Scrum Master, einem Product Owner und dem restlichen Scrum Team zusammen. Dieses Team unterteilt seine Aufgaben in sogenannte Sprints – dabei handelt es sich um zwei- bis vierwöchige Arbeitsphasen, die im Laufe der Projektzeit wiederholt stattfinden.
Der Scrum Master ist für die Teamkoordination und das Aufrechterhalten optimaler Arbeitsbedingungen verantwortlich. Er sorgt für die Einhaltung von Prozessen, moderiert Scrum Meetings und löst Konflikte. Der Product Owner ist der Produktverantwortliche. Er pflegt die Produktanforderungen im sogenannten Product Backlog und stellt das Bindeglied zwischen Scrum Team und Stakeholdern bzw. Managern dar. Das Scrum Team sorgt für die Erfüllung der festgelegten Anforderungen, wobei es selbstständig über die konkrete Umsetzung entscheidet und sich entsprechend selbst organisiert.
Das grundlegende Motto von Scrum ist die Retrospektive, also das Durchlaufen von Feedbackschleifen, bei denen Prozesse kontinuierlich geprüft und den ggf. veränderten Vorgaben angepasst werden. Die Aufgaben werden im sogenannten Sprint Backlog festgehalten und zwischen den einzelnen Sprints ergänzt. Beim täglichen Scrum Meeting (auch Daily Scrum genannt) wird entschieden, welche Aufgaben als nächstes zu bearbeiten sind. Nach Abschluss eines Sprints erhält der Auftraggeber die bisherigen (Teil-)Ergebnisse in Form eines Sprint Review. Anschließend werden Feedback und neue Anforderungen des Auftraggebers in das Product Backlog aufgenommen und der Prozess beginnt von vorn.
Agile Praktiken
Agile Praktiken sind konkrete Techniken und Vorgehensweisen, durch die Änderungen oder neue Anforderungen mit möglichst geringem Aufwand umgesetzt werden können, während gleichzeitig die Produktqualität verbessert wird. Beispiele agiler Praktiken und Techniken sind:
Backlog: Ein Katalog, der zur Sammlung noch zu erledigender Aufgaben dient. Je nach Ansatz und Projektphase können Entwicklerteams flexibel entscheiden, welchen Aufgaben sich als nächstes gewidmet wird.
Retrospektiven: Teammeetings, in denen Learnings aus vergangenen Erfahrungen diskutiert, Maßnahmen zur Verbesserung formuliert und Vorgehensweisen für weitere Entwicklungsphasen festgelegt werden.
User Story: Eine in einfacher Sprache verfasste Erklärung von Softwarefeatures aus Sicht des Endanwenders, um den Wert der Anwendung für einen Kunden zu verdeutlichen. Beschreibungen werden auf sogenannten Story Cards notiert und in einer Story Map angeordnet.
Continuous Integration, Continuous Delivery & Continuous Deployment: Sich ergänzende Entwicklungs- und Bereitstellungsmethoden, die im Rahmen einer DevOps bzw. DevSecOps-Strategie umgesetzt werden. Kennzeichnend für sogenannte CI/CD-Pipelines ist die kontinuierliche und inkrementelle Entwicklung und Bereitstellung von Anwendungsfeatures, unterstützt durch einen hohen Prozessautomatisierungsgrad.
Pair Programming: Ein Vier-Augen-Prinzip zur Fehlervermeidung, bei dem sich zwei Entwickler einen Arbeitsplatz teilen. Während eine
Person aktiv Code schreibt, wird dieser noch während der Eingabe vom Partner überprüft.
Agile Testing: Das Testen von Anwendungen stellt einen integralen Bestandteil der agilen Softwareentwicklung dar, demnach findet zwischen Entwicklung und Testen keine Trennung statt. Beim Agile Testing wird das (Zwischen-)Produkt noch innerhalb der Iteration oder am Ende einer Iterationsphase vom Entwicklerteam selbst getestet, bevor es an den Kunden ausgeliefert wird.
Timeboxing: Eine Projektplanungstechnik, die einen festen Zeitrahmen vorgibt und einzelnen Aufgaben ein maximales Zeitbudget zuordnet.
Vorteile der agilen Softwareentwicklung
Korrekt umgesetzte agile Entwicklungsverfahren bringen eine Reihe von Vorteilen sowohl für Entwicklerteams wie auch Kunden und Endanwender, die im Folgenden noch einmal zusammengefasst werden:
Time-To-Market: Durch kurze, iterative Entwicklungszyklen und den Verzicht auf übermäßige Planung im Voraus kommt es zu schnellen Releases von Teilanwendungen. Diese können vom Kunden unmittelbar produktiv genutzt werden, wodurch eine frühe und kontinuierliche Wertschöpfung stattfindet.
Flexibilität: Einer der bedeutsamsten Vorteile der agilen Softwareentwicklung ist ihre Flexibilität bzgl. Veränderungen von Zielen und Anforderungen. Die iterativen Entwicklungszyklen erlauben das Reagieren auf Kundenfeedback, wodurch der Fokus auf die Anwendungselemente mit dem höchsten Geschäftswert gerichtet werden kann. Gleichzeitig lassen sich dadurch nachträglich durchzuführende Veränderungen vermeiden.
Kommunikation: Agile Methoden fördern den engen Kontakt von Projektbeteiligten und sorgen für kurze Kommunikationswege zwischen Entwicklern und Kunden. Durch den offenen Austausch lassen sich Fehlentwicklungen vermeiden und es ist jederzeit ersichtlich, welche Aufgaben von Priorität sind.
Produktqualität: Agil entwickelte Software weist eine hohe Produktqualität auf, da Arbeitsabläufe und Anwendungsfeatures kontinuierlich evaluiert und verbessert werden. So entsteht Software, die genau auf Kundenbedürfnisse zugeschnitten ist.
Mitarbeiterzufriedenheit: Die agile Softwareentwicklung erlaubt einen gewissen Spielraum für Kreativität und eigenverantwortliches Arbeiten. Zusätzlich liefert der offene Austausch Entwicklern Möglichkeiten zum lebenslangen Lernen und der stetigen Erweiterung ihrer Kenntnisse. Dadurch wird das Mitarbeiterengagement gefördert und die allgemeine Zufriedenheit steigt.
Herausforderungen der agilen Softwareentwicklung
Trotz der zahlreichen Vorteile stellt die agile Softwareentwicklung keine Pauschallösung für erfolgreiche Softwareprojekte dar. Wie bei traditionellen Verfahren auch wird der Rahmen eines agilen Projekts durch allgemeine Vorgaben wie Deadlines und Budgets vorgegeben und kann durch unterschiedliche Komplikationen eingeschränkt werden. Zu etwaigen Herausforderungen der agilen Softwareentwicklung zählen z. B.:
Produktive Zusammenarbeit: Der Erfolg eines Projekts hängt nicht nur von der Methode, sondern auch von der Zusammenarbeit aller Verantwortlichen ab. Falls es zu Interessenskonflikten kommt oder Entwicklerteams unzureichend vom Auftraggeber unterstützt werden, wirkt sich dies negativ auf alle agilen Prozesse aus.
Unzureichende Planung: Die Flexibilität agiler Methoden hat auch ihre Kosten. Da auf konkrete und langfristig ausgelegte Planung oftmals verzichtet wird, ist es schwierig, genaue Abgabetermine zu ermitteln. Aus diesem Grund besteht immer ein gewisses Risiko, dass nachlässig gearbeitet wird.
Einstiegsbarrieren: Die konsequente Umsetzung agiler Praktiken bedeutet einen nicht zu missachtenden Aufwand für Entwicklerteams, die an herkömmliche Entwicklungsverfahren gewöhnt sind. Zusätzlich benötigen Mitarbeiter meist fachübergreifende Fähigkeiten, was die Durchführung entsprechender Schulungen voraussetzen kann. Die Einführung agiler Prozesse kann sich demnach als unerwartet zeitintensiv herausstellen und sollte kleinschrittig aufgebaut werden.
Vertragsgrundlage: Die Eigenheiten flexibler Projekte verlangen eine besonders klar festgelegte Vertragsgrundlage. So muss ein belastbarer vertraglicher Rahmen erarbeitet werden, der die Rechte und Pflichten aller Parteien berücksichtigt und möglichen Konflikten entgegenwirkt.
Wann ist der Einsatz agiler Methoden sinnvoll?
Sind die Entwicklerteams noch unerfahren im Umgang mit agilen Vorgehensweisen, sollten bisherige Entwicklungsverfahren nach und nach umstrukturiert werden, indem neue Methoden und Praktiken schrittweise eingeführt und immer wieder evaluiert werden.
Verfügen Mitarbeiter über ausreichend Kenntnisse zur Umsetzung eines agilen Projekts, sollte die Entscheidung von den Ansprüchen und Bedürfnissen des Auftraggebers abhängig gemacht werden.
Agiles Vorgehen ist sinnvoll, wenn:
der Auftraggeber zur aktiven Gestaltung des Projekts bereit ist.
der Auftraggeber eine noch unausgereifte Idee hat und Unterstützung zur genauen Definition von Vorgaben benötigt.
das Projekt schnell umgesetzt oder in einem sich schnell wandelnden Umfeld eingesetzt werden soll.
Agiles Vorgehen ist weniger sinnvoll, wenn:
der Auftraggeber genaue Vorgaben macht oder eine hohe Planungssicherheit fordert.
die Software in einer sich kaum verändernden Umgebung eingesetzt werden soll.
es um die Entwicklung standardisierter Anwendungen geht.
Agile Entwicklung in der Praxis
Ein Beispiel für die erfolgreiche Anwendung agiler Methoden in der Praxis ist die Entwicklung der Hybrid App „Post KartenStudio“ für die österreichische Post. Ein Team von sieben agilen Entwicklern arbeitete eng mit einem IT-Projektmanager und einem Product Owner zusammen, um die App in 2-wöchigen Sprints zu entwickeln. Die enge Zusammenarbeit und das iterative Vorgehen ermöglichten eine schnelle Anpassung an neue Anforderungen und führten zu einem qualitativ hochwertigen Produkt mit einer hervorragenden User Experience.
Tipps für die Umsetzung agiler Entwicklung
Kurze Iterationen: Planen Sie in kurzen Iterationen, um früh und häufig Feedback zu erhalten.
Fokus auf funktionsfähige Software: Stellen Sie sicher, dass die Software in jeder Iteration funktionsfähig ist.
Akzeptieren von Veränderungen: Seien Sie offen für Änderungen und neue Ideen während des gesamten Entwicklungsprozesses.
Enge Zusammenarbeit: Arbeiten Sie eng mit den Kunden und Interessengruppen zusammen, um deren Anforderungen zu erfüllen.
Selbstorganisierte Teams: Fördern Sie die Selbstorganisation und Eigenverantwortung im Team.
Kontinuierliche Verbesserung: Reflektieren Sie regelmäßig über den Entwicklungsprozess und streben Sie nach kontinuierlicher Verbesserung.
FAQs
Wie zeichnet die agile Softwareentwicklung aus?
Agile Ansätze setzen auf die parallele und iterative Ausführung von Entwicklungsprozessen. So kommt es zu kurzen Entwicklungs- und Testphasen, die das häufige Bereitstellen von Teilanwendungen ermöglichen. Gleichzeitig wird auf Feedbackschleifen und intensive Kommunikation gesetzt. Entwickler pflegen einen offenen Austausch und stehen in direktem Kontakt zum Auftraggeber, um Prozesse flexibel anzupassen und eine pragmatische Softwarelösung zu liefern.
Welche Prinzipien verfolgt die agile Softwareentwicklung?
Agile Methoden setzen auf die frühe und kontinuierliche Auslieferung funktionsfähiger Software in kurzen Zeitspannen, das Eingehen auf Veränderungen, die direkte Zusammenarbeit motivierter Individuen in selbstorganisierten Teams, technische Exzellenz und gutes Design, Einfachheit und die nachhaltige Prozessverbesserung durch Reflexion.
Was sind gängige agile Frameworks?
Scrum ist das bekannteste agile Framework: ein überschaubares und selbstorganisiertes Team, das verschiedene Rollen in sich vereint, erledigt seine Aufgaben mithilfe sogenannter Sprints. Dabei werden in sich wiederholenden Arbeitsphasen von wenigen Wochen die Anforderungen des Auftraggebers schrittweise umgesetzt. Weitere gängige Frameworks sind Extreme Programming, Kanban, Scrumban, DSDM, Feature Driven Development, Adaptive Software Development, Crystal und Lean Startup.
Welche Vorteile haben agile Vorgehensweisen?
Zu den wichtigsten Vorteilen der agilen Softwareentwicklung zählen kürzere Time-To-Market, Flexibilität bzgl. auftretender Veränderungen, offener Austausch und die Kommunikation von Feedback, erhöhte Produktqualität und gesteigerte Mitarbeiter- wie auch Kundenzufriedenheit.
Welche Herausforderungen bringen agile Methoden mit sich?
Die agile Softwareentwicklung konfrontiert Unternehmen bspw. mit folgenden Herausforderungen: mangelnde Zusammenarbeit innerhalb der Entwicklerteams oder mit dem Auftraggeber, mangelnde Planung und damit einhergehender Verlust von Produktivität, Einstiegsbarrieren für eine erfolgreiche Einführung und Umsetzung agiler Verfahren, erhöhte Anforderungen an den vertraglichen Rahmen zwischen Auftraggeber und -nehmer.