Agile Softwareentwicklung
Was ist agile Softwareentwicklung?
Agile Softwareentwicklung ist eine Entwicklungsmethode, die den Bedarf an Flexibilität vorwegnimmt und bei der Bereitstellung des Endprodukts einen hohen Grad an Pragmatismus anwendet. Agile Softwareentwicklung erfordert in vielen Unternehmen einen Kulturwandel, da sie sich auf die saubere Lieferung einzelner Teile oder Komponenten der Software konzentriert und nicht auf die gesamte Anwendung. Zu den Vorteilen der agilen Softwareentwicklung gehört die Fähigkeit, Teams in einem sich ständig weiterentwickelnden Umfeld zu unterstützen und gleichzeitig den Fokus auf die effiziente Bereitstellung von Geschäftswert zu legen. Die dadurch geförderte Kultur der Zusammenarbeit verbessert auch die Effizienz im gesamten Unternehmen, da die Teams zusammenarbeiten und ihre spezifischen Rollen im Prozess verstehen.
Schließlich können Unternehmen, die agile Softwareentwicklung einsetzen, sicher sein, dass sie ein qualitativ hochwertiges Produkt auf den Markt bringen, da während der gesamten Entwicklung Tests durchgeführt werden. Dies bietet die Möglichkeit, bei Bedarf Änderungen vorzunehmen und Teams auf potenzielle Probleme aufmerksam zu machen.
Agile Softwareentwicklung hat das Wasserfallmodell als beliebteste Entwicklungsmethodik in den meisten Unternehmen weitgehend abgelöst, läuft jedoch selbst Gefahr, durch die wachsende Popularität von DevOps in den Hintergrund gedrängt oder verdrängt zu werden.
Die vier Werte agiler Softwareentwicklung
Im Jahr 2001 kamen 17 Softwareentwickler zusammen, um Konzepte rund um die Idee der schlanken Softwareentwicklung zu diskutieren, und schufen schließlich das Agile Manifest. Das Manifest umreißt die vier Kernwerte, und obwohl es Debatten darüber gibt, ob das Manifest seine Gültigkeit verloren hat, bleibt es weiterhin der Kern der Agile-Bewegung.
Die vier Kernwerte des Agile Manifests lauten wie folgt:
- Individuelle Interaktionen sind wichtiger als Prozesse und Werkzeuge. Menschen treiben den Entwicklungsprozess voran und reagieren auf geschäftliche Anforderungen. Sie sind der wichtigste Teil der Entwicklung und sollten höher geschätzt werden als Prozesse und Werkzeuge. Wenn Prozesse oder Werkzeuge die Entwicklung vorantreiben, ist es weniger wahrscheinlich, dass das Team auf Veränderungen reagiert und sich anpasst, und somit auch weniger wahrscheinlich, dass es die Kundenanforderungen erfüllt.
- Der Fokus liegt auf funktionierender Software statt auf einer umfassenden Dokumentation. Vor der agilen Softwareentwicklung wurde viel Zeit damit verbracht, das Produkt während der gesamten Entwicklung für die Auslieferung zu dokumentieren. Die Liste der dokumentierten Anforderungen war lang und führte zu langen Verzögerungen im Entwicklungsprozess. Agile Softwareentwicklung verzichtet zwar nicht vollständig auf Dokumentation, aber es optimiert sie so, dass die Entwickler nur die Informationen erhalten, die sie für ihre Arbeit benötigen – beispielsweise User Stories. Das Agile Manifest legt weiterhin Wert auf den Dokumentationsprozess, misst jedoch funktionierender Software einen höheren Stellenwert bei.
- Zusammenarbeit statt Vertragsverhandlungen. Agile Softwareentwicklung konzentriert sich auf die Zusammenarbeit zwischen dem Kunden und dem Projektmanager, anstatt auf Verhandlungen zwischen den beiden, um die Details der Lieferung auszuarbeiten. Die Zusammenarbeit mit dem Kunden bedeutet, dass dieser während des gesamten Entwicklungsprozesses einbezogen wird, nicht nur am Anfang und am Ende, wodurch es für die Teams einfacher wird, die Bedürfnisse ihrer Kunden zu erfüllen. Beispielsweise kann der Kunde bei agiler Softwareentwicklung in unterschiedlichen Abständen zu Produktdemos hinzugezogen werden. Der Kunde kann aber auch täglich anwesend sein und mit den Teams interagieren, an allen Besprechungen teilnehmen und sicherstellen, dass das Produkt seinen Wünschen entspricht.
- Fokus auf die Reaktion auf Veränderungen. Bei der traditionellen Softwareentwicklung wurden Veränderungen vermieden, da sie als unerwünschte Kosten angesehen wurden. Agile Softwareentwicklung beseitigt diese Vorstellung. Die kurzen Iterationen im Agile-Zyklus ermöglichen einfache Änderungen und helfen dem Team, den Prozess an seine Bedürfnisse anzupassen, anstatt umgekehrt. Insgesamt geht die agile Softwareentwicklung davon aus, dass Veränderungen immer eine Möglichkeit sind, das Projekt zu verbessern und einen Mehrwert zu schaffen.
Die zwölf Prinzipien agiler Softwareentwicklung
Das Agile Manifest hat außerdem die folgenden zwölf Kernprinzipien für den Entwicklungsprozess formuliert:
- Stellen Sie den Kunden durch frühzeitige und kontinuierliche Lieferung wertvoller Software zufrieden.
- Teilen Sie große Aufgaben in kleinere Aufgaben auf, die schnell erledigt werden können.
- Erkennen Sie, dass die beste Arbeit von selbstorganisierten Teams geleistet wird.
- Bieten Sie motivierten Mitarbeitern das Umfeld und die Unterstützung, die sie benötigen, und vertrauen Sie ihnen, dass sie ihre Arbeit erledigen.
- Schaffen Sie Prozesse, die nachhaltige Bemühungen fördern.
- Halten Sie ein konstantes Tempo für die erledigte Arbeit ein.
- Begrüßen Sie Änderungen der Anforderungen, auch wenn diese erst spät im Projekt auftreten.
- Bringen Sie das Projektteam und die Geschäftsverantwortlichen während des gesamten Projekts täglich zusammen.
- Lassen Sie das Team in regelmäßigen Abständen darüber nachdenken, wie es effektiver werden kann, und passen Sie das Verhalten entsprechend an.
- Messen Sie den Fortschritt anhand der Menge der abgeschlossenen Arbeit.
- Streben Sie kontinuierlich nach Spitzenleistungen.
- Nutzen Sie Veränderungen für einen Wettbewerbsvorteil.

