Beratung für Agile Software-Entwicklung
Teile und herrsche
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

Es sei unbestritten, daß die Aufgabe des Planens in einem (Software-) Projekt eine anspruchsvolle Aufgabe darstellt. Und je größer das abzuwickelnde Projekt ist, umso schwieriger und auch komplexer wird diese Aufgabe.

In einem klassischen ("Wasserfall"-) Projekt benötigt man per Definition einen vollständigen und korrekten Projekt-Plan für die gesamte Projektlaufzeit . Damit ist in der Regel ein signifikanter Aufwand zu leisten, bevor überhaupt die weiteren Arbeiten beginnen könne können.

Hat es der Planer erst einmal geschafft, einen Projektplan zu erzeugen, wird es meist schwierig diesen zu ändern: zu komplex sind ab einer gewissen Größe die gegenseitigen Abhängigkeiten von System-Teilen und auch den beteiligten Ressourcen. Eine Änderung wird in der Regel zu einem unangenehmen Domino-Effekt im Plan führen.

Man könnte sich aber auch überlegen, ob nicht Cäsar's Devise im Gallischen Krieg "teile und herrsche" (divide et impera) eine wirkungsvolle Alternative darstellt.

Im folgenden Artikel möchte ich zeigen, wie Agile Vorgehensweisen (z.B. Scrum oder auch eXtreme Programming) das Prinzip von "teile und herrsche" umsetzen und so Projekt-Planung vereinfachen helfen. Neben vereinfachter Planung kann man noch zusätzliche (positive) Seiteneffekte beobachten ...

Seitenanfang

Die Planungs-Falle

In jedem "Wasserfall"-Projekt (Analysieren - Designen - Ausführen - Abschließen) ist den Beteiligten klar, daß die Erstellung des Projekt-Plans eine sehr anspruchsvolle Aufgabe ist: sind alle Anforderungen bekannt und verstanden; sind alle Risiken identifiziert und entsprechend berücksichtigt; wo werden "Puffer" benötigt; sind die Abhängigkeiten zwischen den Aufgaben alle berücksichtigt; und vieles mehr.

Mit ansteigender Projektgröße nimmt auch Schwierigkeit und Komplexität dieser Aufgabe zu -- was jedem einleuchtet, der mit etwas Kombinatorik allein die möglichen Wechselbeziehungen zwischen den (Teil-) Arbeiten selbst plus denen zwischen den notwendigen Ressourcen überschlägt -- ganz zu schweigen von all den anderen Einflußfaktoren.

Abb. 1 zeigt ein stark vereinfachtes Bild von den Herausforderungen bei dieser Art von Vorab-Gesamt-Plan:

  • "alle" Anforderungen müssen bekannt sein;
  • ein detailierter Plan zeigt genau, wann was von wem erledigt werden wird;

Abb. 1: maximaler Plan -- "alles" wird bedacht und geplant;
Die volle 'Fläche' wird geplant.

Dazu ist natürlich noch folgendes zu bedenken:

  • die Art und Weise, wie diese Anforderungen erfüllt werden, muß definiert sein;
  • alle Ressourcen müssen bekannt und reserviert sein;
  • Unklarheiten müssen vorab geklärt werden;

(die letzten Sätze klingen ganz nach dem Prinzip "Vor dem Ankommen wird gewarnt" aus dem sehr lehrreichen Büchlein 'Anleitung zum Unglücklichsein' von Paul Watzlawick [01]; und wenn man so manches Projekt ansieht, könnte Watzlawick durchaus recht haben ...)

Jeder wird verstehen und akzeptieren, daß eine solche Aufgabe Zeit, Mittel und wiederum Ressourcen benötigt -- und je größer das Projekt, desto mehr davon.

Das Problem: wer es endlich geschafft hat, die Planungs-Aufgabe auf der großen Fläche in Abb. 1 zu lösen, der wird wenig Begeisterung zeigen, falls der Plan geändert werden muß:

  • solange mit der Ausführung noch nicht begonnen wurde, bedeutet eine Umplanung schlicht weg eine weitere Verzögerung des Projekt-Starts;
  • wurden die Arbeiten allerdings schon begonnen, dann haben Änderungen in der Regel Auswirkungen auf den gesamten Restplan; das bedeutet weitreichende Absprachen und Entscheidungen auch zu weit in der Zukunft liegenden Konsequenzen;

Bei Planänderungen findet man sich oftmals wieder ganz am Anfang. Und je größer das Projekt ist, desto mehr Verständnis wird man für die umfangreichen und wiederholten Planungen finden. Manchmal fühlt man sich tatsächlich an Paul Watzlawick([01]) erinnert: "Es ist besser, hoffnungsfroh zu reisen, als anzukommen."

