Kann die agile Softwareentwicklung in Projekten eingesetzt werden, die in einem Vertrag festgelegt sind?


14

Ich hatte kürzlich ein Gespräch mit einem anderen Entwickler über Agile Software Development. Während ich das Prinzip verstehe, scheint es, dass sich ständig ändernde Anforderungen das Potenzial für das Projekt schaffen, für immer weiter zu bestehen. Aber zumindest dort, wo ich arbeite, müssen Projekte abgeschlossen sein, weil es sich um einen Vertrag handelt.

Das heißt, die erste Iteration kann Monate dauern, da der Kunde für einige Projekte keine unvollständige Anwendung verwenden kann. Für einige Projekte müssen Sie, glaube ich, zuerst "erledigt" definieren, dann können Sie es in Iterationen aufteilen und Ihre Definition nach jeder Iteration verfeinern. Aber Sie müssen immer diese Definition haben.

Wenn Agile Software Development sich ändernden Anforderungen stellt, woher wissen Sie dann, wo diese enden? Wie können Sie ein Projekt budgetieren, wenn sich das Endergebnis ständig ändert?

Geht es bei Agile Software Development mehr um einen agilen Prozess als um ein agiles Produkt?


Es endet, wenn Sie tatsächlich etwas liefern müssen, das funktioniert, anstatt herumzubasteln. An diesem Punkt müssen Sie anfangen, die Struktur durchzusetzen, zu planen, Anforderungen und Fristen festzulegen und mit der Arbeit zu beginnen, anstatt herumzuspielen.
14.

Jede agile Iteration führt zu einem funktionsfähigen, verfügbaren Produkt, das der Kunde verwenden und von dem er mehr lernen kann. Dies geschieht so lange, bis sie zufrieden sind, was häufig früher als ursprünglich geplant geschieht. Dies garantiert, dass das Produkt immer funktioniert und berücksichtigt die Tatsache, dass Software nie fertig ist , sondern sich für immer weiterentwickelt oder abstirbt. Wählen Sie einfach einen Zeitpunkt aus, an dem Sie der Meinung sind, dass das Produkt gut genug ist, und hören Sie dort (vorerst) auf.
Martin Wickman

@Martin Wickman: Ich verstehe das, aber "ein lieferbares Produkt, das der Kunde verwenden kann", ist hier das Problem. In diesem Fall kann die erste Iteration Monate dauern, da der Kunde für einige Projekte keine unvollständige Anwendung verwenden kann. Für einige Projekte müssen Sie, glaube ich, zuerst "erledigt" definieren, dann können Sie es in Iterationen aufteilen und Ihre Definition nach jeder Iteration verfeinern. Aber Sie MÜSSEN IMMER diese Definition haben.
Verax,

@Verax: Das agile Manifest wurde erstellt, um Änderungen zu verwalten. Wenn sich in Ihrem Projekt nichts geändert hat, ist Agile nichts für Sie. Ende der Geschichte.
Martin Wickman

2
@Verax: Sie sollten Ihre Frage klären und mehr Kontext hinzufügen. Ihre Kommentare zeigen, dass die Frage mehr enthält. Dies zeigt sich auch daran, dass die Stimme für die Antwort zählt und dass die akzeptierte Antwort nicht mit dem eigentlichen Fragetext zusammenhängt (und sogar "aus den Kommentaren des OP ..." sagt).
Martin Wickman

Antworten:


7

Aus den Kommentaren des OP geht hervor, dass er wie ich für ein Beratungsunternehmen arbeitet, in dem wir Entwicklungsdienstleistungen für unsere Kunden erbringen Nennen Sie eine wohlbekannte, aber nie genannte Tatsache.

Agile ist nicht mit der vertraglich festgelegten Softwareentwicklung vereinbar.

  • Verträge müssen hart sein, Sie zahlen X, wir tun Y. Sie wollen X + M, Sie zahlen uns Y + (M * N)
  • Verträge MÜSSEN zufriedenstellend sein (dh nicht unbefristet), sonst handelt es sich nicht um rechtmäßige Kontakte. (Wenn ein Kontakt beteiligt ist, müssen Sie einen strengen Änderungskontrollprozess durchlaufen.)

Viele Consulting-Shops behaupten Agile, sie lügen. Sie sagen das nur, weil Agile den Status eines Modewortes erreicht hat.

