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.
- Adresse hat eine Hausnummer und eine Postleitzahl
- Postleitzahl ist gültiges Format
- Postleitzahlensuche mit externer API erfolgreich
- Postleitzahl ist eine geografische Postleitzahl
- Die Adresse wird mit dem Kreditkartenanbieter usw. usw. validiert
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.