Adaptive Softwareentwicklung - Praktiken

Die Praktiken der adaptiven Softwareentwicklung basieren auf der Überzeugung einer kontinuierlichen Anpassung, wobei der Lebenszyklus so ausgelegt ist, dass kontinuierliche Änderungen als Norm akzeptiert werden.

Adaptive Software Development Lifecycle widmet sich:

  • Fortlaufendes Lernen
  • Ändern Sie die Ausrichtung
  • Neubewertung
  • Ein Blick in eine ungewisse Zukunft
  • Intensive Zusammenarbeit zwischen Entwicklern, Management und Kunden

Adaptive SDLC

Die adaptive Softwareentwicklung kombiniert RAD mit Best Practices für das Software-Engineering, wie z.

  • Projektinitiierung.
  • Adaptive Zyklusplanung.
  • Concurrent Component Engineering.
  • Qualitätsüberprüfung.
  • Endgültige Qualitätssicherung und Freigabe.

Die Praktiken der adaptiven Softwareentwicklung können wie folgt dargestellt werden:

Praktische Lernschleife

Wie oben dargestellt, sind die Praktiken der adaptiven Softwareentwicklung wie folgt auf die drei Phasen verteilt:

  • Spekulieren - Initiierung und Planung

    • Projektinitiierung

    • Zeitrahmen für das gesamte Projekt festlegen

    • Legen Sie die Anzahl der Iterationen fest und weisen Sie jedem eine Zeitbox zu

    • Entwickeln Sie für jede der Iterationen ein Thema oder Ziel

    • Weisen Sie jeder Iteration Features zu

  • Zusammenarbeiten - Gleichzeitige Entwicklung von Funktionen

    • Zusammenarbeit für verteilte Teams

    • Zusammenarbeit für kleinere Projekte

    • Zusammenarbeit für größere Projekte

  • Lernen - Qualitätsprüfung

    • Ergebnisqualität aus Kundensicht

    • Ergebnisqualität aus technischer Sicht

    • Die Funktionsweise des Lieferteams und der Mitglieder des Praxisteams wird genutzt

    • Der Projektstatus

Spekulieren - Initiierung und Planung

In der adaptiven Softwareentwicklung umfasst die Spekulationsphase zwei Aktivitäten:

  • Initiation
  • Planung

Speculate verfügt über fünf Methoden, die während der Initiierungs- und Planungsphase wiederholt ausgeführt werden können. Sie sind -

  • Projektinitiierung
  • Zeitrahmen für das gesamte Projekt festlegen
  • Legen Sie die Anzahl der Iterationen fest und weisen Sie jedem eine Zeitbox zu
  • Entwickeln Sie für jede der Iterationen ein Thema oder Ziel
  • Weisen Sie jeder Iteration Features zu

Projektinitiierung

Projektinitiierung beinhaltet -

  • Festlegung der Mission und Ziele des Projekts
  • Einschränkungen verstehen
  • Aufbau der Projektorganisation
  • Anforderungen identifizieren und umreißen
  • Erste Schätzungen zu Größe und Umfang
  • Identifizierung der wichtigsten Projektrisiken

Die Projektinitiierungsdaten sollten in einer vorläufigen JAD-Sitzung gesammelt werden, wobei Geschwindigkeit als Hauptaspekt betrachtet wird. Die Einführung kann in konzentrierten zwei bis fünf Tagen für kleine bis mittlere Projekte oder in zwei bis drei Wochen für größere Projekte abgeschlossen werden.

Während der JAD-Sitzungen werden die Anforderungen detailliert genug erfasst, um Merkmale zu identifizieren und einen Überblick über das Objekt, die Daten oder andere Architekturmodelle zu erhalten.

Zeitfenster für das gesamte Projekt einrichten

Der Zeitrahmen für das gesamte Projekt sollte auf der Grundlage des Umfangs, der Featureanforderungen, der Schätzungen und der Ressourcenverfügbarkeit festgelegt werden, die sich aus der Projektinitiierungsarbeit ergeben.

