Wikipedia · einfach zusammengefasst · Stand
Agile Softwareentwicklung
Agile Softwareentwicklung zeichnet sich durch selbstorganisierende Teams sowie eine iterative und inkrementelle Vorgehensweise aus. Agile Ansätze können sich …
Inhalt5 Abschnitte
Grundidee und Ziel
Agile Softwareentwicklung bezeichnet Ansätze für den Softwareentwicklungsprozess, die Transparenz und Veränderungsgeschwindigkeit erhöhen sollen. Ziel ist, entwickelte Systeme schneller einsetzen zu können sowie Risiken und Fehlentwicklungen im Entwicklungsprozess zu verringern. Dafür wird die Entwurfsphase auf ein Mindestmaß reduziert und möglichst früh ausführbare Software erstellt. Diese wird in regelmäßigen kurzen Abständen mit dem Kunden abgestimmt. Dadurch sollen Teams flexibel auf Kundenwünsche reagieren und die Kundenzufriedenheit erhöhen.
Kennzeichnend sind selbstorganisierende Teams sowie eine iterative und inkrementelle Vorgehensweise: Iterativ bedeutet, dass Arbeitsschritte wiederholt und dabei verbessert werden; inkrementell bedeutet, dass das System schrittweise um nutzbare Teile erweitert wird. Agile Ansätze können nur einzelne Teile der Entwicklung betreffen, etwa Agile Modeling, oder den gesamten Prozess, etwa Extreme Programming oder Scrum. Sie sollen den Prozess flexibler und schlanker machen als klassische plangetriebene Modelle. Klassische Ansätze wie Rational Unified Process oder V-Modell gelten oft als schwergewichtig und bürokratisch. Ein Vorwurf lautet: Je mehr nach Plan gearbeitet wird, desto mehr bekommt man das, was geplant wurde, aber nicht das, was gebraucht wird.
Entwicklung und Verbreitung
Die agile Softwareentwicklung als Methode kontinuierlicher Anpassung hat ihren Ursprung im inkrementellen Vorgehensmodell, dessen Entstehung bis 1957 zurückreicht. Evolutionäres Projektmanagement und adaptive Software-Entwicklung entstanden in den frühen 1970er Jahren und gelten als Vorläufer. Die adaptive Softwareentwicklung entwickelte sich parallel zum Design Thinking als iterative und evolutionäre Herangehensweise zur Behandlung komplexer Probleme.
Erste konkrete Ansätze entstanden Anfang der 1990er Jahre. 1999 veröffentlichte Kent Beck das erste Buch zu Extreme Programming, wodurch weitere agile Prozesse und Methoden begünstigt wurden. Zunächst war Extreme Programming die gängigste Methode; spätestens seit der ersten jährlichen Umfrage von VersionOne 2006 ist Scrum mit weitem Abstand die gängigste agile Methode.
Im Februar 2001 wurde bei einem Treffen in Utah auf Vorschlag von Mike Beedle die Bezeichnung „agil“ als Ersatz für „leichtgewichtig“ (englisch lightweight) ausgewählt. Dort wurde auch das Agile Manifest formuliert. Forrester Research ermittelte 2005, dass 14 % der Unternehmen in Nordamerika und Europa Software mit agilen Prozessen entwickelten; weitere 19 % erwogen deren Nutzung. Nach VersionOne setzten 2013 bereits 84 % aller Unternehmen agile Prozesse ein, 2016 waren es 95 %.
Werte und Prinzipien
Agile Softwareentwicklung ist nach der Agile Alliance (2018) ein Sammelbegriff für Methoden und Praktiken, die auf den Werten und Prinzipien des Manifests Agiler Softwareentwicklung beruhen. Das Agile Manifest von Februar 2001 setzt vier Schwerpunkte. Obwohl die jeweils rechten Werte wichtig sind, werden die linken höher geschätzt:
• Individuen und Interaktionen sind wichtiger als Prozesse und Werkzeuge. • Funktionierende Software ist wichtiger als umfassende Dokumentationen. • Zusammenarbeit mit dem Kunden ist wichtiger als Vertragsverhandlungen. • Reagieren auf Veränderung ist wichtiger als das Befolgen eines Plans.
Die zwölf Prinzipien konkretisieren diese Werte: Vorrang haben frühe und kontinuierliche Auslieferung wertvoller Software und damit Kundenzufriedenheit. Anforderungsänderungen sollen selbst spät willkommen sein und dem Kunden einen Wettbewerbsvorteil verschaffen. Funktionierende Software soll regelmäßig innerhalb weniger Wochen oder Monate geliefert werden, vorzugsweise in der kürzeren Zeitspanne. Fachexperten und Entwickler sollen täglich zusammenarbeiten.
Projekte sollen um motivierte Personen aufgebaut werden, die das nötige Umfeld, Unterstützung und Vertrauen erhalten. Gespräche von Angesicht zu Angesicht gelten als effizienteste und effektivste Informationsvermittlung im Team. Funktionierende Software ist das wichtigste Fortschrittsmaß. Auftraggeber, Entwickler und Benutzer sollen ein gleichmäßiges Tempo unbegrenzt halten können. Technische Exzellenz und gutes Design fördern Agilität. Essenziell ist Einfachheit, also „die Kunst, die Menge nicht getaner Arbeit zu maximieren“. Die besten Architekturen, Anforderungen und Entwürfe entstehen durch selbstorganisierte Teams. In regelmäßigen Abständen reflektiert das Team seine Wirksamkeit und passt sein Verhalten an. Der Übergang zwischen Prinzipien und Methoden ist fließend.
Frameworks und Praktiken
Bekannte agile Frameworks sind Scrum, Extreme Programming (XP), Kanban, Scrumban, DSDM, Feature Driven Development (FDD), Adaptive Software Development (ASD), Crystal und Lean Startup. Ein Framework gibt dabei einen Rahmen für die Organisation der Arbeit vor; agile Ansätze können je nach Methode oder Framework unterschiedlich umgesetzt werden.
Agile Praktiken sollen die Aufwandskurve möglichst flach halten. Änderungen oder neue Anforderungen sollen also mit wenig Aufwand berücksichtigt werden können. Dazu zählen kontinuierliche Integration, ständige Refaktorierungen, Continuous Delivery, Continuous Deployment, Paarprogrammierung, testgetriebene Entwicklung, Behavior Driven Development, Story-Cards, schnelle Codereviews, agiles Testen und Rapid Application Development.
Bewertung, Chancen und Grenzen
Eine agile Bewertung kann zeigen, inwieweit agile Werte in Prozessen und Methoden umgesetzt wurden. Der Agility Index Measurements schlägt vor, Softwareprojekte ähnlich wie bei CMMI anhand fester Faktoren zu bewerten. Der Agility Measurement Index beurteilt Softwareprojekte in fünf Dimensionen: Dauer, Risiko, Erfindungsreichheit, Aufwand und Interaktion. Außerdem gibt es agile Selbstbewertungen für Teams, darunter Nokia Test, 42-Points-Test und Karlskrona Test.
Agile Herangehensweisen sind besonders auf Veränderungen von Zielen und Umfeld während eines Projekts ausgerichtet, etwa bei beteiligten Personen, Marktanforderungen oder technischem Umfeld und Schnittstellen. Ihre meist kurzen Entwicklungszyklen erleichtern die Reaktion auf geänderte Anforderungen. Anforderungen werden häufig knapp beschrieben und erst kurz vor Umsetzung und Test genauer ausgearbeitet; nachträgliche Änderungen sind dadurch vergleichsweise leicht möglich.
Der Rational Unified Process (RUP) wird von vielen Vertretern agiler Methoden als nicht-agiler, schwergewichtiger Prozess angesehen; diese Einordnung ist jedoch umstritten. Weder V-Modell noch RUP verbieten agile Elemente wie Rapid Prototyping vor oder während der Phasen Anforderungsdefinition oder Design. Auch plangetriebene Modelle regeln Änderungen, verlangen aber vergleichsweise mehr Aufwand und Dokumentation.
Klare inhaltliche Vorgaben in einem Pflichtenheft sind bei agilem Vorgehen schwierig, weil Anforderungen per Definition erst während der Projektlaufzeit entwickelt werden. Agile Methoden sind zudem kein Allheilmittel: Interessens- oder Zielkonflikte sowie mangelnde Unterstützung durch Auftraggeber oder Sponsor können agile und traditionelle Verfahren gleichermaßen behindern. Die Studie „Status Quo (Scaled) Agile 2020“ der Hochschule Koblenz zeigte in fast allen Dimensionen und in der Gesamtbewertung eine verbesserte Leistungsfähigkeit agiler Methoden gegenüber klassischem Projektmanagement; Scrum wurde dabei als besonders erfolgreich bewertet.