Agile Methodologie

„Agile Methodik“ ist ein Sammelbegriff für Konzepte, Praktiken und manchmal auch Tools, die alle die als „Agile“ bekannte Produktentwicklungsphilosophie widerspiegeln.

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

Wenn man diese Prinzipien betrachtet, ist es leicht zu erkennen, dass Agilität sowohl durch das, was es nicht ist, als auch durch das, was es ist, definiert wird. Den vier oben dargestellten Werten ist gemeinsam, dass sie iterative Entdeckungen und Zusammenarbeit über starre Ergebnisse stellen. Durch die Konzentration auf diese Elemente können agile Teams nicht nur bessere Produkte mit weniger Abfall schaffen, sondern auch Raum für Entdeckungen schaffen und dabei gleichzeitig die Funktionalität bewahren releases flowing 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 Waterfall zu unflexibel, um auf Kundenanforderungen zu reagieren, die sich während der Entwicklung ändern könnten. Zweitens bedeutete das Wasserfall-Produktdesign, dass alle Innovationen bereits vor Projektbeginn ausgearbeitet werden sollten. Dieser starre Rahmen lässt wenig Raum für die Entdeckung neuer Feature-Möglichkeiten bis nach dem release ist fertig. Darüber hinaus funktioniert die Software möglicherweise nicht wie vorgesehen, so dass es zu kostspieligen Verzögerungen kam, als man diesen mitten in der Entwicklung eines Wasserfallprojekts entdeckte.

Die Gründer von Agile schlugen stattdessen eine Methode zur Entwicklung von Software vor, die offen für Entdeckung, Innovation und Iteration ist. Anstatt zu erwarten, dass zu einem bestimmten Zeitpunkt eine komplette Software mit allen Funktionen geliefert wird, könnten funktionale Builds dies tun released schrittweise. Dies verkürzt die Markteinführungszeit und ermöglicht die Budgetierung der Entwicklung in Phasen statt auf einmal.

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 Unzulänglichkeiten des Wasserfallmodells zu überwinden, fördert die Agile-Philosophie die Beschaffung von Ideen aus allen Teilen des Unternehmens. Wichtig ist auch, dass sich Produktentwicklungszyklen auf iterative Änderungen konzentrieren, die häufig vorgenommen werden, und nicht auf große Produktänderungen releaseEs dauerte Monate oder Jahre, bis ein funktionsfähiger Build erstellt wurde.

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.
  • Stellen Sie regelmäßig neue funktionierende Softwareversionen bereit und integrieren Sie diese kontinuierlich deployAnpassung an die neuen Veränderungen in der 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 eingeführt, einschließlich regelmäßiger Tests und der Einbeziehung von Kundenfeedback. Probleme mit einem bestimmten release werden vor der Integration und Bereitstellung des Neuen entdeckt und (idealerweise) behandelt release.
  • 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 den Einsatz aggressiver Sprints zur Vervollständigung iterativer agiler Verbesserungen. Scrum-Teams koordinieren sich, um im Laufe der Sprints wichtige Arbeiten zu erledigen, und jeder Sprint ist so geplant, dass bedeutende Arbeiten erledigt werden können, ohne die Qualität und Integrität des Sprints zu beeinträchtigen release.

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, continuous testing, 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
  • Klein releases
  • 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 in erster Linie auf Geschäftsanforderungen/-wert, aktive Benutzerbeteiligung, befähigte Teams, häufige Bereitstellung, integrierte Tests und Zusammenarbeit mit Stakeholdern konzentrieren. DSDM nennt ausdrücklich die „Eignung für den Geschäftszweck“ als Hauptkriterium für die Bereitstellung und Akzeptanz eines Systems und konzentriert sich dabei auf die nützlichen 80 % des Systems, die nützlich sein können deployin 20 % der Fälle erledigt.

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 bei gleichzeitiger Bereitstellung release Orchestrierungs- und Automatisierungsfunktionen.
  • Release Deployment-Software: Vereinfacht und automatisiert den Prozess von deployneu machen releases auf die Betriebsumgebung, einschließlich Cloud- und Container-basierter Umgebungen.
  • 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: Schaffen Sie eine Single Source of Truth, die für mehr Transparenz sorgt release Zeitpläne, änderungsbedingte Risiken und Möglichkeiten zur Verbesserung der Qualität und Wertbereitstellung von releases.