Suche
Close this search box.

Was ist agile Softwareentwicklung?

Lesen Sie in diesem Artikel:

Definition der agilen Softwareentwicklung

Agile Softwareentwicklung bzw. agiles Development ist ein Überbegriff für Methoden und Praktiken mit dem Ziel eines flexibleren und schlankeren Entwicklungsprozesses.

Agile Herangehensweisen sind vor allem dann hilfreich, wenn sich Ziele und Umfeld (beteiligte Personen, Marktanforderungen, technisches Umfeld/Schnittstellen) im Laufe eines langlaufenden Projektes ändern. Agile Softwareentwicklung ist dadurch vor allem in Umgebungen zu finden, die sich durch Dynamik auszeichnen. Sie kann gut auf geänderte Anforderungen reagieren, da die Entwicklungszyklen üblicherweise kurz sind. Auch Anforderungen werden häufig nur knapp beschrieben und erst direkt vor Beginn der Umsetzung ausformuliert.

Charakterisierung der agilen Softwareentwicklung

Agile Softwareentwicklung zeichnet sich durch iterative und inkrementelle Projektabläufe aus: Die Entwurfsphase reduziert sich ist auf ein Minimum. Der Entwicklungsprozess produziert so früh wie möglich ausführbarer Software. Diese wird in regelmäßig mit dem Kunden abgestimmt. So soll es möglich sein, flexibel auf Kundenwünsche einzugehen.

Die generellen Eigenschaften agiler Methoden – unabhängig des spezifischen Frameworks – umfassen:

  • Iterationen: kreisförmiger Prozess mit analytischen, kreativen und pragmatischen Komponenten
  • Fortschritt: systematische Weiterentwicklungdes Softwareproduktes, ggf. auch messbar an KPI
  • Empirie und Reflexion
  • Rhythmisierung und Ritualisierung im Team
  • Agiles Mindset auf Basis des Manifests der agilen Softwareentwicklung

Hintergrund der agilen Softwareentwicklung

Erste Ansätze zu agiler Softwareentwicklung entstanden zu Beginn der 1990er Jahre, basierend auf dem inkrementelle Vorgehensmodell (seit ca.1957) sowie dem evolutionären Projektmanagement und die adaptive Software-Entwicklung der 1970er Jahr.

Mit seinem Buch „Extreme Programming“ gilt Kent Beck als einer der bekanntesten frühen Verfechter für agile Prozesse und Methoden.

Der derzeit bekannteste und gängigste Vertreter agiler Softwareentwicklung ist mit weitem Abstand Scrum .

Manifest der agilen Softwareentwicklung: Werte, Leitsätze und Prinzipen des agilen Developments

Bereits 2001 wurden vier Leitsätze als Agiles Manifest formuliert:

  • 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

 

Diese wiederum leiten zwölf Prinzipien der agilen Entwicklung ab:

  • Unsere höchste Priorität ist es, den Kunden durch frühe und kontinuierliche Auslieferung wertvoller Software zufrieden zu stellen.
  • Anforderungsänderungen sind selbst spät in der Entwicklung willkommen. Agile Prozesse nutzen Veränderungen zum Wettbewerbsvorteil des Kunden.
  • Liefere funktionierende Software regelmäßig innerhalb weniger Wochen oder Monate und bevorzuge dabei die kürzere Zeitspanne.
  • Fachexperten und Entwickler müssen während des Projektes täglich zusammenarbeiten.
  • Baue Projekte rund um motivierte Individuen. Gib ihnen das Umfeld und die Unterstützung, die sie benötigen und vertraue darauf, dass sie die Aufgabe erledigen.
  • Die effizienteste und effektivste Methode, Informationen an und innerhalb eines Entwicklungsteams zu übermitteln, ist im Gespräch von Angesicht zu Angesicht.
  • Funktionierende Software ist das wichtigste Fortschrittsmaß.
  • Agile Prozesse fördern nachhaltige Entwicklung. Die Auftraggeber, Entwickler und Benutzer sollten ein gleichmäßiges Tempo auf unbegrenzte Zeit halten können.
  • Ständiges Augenmerk auf technische Exzellenz und gutes Design fördert Agilität.
  • Einfachheit — die Kunst, die Menge nicht getaner Arbeit zu maximieren — ist essenziell.
  • Die besten Architekturen, Anforderungen und Entwürfe entstehen durch selbstorganisierte Teams.
  • In regelmäßigen Abständen reflektiert das Team, wie es effektiver werden kann und passt sein Verhalten entsprechend an.

Phasen der agilen Softwareentwicklung

Der Ablauf einer agilen Softwareentwicklung unterscheidet sich in Teilen je nach Framework. Das Beispiel des aktuellen Branchenprimus Scrum zeigt einen typischen generellen Ablauf:

Das Entwicklerteam überträgt eine begrenzte Auswahl an Anforderungen, zu denen sich das Entwicklerteam committet, aus dem Produkt-Backlog in das Sprint-Backlog. Mit dem Sprint-Backlog geht es in den nächsten Sprint, einen zeitlich festgelegten Entwicklungs- und Releasezyklus. Innerhalb eines Sprints liegt der Fokus ausschließlich auf den ausgewählten Anforderungen des Sprint-Backlog, Ergebnis eines Sprints ist ein generell nutzbares Softwareprodukt.