Der agile Softwareentwicklungszyklus
Der agile Softwareentwicklungszyklus lässt sich in die folgenden sechs Schritte unterteilen:
- Konzept
- Entstehung
- Iteration und Konstruktion
- Release
- Produktion
- Stilllegung
Konzept
Der erste Schritt, das Konzept, umfasst die Identifizierung von Geschäftsmöglichkeiten in jedem potenziellen Projekt sowie die Schätzung des Zeit- und Arbeitsaufwands, der für die Fertigstellung des Projekts erforderlich ist. Diese Informationen können dann verwendet werden, um Projekte zu priorisieren und anhand der technischen und wirtschaftlichen Machbarkeit zu entscheiden, welche Projekte verfolgt werden sollen.
Beginn
Im zweiten Schritt, dem Beginn, werden die Teammitglieder identifiziert, die Finanzierung festgelegt und die ersten Anforderungen mit dem Kunden besprochen. Außerdem sollte ein Zeitplan erstellt werden, der die verschiedenen Verantwortlichkeiten der Teams umreißt und klar definiert, wann die Arbeiten für jeden Sprint abgeschlossen sein müssen. Ein Sprint ist ein festgelegter Zeitraum, in dem bestimmte Arbeiten abgeschlossen und zur Überprüfung bereitgestellt werden müssen.
Iteration und Konstruktion
Im dritten Schritt, der Iteration und Konstruktion, beginnen die Teams mit der Erstellung einer funktionsfähigen Software auf der Grundlage der Anforderungen und des kontinuierlichen Feedbacks. Der agile Softwareentwicklungszyklus basiert auf Iterationen – also einzelnen Entwicklungszyklen –, die aufeinander aufbauen und zum nächsten Schritt des gesamten Entwicklungsprozesses führen, bis das Projekt abgeschlossen ist. Jede Iteration dauert in der Regel zwei bis vier Wochen und hat einen festgelegten Fertigstellungstermin. Das Ziel ist es, am Ende jeder Iteration ein funktionsfähiges Produkt zu haben, das auf den Markt gebracht werden kann.
Während des gesamten Entwicklungszyklus finden mehrere Iterationen statt, die jeweils ihren eigenen Arbeitsablauf haben. Ein typischer Iterationsablauf besteht aus folgenden Schritten:
- Definition der Anforderungen auf der Grundlage des Produkt-Backlogs, des Sprint-Backlogs und des Feedbacks von Kunden und Stakeholdern.
- Entwicklung der Software auf der Grundlage der festgelegten Anforderungen.
- Durchführung von Qualitätssicherungstests, internen und externen Schulungen und Dokumentation.
- Lieferung und Integration des funktionsfähigen Produkts in die Produktion.
- Einholung von Feedback von Kunden und Stakeholdern zur Iteration, um neue Anforderungen für den nächsten Sprint zu definieren.

