Agile Methodologie
„Agile Methodik“ ist ein Sammelbegriff für Konzepte, Praktiken und manchmal auch Tools, die alle die als „Agile“ bekannte Produktentwicklungsphilosophie widerspiegeln.
Inhaltsverzeichnis
Die Agile-Bewegung entstand 2001 während eines Treffens von 17 zukunftsorientierten Entwicklern bei einem Retreat in Utah. Die während des Retreats etablierten Philosophien und Prinzipien bildeten die Grundlage für Agile und nachfolgende Agile-Methoden, die aus ihrer anfänglichen Arbeit entwickelt wurden.
Seit der Veröffentlichung des Originaldokuments „Das Manifest für agile Softwareentwicklung“ hat die agile Methodik nicht nur eine tiefgreifende Transformationswirkung auf die Softwareentwicklung, sondern auf Organisationen in nahezu allen Bereichen gehabt. Die Werte der schlanken Produktentwicklung, der iterativen Entdeckung, der veränderungsorientierten Entwicklung und der kollaborativen Arbeit aller Unternehmens- und Gesellschaftsgruppen bilden weltweit die Grundlage für neue, fortschrittliche Geschäfts- und Produktmodelle.
Dieser Leitfaden zur Agile-Methodik dient als Überblick zur Einführung in die Kernprinzipien von Agile. Wir beginnen mit einer Definition der oofagile-Methodik, wie sie im Manifest von 2001 vorgeschlagen wurde, und beschreiben anschließend einige der bekanntesten Ableger, die aus der agilen Entwicklung hervorgegangen sind. Abschließend besprechen wir einige der beliebtesten agilen Methoden und Tools.
Was ist agil?
Agile ist ein Arbeitsansatz (ursprünglich Softwareentwicklung), der als Verpflichtung zu kontinuierlichen Veränderungen und Verbesserungen betrachtet werden kann.
Agile Werte
Agile wird prägnant in den folgenden Werten beschrieben, die 2001 vom ursprünglichen Agile Manifesto-Team verfasst wurden:
- Individuen und Interaktionen über Prozesse und Werkzeuge
- Arbeitssoftware über umfassende Dokumentation
- Kundenzusammenarbeit über Vertragsverhandlungen
- Auf Veränderungen reagieren über einen Plan folgen
Betrachtet man diese Prinzipien, ist es leicht zu erkennen, dass Agile sowohl durch das, was es ist, als auch durch das, was es nicht ist, definiert wird. Die vier oben dargestellten Werte haben alle den gemeinsamen Nenner, dass sie iterative Entdeckung und Zusammenarbeit über starre Ergebnisse stellen. Indem sie sich auf diese Elemente konzentrieren, können Agile-Teams nicht nur bessere Produkte mit weniger Abfall erstellen, sondern auch Raum für Entdeckungen schaffen und gleichzeitig funktionale Releases auf dem Laufenden halten.wing to der Endkunde.
Agile vs. Wasserfall-Entwicklung
Die Gründer von Agile schlugen eine deutliche Abkehr von den traditionellen Arbeitsmethoden der Softwareindustrie vor. Damals (ca. 2001) wurde Software größtenteils als einzelne projektbasierte Anstrengung erstellt, um ein digitales Produkt auf der Grundlage spezifischer Spezifikationen zu erstellen, die Monate im Voraus festgelegt wurden. Die Vision für das Produkt wurde von einer Gruppe von Beratern, Führungskräften und Administratoren festgelegt, die dann eine Liste mit Anforderungen erstellten, die den Managementteams vorgelegt werden sollten. Die Managementteams würden dann die Arbeit des Codierens, Kompilierens, Testens und Erstellens der angeforderten Software delegieren, um sie über einen festgelegten Zeitraum innerhalb eines festgelegten Budgets auszuführen.
Entwickler bezeichneten dieses System als „Wasserfall“-Methodik, da die Softwareanforderungen und -ergebnisse alle von der Unternehmensspitze bis hinunter zu den Kernentwicklungsmitarbeitern diktiert wurden.
Die ursprünglichen Agile-Mitarbeiter lehnten diese Form der Softwareentwicklung aus mehreren Gründen ab. Erstens war das Wasserfallmodell zu unflexibel, um auf Kundenanforderungen zu reagieren, die sich während der Entwicklung ändern konnten. Zweitens bedeutete das Wasserfall-Produktdesign, dass alle Innovationen bereits vor Projektbeginn entwickelt werden sollten. Dieser starre Rahmen lässt wenig Raum für die Entdeckung neuer Funktionsmöglichkeiten, bis die Version fertig ist. Außerdem funktioniert die Software möglicherweise nicht wie beabsichtigt. Wenn dies während der Entwicklung in einem Wasserfallprojekt entdeckt wird, bedeutet dies kostspielige Verzögerungen.
Die Gründer von Agile schlugen stattdessen eine Methode zur Erstellung von Software vor, die offen für Entdeckungen, Innovationen und Iterationen war. Anstatt zu erwarten, dass zu einem bestimmten Zeitpunkt eine komplette Software mit allen Funktionen geliefert wird, konnten funktionale Builds schrittweise veröffentlicht werden. Dies verkürzt die Markteinführungszeit und ermöglicht es, die Entwicklung in Phasen statt auf einmal zu budgetieren.
Am wichtigsten, Agile Entwicklung erkennt an, dass das Produkt in seiner ursprünglichen Form möglicherweise nicht den erwarteten Mehrwert für Kunden und das Unternehmen selbst bietet. Das Arbeiten in Aufbauphasen ermöglicht das Hinzufügen neuer Ideen oder das Ändern von Produktstrategien, sodass bei der Entwicklung auf eine Weise reagiert werden kann, die beim Wasserfallmodell nicht möglich ist.
Agile Prinzipien
Um die Mängel des Wasserfallmodells zu überwinden, fördert die Agile-Philosophie die Ideengewinnung aus allen Bereichen des Unternehmens. Wichtig ist auch, dass sich Produktentwicklungszyklen auf iterative Änderungen konzentrieren, die häufig umgesetzt werden, im Gegensatz zu großen Produktveröffentlichungen, bei denen es Monate oder Jahre dauert, bis eine funktionsfähige Version erstellt ist.
Anstelle der traditionellen, vom Management gesteuerten „Wasserfall“-Entwicklungszyklen schlug die Gruppe die folgenden, damals radikalen Arbeitsmethoden vor:
- Beginnen Sie beim Erstellen neuer Software mit einfachen Konzepten und Ideen und nicht mit umfassenden Ergebnissen. Entwickeln Sie einen funktionierenden Proof-of-Concept-Prototyp, der das Potenzial des Konzepts veranschaulicht, Kunden und internen Stakeholdern einen Mehrwert zu bieten.
- Lassen Sie Geschäftsleute und Entwicklerteams zusammenarbeiten, um Möglichkeiten zur Weiterentwicklung, Verbesserung und Weiterentwicklung des funktionierenden Prototyps zu robusteren Versionen zu ermitteln.
- Nehmen Sie sich täglich Zeit und Raum für direkte Gespräche zwischen Einzelpersonen und Teammitgliedern, damit Fortschritte verfolgt und neue Möglichkeiten zur Verbesserung des Produkts entdeckt werden. Dies kann in Form von kurzen Stand-up-Meetings oder längeren Scrum-Meetings erfolgen.
- Liefern Sie regelmäßig neue funktionierende Versionen der Software und integrieren und implementieren Sie die neuen Änderungen kontinuierlich in die Live-Produktionsumgebung. Jede geänderte Version stellt eine verbesserte Version der vorherigen dar.
- Denken Sie über das Ergebnis jeder Arbeitsperiode (eines „Sprints“) nach und nutzen Sie die gewonnenen Erkenntnisse, um die spätere Entwicklung zu verbessern.
- Geben Sie dem Kunden dabei eine Stimme, entweder durch direkte Befragung oder durch indirekte Datensignale, um das Produkt weiter zu verbessern
Agile und schlanke Fertigung
Agile übernimmt viele Lehren aus der Lean Manufacturing, einer Philosophie, die während des Wachstums der fortschrittlichen industrialisierten Fertigung in der zweiten Hälfte des 20. Jahrhunderts entwickelt wurde. Lean Manufacturing eliminiert unnötige Schritte bei der Produkterstellung und verbessert gleichzeitig das Produktionstempo. Diese Methoden wurden bekanntermaßen vom japanischen Automobilhersteller Toyota angewendet und gründeten das Toyota Production System (TPS).
Zu den wichtigsten Lehren, die Agile aus Lean gezogen hat, gehören:
- Schaffen Sie einen möglichst effizienten Prozess.
- Beseitigen Sie Verschwendung (Muda), indem Sie Prozesse kombinieren und diejenigen entfernen, die nicht zu einem besseren Produkt führen.
- Messen Sie die Ergebnisse strikt, damit die Produkte eine gleichbleibende Qualität und gleichbleibende Herstellungszyklen aufweisen.
- Lassen Sie Ihre Mitarbeiter zur Verbesserung von Prozessen beitragen und verlassen Sie sich auf wichtige Mitarbeiter, um Qualitäts-, Geschwindigkeits- und Effizienzziele voranzutreiben.
- Identifizieren Sie Schritte im Prozess, die zu Verzögerungen oder schlechter Qualität beitragen, und beheben Sie diese „Fluss“-Probleme, damit ein reibungsloser, effizienter Prozess zuverlässig konsistente Produkte hervorbringt.
Was ist agile Methodik?
Bei der agilen Methodologie handelt es sich um eine Reihe von Arbeitsmethoden, die alle die 2001 erstmals kodifizierten agilen Ideale widerspiegeln. Daher gibt es tatsächlich mehrere Methoden, die unter dem Oberbegriff „Agile Methodologie“ zusammengefasst werden können. Dabei handelt es sich um die beliebtesten agilen Methoden, die im Folgenden jeweils näher beschrieben werden.
Die agile Methodik zeichnet sich durch folgende Merkmale aus:
- Teams werden aus Fachexperten aus verschiedenen Bereichen der Organisation zusammengestellt (funktionsübergreifende Teams).
- Funktionsübergreifende Teams sind für die Erstellung von Prototypversionen von Software-/Produktkonzepten verantwortlich, die auf innovativen Ideen basieren, die vom Team selbst sowie von Kundenfeedback- und Produktstrategieteams stammen.
- Anschließend wird das Softwareprodukt in einem kurzen „Sprint“ überarbeitet, um weitere Funktionen, Features, Verbesserungen und Korrekturen hinzuzufügen.
- Ideen zur Veränderung und Verbesserung des Produkts kommen aus dem gesamten Unternehmen. Diskussionen zu diesen Themen finden häufig statt.
- Funktionsübergreifende Teams besprechen in kurzen täglichen „Stand-up“-Meetings Arbeitsfortschritte, Herausforderungen, Prioritäten und neu entstehende Chancen.
- Sobald ein Sprint abgeschlossen ist, werden die während des Sprints vorgenommenen Änderungen in die aktuelle Version des Produkts übernommen.
- Während des gesamten Prozesses werden Qualitätskontrollen durchgeführt, darunter regelmäßige Tests und die Einbeziehung von Kundenfeedback. Probleme mit einer bestimmten Version werden erkannt und (idealerweise) vor der Integration und Bereitstellung der neuen Version behoben.
- Am Ende jedes Sprints nimmt sich das funktionsübergreifende Team Zeit, um über die Ergebnisse und den Verlauf des Prozesses nachzudenken. Auf der Grundlage des Gelernten werden wahrscheinlich neue Ziele und Meilensteine festgelegt.
- Für funktionsübergreifende Teams werden neue Sprints organisiert, die neue Funktionen, Verbesserungen und Korrekturen hinzufügen.
Welche Arten von agilen Methoden gibt es?
Es gibt viele beliebte Versionen und Ableger von Agile sowie Methoden, die vor dem Agile-Manifest existierten, aber dessen Werte teilen. Dazu gehören Scrum, Lean, Kanban, Extreme Programming (XP), Feature Driven Development (FDD), Dynamic Systems Development Method (DSDM) und Crystal.
Scrum
Scrum konzentriert sich auf die Verwendung aggressiver Sprints, um iterative Agile-Verbesserungen abzuschließen. Scrum-Teams koordinieren sich, um im Laufe der Sprints wichtige Arbeiten zu erledigen, und jeder Sprint wird so geplant, dass bedeutende Arbeiten erledigt werden können, ohne die Qualität und Integrität der Veröffentlichung zu beeinträchtigen.
Scrum zeichnet sich durch die Einführung der Rollen „Scrum Master“ und „Product Owner“ aus, die beide dafür sorgen, dass alle kleinen Prozesse zu wünschenswerten Ergebnissen führen. Wichtig ist auch das Konzept eines „Product Backlogs“, das geeignete Funktionen, Verbesserungen und Korrekturen darstellt, die im nächsten Sprint eingeführt werden sollen.
Die Scrum-Methodik eignet sich nachweislich für mehrere Teams in sehr großen Organisationen mit mehr als 800 Mitarbeitern. Siehe wie Digital.ai Agility, ehemals VersionOne, unterstützt Scrum-Sprint-Planung indem Sie die Verwaltung Ihres Produkt-Backlogs vereinfachen.
Lehnen
Die oben teilweise beschriebene schlanke Fertigung priorisiert die Schaffung kontinuierlicher, konsistenter Werte durch einen vorhersehbaren „Arbeitsfluss“. Es betont die Geschwindigkeit und Effizienz des Entwicklungsworkflows und setzt auf schnelles und zuverlässiges Feedback zwischen Programmierern und Kunden. Lean nutzt die Idee, dass Arbeitsergebnisse auf Kundenwunsch „abgerufen“ werden. Es konzentriert die Entscheidungsbefugnis und -fähigkeit auf Einzelpersonen und kleine Teams, da Untersuchungen zeigen, dass dies schneller und effizienter ist als der hierarchische Kontrollfluss.
Lean konzentriert sich auch auf die Effizienz der Nutzung der Teamressourcen und versucht sicherzustellen, dass jeder so viel Zeit wie möglich produktiv ist. Es konzentriert sich auf gleichzeitiges Arbeiten und möglichst geringe Workflow-Abhängigkeiten innerhalb des Teams. Lean empfiehlt außerdem dringend, automatisierte Unit-Tests gleichzeitig mit dem Code zu schreiben.
Kanban
Kanban ist eine Methode zur Steuerung der Produktion, die eng mit der Geschichte von Lean verknüpft ist. Die Kanban-Methode nutzt in erster Linie ein „Kanban-Board“, das das aktuelle Volumen der Arbeitselemente und die Arbeitsschritte, die sie durchlaufen haben, verfolgt. Ein Kanban-Board verwendet Haftnotizen (oder ein virtuelles Äquivalent), um die Anzahl der aktuellen Arbeitselemente in jeder Phase des Prozesses zu verfolgen. Sobald ein Arbeitselement abgeschlossen ist, wird die Haftnotiz in die nächste Phase des Prozesses verschoben.
Kanban betont den Fluss, indem es das aktuelle Volumen der Arbeitselemente und deren Fortschritt innerhalb des Entwicklungszyklus visualisiert. Wenn sich viele Arbeitselemente in einer einzigen Phase aufstauen, ist das ein Zeichen dafür, dass man sich sofort mit der Menge an Work-in-Progress (WIP) befassen sollte, damit der Sprint oder die Aufgabengruppe zum Abschluss gebracht werden kann. Der Wegfall von WIP kann auch als Signal dienen, neue Arbeitselemente aus dem Backlog zu „ziehen“, da nun neue Kapazitäten vorhanden sind.
Extreme Programmierung (XP)
Extreme Programming oder „XP“ wurde Ende der 90er Jahre vom Agile Manifesto-Mitarbeiter Kent Beck entwickelt. Wie Agile fördert es eine hohe Kundeneinbindung, schnelle Feedbackschleifen, kontinuierliche Prüfung, kontinuierliche Planung und enge Teamarbeit, um in sehr kurzen Abständen, typischerweise alle 1–3 Wochen, funktionierende Software bereitzustellen.
Das ursprüngliche XP-Rezept basiert auf vier einfachen Werten: Einfachheit, Kommunikation, Feedback und Mut. Es funktioniert auch durch zwölf entscheidende unterstützende Praktiken:
- Planungsspiel
- Kleine Veröffentlichungen
- Kundenabnahmetests
- Einfaches Design
- Paar-Programmierung
- Testgetriebene Entwicklung
- Refactoring
- Kontinuierliche Integration
- Kollektives Code-Eigentum
- Kodierungsstandards
- Metapher
- Ein einhaltbares Schritttempo
Funktionsorientierte Entwicklung (FDD)
Funktionsorientierte Entwicklung (FDD) ist eine Variante der agilen Methodik, die spezifische, sehr kurze Arbeitsphasen beschreibt, die pro Feature separat durchgeführt werden sollen. Dazu gehören Domänen-Walkthrough, Design, Design-Inspektion, Code, Code-Inspektion und Promotion-to-Build.
Das Hauptkonzept von FDD besteht darin, dass der beabsichtigte zukünftige Zustand des Produkts mithilfe von Modellen dargestellt werden kann und dass die Arbeit an Funktionen dabei hilft, ein ganzheitliches Produktmodell aufzubauen, das durch Dinge repräsentiert wird, die „in den Augen des Kunden nützlich“ sind.
FDD empfiehlt spezifische Programmierpraktiken wie „reguläre Builds“ und „Komponenten-/Klassenbesitz“. Die Befürworter von FDD behaupten, dass es sich einfacher skalieren lässt als andere Ansätze und besser für größere Teams geeignet ist.
Dynamische Systementwicklungsmethode (DSDM)
DSDM ist ein weiterer früher Vorfahre von Agile, der erstmals 1994 beschrieben wurde. Die Grundlagen für DSDM liegen in der Rapid Application Development (RAD), deren Ziel die Standardisierung von Softwarelieferung Frameworks. Nach dem Aufkommen von Agile entwickelte sich DSDM weiter und wurde ausgereifter, um eine umfassende Grundlage für die Planung, Verwaltung, Ausführung und Skalierung agiler Prozesse und iterativer Softwareentwicklungsprojekte zu bieten.
DSDM basiert auf neun Schlüsselprinzipien, die sich hauptsächlich um Geschäftsanforderungen/-werte, aktive Benutzerbeteiligung, bevollmächtigte Teams, häufige Auslieferung, integrierte Tests und die Zusammenarbeit der Beteiligten drehen. DSDM nennt ausdrücklich „Eignung für geschäftliche Zwecke“ als Hauptkriterium für Auslieferung und Akzeptanz eines Systems und konzentriert sich auf die nützlichen 80 % des Systems, die in 20 % der Zeit bereitgestellt werden können.
DSDM priorisiert bestimmte Liefergegenstände mithilfe eines Timebox-Modells, und Elemente, deren Priorität niedriger ist, werden vorab ausgewählt und zur Seite verschoben, um Timebox-Fristen einzuhalten.
Kristall
Die Crystal-Methodik ist einer der einfachsten und anpassungsfähigsten Ansätze für die Softwareentwicklung. Zu den wichtigsten Grundsätzen von Crystal gehören Teamarbeit, Kommunikation und Einfachheit sowie Reflexion, um den Prozess regelmäßig anzupassen und zu verbessern. Wie andere agile Prozessmethoden fördert Crystal die frühe, häufige Bereitstellung funktionierender Software, eine hohe Benutzerbeteiligung, Anpassungsfähigkeit und die Beseitigung von Bürokratie oder Ablenkungen.
Crystal besteht eigentlich aus einer Familie agiler Methoden wie Crystal Clear, Crystal Yellow, Crystal Orange und anderen, deren einzigartige Eigenschaften von mehreren Faktoren wie Teamgröße, Systemkritikalität und Projektprioritäten bestimmt werden. Diese Kristallfamilie geht auf die Erkenntnis ein, dass jedes Projekt möglicherweise einen leicht angepassten Satz von Richtlinien, Praktiken und Prozessen erfordert, um den einzigartigen Merkmalen des Projekts gerecht zu werden.
Die Vorteile der agilen Methodik
Agile Methoden können alle ihre eigenen einzigartigen Stärken und Zwecke haben, aber die folgenden Vorteile sind in der Regel alle beiderseitig:
- Funktionierende Softwareversionen werden relativ schnell und häufig geliefert
- Die Qualität und Integrität eines Builds wird schon früh im Prozess verstanden
- Abhängigkeiten und Engpässe im Lieferprozess werden minimiert
- Produkte spiegeln den aktuellen Bedarfsstand wider, der sich aus den Signalen von Kunden, Wettbewerbern und dem gesamten Markt ergibt
- Innovationen können in jeder Phase des Produktlebenszyklus eingeführt werden
- Der kollaborative Input stammt von allen Teams und nicht von Top-Beratern/Administratoren/Beratern, die dann Befehle an die untersten Teams erteilen
- Im Vergleich zu Entwicklungszyklen, bei denen der Schwerpunkt nicht auf funktionalen Builds liegt, sind die Risiken geringer
- Der Schwerpunkt liegt auf Kundenzufriedenheit und Teammoral; Wenn keiner zufrieden ist, dann wird davon ausgegangen, dass die Produkte und Prozesse nicht den Anforderungen entsprechen
- Die Arbeit wird überschaubarer und vorhersehbarer gemacht und gleichzeitig werden Flexibilitäten eingeführt, die Störungen oder plötzliche Strategieänderungen berücksichtigen können
Top-Tools zur Verwendung mit agilen Methoden
Zu den am meisten empfohlenen Tools für agile Methoden gehören:
- Agile Planungssoftware: Bietet Kanban und andere Tools zur Verwaltung von Produkt-Backlog-Portfolios und zur Planung von Sprints.
- Release Orchestrierungssoftware: Ermöglicht die Zuweisung von Arbeitselementen und stellt gleichzeitig Funktionen zur Release-Orchestrierung und -Automatisierung bereit.
- Release Deployment-Software: Vereinfacht und automatisiert den Prozess der Bereitstellung neuer Versionen in der Betriebsumgebung, einschließlich Cloud- und Container-basierter Versionen.
- Continuous Testing Software: Ermöglicht effizientes und automatisierte Tests während des gesamten Entwicklungsprozesses, wodurch Risiken und Kosten gesenkt und die Lieferung beschleunigt wird.
- Business-Intelligence- und Analytics-Lösungen: Erstellen Sie eine einzige zuverlässige Quelle, die Transparenz in Bezug auf Release-Zeitpläne, änderungsbezogene Risiken und Möglichkeiten zur Verbesserung der Qualität und Wertschöpfung von Releases bringt.