Der Ablauf innerhalb eines Sprints umfasst die folgenden Phasen:

  • Plan: Das Team bespricht den Sprint, die Arbeitspakete und Verantwortlichkeiten sowie etwaige Abhängigkeiten.
  • Design – Develop – Test – Deploy: Analog bekannter Methoden der klassischen Softwareentwicklung
  • Review: Präsentation des Sprint-Ergebnisses als Softwareprodukt und Besprechung des zu Ende gegangenen Sprints. Dieser letzte Teil ist die Retrospektive und je nach Darstellung eine eigene Phase innerhalb eines Sprints
  • Launch: Das Sprint-Ergebnis, das potenziell nutzbare Softwareprodukt, wird übergeben und das Team nimmt sich die nächsten Anforderungen des Produkt-Backlog vor
Agiles Projektmanagement mit Scrum

Abbildung 1: Agile Entwicklung mit Scrum

Quelle: https://blog.pixelsafari.net/agiles-projektmanagement-scrum/

Methoden der agilen Softwareentwicklung

Im Umfeld der Agilen Softwareentwicklung haben sich über die Zeit diverse Frameworks etabliert. Das Best Quality Institute (BQI) hat diese in einer Studie miteinander verglichen und in den Dimensionen Projekt-Management (PM), Qualitäts-Management (QM) Requirements-Management (RM), Systemdesign/technische Konzeption (SD), Implementierung (IMP), Test (T), Integration/Einführung (INT), Wartung (W) und Betrieb (B) bewertet.

Scrum

Scrum

Scrum – das derzeit wohl beliebteste Framework des agilen Developments, inhaltlich im vorherigen Kapitel beispielhaft beschrieben.
Die Entwicklung wird in Iterationen organisiert, den „Sprints“. Eine gleichmäßige zeitliche Sprintlänge lässt das Team verlässlich planen und sorgt für schnellere und regelmäßige Softwareupdates. Sprints dauern üblicherweise vier Wochen.

Extreme Programming

Extreme Programming (XP) – der Urvater.

Ähnlich wie Scrum zahlreiche Entwurfs- und Entwicklungsphasen, aber mit mehr Fokus auf ständige Tests unterzogen, um möglichst frühzeitig Fehler zu entdecken.

Adaptive Software Development

Adaptive Software Development (ASD)

ASD plant in der Phase namens „Speculate“ den gesamten Projektablauf und hat einen spezielle Fokus auf das Qualitätsmanagement

Crystal

Crystal

Agile Methodensammlung mit dem maximalen Grad an Freiheit, vergleichsweise wenig Dokumentation, aber großem Anteil an Kommunikation innerhalb und zwischen Projekten.

Dynamic System Development Method

Dynamic System Development Method DSDM

DSDM beschränkt sich nicht nur die agile Entwicklungsmethode, sondern umfasst ein vollständiges Organisationsmodell. Es handelt sich um eine sehr ausgereifte, aber eher selten anzutreffende Methode

Feature Driven Development

Feature Driven Development (FDD)

FDD basiert auf einem Rollen- und Prozessmodell, das sich gut mit klassischen Projektstrukturen integriert. Mit der Umsetzung des FDD tun sich viele Unternehmen leichter als mit XP oder Scrum.

Im Rahmen all dieser Frameworks kommen häufig ähnliche Praktiken für die Berücksichtigung kurzfristiger Veränderungen zum Einsatz, z.B.

  • Agiles Testen
  • Behavior Driven Development
  • Continuous Delivery
  • Continuous Deployment
  • Kontinuierliche Integration
  • Paarprogrammierung
  • Rapid Application Development
  • schnelle Codereviews
  • ständige Refaktorierungen
  • Story-Cards
  • Testgetriebene Entwicklung

Vor- und Nachteile der agilen Softwareentwicklung

Die Vorteile agiler Entwicklungsprojekte liegen auf der Hand:

  • Transparenz und Veränderungsgeschwindigkeit erhöhen sich und führen zu schnelleren Ergebnissen,
  • regelmäßige Rückmeldung durch den Kunden,
  • Risiken und Fehlentwicklungen im Entwicklungsprozess minimieren sich,
  • Generell höhere Softwarequalität,
  • Anpassungen und kurzfristige Änderungen der Anforderungen möglich.

 

Auf der anderen Seite hat Agile Softwareentwicklung auch spezifische Herausforderungen:

  • Schwankende Erwartungshaltung des Kunden,
  • Hoher Kommunikationsbedarf mit dem Kunden (Zeit und Aufwand),
  • Selten konsistente, klare inhaltliche Vorgaben (Pflichtenheft),
  • Fehlende Planbarkeit eines Fertigstellungstermins,
  • Fokussierung auf Sprintziele,
  • allgemeine Vorgaben wie Deadlines oder Budgets müssen gesondert im Blick gehalten werden,

Beispiele der agilen Softwareentwicklung

