In der Softwareentwicklung gibt es sowohl für den Auftragnehmer als auch für den Kunden zwei Arten, Softwareprojekte abzuwickeln: Das Wasserfallmodell mit starren Prozessen im Anforderungsmanagement und der agile Ansatz mit sehr flexiblen Strukturen, der Änderungen und neue Anforderungen im Projektverlauf effektiver und schneller abwickelt als das herkömmliche Wasserfallmodell. Natürlich ist auch je nach Projektmodell die Kostenstruktur und die Form der Zusammenarbeit unterschiedlich. Wird nach dem Wasserfallmodell entwickelt, ist ein detailliertes Pflichtenheft mit einem Festpreisvertrag meist die Regel.
Beim Agilen Entwicklungsmodell jedoch ist es nur schwer bis gar unmöglich einen Festpreis für das gesamte Projekt von Beginn an zu definieren. Klar ist, dass das Wasserfallmodell zu Projektbeginn "kundenfreundlicher" ist, da die Kosten für den Projektabschluss dem Kunde bekannt sind. Allerdings kann dieses Modell für das Entwicklerteam zum Nachteil werden, wenn Anforderungen des Kunden nicht exakt definiert werden und Features auf Grund von Mißverständnissen in der Planung ausgelassen oder auf Kosten der Entwickler zusätzlich ergänzt werden müssen. Wie man beide Problem bestmöglich unter ein Dach bekommt, möchte ich in diesem Beitrag zeigen.
Für beide Parteien (Kunde und Auftragnehmer) wäre es sicher die schönste Lösung, wenn ein Agiler Projektverlauf zu einem Festpreis abgewickelt werden könnte. Da sich im agilen Ansatz jedoch beide Parteinen einem Lernprozess über das eigene Projekt unterziehen, sind zu Beginn nicht alle Anforderungen bekannt. Eine oft angewendete Methode ist es, Anfroderungen, die dem Kunden zu Projektbeginn selbst noch nicht bekannt waren als selbstverständlich anzusehen und diese auf Kosten der Entwickler implementieren zu lassen. Natürlich ist es Sache des Auftragnehmers, diese vorgehensweise zu akzeptieren und sie sollte somit zu Projektbeginn klar und deutlich vereinbart oder ausgeschlossen werden. So können auch die Kosten und der benötigte Zeitrahmen nicht von Anfang an feststehen und als Vertragsgegenstand diehnen. Der agile Ansatz bedeutet für beide Seiten (Kunde und Entwickler) soviel wie "Wir wissen nichts über den Projektverlauf aber geben unser Bestes diesen wärend des Projektes gemeinsam zu erlernen und zu erforschen." Der Vorteil für die Entwickler bei der agilen Softwareentwicklung liegt ganz klar in der Kostendeckung. Jede Arbeitsstunde wird bezahlt. Es können keine auflaufenden Kosten entstehen, die das Team in Zeit- und Kostendruck bringen und dadurch die Qualität der Software in Mitleidenschaft ziehen.
Projektablauf und Sicherheit für den Kunden
Wie schafft man es nun, das Projekt in einen Rahmen zu lenken, der für beide Parteien akzeptabel und zufriedenstellend ist? Ganz einfach: Es werden jeweils einzelne "Meilensteine" definiert, die der Reihe nach die wichtigsten Anforderungen des Kunden an die Software implementieren. Nach jedem Meilenstein entsteht ein Stück einsetzbare Software. Jeder Meilenstein wird geplant und vom gesamten Entwicklerteam im Aufwand geschätzt. Dieser Vorgang der Aufwandschätzung sollte transparent sein und in Anwesenheit des Kunden stattfinden. Dieses Vorgehen schafft Vertrauen und gibt dem Kunden Einsicht in die Kostenkalkulation. Ist der Meilenstein beendet, werden die Kosten abgerechnet. Der Kunde bekommt die erstellte Software ausgeliefert und kann mit dieser testen und arbeiten. Ist der Kunde nicht mit der Arbeit des Teams zufrieden, kann dieser den Auftrag nach jedem Meilenstein kündigen und zu einem anderen Auftragnehmer wechseln. Je kürzer die einzelnen Meilensteine, desto geringer das Risiko für den Auftraggeber Geld an ein unprofessionell arbeitendes Entwicklerteam zu verlieren.
Es werden zu Beginn des Projektes in der Planungsphase Features des Kunden gesammelt. Diese werden nach Priorität geordnet. Der Kunde bestimmt, welche Anforderungen (Features) ihm am wichtigsten sind und wie die Reihenfolge der Implementierung sein soll. Nach jedem Meilenstein hat der Kunde ein Stück funktionsfähige Software die er umgehend bezahlt. Da das Team den Auftrag keines Falls verlieren möchte, wir es in jeder Entwicklungsphase bemüht sein, bestmögliche Ergebnisse abzuliefern.
Neben dem Risiko für das Team, zu viel Arbeit für wenig Geld in kürzester Zeit leisten zu müssen, wird auch der Fall ausgeschlossen, dass die Entwickler Arbeit für 20 Std. verkaufen, die in der Umsetzung tatsächlich nur 2 Std. gedauert hat. Somit ist der agile Entwicklungsansatz eine faire Angelegenheit für beide Parteien eines Softwareprojektes. Das Risiko, dass die Zukunft des Projektverlaufes von niemandem vorhersehbar ist, wird somit auf beide Parteien verteilt.
Es ist natürlich möglich, ein agil entwickeltes Softwareprojekt zu einem festen Preis abzuwickeln. Allerdings ist es nicht möglich, neben dem festen Preis auch einen festen Zeitrahmen und eine feste Anforderungsliste zu vereinbaren. Es wird mit einem festen Preis so lange gearbeitet, bis das Budget aufgebraucht ist. Danach ist ein Stück einsatzbereite Softweare entstanden. Diese Software hat auf jeden Fall die vom Kunden als wichtigste Features gekennzeichnete Anforderungen implementiert. Ist dies nach Vereinbarung nicht der Fall, ist der Meilenstein und damit womöglich das Projekt gescheitert und der Kunde hat das Recht, die weiteren Teile seines Projektes an ein anderes Entwicklerteam zu vergeben.
Vertrauen und langfristige Geschäftsbeziehungen als Basis
Es ist selbstverständlich, dass diese Art der agilen Zusammenarbeit nur dann erfolgreich zustande kommen kann, wenn sowohl der Kunde als auch der Auftragnehmer gegenseitiges Vertrauen besitzen und an einer langfristigen Geschäftsbeziehung interessiert sind. Es ist unumgänglich, in jeder Phase des Projektes kooperativ zusammenzuarbeiten, denn beide Parteien sind an einem erfolgreichen Projekt interessiert. Werden hingegen zu viele Features in zu kurzer Zeit zu einem zu geringen Preis gefordert, leidet die Qualität der Software was dem Projekt nachhaltig schadet. Je früher der Kunde ein Stück software mit für Ihn wichtigen Features erhällt, desto schneller kann er das für den weiteren Projektverlauf erforderliche Feedback an das Entwicklerteam weitergeben. Nur durch diese enge Zusammenarbeit mit kurzen Entwiicklungszyklen können Softwareprojekte für beide Parteien ein Erfolg werden.
Weitere Quellen und Informationen zur agilen Softwareentwicklung in englischer Sprache finden Sie unter folgenden Links:
- 10 Contracts for your next Agile Software Project Agile Software Development
- Fixed Price Experience.pdf
- Fixed-Price contracts in an agile organization
- Scrum and fixed price contracts



Kommentar hinzufügen