Wie Sie wissen, gibt das Spekulieren das Schätzen nicht auf, sondern bedeutet nur, zu akzeptieren, dass Schätzungen falsch sein können.

Iterationen und Time-Box

Legen Sie die Anzahl der Iterationen und die einzelnen Iterationslängen fest, basierend auf dem Gesamtprojektumfang und dem Grad der Unsicherheit.

Für eine kleine bis mittlere Anwendung -

  • Iterationen variieren normalerweise zwischen vier und acht Wochen.
  • Einige Projekte funktionieren am besten mit zweiwöchigen Iterationen.
  • Einige Projekte benötigen möglicherweise mehr als acht Wochen.

Wählen Sie die Zeit, basierend darauf, was für Sie funktioniert. Wenn Sie die Anzahl der Iterationen und die Länge der einzelnen Iterationen festgelegt haben, weisen Sie jeder Iteration einen Zeitplan zu.

Entwickeln Sie ein Thema oder ein Ziel

Die Teammitglieder sollten für jede Iteration ein Thema oder ein Ziel entwickeln. Dies ähnelt dem Sprintziel in Scrum. Jede Iteration sollte eine Reihe von Funktionen bereitstellen, die die Produktfunktionalität demonstrieren und das Produkt für den Kunden sichtbar machen, um eine Überprüfung und ein Feedback zu ermöglichen.

Innerhalb der Iterationen sollten die Builds möglichst täglich Arbeitsfunktionen bereitstellen, die den Integrationsprozess ermöglichen und das Produkt für das Entwicklungsteam sichtbar machen. Das Testen sollte ein fester Bestandteil der Funktionsentwicklung sein. Es sollte nicht bis zum Ende des Projekts verschoben werden.

Features zuweisen

Entwickler und Kunden sollten jeder Iteration gemeinsam Features zuweisen. Das wichtigste Kriterium für diese Funktionszuweisung ist, dass jede Iteration dem Kunden einen sichtbaren Satz von Funktionen mit beträchtlicher Funktionalität liefern muss.

Während der Zuweisung von Features zu den Iterationen -

  • Das Entwicklungsteam sollte die Feature-Schätzungen, Risiken und Abhängigkeiten ausarbeiten und diese dem Kunden zur Verfügung stellen.

  • Kunden sollten anhand der vom Entwicklungsteam bereitgestellten Informationen über die Priorisierung von Funktionen entscheiden.

Die Iterationsplanung erfolgt daher funktionsbasiert im Team mit Entwicklern und Kunden. Die Erfahrung hat gezeigt, dass diese Art der Planung das Projekt besser versteht als eine aufgabenbasierte Planung durch den Projektmanager. Darüber hinaus spiegelt die merkmalsbasierte Planung die Einzigartigkeit jedes Projekts wider.

Zusammenarbeiten ─ Gleichzeitige Entwicklung von Funktionen

In der Collaborate-Phase liegt der Fokus auf der Entwicklung. Die Kollaborationsphase umfasst zwei Aktivitäten:

  • Das Entwicklungsteam arbeitet zusammen und liefert funktionierende Software.

  • Die Projektmanager erleichtern die Zusammenarbeit und die gleichzeitige Entwicklung von Aktivitäten.

Zusammenarbeit ist ein gemeinsamer Schöpfungsakt, der das Entwicklungsteam, die Kunden und die Manager umfasst. Geteilte Schöpfung wird durch Vertrauen und Respekt gefördert.

Teams sollten zusammenarbeiten an -

  • Technische Probleme
  • Geschäftsanforderungen
  • Schnelle Entscheidungsfindung

Im Folgenden sind die für die Phase der Zusammenarbeit in der adaptiven Softwareentwicklung relevanten Vorgehensweisen aufgeführt:

  • Zusammenarbeit für verteilte Teams
  • Zusammenarbeit für kleinere Projekte
  • Zusammenarbeit für größere Projekte

Zusammenarbeit für verteilte Teams

Bei Projekten mit verteilten Teams sollte Folgendes berücksichtigt werden:

  • Unterschiedliche Allianzpartner
  • Breites Wissen
  • Die Art und Weise, wie Menschen miteinander umgehen
  • Wie sie mit Abhängigkeiten umgehen