Agile Softwareentwicklung mit Scrum

Die Methoden agiler Softwareentwicklung basieren beinahe allesamt auf der engen Zusammenarbeit der Projektteams. Um das auch bei verteilten Teams zu gewährleisten sind technische Rahmenbedingungen – die in den vergangenen Jahren mit Softwaretools für die virtuelle Kollaboration einen enormen Schritt nach vorne gemacht haben – und die uneingeschränkte Akzeptanz klarer Regeln notwendig.

Ziel muss sein, ein Gefühl und eine Routine aufzubauen, dass es tatsächlich keine großen Unterschiede macht, ob die Zusammenarbeit virtuell oder physisch erfolgt. Es ist schwierig, aber es ist möglich.

Agile Softwareentwicklung mit verteilten Teams

Die Methoden agiler Softwareentwicklung basieren beinahe allesamt auf der engen Zusammenarbeit der Projektteams. Um das auch bei verteilten Teams zu gewährleisten sind technische Rahmenbedingungen – die in den vergangenen Jahren mit Softwaretools für die virtuelle Kollaboration einen enormen Schritt nach vorne gemacht haben – und die uneingeschränkte Akzeptanz klarer Regeln notwendig.

Ziel muss sein, ein Gefühl und eine Routine aufzubauen, dass es tatsächlich keine großen Unterschiede macht, ob die Zusammenarbeit virtuell oder physisch erfolgt. Es ist schwierig, aber es ist möglich.

Agile Softwareentwicklung in Großprojekten

Großprojekte und Scrum passen auf den ersten Blick nicht zusammen: zeitliche Dimensionen und Prozesse sind einfach zu unterschiedlich. Aber auch Großprojekte haben Zwischenziele und Aufgaben im zyklischen Tagesgeschäft außerhalb komplexer Standardprozesse. Diese Aufgaben gilt es zu identifizieren und durch agile Vorgehensweisen wie Scrum effizient umzusetzen. Geeignet sind Aufgaben mit hoher Komplexität, unklaren Anforderungen und Unkenntnis der Art der Zielerreichung.

Wichtig ist die Integration konventioneller Projektteams und der Scrum-Teams in der Projektorganisation. Gegenseitiges Verständnis und Änderungsbewusstsein sind hier signifikant wichtig. Dann ergänzen sich konventionelles Management von Großprojekten und ein agiles Rahmenwerk wie Scrum synergetisch.

Requirements Engineering und agile Softwareentwicklung

Ähnlich wie bei den Großprojekten gilt: auf den ersten Blick passt es nicht zusammen. Das Requirements Engineering (RE) legt viel Wert auf Dokumentation und Analyse der Anforderungen aller Stakeholder. Das widerspricht dem agilen Ansatz, Anforderungen zu sammeln, aber erst kurz vor Start eines Sprints rudimentär zu detaillieren.

In Projekten mit großen Projektteams geht es jedoch nicht ohne transparente Dokumentation. So hat sich in den vergangenen Jahren die Methode des agilen Requirements Engineering entwickelt.

Zu Beginn wird z.B. durch User Stories ein Gesamtüberblick aufgebaut und die dazugehörigen Anforderungen priorisiert. Alle hochprioren Anforderungen werden sofort detailliert. Für das Agile Requirements Engineering gibt es dann die folgenden Regeln:

1) Wähle für jede Anforderung die passende RE-Technik für ihre Beschreibung

2) Wähle für jede Anforderung die angemessene Beschreibungstiefe.

3) Nutze kein einheitliches Beschreibungsverfahren für alle Anforderungen.

4) Erstelle Beschreibungen ausschließlich für Anforderungen, die unmittelbar verwendet werden.

5) Priorisiere die Anforderungen nach ihrem Geschäftswert. Die hochpriorisierten Anforderungen werden zuerst umgesetzt.

Agile Entwicklung und Requirement Engineering

Im agilen Requirements Engineering werden Anforderungen also nur so weit priorisiert, wie für die weitere Einschätzung notwendig. Und auch nicht für jede Anforderung wird hierbei gleich detailliert analysiert.

Umsetzung der agilen Softwareentwicklung


Agiles Arbeiten allgemein, aber speziell auch in der agilen Softwareentwicklung, verlangt vor allem gemeinsame Ziele, viel Eigenverantwortung, offene Kommunikation, Kritikfähigkeit, Kundennähe, Lernwille, einen gewissen Reifegrad und Bereitschaft zur Selbstreflektion. Die neue Methode muss sowohl von oben und von unten gleichermaßen unterstützt und mitgetragen wird. Außerdem ist es wichtig, sich bei der Einführung an Best Practices zu orientieren oder sich hierbei extern unterstützen zu lassen. Die Berater der Firnkorn und Stortz können hierbei mit teilweise über 40 Jahren Praxiswissen ihren Beitrag und ihre Unterstützung bei agiler Softwareentwicklung leisten.

Ihr Ansprechpartner bei Firnkorn & Stortz zum Thema Agile Softwareentwicklung

Treten Sie mit uns in Kontakt

Stellen Sie uns Ihre Fragen!