Beratung für Agile Software-Entwicklung
Im Visier (Teil 3)
Online-Artikel

Horst Franzke
Gartenstr.23 
D-84508 Burgkirchen 
+49 (8679) 914 795 
h.franzke@t-online.de

Sie sind hier: Startseite > Übersicht > Artikel Praxis | Artikel | Services | Bücherecke | Software | WWW | Über mich | Änderungen | Impressum

Einleitung

Dies ist Teil 3 der Artikel-Serie "Im Visier": anhand einiger Beispiele aus meinem aktuellen Arbeitsumfeld möchte ich Ihnen zeigen, welche Möglichkeiten Agile Projekt-Teams in den verschiedenen Abschnitten ihrer Projekte nutzen, um das Ziel immer im Visier zu haben.

Bisher ist zum Thema erschienen:

  • Teil 1: Projekt-Start, Projekt-Plan, Release-Plan;
    wie Agile Teams gemeinsam(!) schlanke Pläne für ihr Projekt erstellen und mit dem Kunden abstimmen;
  • Teil 2: Die Projekt-Wand;
    die Projekt-Wand dient dem Team als zentrales Navigations-System: sie zeigt ein überschaubares (=nahes) Zwischen-Ziel und den aktuellen Bearbeitungs-Status;

Im Teil 3 geht es nun darum, neben der Bewegung im Projekt vor allem den Fortschritt sichtbar zu machen: nach innen wie auch nach außen.

(für Ihre Rückmeldung zu diesem Artikel erreichen Sie mich immer per Email an h.franzke@t-online.de)

Seitenanfang

Kurzer Rückblick

In Teil 1 und Teil 2 wurden 3 wichtige Elemente beschrieben, mit denen das Agile Team die Richtung im Projekt regelmäßig überprüft und ggf. anpaßt (Release-Plan, Iterations-Plan) und wie der aktuelle Bearbeitungs-Status im Projekt-Team sichtbar gemacht wird (Projekt-Wand).

Nun wollen wir uns einmal ansehen, wir das Team diese Elemente mit einfachen Mitteln zu einem brauchbaren "Navigations-System" ausbaut, damit sie das Ziel (= Projekt-Erfolg = zufriedener Kunde) fest im Visier behält.

Seitenanfang

Bewegung

Die Projekt-Wand hat uns bereits gezeigt, daß im Projekt "etwas" erreicht wird: User-Story- und Task-Karten wandern über die Wand und landen nacheinander im "Ziel-Bereich" auf der Wand.

Ja, es bewegt sich etwas ... und diese Bewegung können wir sehr(!) einfach auf dem Iterations-Plan festhalten, der ebenso gut sichtbar im Projekt-Raum hängt (siehe Abbildung 1):

Abb. 1: Iterations-Plan mit Markierungen;
Iterations-Plan mit Markierungen;

HINWEISE:

  • sobald eine Task-Karte von den Entwicklern als erledigt abgehakt wird, markieren sie auch alle dazugehörigen Task-Punkte auf dem Iterations-Plan (z.B. grün);
  • die (grünen) Markierungen auf dem Plan wachsen in der Regel von unten nach oben, da die Tasks bereits in der "richtigen" Reihenfolge notiert wurden;
  • es gibt per Definition keine teilweise erfüllten Tasks: d.h. es werden nur alle Punkte einer Task markiert oder keine;

Aber aufgepaßt:
was wir hier als wachsende (grüne) Markierungen sehen, ist genau genommen "nur" Bewegung! Die Tasks wurden von den Entwicklern definiert und mittels Task-Punkten geschätzt; sie stellen aber für sich nicht unbedingt etwas dar, das einem Kunden/Anwender (direkten) Nutzen bringt; nur bei wachsendem "Nutzen" wird ein Kunde auch von "Fortschritt" sprechen.

Bitte nicht nervös werden: ein Projekt-Mitglied sagte einmal "ohne Bewegung gibt es keinen Fortschritt". Gut, Bewegung sehen wir nun schon, also weiter ...

