Was ist Agile?

Abgeschlossen

Wir haben den Begriff Agile im vorherigen Modul verwendet, um eines der wesentlichen Elemente der DevOps-Kultur zu beschreiben, die die Fähigkeit darstellt, schnell auf Kundenfeedback und -bedürfnisse zu reagieren. Dieser Begriff erschien auch mehrmals in der Einheit, die die Korrelation zwischen DevOps und dem Anwendungslebenszyklus beschreibt. Es gibt jedoch auch eine andere, spezifischere Bedeutung von Agile (im großgeschriebenen Format), die einen Ansatz für die Softwareentwicklung und das Projektmanagement beschreibt. Ein solcher Ansatz ist häufig mit DevOps-Praktiken verknüpft. In unserem Beispielszenario würde der Übergang vom herkömmlichen Wasserfall-Ansatz zu Agile dazu beitragen, dass die Organisation eine Reihe von DevOps-Vorteilen realisiert. In dieser Lektion untersuchen Sie die hauptmerkmale von Agile und untersuchen ihre Korrelation mit DevOps.

Diagramm, das einen Zyklus um ein Kanban-Board zeigt.

Agile Prinzipien und Werte

Agile ist ein Ansatz für die Softwareentwicklung, der die Teamzusammenarbeit, kontinuierliche Verbesserung und Automatisierung fördert, mit dem ultimativen Ziel einer schnelleren, zuverlässigeren und kundenorientierten Softwarebereitstellung. Der Begriff stammt aus dem Agile Manifesto, das 2001 von einer Gruppe von Softwareentwicklern erstellt wurde und eine Reihe von Leitprinzipien für die moderne Softwareentwicklung bereitstellt. Das Manifest enthielt vier grundlegende Aussagen, die Einzelpersonen und Interaktionen, arbeitsfähige Lösungen und die Zusammenarbeit der Kunden gegenüber starren Prozessen und Tools priorisiert haben. Insbesondere wurde diesen Aussagen mehr Wert beigemessen:

  • Einzelpersonen und Interaktionen über Prozesse und Tools.
  • Funktionierende Software anstatt umfassende Dokumentation.
  • Zusammenarbeit mit Kunden anstatt Vertragsverhandlungen.
  • Reagieren auf Veränderungen gegenüber dem Befolgen eines Plans

Agile Methoden und Praktiken

Die Agile Manifesto- und Agile-Prinzipien stellen eine Reihe von Werten und Richtlinien bereit, aber sie sind absichtlich nicht in Bezug auf bestimmte Methoden und Praktiken präskriptiv. Stattdessen soll Agile flexibel und leicht anpassbar sein, sodass Organisationen und Teams einen detaillierteren Ansatz nach ihren Vorlieben und Bedürfnissen auswählen können.

Diese detaillierten, umfassenden Ansätze werden häufig als Rahmen bezeichnet. Sie sollen alle Phasen des DevOps-Lebenszyklus abdecken, einschließlich Planung, Entwicklung, Bereitstellung und Betrieb. Einige der beliebtesten Agile-Frameworks umfassen Scrum und Kanban.

Was ist Scrum?

Scrum ist ein Framework, das von Teams verwendet wird, um in kurzen Iterationen von typischerweise einer bis vier Wochen Länge, sogenannte Sprints, Arbeit zu verwalten und Probleme gemeinsam zu lösen. Um die Zusammenarbeit und den Fortschritt zu erleichtern, sind Sprints basierend auf Ereignissen, Artefakten und Rollen strukturiert.

  • Veranstaltungen, die allgemein als Zeremonien bezeichnet werden, umfassen täglich stattfindende Besprechungen (Daily Scrum, in der Regel auf 15 Minuten begrenzt, auch als tägliches Standup bezeichnet) und am Anfang und Ende jedes Sprints (Sprint-Planung, Sprint-Review und Sprint-Retrospektive).
  • Artefakte definieren eine priorisierte Liste von Features, Verbesserungen und Fixes für die Entwicklung. Solche Artefakte können die Spanne eines Projekts oder eines Sprints (Product Backlog oder Sprint Backlog) abdecken, oder sie können tägliche Scrum-Besprechungen (Task Boards und Sprint-Burndown-Diagramme) unterstützen. Ein Task Board bietet eine visuelle Möglichkeit, den Fortschritt jedes Backlogelements nachzuverfolgen. Es zeigt Backlogelemente an, die in die aufgaben unterteilt sind, die zum Abschließen der Aufgabe erforderlich sind. Aufgaben werden basierend auf ihrem Status in separaten Spalten (mit der Bezeichnung "Aufgabe", " In Bearbeitung" und " Fertig") platziert. Das Sprint-Burndown-Diagramm dient als visueller Indikator dafür, ob das Team seine zugewiesene Arbeit bis zum Ende des Sprints abgeschlossen hat. Es besteht aus einem Diagramm, das die tägliche Gesamtanzahl der verbleibenden Arbeit anzeigt, die in der Regel in Stunden angezeigt wird.
  • Zu den Rollen gehören der Produktbesitzer, der Scrum-Master und das Scrum-Team, die jeweils klar definierte Verantwortlichkeiten aufweisen. Der Produktbesitzer vertritt die Projektbeteiligten und ist für die Definition, Pflege und Priorisierung des Produkt-Backlogs verantwortlich. Der Scrum-Master überwacht den Scrum-Prozess, sucht nach Bereichen für Verbesserungen, bei der Lösung von Blockierungsproblemen und stellt sicher, dass die Scrum-Prinzipien befolgt werden. Das Scrum-Team ist verantwortlich für die Entwicklung des Produkts, einschließlich der Verantwortung für dessen technische und qualitative Aspekte.