Release
Der vierte Schritt, das Release, umfasst abschließende Qualitätssicherungstests, die Behebung aller verbleibenden Fehler, die Fertigstellung der System- und Benutzerdokumentation und schließlich die Freigabe der endgültigen Iteration für die Produktion.
Produktion
Nach dem Release konzentriert sich der fünfte Schritt, die Produktion, auf den laufenden Support, der für die Wartung der Software erforderlich ist. Die Entwicklungsteams müssen für einen reibungslosen Betrieb der Software sorgen und den Benutzern gleichzeitig die genaue Verwendung der Software vermitteln.
Die Produktionsphase dauert so lange, bis der Support beendet ist oder das Produkt aus dem Verkehr gezogen werden soll.
Stilllegung
Der letzte Schritt, die Außerbetriebnahme oder Stilllegung, umfasst alle Aktivitäten zum Ende der Lebensdauer, wie die Benachrichtigung der Kunden und die endgültige Migration. Die Systemversion muss aus der Produktion entfernt werden. Dies geschieht in der Regel, wenn ein System durch eine neue Version ersetzt werden muss oder wenn das System veraltet, unnötig oder nicht mehr mit dem Geschäftsmodell vereinbar ist.
Während des gesamten agilen Zyklus können verschiedene Funktionen zum Produkt-Backlog hinzugefügt werden, aber der gesamte Prozess sollte darin bestehen, jeden Schritt so lange zu wiederholen, bis alle Punkte im Backlog erfüllt sind. Dadurch ist der agile Zyklus eher ein Kreislauf als ein linearer Prozess. Ein Unternehmen kann jederzeit mehrere Projekte gleichzeitig durchführen, mit Iterationen, die in verschiedenen Produktlinien protokolliert werden, und einer Vielzahl interner und externer Kunden mit unterschiedlichen Geschäftsanforderungen.
Arten von agilen Methoden
Das Ziel jeder agilen Methode ist es, Veränderungen zu akzeptieren und sich an sie anzupassen und gleichzeitig funktionierende Software so effizient wie möglich zu liefern. Die einzelnen Methoden unterscheiden sich jedoch in der Art und Weise, wie sie die Schritte der Softwareentwicklung definieren. Zu den am häufigsten verwendeten agilen Methoden gehören die folgenden:
- Scrum
- Lean Software Development
- Extreme Programming
- Crystal
- Kanban
- Dynamische Systementwicklung
- Feature-Driven Development
Scrum
Scrum ist ein leichtgewichtiges agiles Framework, mit dem Projektmanager alle Arten von iterativen und inkrementellen Projekten steuern können. In Scrum erstellt der Product Owner ein Product Backlog, mit dem er gemeinsam mit seinem Team die Systemfunktionalitäten identifizieren und priorisieren kann. Das Product Backlog ist eine Liste aller Aufgaben, die erfüllt werden müssen, um ein erfolgreiches, funktionsfähiges Softwaresystem zu liefern – dazu gehören Bugfixes, Features und nicht-funktionale Anforderungen. Sobald das Product Backlog definiert ist, können keine weiteren Funktionen hinzugefügt werden, außer durch das entsprechende Team.
Sobald das Team und der Product Owner die Prioritäten festgelegt haben, treten funktionsübergreifende Teams hinzu und vereinbaren, während jedes Sprints – oft innerhalb von 30 Tagen – funktionsfähige Software-Inkremente zu liefern. Nach jedem Sprint wird das Product Backlog neu bewertet, analysiert und priorisiert, um eine neue Reihe von lieferbaren Funktionen für den nächsten Sprint auszuwählen. Scrum hat im Laufe der Jahre an Popularität gewonnen, da es einfach ist, sich als produktiv erwiesen hat und die verschiedenen übergreifenden Praktiken der anderen agilen Methoden integrieren kann. Seine herausragenden Vorzüge – oft die Gründe, warum es anderen Optionen vorgezogen wird – sind seine hohe Transparenz und die Einbindung des Product Owners in jeden Schritt des Prozesses.
Lean Software Development
Dies ist eine weitere iterative Methode, die sich auf die Verwendung einer effektiven Wertstromanalyse konzentriert, um sicherzustellen, dass das Team dem Kunden einen Mehrwert liefert. Sie ist flexibel und entwicklungsfähig und hat keine starren Richtlinien oder Regeln. Die Lean-Methode basiert auf folgenden Grundprinzipien:
- Lernen fördern
- das Team befähigen
- Integrität fördern
- Verschwendung beseitigen
- das Ganze verstehen
- Entscheidungen so spät wie möglich treffen
- das Produkt so schnell wie möglich liefern
Die Lean-Methode basiert auf schnellem und zuverlässigem Feedback zwischen Kunden und Programmierern, um schnelle und effiziente Entwicklungsabläufe zu gewährleisten. Um dies zu erreichen, überträgt sie Entscheidungsbefugnisse an Einzelpersonen und kleine Teams, anstatt sich auf einen hierarchischen Kontrollfluss zu verlassen. Um Verschwendung zu vermeiden, fordert die Lean-Methode die Benutzer auf, nur wirklich wertvolle Funktionen für ihr System auszuwählen, diese ausgewählten Funktionen zu priorisieren und sie dann in kleinen Chargen zu liefern. Lean Software Development fördert auch das gleichzeitige Schreiben automatisierter Unit-Tests mit dem Code und konzentriert sich darauf, dass jedes Teammitglied so produktiv wie möglich ist.
Extreme Programming
Die Extreme-Programming-Methode (XP) ist ein disziplinierter Ansatz, der sich auf Geschwindigkeit und kontinuierliche Auslieferung konzentriert. Sie fördert eine stärkere Einbindung der Kunden, schnelle Feedback-Schleifen, kontinuierliche Planung und Tests sowie enge Teamarbeit. Die Software wird in kurzen Abständen geliefert – in der Regel alle ein bis drei Wochen. Ziel ist es, die Softwarequalität und Reaktionsfähigkeit bei sich ändernden Kundenanforderungen zu verbessern.
Die XP-Methode basiert auf den Werten Kommunikation, Feedback, Einfachheit und Mut. Kunden arbeiten eng mit ihrem Entwicklungsteam zusammen, um ihre gewünschten User Stories zu definieren und zu priorisieren. Es ist jedoch Aufgabe des Teams, die User Stories mit der höchsten Priorität in Form von funktionierender Software zu liefern, die bei jeder Iteration getestet wurde. Um die Produktivität zu maximieren, bietet die XP-Methode den Anwendern ein unterstützendes, leichtgewichtiges Framework, das sie anleitet und dazu beiträgt, die Veröffentlichung hochwertiger Unternehmenssoftware sicherzustellen.
Crystal
Crystal ist die leichtgewichtigste und anpassungsfähigste Methodik. Sie konzentriert sich auf die Menschen und die Interaktionen, die bei der Arbeit an einem agilen Projekt auftreten, sowie auf die Geschäftskritikalität und Priorität des zu entwickelnden Systems. Die Crystal-Methode basiert auf der Erkenntnis, dass jedes Projekt einzigartige Merkmale aufweist, die leicht angepasste Richtlinien, Praktiken und Prozesse erfordern. Daher besteht sie aus einer Sammlung agiler Prozessmodelle wie Crystal Orange, Crystal Clear und Crystal Yellow. Jedes Modell hat seine eigenen Merkmale, die von verschiedenen Faktoren wie Projektprioritäten, Teamgröße und Systemkritikalität bestimmt werden.
Wie andere agile Methoden legt auch Crystal Wert auf die häufige Bereitstellung funktionsfähiger Software unter starker Einbeziehung der Kunden, auf Anpassungsfähigkeit und den Verzicht auf Bürokratie und Ablenkungen. Zu den wichtigsten Prinzipien gehören Kommunikation, Teamarbeit und Einfachheit.
Kanban
Kanban verwendet eine visuelle Methode zum Workflow-Management, mit der Teams die Produktentwicklung aktiv steuern können, wobei der Schwerpunkt auf kontinuierlicher Auslieferung liegt, ohne den Softwareentwicklungszyklus zusätzlich zu belasten. Diese Methode ist auch bei Teams beliebt, die Lean Software Development praktizieren.
Kanban basiert auf drei Grundprinzipien: Visualisierung des Workflows, Begrenzung des Arbeitsvolumens und Verbesserung des Arbeitsflusses. Wie Scrum ist auch die Kanban-Methode darauf ausgelegt, Teams dabei zu unterstützen, effizienter zusammenzuarbeiten. Sie fördert die kontinuierliche Zusammenarbeit und versucht, den bestmöglichen Workflow zu definieren, um ein Umfeld zu schaffen, in dem aktives und kontinuierliches Lernen und Verbessern möglich ist. Aufgrund ihrer größeren Flexibilität wird sie oft gegenüber Scrum bevorzugt, und Teammitglieder schätzen den visuellen Workflow in der Regel. Andererseits kann ihre Flexibilität im Vergleich zu anderen Methoden zu Unklarheiten und Schwierigkeiten bei der Abschätzung der Fertigstellungszeiten führen.
Dynamische Systementwicklung
Die dynamische Systementwicklungsmethode (Dynamic Systems Development Method, DSDM) ist eine Antwort auf den Bedarf an einem gemeinsamen Industrie-Framework für die schnelle Bereitstellung von Software. Ursprünglich eine europäische Innovation, bietet DSDM Vorteile wie die Fokussierung auf Business Cases, die Erleichterung der termingerechten Lieferung und frühzeitige inkrementelle Ergebnisse sowie eine verbesserte Zusammenarbeit. Sie basiert auf den folgenden acht Grundprinzipien. Die Nichteinhaltung eines dieser Prinzipien birgt Risiken für den erfolgreichen Abschluss des Projekts:
- Zusammenarbeit
- termingerechte Lieferung
- nachweisbare Kontrolle
- kontinuierliche, klare Kommunikation
- ständiger Fokus auf die Geschäftsanforderungen
- Iterative Entwicklung
- inkrementelle Erstellung auf solider Grundlage
- keine Kompromisse bei der Qualität
In DSDM ist Nacharbeit in den Prozess integriert, und alle Änderungen müssen reversibel sein. Die Systemanforderungen werden mit der MoSCoW-Methode priorisiert, die die Priorität wie folgt einstuft:
- M: Muss vorhanden sein (must have).
- S: Sollte vorhanden sein (should have).
- C: Kann vorhanden sein, ist aber nicht kritisch (could have).
- W: Ist derzeit nicht vorhanden, kann aber später vorhanden sein (won’t have).
In DSDM ist es wichtig, dass nicht jede Anforderung als kritisch angesehen wird. Jede Iteration sollte weniger kritische Elemente enthalten, die entfernt werden können, damit Anforderungen mit höherer Priorität nicht beeinträchtigt werden.
Feature-driven Development
Schließlich verbindet Feature-driven Development (FDD) bewährte Verfahren der Softwareentwicklung – wie die Entwicklung nach Features, Code-Ownership und Domain Object Modeling – zu einem kohärenten, modellgesteuerten Prozess mit kurzen Iterationen. FDD beginnt mit der Definition einer Gesamtmodellform, aus der wiederum eine Feature-Liste erstellt wird. Anschließend werden zweiwöchige Iterationen durchgeführt, die sich auf die Planung, das Design und die Entwicklung der einzelnen Features konzentrieren. Wenn die Entwicklung eines Features länger als zwei Wochen dauert, sollte es in kleinere Features unterteilt werden. Der Hauptvorteil von FDD ist seine Skalierbarkeit – selbst für große Teams –, da es das Konzept „zunächst nur so viel Design wie nötig” verfolgt.
Vor- und Nachteile von agiler Softwareentwicklung
Die wichtigsten Unterschiede wurden im Laufe der Jahre zwischen Agile- und Wasserfall-Ansätzen verglichen.
In der Wasserfall-Ära der Softwareentwicklung arbeiteten Programmierer allein, ohne oder mit nur wenigen Rückmeldungen, bevor sie die Software an Tester und dann in die Produktion weitergaben. Fehler, Komplikationen und Funktionsänderungen wurden entweder nicht gut behoben oder so spät im Prozess behandelt, dass Projekte erheblich verzögert oder sogar verworfen wurden.
Die Idee hinter dem Agile-Modell, bei dem alle – einschließlich der Geschäftsseite – in den Entwicklungsprozess eingebunden und informiert blieben, stellte eine tiefgreifende Veränderung sowohl in der Unternehmenskultur als auch in der Fähigkeit dar, bessere Software schneller auf den Markt zu bringen.
Zusammenarbeit und Kommunikation wurden ebenso wichtig wie Technologie, und da das Agile Manifest offen für Interpretationen ist, wurde Agile angepasst und modifiziert, um es für Unternehmen jeder Größe und Art geeignet zu machen. Der kulturelle Wandel hin zu agiler Softwareentwicklung ebnete auch den Weg für die neueste Entwicklung in der Softwareentwicklung, DevOps.
Und wenn Kommunikation und Zusammenarbeit verbessert und die Transparenz erhöht werden, werden weniger Fehler gemacht und es können mehr Kurskorrekturen vorgenommen werden – was die Qualität erhöht, Risiken reduziert und die Einhaltung von Zeitplänen gewährleistet.
Zu den Vorteilen der agilen Methodik gehören:
- verbesserte Kommunikation und Zusammenarbeit
- Anpassungsfähigkeit
- Transparenz
- reduzierte Risiken
- verbesserte Lieferung und Kundenzufriedenheit
Andererseits sagen viele, dass der größte Nachteil von Agile darin besteht, dass es von vielen Unternehmen modifiziert – manche würden sagen verwässert – wurde. Obwohl agile Softwareentwicklung die Kommunikation zwischen Entwicklern und der Geschäftsseite verbessert, ist es weniger erfolgreich darin, Tests und den Betrieb in diesen Mix zu integrieren – eine Lücke, die dazu beigetragen haben kann, dass DevOps an Bedeutung gewonnen hat.
Ein weiterer potenzieller Kritikpunkt an agiler Softwareentwicklung ist die mangelnde Betonung der Technologie, was es schwierig machen kann, das Konzept Führungskräften zu verkaufen, die die Rolle der Kultur in der Softwareentwicklung nicht verstehen. Darüber hinaus kann die Notwendigkeit, Sprints termingerecht abzuschließen, ein stressiges Arbeitsumfeld für Softwareentwickler schaffen. Sie können gezwungen sein, Überstunden zu leisten und länger zu bleiben, um Termine einzuhalten. Darüber hinaus kann die schrittweise Lieferung zu fragmentierten Ergebnissen führen, wenn Teammitglieder, die in unterschiedlichen Zyklen arbeiten, nicht mehr synchron sind.
Schließlich können agile Methoden die Kommunikation zwischen Entwicklern und Stakeholdern durch die Betonung der aktiven Beteiligung der Letzteren belasten, da sie unterschiedliche Sprachen sprechen.
Zu den Nachteilen gehören daher:
- übermäßig angepasste Prozesse
- stressiger Zeitdruck
- Potenzial für Projektverzögerungen
- die Dokumentation ist oft nicht vollständig