Agile eignet sich am besten für die interne Entwicklung, wenn Programmierer Vollzeitbeschäftigung haben und nur wenig über Budgets gesprochen wird. Just Time Frames und Funktionen.


Wenn ich mehr darüber erfahre, komme ich zu dem gleichen Schluss. Ihr letzter Satz scheint absolut richtig zu sein. Früher habe ich für die Regierung gearbeitet, und mein Kunde war die Agentur, für die ich gearbeitet habe, und Programme mussten jahrelang gepflegt werden, solange sie von Mitarbeitern genutzt wurden. Ich kann dort agiles Arbeiten sehen. Jetzt entwickle ich eingebettete Systeme. Das Projekt endet, wenn die Maschine arbeitet (alles oder nichts). Wenn die Maschine teilweise funktioniert, kann sie nicht verkauft werden - Projekt fehlgeschlagen.
Verax

2
Eigentlich hatte ein Beratungsunternehmen, für das ich vor ein paar Jahren gearbeitet habe, tatsächlich ein Papier von einem agilen Anhänger geschrieben, in dem beschrieben wurde, wie agil in ein Festpreis-Servicemodell eingepasst werden kann.
mcottle

2
Ich muss mit dieser Antwort nicht einverstanden sein. Der Grund dafür ist, dass Sie, wenn Sie einen Vertrag haben, der nicht unbefristet ist, das Scope-Creep nicht verwalten möchten (was fast immer der Fall ist). Die Verträge, die ich sehe, beginnen mit: Sie zahlen X, wir tun Y. Sie haben dann eine Klausel, die besagt, dass jede Änderung des Geltungsbereichs mit einem zusätzlichen Preis verbunden ist. Solange Sie sich sehr früh mit der Überprüfung des Umfangs befassen (was zusätzliche Ressourcen und Zeit erfordert), können die früheren Kunden auf die Änderungen reagieren (Genehmigungen und Budget vom oberen Management einholen usw.). Dann wird der Managementprozess selbst agil.
Spoike

Dies ist nicht inkompatibel, wenn der Vertrag nicht für das Produkt (fertige Software), sondern für den Service (Schreibcode) bestimmt ist. Mit Agile können Sie abschätzen, was mit welchem ​​Budget getan wird. Wenn sich die Anforderungen ändern, muss sich auch das Budget ändern. Sie möchten eine weitere Funktion? Sie müssen weitere 500 Arbeitsstunden abschließen. Feature Creep ist auch ein Preis-Creep, der für Entwickler völlig zufriedenstellend ist, und wenn der Kunde bereit ist zu zahlen, wen sollten wir das in Frage stellen?
SF.

2
Da es agile Verträge gibt , ist diese Antwort per definitionem falsch.
Martin Wickman

20

Wenn Sie sich darauf konzentrieren, das Wichtigste zuerst zu tun (was Sie glauben), wird das Projekt beendet, wenn:

  • Sie haben das Geld ausgegeben, das Sie budgetiert haben.
  • Sie haben die Zeit abgelaufen, die Sie eingeplant haben.
  • Sie möchten nichts mehr hinzufügen oder ändern.
  • Der nächste Stapel Ihrer Änderungen mit der höchsten Priorität ist nicht die Kosten wert.

5
1. Kein Geld mehr - Der Kunde hat sein gesamtes Geld für ein unvollständiges, unbrauchbares Produkt ausgegeben. 2. Keine Zeit mehr - Der Kunde hat noch ein unvollständiges, unbrauchbares Produkt. 3. Nichts hinzuzufügen - ja richtig! 4. Lohnt sich nicht - Der Kunde hat das Projekt einfach aufgegeben. --- Was vermisse ich? Das ergibt für mich keinen Sinn.
Verax

7
Zu 1 und 2: Wenn Sie die wichtigsten Dinge zuerst tun und dann kein Geld mehr haben, haben Sie die wichtigsten Dinge, die Sie für das Geld bekommen können. Ähnlich für die Zeit. Ich gebe zu, 3 ist selten. Zu 4: Stoppen bedeutet nicht unbedingt, dass der Kunde einfach aufgegeben hat. Es könnte bedeuten, dass sie das wichtigste Zeug haben, das sie sich davon gewünscht haben, und jetzt lieber andere Dinge mit ihrem Geld machen würden. Wie entscheiden Sie, wann Sie andere Projekte beenden? Unabhängig davon, welche Kriterien Sie jetzt verwenden, sind sie für agile Projekte weiterhin verfügbar.
Dale Emery