Aber was wäre die Alternative? Versuchen wir es doch einmal mit Cäsar's Vorschlag ...

Seitenanfang

Teilen ...

Als grobes Maß für die Komplexität der Planungs-Aufgabe soll die Fläche in Abb. 1 dienen: je mehr Anforderungen einbezogen werden müssen und je weiter damit das Planungs-Ziel in der Zukunft liegt, desto größer wird die (Planungs-) Fläche; d.h. es desto komplexer ist die Planungs-Aufgabe.

Das Bild ist natürlich stark vereinfacht: Risiken, wichtige Zwischentermine, Personal- und andere Ressourcen, usw. steigern die Komplexität weiter. Aber als Näherung sollte die obige Fläche ausreichen.

Bei der gewählten Darstellung gibt es zwei Dimensionen, in denen der Planungs-Aufwand reduziert werden kann:

  • die Menge der Anforderungen, die in den Plan mit einbezogen werden;
  • die Zeitachse, d.h. die Entfernung zum Planungs-Ziel;

"Teilen" bedeutet:

der Weg zum endgültigen Projekt-Ziel wird in feste Abschnitte aufgeteilt; jeder Abschnitt liefert eine weitere Ausbaustufe (=Release) des geplanten Software-Systems an den Kunden; d.h. über eine Serie von einsatzfähigen Software-Paketen wächst das System schrittweise (inkrementell) zur endgültigen Größe heran.

Bevor man "teilen" kann, ist ein grobes Verständnis zum endgültigen Ziel bzgl. Umfang und Zeitrahmen notwendig: dazu ist eine Betrachtung "aus 10.000m Höhe" ausreichend. Damit sollte es Anwendern und Entwickler-Team möglich sein, die Größenordnung des Projekts gemeinsam abzustecken. Detail-Klärungen ("1.000m Höhe"), die den tatsächlichen Aufwand besser beschreiben, erfolgen zeitnah bei Bedarf (d.h. im jeweiligen Release).

Man konzentriert sich bei der ersten Teil-Planung darauf, welches aus der Sicht der Anwender die dringendsten Anforderungen sind; d.h. in der Regel: welche gewünschten Eigenschaften bringen dem Anwender am meisten Nutzen: Diese Eigenschaften werden mit dem Release Nr.1 ausgeliefert UND zum Einsatz gebracht (Abb. 1) .

Abb. 2: die dringendsten Anforderungen werden mit Release 1 geliefert;
Begonnen wird mit den dringenden Anforderungen.

Jedes Release hat eine fixe Dauer, die nicht verändert wird: ggf. werden in Absprache mit dem Kunden Anforderungen zusätzlich hineingenommen, oder aber in das nächste Release geschoben!

Dieses Vorgehen sorgt dafür, daß

  • der Planungs-Aufwand vor dem Projekt-Start stark begrenzt wird;
  • lauffähige Software sehr früh an den Kunden ausgeliefert wird;
  • der Kunde zu einem bestimmten Zeitpunkt auch sicher lauffähige Software geliefert bekommt;
  • Erfahrungswerte für die nächste Planung ermittelt werden; (welche tatsächlichen Schwierigkeiten beeinflussen das Projekt; tatsächliche Geschwindigkeit des Projekt-Fortschritts, etc.)

Gegen Ende des Release, wird basierend auf den konkreten Erfahrungen (bei Kunden und Entwicklern) das nächste Release geplant (sofern noch lohnende Anforderungen offen sind).

Seitenanfang

... und herrschen

Typische Zeitdauer für die Erstellung eines Release bei Agiler Vorgehensweise sind 1 bis 3 Monate, wobei der Zeitraum möglichst kurz gewählt werden soll. Durch ein solches Vorgehen kann ein wichtiges Element mit in den laufenden Planungs-Prozeß aufgenommen werden: die konkrete Erfahrung im eigenen(!) Projekt!

Der große Vorab-Gesamt-Plan in klassischen "Wasserfall"-Projekten basiert komplett auf Annahmen über das Benehmen des zukünftigen Projekts. Diese Annahmen sind bestenfalls aus den Erfahrungen in anderen(!) Projekten abgeleitet. Muß sich das Projekt auf Neuland bewegen (z.B. neues Fachgebiet oder neue Technologie), werden solche Annahmen immer schwieriger und riskanter. Viele Plan-Änderungen werden ausgelöst, weil man während des Projekts durch konkrete Erfahrung so manche Vorab-Annahme revidieren muß.