Diagramm, das agile Scrum-Lebenszyklus zeigt.

Im Sprintplanungsereignis wählt das Team Backlog-Elemente aus, die während des bevorstehenden Sprints bearbeitet werden sollen. Die Auswahl erfolgt basierend auf Priorität und einer geschätzten Arbeitsmenge, die zum Abschließen eines Elements erforderlich ist. Die Metrik " Geschwindigkeit" wird verwendet, um die Menge der Arbeit zu messen, die ein Team in einem bestimmten Sprint ausführen kann. Sobald die Sprintausführung beginnt, entscheidet das Team, wie die Sprint-Backlog-Elemente bearbeitet werden sollen. Während der Sprint-Überprüfung zeigt das Team seine Leistungen für die Projektbeteiligten. Sprint-Retrospektive ist Teil des kontinuierlichen Lernens. Es dient als Gelegenheit, den zuletzt abgeschlossenen Sprint zu überprüfen, Bereiche zur Verbesserung zu identifizieren und die Liste der Aktionen für den nächsten Sprint zu ermitteln.

Was ist Kanban?

Diagramm mit einer Kanban-Boarddarstellung mit mehreren Spalten.

Kanban ist das japanische Wort für ein Schild oder eine Billboard. Im Kontext von Agile wurde das Konzept von Kanban als Mittel zur Verbesserung der Effizienz von Fertigungsprozessen konzipiert, aber in den letzten Jahren wurde es in Softwareentwicklungsprojekten weit verbreitet.

Das Schlüsselprinzip dieses Ansatzes ist die Visualisierung projektbezogener Arbeiten in Form von Kanban-Boards. Dabei kann es sich um physische Boards oder Softwareanwendungen handeln, die Karten in Spalten darstellen, die den Status einzelner Projektelemente darstellen. Häufig verwendete Spaltennamen umfassen Aufgaben, Aufgaben und Erledigt, obwohl Teams sie so anpassen können, dass alle relevanten Phasen in einem Projektübermittlungsworkflow (z. B. Entwicklung und Tests) korrekt widergespiegelt werden. Die Visualisierung von Arbeit als Karten in verschiedenen Zuständen auf einem Board vereinfacht die Bewertung des Projektstatus und die Identifizierung potenzieller Produktivitätsprobleme.

Diagramm, das ein Kanban-Board mit drei Spalten zeigt, einschließlich To-do, In Bearbeitung und Erledigt

Diese Karten entsprechen Produkt-Backlog-Elementen im Scrum-Framework. Die Karten können so angepasst werden, dass sie Verweise auf andere Artikel im Produktzustellprozess enthalten, z. B. Aufgaben und Testfälle.

Obwohl das Konzept eines Backlogs in Kanban und Scrum üblich ist, ist es wichtig zu beachten, dass Kanban flexibler ist und keine Iterationen umfasst. Arbeitsaufgaben können hinzugefügt, neu geschrieben oder aus dem Backlog entfernt werden, basierend auf der Kapazität des Teams und den sich ändernden Anforderungen des Projekts oder Diensts, das mit Kanban verwaltet wird.