1
Dale, danke für deine Gedanken. Ich denke, das funktioniert nur, wenn der Kunde für jede Iteration einzeln bezahlt und jede Iteration als Produkt selbst bewertet. Ich sehe nicht ein, wie dies für Produkte mit festen Kosten oder für Produkte, die alles oder nichts erfordern, gut funktionieren könnte.
Verax

5
@Verax: Es gibt kein Produkt, das "alles oder nichts" erfordert. Es gibt immer Funktionen, die nur "schön zu haben" sind, und Fehler, die eher kosmetisch als funktional sind. Ein Projekt mit festen Kosten ist ein Erfolg, wenn das alles ist, was übrig bleibt, wenn das Geld ausgeht. Agile Methoden versuchen, die Wahrscheinlichkeit dafür zu maximieren.
Michael Borgwardt

1
Natürlich ist die Änderung der Anforderungen mit Kosten verbunden. Wenn Sie in einer Iteration etwas erstellen, dann ändern Sie die Anforderungen für dieses Zeug in der nächsten, es entstehen Kosten dafür. Agile reduziert die Kosten. Es beseitigt es nicht. Wenn Sie über ein Budget verfügen, müssen Sie das Budget berücksichtigen, wenn Sie entscheiden, ob Sie eine neue Funktion hinzufügen oder eine vorhandene ändern möchten. Dabei müssen Sie stets wissen, dass Sie eine Funktion gegeneinander austauschen. Sie lernen, Prioritäten zu setzen und Prioritäten neu zu setzen, und Sie lernen die Konsequenzen.
Dale Emery

14

Sie hören auf, wenn das Unternehmen beschließt, keine weiteren Iterationen mehr durchzuführen. Sie würden hoffen, dass dies geschieht, nachdem eine erhebliche Menge an Wert geliefert wurde, bevor Sie jedoch zu weit in den Bereich sinkender Renditen vordringen.

Es sollte immer von "dem Geschäft" gesteuert werden, was auch immer dies in Ihrem Fall bedeutet. Dies kann die Geschäftsleitung eines Softwareentwicklungsgeschäfts oder der eigentliche Geschäftssponsor in einer internen Entwicklungsumgebung sein. Sie entscheiden, wann die Kosten der nächsten Iteration den Nutzen der Funktionen überwiegen, die in der nächsten Iteration verfügbar sein werden.


5

Niemals, und das ist das Schöne daran.

Das Projekt ist nie abgeschlossen . Sie haben eine weitere Veröffentlichung, einen weiteren Meilenstein erreicht, aber solange das Geld fließt, müssen Sie immer noch eine Funktion hinzufügen, eine weitere verbessern und einen weiteren Fehler beheben. Das Projekt wird sterben, wenn es nicht mehr benötigt wird, aber es wird niemals fertig werden. Im Gegensatz zum Wasserfallmodell mit Anforderung-> Projekt-> Produkt-> Ende ist dies eine Schleife, die sich für immer drehen kann - solange Sie bezahlt werden.

Nicht ein häufig genanntes Geschäftsmerkmal dieser Technologie, oder?


2
Wasserfallprojekte sind auch nie vollständig abgeschlossen, sondern werden mit größerer Wahrscheinlichkeit mit fehlenden wichtigen Funktionen ausgeliefert, was ein neues, teures Projekt erforderlich macht.
Michael Borgwardt

4

Hier gibt es ein Missverständnis: Agile ermutigt die Anforderungen des Projekts nicht, sich zu ändern. Stattdessen können Änderungen vorgenommen werden, ohne dass Arbeit verschwendet oder wichtige Entwicklungsbereiche geopfert werden müssen.

Jedes Ingenieurprojekt unterliegt vier grundlegenden Einschränkungen. Umfang, Kosten, Zeit und Qualität. Wasserfall geht davon aus, dass diese statisch sein werden. Das ist eine falsche Annahme; Eine oder mehrere dieser Änderungen ändern sich IMMER. Scope Creep, gekürzte Budgets und andere "unbekannte Unbekannte" stören IMMER ein Projekt und ändern die Einschränkungen. Waterfall antizipiert dies nicht. Wenn dies geschieht, ändert sich das Projekt auf unerwünschte Weise. Wichtige Funktionen, die noch nicht hinzugefügt wurden, gehen verloren oder sind schnell erledigt, oder die Veröffentlichung muss verschoben werden.

