Angenommen, Sie haben eine Validierungs-Engine, die 100 Regeln abdecken muss, um nützlich zu sein.
Nehmen wir außerdem an, dass das Team nur etwa 10 Regeln pro Iteration liefern kann.
Wie würden Sie vorgehen, um am Ende der ersten Iteration ein "potenziell freisetzbares Produktinkrement" zu erstellen, wenn der Regelengine noch 90 der Kernregeln fehlen würden?
Würden Sie zum Beispiel einen vorübergehenden Fehler / eine Warnung hinzufügen, die immer ausgelöst wird, wenn nicht alle Regeln implementiert wurden?
Für den Kontext bearbeiten: Ich entwickle Middleware für einen komplexen Geschäftsprozess mit vielen älteren Anwendungsfällen, die einen großen Monolithen replizieren und ersetzen sollen. Es ist schwierig, ohne 100% ige Abdeckung live zu gehen, da wir nur begrenzt entscheiden oder einschränken können, welche kniffligen Anwendungsfälle in der Produktion auftreten und um Wartung gebeten werden.
Antworten:
Sie geben die ersten zehn im ersten Sprint frei. Nur weil es "potenziell freisetzbar" ist, heißt das nicht, dass es vom Kunden verwendet werden muss. Dies bedeutet lediglich, dass die vorhandene Funktionalität getestet wurde und sich wie geplant verhält und keine Regressionen im Produkt verursacht.
Stellen Sie sich "potenziell freisetzbar" als "Wir haben keine Arbeit mehr für diese Funktion zu erledigen. Der Code ist fertig und wurde ordnungsgemäß getestet und dokumentiert".
Dies ist definitiv etwas, das Sie in Betracht ziehen sollten, wenn der Kunde die Funktion tatsächlich testen soll.
quelle
Im Scrum Guide heißt es in der Definition eines Inkrements :
Wenn Sie nicht genügend Regeln ausgefüllt haben, wird der Product Owner diese wahrscheinlich nicht veröffentlichen. Das Inkrement sollte jedoch "Fertig" sein. Alle Regeln, die Sie bereits implementiert haben, sollten gemäß der Definition of Done Ihres Teams abgeschlossen sein.
Die Entscheidungen, die Sie treffen, hängen davon ab, was mit dem Inkrement getan werden soll. In Ihrer Frage erwähnen Sie das Auslösen von Ausnahmen für nicht implementierte Regeln. Dies könnte funktionieren, aber wenn jemand in Ihre Regelengine integriert wird, kann dies zu einem Overhead für ihn führen, um diesen Fehlerfall zu behandeln, insbesondere wenn er in einem fertigen Produkt nicht vorhanden ist. Oder vielleicht ist es das, was ihnen das Leben leichter machen würde. Überlegen Sie, was die Absicht des Inkrements ist, wer es möglicherweise verwendet, und gehen Sie von dort aus.
quelle
Sie haben eine Situation ohne Flucht definiert.
Ich bin sicher, dass es Situationen im wirklichen Leben gibt, in denen Sie einen Block komplizierter Funktionen haben, die nicht aufgeteilt werden können. Der übliche Fall ist jedoch, dass Sie eine Anforderung in Unteranforderungen aufteilen können, die einen gewissen Nutzen für sich haben.
Angenommen, meine Anforderung besteht darin, die Rechnungsadressen für Kreditkarten in Großbritannien zu validieren. Dies ist ziemlich kompliziert. Wir möchten so gut wie möglich sicherstellen, dass die Adresse die Wohnadresse der auf der Karte genannten Person ist, damit wir sie verfolgen können, wenn sie mit einer Zahlung in Verzug ist.
Es gibt möglicherweise Hunderte von Validierungen und Überprüfungen, die wir durchführen können, um die Zuverlässigkeit der Überprüfung zu verbessern. Jede einzelne Überprüfung ist jedoch überprüfbar und bietet eine echte Verringerung des Betrugsrisikos.
Wenn es darauf ankommt, kann der Kunde mit nur einer Teilmenge der implementierten Regeln Geld verdienen. Entweder könnte das zusätzliche Risiko akzeptiert werden, oder es könnten manuelle Umgehungen zum Workflow hinzugefügt werden, um die Situation zu entschärfen.
Scrum- und Agile-Methoden wurden unter diesem Gesichtspunkt entwickelt. Sie versuchen, einen Ausfall des gesamten Projekts zu vermeiden, indem sie sicherstellen, dass einige fehlende Anforderungen nicht dazu führen, dass die gesamte Lösung wertlos wird.
Aber sie können die Realität nicht ändern, wenn Sie eine Weltraumrakete haben, die definitiv X, Y und Z zum Fliegen benötigt. Dann brauchst du alle drei!
Der Trick besteht darin, zu erkennen, dass dies in Branchenanwendungen im Allgemeinen nicht der Fall ist, ungeachtet dessen, was der Kunde sagen könnte.
quelle