Diagramm, das ein Kanban-Board zeigt, bei dem Personen Arbeit aus dem Backlog ziehen

Insbesondere fördert Kanban die Verwendung eines Pullmodells, in dem Projektbeteiligte Anforderungen zur Backlogliste von Aufgaben, Elementen oder Arbeiten hinzufügen, die abgeschlossen werden müssen. Das Entwicklungsteam wählt Elemente aus dem Backlog aus und fügt sie je nach Priorität und Ressourcenverfügbarkeit des Teams in den aktiven Arbeitsprozess ein. Dadurch werden die Qualitätsprobleme im Zusammenhang mit dem Pullmodell minimiert, bei denen Projektbeteiligten Entwicklungsteams willkürlich Arbeit zuweisen, häufig mit unrealistischen Stichtagen. Darüber hinaus unterstützt Kanban zur Optimierung der Produktivität Beschränkungen für die Anzahl der Elemente, an denen das Entwicklungsteam derzeit arbeitet, so genannte Arbeit in Bearbeitung oder einfach WIP.

Kanban-Framework basiert auch auf Lead- und Zykluszeitmetriken , um die Effektivität und den Durchsatz des Workflows zu messen. Die Durchlaufzeit ist die gesamte Zeit, die ein Arbeitselement benötigt, um von seinem Beginn bis zu seiner Auslieferung an den Kunden zu gelangen. Die Zykluszeit stellt die Dauer der tatsächlichen Arbeit an einem Element dar, nachdem sie in den aktiven Arbeitszustand gezogen wurde.

Eine weitere häufig verwendete Komponente von Kanban ist ein kumulatives Flussdiagramm (CFD). Es ist ein Diagramm, das die Anzahl der Elemente in jedem Zustand im Laufe der Zeit veranschaulicht, in der Regel über mehrere Wochen hinweg. Es ähnelt einem Gestapelten Zeitreihendiagramm, wobei die horizontale Achse die Zeitachse und die vertikale Achse darstellt, die die kumulierte Anzahl von Arbeitsaufgaben darstellt. Jeder Zustand wird als unterschiedlich farbiger Bereich angezeigt, wodurch die Identifizierung von Trends bei der Verarbeitung von Backlogelementen erleichtert wird. Eine Erhöhung der Größe eines oder mehrerer farbiger Bereiche weist in der Regel auf ein Problem im Workflow hin, z. B. einen Engpass oder eine Ineffizienz.

Diagramm mit einem Kanban-Beispiel für ein kumulatives Flussdiagramm und einem Hinweis auf ein mögliches Problem.

Was sind die Unterschiede zwischen Scrum und Kanban?

Sowohl Scrum als auch Kanban gelten als agile Frameworks mit dem gemeinsamen Ziel, die Effizienz und Effektivität der Softwareentwicklung zu verbessern. Jeder von ihnen bietet jedoch einen anderen Ansatz, um dieses Ziel zu erreichen, einschließlich ihrer jeweiligen Prinzipien und Praktiken. Im Besonderen:

  • Arbeitsrhythmen: Scrum verwendet Sprints mit fester Länge, während Kanban auf basis eines kontinuierlichen Flussmodells arbeitet, wobei die Arbeit von Entwicklungsteams entsprechend der Verfügbarkeit ihrer Ressourcen abgerufen wird.
  • Rollen und Zeremonien: Scrum hat klar definierte Rollen und Zeremonien, während Kanban keine vorschreibt, sondern es Teams ermöglicht, diese entsprechend ihren spezifischen Anforderungen anzupassen.
  • Arbeitsplanung: Scrum verwendet einen priorisierten Backlog mit der während des Sprint Planning-Ereignisses zugesicherten Arbeit. Kanban verwendet einen dynamischen Backlog ohne Verpflichtungen für einen bestimmten Zeitraum. Darüber hinaus unterstützt Kanban das Konzept von WIP-Grenzwerten.
  • Anpassungsfähigkeit an Veränderungen: Scrum verhindert Änderungen an zugesicherten Arbeiten während des Sprints. Kanban erleichtert die Anpassung an Änderungen an jedem Punkt.
  • Visualisierungen: Scrum verwendet Sprintboards und Burndowndiagramme. Kanban basiert auf Kanban-Boards.
  • Metriken: Scrum verwendet Sprintmetriken wie Geschwindigkeits- und Burndowndiagramme. Kanban betont beispielsweise Metriken wie Leadzeit und Zykluszeit.