Im Gegensatz dazu lässt Agile zu, dass sich Einschränkungen ändern, und erwartet dies tatsächlich. Dies geschieht durch Arbeiten in kleinen, nutzbaren Stücken, die den Prioritäten des Eigentümers entsprechen, und daher sind die Stücke für den Projekteigner idealerweise sofort nützlich. Reduziert somit die Exposition gegenüber dem Unbekannten, indem in einem Zeitraum, in dem die Unbekannten groß sind, keine großen Pläne gemacht werden. Wenn sich die Zeitachse ändert, können Teams hinzugefügt werden oder weniger wichtige Funktionen "freigegeben" werden, und das System, das das Team bereits erstellt hat, bleibt davon unberührt.

Es bietet auch bessere Schätzungen des Zeit- und Kostenaufwands, um den angegebenen Umfang in der erforderlichen Qualität zu produzieren. Die Leute sind notorisch schlecht darin, große Jobs zu schätzen. Es braucht eine Menge Erfahrung und eine Menge Vorausberechnung, um es richtig zu machen. Im Gegensatz dazu beurteilen die Menschen im Allgemeinen gut, was sie an einem oder zwei Tagen oder in einer oder zwei Wochen leisten können. Dies führt schnell zu einem stabilen Zustand, in dem Sie die Zeit und die Kosten der noch zu erledigenden Arbeit auf der Grundlage Ihres historischen Tempos mit einem angemessenen Maß an Genauigkeit hochrechnen können.

Was die Definition von Endpunkten angeht, haben Sie Recht. Ein agiles Projekt kann für immer weitergehen. Dies gilt jedoch auch für das traditionelle SLDC. Der Kunde kommt oft mit mehr Geld und einer Wunschliste mit Upgrades zurück. Der Unterschied besteht darin, dass bei Betrachtung des gesamten Projekts keine klare Grenze zwischen "Analyse", "Design", "Entwicklung" und "Wartung" besteht. alles geschieht Stein für Stein, Sprint für Sprint. Wenn der Eigentümer das Projekt irgendwann als "erledigt" bezeichnen möchte, kann er dies und erhält die Summe der von ihm bezahlten "Bausteine" in einer soliden "Mauer". Es ist möglicherweise nicht so hoch oder nicht so weit wie ursprünglich geplant, aber es ist fest verankert, erledigt die Aufgabe und kann zu einem späteren Zeitpunkt mit einem Minimum an Abriss hinzugefügt werden.


Tut mir leid, aber "Es ermöglicht stattdessen Änderungen, ohne dass Arbeit verschwendet wird", ist ein schändlicher Trugschluss, der das Management davon überzeugt, wie großartig es ist. Gilt die Umgestaltung und / oder Neugestaltung des Systems zur Anpassung an unerwartete Änderungen nicht als Verschwendung von Arbeit? Im Wasserfallcamp ist das offensichtlich nicht der Fall, im agilen Camp. Wenn der Kunde nur einen Auftrag wünscht, dessen Fertigstellung 2 Wochen dauert, spielt es keine Rolle, welche Methode angewendet wird, sondern es können gute Schätzungen abgegeben werden. Was der Kunde wirklich möchte, ist, wie lange es dauert, bis ich das vollständige Produkt habe, bei dem Agilität nicht besser ist als bei anderen Schätzmethoden.
Dunk

1
Außerdem klingt es nach einer guten Sache, die der Eigentümer jederzeit erledigt anrufen kann, und was Sie erledigt haben, ist das, was er bekommt. IME, im Allgemeinen möchte der Kunde wissen, dass seine X-Dollars eine Reihe von Funktionen bereitstellen, bevor er das Geld abwirft. Ich sehe es nicht als Vorteil, dass der Kunde einen Haufen Bargeld ausgegeben und nur die Hälfte der Funktionen erhalten hat, die er erwartet hat. Ich denke , dass ein Fehler in der Entwicklung von Unternehmen Teil sein , obwohl sie etwas gebracht haben, nennen sie arbeiten ....
Dunk

2
Was ist, wenn ein Kunde einen Hausvertrag abgeschlossen hat, aber das Geld ausgegangen ist, bevor das Dach aufgesetzt wurde? Das agile Lager würde das immer noch als Erfolg bezeichnen. Niemand sonst würde es tun. insbesondere der Kunde.
Dunk

