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?
Antworten:
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.
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.
quelle
Wenn Sie sich darauf konzentrieren, das Wichtigste zuerst zu tun (was Sie glauben), wird das Projekt beendet, wenn:
quelle
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.
quelle
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?
quelle
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.
quelle
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!
quelle
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.
quelle