Zusammenarbeit für kleinere Projekte

In den kleineren Projekten sollte die Zusammenarbeit mit informellen Flurchats und Whiteboards gefördert werden, wenn die Teammitglieder in physischer Nähe arbeiten, da dies als effektiv erachtet wird.

Zusammenarbeit für größere Projekte

Größere Projekte erfordern zusätzliche Vorgehensweisen, Tools für die Zusammenarbeit und die Interaktion mit Projektmanagern und sollten kontextbezogen angeordnet werden.

Lernen - Qualitätsprüfung

Die adaptive Softwareentwicklung fördert das Konzept des Experimentierens und Lernens.

Um aus den Fehlern und Experimenten zu lernen, müssen die Teammitglieder teilweise vervollständigten Code und Artefakte frühzeitig freigeben, um

  • Finde Fehler
  • Lerne von ihnen
  • Reduzieren Sie Nacharbeiten, indem Sie kleine Probleme finden, bevor sie zu großen werden

Am Ende jeder Entwicklungsiteration gibt es vier allgemeine Kategorien von Dingen, die gelernt werden müssen:

  • Ergebnisqualität aus Kundensicht
  • Ergebnisqualität aus technischer Sicht
  • Die Arbeitsweise des Zustellteams und des Praxisteams
  • Der Projektstatus

Ergebnisqualität aus Kundensicht

In den Adaptive Software Development-Projekten hat das Einholen von Kundenfeedback oberste Priorität. Die empfohlene Vorgehensweise hierfür ist eine Kundenfokusgruppe. Diese Sitzungen dienen dazu, ein Arbeitsmodell der Anwendung zu untersuchen und Änderungsanforderungen von Kunden aufzuzeichnen.

Kundenfokusgruppensitzungen sind vereinfachte Sitzungen, ähnlich wie JAD-Sitzungen, aber anstatt Anforderungen zu generieren oder Projektpläne zu definieren, dienen sie dazu, die Anwendung selbst zu überprüfen. Die Kunden geben Feedback zur funktionierenden Software, die sich aus einer Iteration ergibt.

Ergebnisqualität aus technischer Sicht

In den Projekten zur adaptiven Softwareentwicklung sollte eine regelmäßige Überprüfung der technischen Artefakte wichtig sein. Code Reviews sollten kontinuierlich durchgeführt werden. Überprüfungen anderer technischer Artefakte, z. B. der technischen Architektur, können wöchentlich oder am Ende einer Iteration durchgeführt werden.

In Projekten zur adaptiven Softwareentwicklung sollte das Team seine eigene Leistung regelmäßig überwachen. Rückblicke ermutigen die Teams, sich und ihre Arbeit im Team kennenzulernen.

Retrospektiven am Ende der Wiederholung erleichtern die regelmäßige Selbstüberprüfung der Teamleistung, z.

  • Stellen Sie fest, was nicht funktioniert.
  • Was das Team braucht, um mehr zu tun.
  • Was das Team weniger tun muss.

Der Projektstatus

Die Projektstatusüberprüfung hilft bei der Planung weiterer Arbeiten. In adaptiven Softwareentwicklungsprojekten erfolgt die Ermittlung des Projektstatus nach einem funktionsbasierten Ansatz, wobei das Ende jeder Iteration durch abgeschlossene Funktionen gekennzeichnet ist und zu einer funktionierenden Software führt.

Die Überprüfung des Projektstatus sollte Folgendes umfassen:

  • Wo ist das Projekt?
  • Wo ist das Projekt im Vergleich zu den Plänen?
  • Wo soll das Projekt sein?

Da die Pläne in den Adaptive Software Development-Projekten spekulativ sind, ist Frage 3 wichtiger als die oben gestellte Frage 2. Das heißt, das Projektteam und die Kunden müssen sich ständig fragen: "Was haben wir bisher gelernt und ändert sich dadurch unsere Perspektive, wohin wir gehen müssen?"