Was ist Agile-Entwicklung?

Agile-Entwicklung ist ein Begriff, der zur Beschreibung der iterativen Softwareentwicklung verwendet wird. Die iterative Softwareentwicklung verkürzt den DevOps-Lebenszyklus, indem Arbeit in kleineren Inkrementen erfolgt, die üblicherweise als Sprints bezeichnet werden. Sprints dauern in der Regel eine bis vier Wochen. Die Agile-Entwicklung steht häufig im Gegensatz zur herkömmlichen Entwicklung nach dem Wasserfallmodell, bei dem größere Projekte im Voraus geplant und nach diesem Plan abgeschlossen werden.

Für die Bereitstellung von Produktionsqualitätscode muss das Agile-Entwicklungsteam bei jedem Sprint das beschleunigte Tempo berücksichtigen. Die gesamte Überprüfung für die Programmierung, für Tests und zur Qualitätssicherung muss bei jedem Sprint durchgeführt werden. Wenn das Team nicht richtig aufgestellt ist, können die Ergebnisse hinter den Erwartungen zurückbleiben. Obwohl diese Enttäuschungen großartige Lernmöglichkeiten bieten, ist es hilfreich, einige wichtige Lektionen zu lernen, bevor man anfängt.

In diesem Artikel werden einige wichtige Erfolgsfaktoren für Agile-Entwicklungsteams erläutert:

  • Sorgfältige Backlog-Verfeinerung
  • Frühzeitige und häufig integration
  • Minimieren der technischen Schulden

Sorgfältige Backlog-Verfeinerung

Ein Agile-Entwicklungsteam verwendet ein Backlog von Anforderungen, die häufig als User Stories bezeichnet werden. Das Backlog wird priorisiert, sodass die wichtigsten User Storys ganz oben stehen. Der Produktbesitzer ist Besitzer des Backlogs und fügt User Storys basierend auf den Anforderungen des Kunden hinzu, ändert sie und priorisiert sie neu.

Image of a Kanban board that contains several columns. In each column, a few cards are visible.

Eine der größten Auswirkungen auf die Produktivität eines Agile-Teams ist ein schlecht definiertes Backlog. Es ist nicht zu erwarten, dass ein Team bei jedem Sprint durchgängig hochwertige Software liefert, es sei denn, es hat klar definierte Anforderungen.

Die Aufgabe des Produktbesitzers besteht darin, sicherzustellen, dass die Ingenieure bei jedem Sprint über klar definierte User Stories verfügen, mit denen sie arbeiten können. Die User Stories oben im Backlog sollten immer zur Verfügung stehen, damit das Team damit beginnen kann. Dieser Begriff wird als Backlog-Verfeinerung bezeichnet. Die Vorbereitung eines Backlogs für ein Agile-Entwicklungsteam erfordert Aufwand und Disziplin. Glücklicherweise lohnt sich die Investition.

Beachten Sie beim Verfeinern eines Backlogs die folgenden wichtigen Überlegungen.

  1. Das Verfeinern von User Stories ist häufig eine Aktivität mit langer Vorlaufzeit. Elegante Benutzeroberflächen, schöne Bildschirmdesigns und kundenfreundliche Lösungen nehmen zeit- und energieintensive Lösungen in Anspruch. Sorgfältige Produktbesitzer verfeinern die User Stories zwei bis drei Sprints im Voraus. Sie berücksichtigen Design-Iterationen und Kundenrezensionen. Sie arbeiten daran, sicherzustellen, dass das Agile-Team bei jeder User Story stolz darauf ist, sie dem Kunden zu liefern.

  2. Eine User Story ist erst verfeinert, wenn das Team dies bestätigt. Das Team muss die User Story überprüfen und zustimmen, dass sie für die Bearbeitung bereit ist. Wenn ein Team die User Story erst am ersten Tag eines Sprints sieht, kann es wahrscheinlich zu Problemen kommen.

  3. User Stories weiter unten im Backlog können mehrdeutig bleiben. Verschwenden Sie keine Zeit beim Verfeinern von Elementen mit niedrigerer Priorität. Konzentrieren Sie sich auf die Elemente oben im Backlog.

Frühzeitiges und häufiges Integrieren

Continuous Integration und Continuous Delivery (CI/CD) richten Ihr Team für das schnelle Tempo der Agile-Entwicklung ein. Automatisieren Sie so schnell wie möglich die Build-, Test- und Bereitstellungspipelines. Richten Sie diese Automatisierung als eine der ersten Aufgaben ein, die Ihr Team in Angriff nimmt, wenn Sie ein neues Projekt starten.

Durch die Automatisierung vermeidet das Team langsame, fehleranfällige und zeitintensive manuelle Bereitstellungsprozesse. Da Teams jeden Sprint freigeben, gibt es keine Zeit, diese Aufgaben manuell auszuführen.

CI/CD beeinflusst auch Ihre Softwarearchitektur. Es stellt sicher, dass Sie erstellbare und bereitstellungsfähige Software bereitstellen. Wenn Teams eine schwer bereitzustellende Funktion implementieren, bemerken sie sofort, wenn der Build und die Bereitstellung fehlschlagen. CI/CD zwingt ein Team dazu, auftretende Bereitstellungsprobleme zu beheben. Das Produkt ist dann immer versandbereit.