1
Bei der Schätzung schätzt das Team, was es in einem Sprint tun kann, und das wird hochgerechnet, um eine Zeitleiste für das gesamte Projekt zu erstellen. Auch hier hilft es, sowohl die Entwickler als auch den Client zu schützen. Sie können alles in einen Vertrag aufnehmen, was Sie möchten, einschließlich eines Betrags und eines Datums, die Sie nicht überschreiten dürfen. Es ist verhandelbar. Agile hilft immer noch, indem beide Seiten sehr schnell zeigen, ob die Einschränkungen machbar sind. In zwei Wochen können Teams hinzugefügt, Features entfernt oder der Zeitplan erweitert werden, wenn es nicht so aussieht, als ob es pünktlich zu Ende geht.
KeithS

1
Was wäre, wenn es in einem SLDC-Wasserfall dasselbe getan hätte? Entweder würde die Entwicklung gestoppt, und der Client könnte eine Codebasis mit schwerwiegenden Funktionslücken erhalten, oder der verbleibende Zeitplan würde auf die verbleibende Zeit beschränkt. Das beeinträchtigt IMMER die Qualität und am Ende eines solchen Projekts wird das Entwicklungsteam gebraten. Außerdem treten viele Kostenüberschreitungen auf, da ein traditioneller Wasserfall erst nach Abschluss der Entwicklung ein Produkt hervorbringt. Das schränkt die Fähigkeit des Kunden ein, zu sagen, "das ist nicht das, was ich wollte".
KeithS

1

Es endet, sobald alle Funktionen implementiert und alle Fehler behoben wurden.

Wenn die Frist festgelegt ist und die Anforderungen ebenfalls festgelegt sind. Dann ist das kein Problem. Wenn der Termin feststeht, sich aber die Anforderungen ändern, sollten Sie etwas tun, um das Projekt erfolgreich fortzusetzen.

Festpreis Teil 1, was ist so schlimm?

Festpreis Teil 2, Fix it with agile!


Es ist schwer zu wissen, wann alle Fehler behoben sind.
Martin Wickman

Vielleicht "wenn alle bekannten Fehler behoben sind, die es wert sind, behoben zu werden"?
Dan Ray

@CharithJ, deine Links sind kaputt. Sind sie noch irgendwo verfügbar? Vielen Dank.
TwainJ

1

Die große Annahme hinter agiler Entwicklung ist, dass sich die Anforderungen immer ändern, unabhängig davon, welche Methodik Sie verwenden. Jetzt können Sie natürlich ein Anforderungsdokument erstellen, einen Ausführungsplan erstellen und am Ende liefern, und es scheint, dass sich Ihre Anforderungen nicht geändert haben. Sie haben sich möglicherweise nicht in Ihrem Plan geändert, aber mit Marktveränderungen und dem besseren Verständnis Ihres und Ihres Kunden für das Produkt ändern sich die Anforderungen an das, was der Kunde wünscht. Agile kommt und schlägt einen Prozess vor, der diese Änderungen nicht nach einem festgelegten Zeitplan verbirgt, sondern auf unvermeidliche Änderungen im Prozess reagiert.

Wenn Sie damit fertig sind, wechseln Sie von der Fertigstellung eines festen Zeitplans zu dem Zeitpunkt, an dem sich Ihr Produkt an einem Ort befindet, an dem Sie einen ausreichenden Geschäftswert erzielen können, an dem Ihr Kunde die Software in ihrem aktuellen Zustand versenden und vermarkten kann. Das hängt viel mehr davon ab, wie viel Wert Sie liefern, als davon, wie Sie sich an einen Zeitplan halten.


1
Agile Befürworter gehen fälschlicherweise davon aus, dass die Entwickler in der Welt der Wasserfälle nach der Unterzeichnung eines Vertrags verschwinden und erst wieder gehört werden, wenn ein Produkt auftaucht. Die Art und Weise, wie es im wirklichen Leben funktioniert, ist, dass es eine angemessene Anzahl von Kontrollpunkten und viele Bewertungen gibt, an denen der Kunde so oft beteiligt sein kann, wie er möchte. Wenn sie die Richtung oder Entscheidungen nicht mögen, können sie Änderungen anfordern. Bis ein Produkt geliefert wird, sollte es das sein, was der Kunde wünscht, in dem Maße, in dem der Kunde sich dafür entschieden hat. Agile verbessert dies bei vielen Projekten nicht.
Dunk
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.