Zum Inhalt springen
L

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
  1. 1. Grundidee und Ziel
  2. 2. Entwicklung und Verbreitung
  3. 3. Werte und Prinzipien
  4. 4. Frameworks und Praktiken
  5. 5. Bewertung, Chancen und Grenzen

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.

Lernvideos zu Agile Softwareentwicklung

Weiterlesen

Latein Verben ; Perfekt- stamm · 2. Person Singular Perfekt Konjunktiv Aktiv, du habest geliebt, amāv-, -eri- ; Perfekt- stamm · 3. Person Plural Plusquamperfekt Indikativ … Vorgehensmodell zur Softwareentwicklung Die agile Softwareentwicklung hingegen beschäftigt sich mit Methoden, die den Entwickler kreativ arbeiten und Verwaltungsaspekte zurücktreten lassen. Je … Scrum Scrum (englisch für „Gedränge“) ist ein Vorgehensmodell des Projekt- und Produktmanagements, insbesondere zur agilen Softwareentwicklung. V-Modell Ähnlich dem Wasserfallmodell organisiert es den Softwareentwicklungsprozess in Phasen. Zusätzlich zu diesen Entwicklungsphasen definiert das V-Modell auch … John von Neumann Von Neumann gilt als einer der Väter der Informatik. Nach ihm wurde die Von-Neumann-Architektur (auch Von-Neumann-Rechner) benannt, ein Computer, in dem … Adaptive Software Development ASD ist eine Umsetzung des Prinzips der „kontinuierlichen Anpassung“ an immer neue Anforderungen und soll das konventionelle Wasserfallmodell ersetzten. Wertvorstellung Enthält eine Werteordnung einen alleinigen Anspruch auf Wahrheit, ist sie das Kennzeichen einer Ideologie. Individuelle Werte und Einstellungen untersucht die … Kontinuierliche Integration Das Ziel der kontinuierlichen Integration ist die Steigerung der Softwarequalität. Typische Aktionen sind das Übersetzen und Linken der Anwendungsteile, … Testgetriebene Entwicklung Das Refactoring, also das Aufräumen im Code, führt zu weniger Fehlern; weil man dabei in kleinen Schritten vorgeht und stets entlang bestandener Tests … Rapid Application Development Es verfolgt den Zweck, Softwareentwicklung im Vergleich zu klassischen Vorgehensmodellen wie dem Wasserfallmodell flexibler zu gestalten und sich an schnell …