Abstract bar chart that shows the status of CI builds over time. Most builds succeeded. Only a few failed.

Es gibt einige wichtige CI/CD-Aktivitäten, die für eine effektive Agile-Entwicklung von entscheidender Bedeutung sind.

  1. Modultests. Komponententests sind die erste Verteidigung gegen menschliche Fehler. Betrachten Sie Komponententests als Teil der Codierung. Überprüfen Sie Tests mit dem Code. Machen Sie Komponententests zu einem Bestandteil jedes Builds. Fehlgeschlagene Komponententests bedeuten einen fehlgeschlagenen Build.

  2. Buildautomatisierung Das Buildsystem sollte Code automatisch und Tests direkt aus der Quellcodeverwaltung abrufen, wenn Builds ausgeführt werden.

  3. Verzweigungs- und Buildrichtlinien Konfigurieren Sie Verzweigungs- und Buildrichtlinien so, dass sie automatisch erstellt werden, wenn das Team Code in eine bestimmte Verzweigung eincheckt.

  4. Stellen Sie in einer Umgebung bereit. Richten Sie eine Release-Pipeline ein, die erstellte Projekte automatisch in einer Umgebung bereitstellt, die die Produktion nachahmt.

Technische Schulden minimieren

Bei den persönlichen Finanzen ist es einfacher, keine Schulden zu machen, als sich davon zu befreien. Die gleiche Regel gilt für technische Schulden. Technische Schulden umfassen alles, was das Team aufgrund früherer Auslassungen angehen muss. Wenn Sie z. B. einen engen Zeitplan haben, müssen Sie möglicherweise auf Qualität verzichten, um einen Termin einzuhalten. Technische Schulden sind der Preis, den Sie später bezahlen, wenn Sie Code umgestalten müssen, um diesen Mangel an Qualität auszugleichen. Beispiele hierfür sind Korrekturen zur Behebung von schlechtem Design, Fehlern, Leistungsproblemen, Betriebsproblemen, Zugänglichkeitsproblemen und anderen Problemen.

Um die technischen Schulden im Griff zu behalten, ist Mut erforderlich. Es gibt viele Zwänge, die Überarbeitung von Code zu verzögern. Es fühlt sich gut an, an Funktionen zu arbeiten und Schulden zu ignorieren. Leider muss jemand die technischen Schulden früher oder später bezahlen. Ebenso wie Finanzschulden ist es auch bei technischen Schulden umso schwieriger, sie abzubezahlen, je länger sie bestehen. Ein intelligenter Produktbesitzer arbeitet mit seinem Team zusammen, um sicherzustellen, dass bei jedem Sprint Zeit für die Tilgung technischer Schulden bleibt. Es ist eine schwierige Aufgabe, die Reduzierung der technischen Schulden mit der Funktionsentwicklung in Einklang zu bringen. Glücklicherweise gibt es einige einfache Techniken zum Erstellen produktiver, kundenorientierter Teams.

Immer agil sein

Agile zu sein bedeutet, von Erfahrungen zu lernen und sich kontinuierlich zu verbessern. Agile-Entwicklung bietet mehr Lernzyklen als eine herkömmliche Projektplanung aufgrund der engeren Prozessschleifen. Jeder Sprint bietet etwas Neues für das Team, um zu lernen.

Beispiel:

  • Ein Team generiert einen Mehrwert für den Kunden, erhält Feedback und ändert dann sein Backlog basierend auf diesem Feedback.
  • Sie erfahren, dass in ihren automatisierten Builds wichtige Tests fehlen. Sie nehmen in ihrem nächsten Sprint Arbeiten auf, um dieses Problem anzugehen.
  • Sie stellen fest, dass bestimmte Funktionen in der Produktion schlecht funktionieren, und planen daher, die Leistung zu verbessern.
  • Jemand im Team hört von einer neuen Praxis. Das Team beschließt, es einige Sprints lang auszuprobieren.

Teams, die gerade erst mit der Agile-Entwicklung beginnen, sollten mit mehr Lernmöglichkeiten rechnen. Sie sind ein unschätzbarer Teil des Prozesses, da sie zu Wachstum und Verbesserung führen.

Nächste Schritte

Es gibt viele Möglichkeiten, sich für einen Agile-Entwicklungsprozess zu entscheiden, der für ein Team geeignet ist. Azure DevOps bietet verschiedene Prozessvorlagen. Teams, die nach verschiedenen Basisstrukturen für ihre Planung suchen, können diese Vorlagen als Ausgangspunkte verwenden. Informationen zum Auswählen einer Prozessvorlage, die am besten zur Kultur und zu den Zielen eines Teams passt, finden Sie unter Prozessflow oder Prozessvorlage für die Arbeit in Azure Boards auswählen.

Wenn Organisationen wachsen, kann es eine Herausforderung sein, diszipliniert zu bleiben. Erfahren Sie mehr über die Skalierung von Agile auf große Teams.