Seitenanfang

Geschwindigkeit

Als nächstes wollen wir uns diese Bewegung unter dem Aspekt "Geschwindigkeit" etwas genauer ansehen:

  • wie viel Aufwand hat das Team denn in diese Bewegung investiert?
  • liegen wir damit im Bereich unserer Schätzungen?
  • oder kündigt sich gar ein Problem an?

In meinen agilen Teams verwenden wir sog. "Velocity-Charts", um Bewegung und Aufwand in Relation zueinander zu setzen (siehe Abbildung 2):

Abb. 2: Beispiel, Velocity-Chart;
Beispiel, Velocity-Chart;

HINWEISE:

  • die Verwendung des englischen Begriffs "Velocity" soll etwas vom Begriff "Geschwindigkeit" ablenken: es geht ja nicht wirklich um die Messung der Geschwindigkeit!!!
  • was wir eigentlich suchen, ist eine bestimmte Art von "Feedback", das wir für die Entscheidungen bzgl. unserer nächsten Schritte nutzen!
  • wichtig ist, daß alle im Projekt wissen, daß mit diesem Chart nicht Leistung beurteilt wird; jeder einzelne muß lernen, auf gut/schlecht-Aussagen zu verzichten: es gibt kein "schnell" oder "langsam", sondern nur "so ist es"; ich weiß, daß das schwierig klingt; aber man muß unbedingt vermeiden, daß sich die Entwickler unsicher oder gar bedroht fühlen und damit "nur" versuchen, möglichst nahe an der (schwarzen) Prognose-Linie zu liegen;
  • jeweils zu Beginn des täglichen Standup-Meetings am Morgen wird das Chart vom sog. "Tracker der Woche" (=rotierende Rolle) aktualisiert; das bietet auch eine gute Gelegenheit, sich kurz über mögliche Erkenntnisse auszutauschen und ggf. sofort zu reagieren;
  • nur komplett abgeschlossene Tasks werden gezählt;
  • Tasks, die man in der Iterations-Planung vergessen hatte und die sozusagen "zusätzlich" bearbeitet werden müssen, werden nicht(!) berücksichtigt; dieser Aufwand ist ein Beispiel für das Delta zwischen "idealer Schätzung" und "realem Aufwand";

Soviel zu "Bewegung" und Geschwindigkeit". Aber wir wissen: nicht jede Bewegung bedeutet auch "Fortschritt" ...

Seitenanfang

Fortschritt im Release

So, nun werde ich wohl erst einmal "Fortschritt" definieren müssen, bevor wir ihn beobachten.

"Fortschritt" in einem Software-Projekt kann letztendlich nur aus der Perspektive eines Kunden/Anwenders beurteilt werden: "wie entwickeln sich die Leistungs-Merkmale des Software-Systems, die ich definiert habe?".

In Anlehnung an Ron Jeffries Idee der "Running Tested Features (RTF's)" [01] können wir zum Thema "Fortschritt" die Entwicklung der User Stories im Release-Plan verfolgen (siehe Abbildung 3):

Abb. 3: Release-Plan mit Markierungen;
Release-Plan mit Markierungen;

HINWEISE:

  • eine "User Story" muß etwas sein, das der Kunde/Anwender begutachten kann; diese Forderung kann Schwierigkeiten bereiten, wenn man größere "technische" Arbeiten erledigen muß (z.B. Infrastruktur, Datenbanken oder ein "Spike") und man die Raster für die Bewertung der User Stories sehr klein gewählt hat (etwa 1, 2 oder 3 ideale Tage); in einem solchen Fall hilft nur, die Dauer der User Story ausnahmsweise deutlich höher anzusetzen;
  • die Punkte einer User Story werden von den Entwicklern sofort im Plan markiert, sobald
    - alle automatisierten Unit Tests erfüllt sind und
    - alle automatisierten Abnahme Tests erfüllt sind und
    - die Story dem Kunden/Anwender erfolgreich demonstriert ist und
    - keinerlei Restarbeiten bzgl. dieser Story mehr notwendig sind;
  • es gibt per Definition keine teilweise erfüllten Stories; d.h. es werden alle Punkte einer Story markiert oder keine;
  • um möglichen Einwänden vorzubeugen: ja, diese Messung ist eine Annäherung an den Fortschritt aus Kunden-Sicht, da wir nicht so etwas wie "Earned Value"[02] aufzeichnen; der Grund dafür liegt aber eher darin begründet, daß wir meist vom Kunden keine Information über den "Wert" bestimmter User Stories erhalten;