Wie in Abb. 3 skizziert, befassen sich die Releases nacheinander(d.h. Streng(!) sequentiell) mit Teil-Gruppen von Anforderungen: nach den "dringenden" Anforderungen werden die "wichtigen" geliefert, anschließend noch die "notwendigen", usw.; letztendlich entscheidet der Kunde, welche Eigenschaften noch "wertvoll" genug sind, um den weiteren Entwicklungs-Aufwand zu rechtfertigen!

Abb. 3: der Projekt-Plan ist eine Serie von Release-Plänen;
Das Projekt wird in lauffähige Releases aufgeteilt.

Bemerkenswert dabei ist:

  • der Kunde erhält möglichst früh den bestmöglichen Geschäftsnutzen (siehe auch [02]);
  • Rückmeldungen vom Kunden bzgl. eingesetzter Releases finden sofort Eingang in die laufende Planung und Arbeit;
  • Erfahrungen der Software-Entwickler finden sofort Eingang in die laufende Planung;

Eines wird in Abb. 3 deutlich: zu Projekt-Beginn ist die Aussage über den tatsächliche "Ankunft" des Projekts (wann, wo/was) sehr vage! Nur über die Serie von Releases kann sich die Prognose mehr und mehr festigen.

Was auf den ersten Blick als großer Nachteil erscheint, ist in meinen Augen nichts anders als Aufrichtigkeit: ein Agiles Projekt versucht erst gar nicht, eine x-prozentige Sicherheit bzgl. der "Ankunft" vorzutäuschen. Vorab-Gesamt-Pläne vermitteln dem Kunden den Eindruck von "Planungs-Sicherheit", da die lange Liste der Annahmen und einschränkenden Aussagen im Kleingedruckten meist übersehen werden.

Die ehrliche Aussage im Agilen Projekt: "wir können es schaffen; wir wissen aber noch nicht, wie gut; aber wir werden sehr früh im Projekt messen(!), was wir tatsächlich erreichen können."

Diese Planungs-Un-Sicherheit klingt sehr negativ (insbesondere aus Sicht von 'Finance & Controling'). Lassen Sie mich deshalb noch einen kurzen Blick auf die positiven "Seiteneffekte" Agiler Planung eingehen.

Seitenanfang

Seiteneffekte

Abb. 4 soll bei der Beschreibung einiger "Seiteneffekte" helfen:

  • im Beispiel sind die Kunden nach drei Releases mit dem erreichten Ergebnis zufrieden; anders ausgedrückt: die Arbeiten an weiteren Anforderungen haben einen zu schlechten "Return on Investment" (ROI, siehe dazu [02]));
  • alles "notwendige" ist im System enthalten; man könnte auch sagen: alles "wertvolle" ist im System enthalten;
  • es gibt ursprüngliche Anforderungen, die nicht mehr wichtig sind;
  • durch Fokusierung hat man Zeit (und Geld) gespart und das Projekt endet früher;

Abb. 4: iteratives Vorgehen (Releases) bietet Einsparpotential;
Das Projekt wird in lauffähige Releases aufgeteilt.