Die wachsenden Markierungen im Release-Plan (Abbildung 3) könnte man als "Mikro"-Fortschritt bezeichnen: sozusagen "Fortschritt auf einer Teilstrecke" im Projekt. Wie man Fortschritt im gesamten Projekt einfach sichtbar machen kann, soll der nächste Abschnitt zeigen.

Seitenanfang

Fortschritt im Projekt

Wie gesagt: tatsächlichen Fortschritt im Projekt kann man nur nach den Regeln der Kunde/Anwender messen: "wie entwickeln sich die geforderten Leistungs-Merkmale?"

Bei meinen Teams benutzen wir dazu wieder die (gewichteten) User Stories, die insgesamt für das Projekt definiert sind. Wir pflegen zu diesem Zweck ein kleines Chart, das wir "User Story Chart" nennen (siehe Abbildung 4):

Abb. 4: Beispiel, User Story Chart;
Beispiel, User Story Chart;

HINWEISE:

  • Fortschritt in unserem Sinne wird angezeigt durch das Wachsen der grünen Balken;
  • nach meiner Erfahrung machen Kunden von sich aus nach 2 oder 3 Iterationen "Lineal-Prognosen": sie nehmen z.B. ein Lineal als Ersatz für eine explizite Trend-Linie im Chart und beantworten sich selbst die Frage, wann alle "grün" sein wird;
  • im Chart erkennt man, daß im Lauf des Projekts zusätzliche Anforderungen definiert wurden: die Gesamthöhe der Balken ist angestiegen;
  • das Chart zeigt ab Iteration 3.1 einen dunkelgrauen Teil-Balken: damit werden sog. "überflüssige" (obsolete) User Stories erfaßt; dazu kommt es, wenn Kunden/Anwender beim Benutzen der eingesetzten Teil-Systeme (Releases) feststellen, daß sie einmal definierte Anforderungen nicht mehr benötigen; diese Erkenntnis kann aber nur durch tatsächliches Benutzen des Systems entstehen;
  • eine letzte Beobachtung: das Anwachsen der grünen Balken (=Fortschritt) erfolgt nahezu linear und die Steigung für dieses Anwachsen ist bereits sehr früh im Projekt zu erkennen; ich nenne das "Charakteristik des Projekts" und weise auch darauf hin, daß "steile" oder "flache" Anstiege für sich allein betrachtet nicht zur Einschätzung eines Projekts ausreichen (oder würden Sie die Durchschnitts-Geschwindigkeit einer Autobahnfahrt um Mitternacht mit der einer Fahrt über einen Alpen-Paß in der Haupt-Urlaubszeit vergleichen?);
  • (eigentlich würde man aufgrund von "Ständiger Verbesserung" einen Anstieg der Trendlinie erwarten; meine Beobachtung ist, das bis zu dieser Dauer des Projekts die Verbesserungen beim Erstellen und Bereitstellen der System-Erweiterungen durch den steigenden Aufwand für die tatsächlichen Lieferungen und den Aufwand für die Betreuung realer Anwender kompensiert werden;

Diese "User Story Chart" wird als einziges der gezeigten Monitor- oder Navigations-Elemente (Release-Plan, Iterations-Plan, Projekt-Wand, Velocity-Chart, User-Story-Chart) elektronisch gepflegt. Der Grund dafür: es dient auch der offiziellen Status-Meldung an den Kunden; zu diesem Zweck ist es immer über die Homepage zum jeweiligen Projekt verfügbar. (ein kleines Perl-Skript und eine einfache Text-Tabelle mit den Beschriftungen und den Werten lassen den Aufwand dafür gegen Null gehen)

Damit wäre ich eigentlich mit meiner kleinen Artikel-Serie "Im Visier" am Ende, wenn da nicht noch diese mulmige Gefühl wäre ...

Seitenanfang

Warnung!

Ja, mein mulmiges Gefühl ... es hat damit zu tun, daß die beschriebenen Elemente nicht zum Selbstzweck dienen: sind Mittel zum Zweck und ein Projekt-Team wird sicher allein durch die Verwendung dieser Elemente nicht(!) zu einem Agilen Team! Dazu braucht es wohl vor allem ein entsprechendes Werte-System und die dazugehörige Grund-Einstellung aller Team-Mitglieder; darauf einzugehen würde aber diese Artikel-Serie sprengen.

Es gibt viele Diskussionen zu diesem Punkt und ich möchte stellvertretend Ron Jeffries ([03]) aus einem seiner Beiträge im Forum "extremeprogramming"([04]) zitieren:
"I would suggest that "are we doing XP" is not a good question to ask ourselves. A better question would be "are we successfully delivering software to our customer every week, which is fully integrated and tested, and are we producing that software at a stead or increasing rate of speed?" If we aren't, we're not doing very well, no matter what we call the process."([05]).

D.h.: unser oberstes Ziel muß immer sein, den Kunden mit regelmäßigen Lieferungen zufrieden zu stellen. Falsch wäre es, sich nur auf bestimmte Dinge oder Aktivitäten im Prozeß zu konzentrieren (wie z.B. das Führen von Plänen und Charts).

Seitenanfang

Zusammenfassung

Anhand einiger Beispiele aus meinem aktuellen Arbeitsumfeld wollte ich Ihnen zeigen, welche Möglichkeiten Agile Projekt-Teams in den verschiedenen Abschnitten ihrer Projekte nutzen, um das Projekt-Ziel immer im Visier zu behalten.

Wichtig dabei erscheint mir, daß alle Beteiligten aktiv eingebunden sind: die Software-Entwickler (und damit fasse ich alle IT-Rollen im Projekt zusammen), die Kunden und die Anwender.

Die gezeigten Elemente erfordern nach meiner Erfahrung einen sehr geringen Aufwand für Erstellung, Pflege und Anwendung und sind daher gut geeignet für schnelles Feedback zum Projekt. Gemeinsam ist allen das Prinzip der "Big Visible Charts"([06] und [07]) für unmittelbares Feedback an das Projekt-Team (vor allem die Entwickler).

Damit wird ein strenger Fokus von allen auf die wichtigen Aufgaben unterstützt. Dieser Fokus hilft Verschwendung im Projekt stark zu reduzieren.

Ich freue mich über jede Rückmeldung (egal ob Anregung, Ergänzung, Kritik oder einfach Start einer Diskussion ...). Sie erreichen mich immer per Email an h.franzke@t-online.de.

Seitenanfang

Verweise

Folgende Quellen wurden zum Teil zitiert bzw. werden empfohlen zur Vertiefung und für weiterführende Informationen:

[01] Ron Jeffries:
A Metric Leading to Agility;
 
[02] Alistair Cockburn
Earned-Value and Burn Charts;
 
[03] Ron Jeffries
www.xprogramming.com;
 
[04] Yahoo!-Forum
extremeprogramming;
 
[05] Yahoo!-Forum "extremeprogramming"
Beitrag 109322;
 
[06] Big Visible Chart
http://www.xprogramming.com/xpmag/BigVisibleCharts.htm;
Ron Jeffries' Galerie mit Beispielen;
 
[07] Big Visible Charts
http://www.bigvisiblecharts.com;
 

Seitenanfang

Copyright 2004 - 2007, Horst Franzke Impressum Last Page Update: 18-Sep-2005 (r-5-0-1)