Folgende positiven "Seiteneffekte" beobachte ich bei Agiler Vorgehensweise bzw. bei Agiler Planung:

  • stark reduzierter Planungs-Aufwand:
    die einzelnen Release-Pläne befassen sich jeweils mit einem klaren Ausschnitt;
    dadurch reduziert sich zusätzlich die kombinatorische Komplexität;
    die sichtbare, rot schraffierte Fläche ist ein Hinweis auf die Einsparungen bei der Planungs-Arbeit gegenüber einem Vorab-Gesamt-Plan;
  • Fokusierung auf notwendige Anforderungen:
    die Kunden wissen, daß das System in einer Serie von Releases erstellt wird und daß es damit stufenweise wächst;
    damit wird es ihnen leicht gemacht, sich von dem typischen Verhalten zu lösen: grundsätzlich wesentlich mehr anfordern, als letztendlich benötigt wird;
    die Kunden können sich schrittweise auf das jeweils wichtigste konzentrieren;
  • Einsparung durch Weglassen überholter Anforderungen:
    werden die Kunden nur einmal zu Beginn des Projekts gefragt, was alles benötigt wird, dann werden sie wesentlich mehr Bedarf anmelden, als tatsächlich notwendig ist;
    meist wissen die Kunden einfach noch nicht, was sie in 6 Monaten oder in 1 Jahr genau benötigen; oder die Idee ist so neu, daß einfach noch keine Erfahrung vorhanden ist was notwendig bzw. möglich ist;
    erst gegen Ende des Projekts wird den Kunden/Anwendern klar, was sie tatsächlich benötigen; der Rest der ursprünglichen Ideen wird eben nicht umgesetzt;
  • früher Nutzen für den Kunden:
    im strengen zeitlichen Rhythmus werden die Releases bearbeitet und ausgeliefert(!);
    jedes Release ist per Definition einsatzfähig, d.h. der Kunde kann bereits ab dem ersten Release den Nutzen realisieren, der mit den verfügbaren Eigenschaften des verbunden ist;
  • Einsparungen für Prozeß zur Änderungs-Kontrolle:
    innerhalb der festen, kurzen Zeitraster der Releases sind die Chancen gering, daß sich die Ansichten und Ziele der Kunden ändern (falls doch, dann kann z.B. im 2-Wochen-Rhythmus der unterlagerten Iterationen leicht reagiert werden);
    bei jeder der regelmäßigen Release-Planungen können beide Seiten ihre konkreten Erfahrungen einbringen und den Projektkurs entsprechend korrigieren (u.a. Richtung und Geschwindigkeit);
  • Investitionsschutz für den Kunden:
    jedes Release produziert einsatzfähige Software;
    sollte ein Projekt aus welchem Grund auch immer abgebrochen werden, dann bleibt dem Kunden in jedem Fall der Nutzen der gelieferten Releases erhalten;
    (in Wasserfall-Projekten ist oft alles Investierte verloren)
  • Planungs-Sicherheit durch konkrete Erfahrung:
    das Projekt-Team (Entwickler UND Kunden) lernt den Charakter des Projekts mit jedem Release besser kennen;
    der Fortschritt wird ausschließlich durch laufende Software vor dem Kunden demonstriert;
    damit werden kontinuierlich Werte ermittelt, die die Fortschritts-Geschwindigkeit messen;
    diese Werte gehen in jede neue Release-Planung ein und verbessern so die Planungs-Aussage;
  • keine Verschwendung durch "Lager-Haltung":
    bei Vorab-Gesamt-Plänen muß "alles" bedacht, definiert, geschätzt und geplant sein, was vielleicht einmal benötigt werden könnte;
    weiter ist ein solcher Plan in der Regel so gestaltet, daß die System-Teile erst gegen Ende integriert werden und damit ein einsatzfähiges System ergeben; meist funktioniert aus Kundensicht dann eben erst "alles zusammen";
    damit ergibt sich aber eine riesige "Lager-Haltung", die eine Menge Kapital (in Form von investierter Zeit) gebunden hat; in einem solchen "Lager" findet man z.B.: Detail-Beschreibungen aller Anforderungen, auch wenn sie erst in Monaten/Jahren gelesen werden; fertige Software-Teile des Systems, die aber alleine nicht einsatzfähig sind und damit auf die Fertigstellung anderer Teile warten müssen;

Seitenanfang

Zusammenfassung

Das Konzept "teile und herrsche" kann den Planungs-Aufwand in einem Projekt erheblich reduzieren. Agile bzw. Iterative Vorgehen sind sehr gut geeignet, dieses Konzept umzusetzen. Vor allem fördern diese Vorgehen das Prinzip des "Lernens über das eigene Projekt" (siehe auch [03]), was wiederum die Planung stark positiv beeinflußt.

Durch einen wohldefinierten Prozeß wird eine Serie von Teil-Plänen erstellt, die auf den konkreten Erfahrungen und Beobachtungen im eigenen Projekt aufbauen. Damit werden die Risiken unscharfer Annahmen stark reduziert: die Planung berücksichtigt immer den tatsächlichen "Charakter" des Projekts.

Früh im Projekt werden einsatzfähige Teil-Pakete produziert, die wertvolle Rückmeldungen zurück in das Projekt generieren: der Kunde bzw. die Anwender können früh dem Entwickler-Team signalisieren, wie weit Erwartungen erfüllt sind.

Alles in allem wird Agile Planung zu geringerer Projekt-Laufzeit, reduzierten Kosten und mehr Flexibilität im Projekt führen, obwohl auf Entwicklerseite der Planungs-Streß deutlich reduziert ist.

Seitenanfang

Verweise

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

[01] Paul Watzlawick:
Anleitung zum Unglücklichsein;
(Serie Piper)
 
[02] Mark Denne, Jane Cleland-Huang:
Software by Numbers;
(Prentice Hall)
 
[03] Mary Poppendieck:
Lean Software Development, An Agile Toolkit;
(Addison-Wesley)
 

Seitenanfang

Copyright 2004 - 2007, Horst Franzke Impressum Last Page Update: 28-Okt-2004 (r-5-0-1)