Hai definito una situazione senza via di fuga.
Sono sicuro che ci sono situazioni di vita reale in cui hai un blocco di complicate funzionalità che non possono essere suddivise. Ma il solito caso è che puoi suddividere un requisito in requisiti secondari che hanno alcuni vantaggi per se stessi.
Per esempio, il mio requisito è di convalidare gli indirizzi di fatturazione della carta di credito del Regno Unito. Questo è piuttosto complicato, vogliamo garantire nel miglior modo possibile che l'indirizzo sia l'indirizzo di residenza della persona nominata sulla carta in modo tale che, in caso di default su un pagamento, possiamo inseguirli.
Ci sono potenzialmente centinaia di convalide e verifiche che possiamo fare per migliorare l'affidabilità del controllo, ma ognuna individualmente è testabile e offre una reale diminuzione del rischio di frode.
L'indirizzo - ha un numero civico e un codice postale
Il codice postale - è un formato valido
- Ricerca codice postale con API esterna ha esito positivo
Il codice postale - è un codice postale geografico
L'indirizzo - è convalidato con il fornitore della carta di credito
ecc. ecc.
Se la spinta arrivasse a spingere, il cliente sarebbe in grado di fare soldi con solo un sottoinsieme delle regole implementate. O il rischio extra potrebbe essere accettato o si potrebbe aggiungere al workflow del lavoro manuale per mitigare la situazione.
Le metodologie Scrum e Agile sono progettate tenendo presente questo. Cercano di evitare il fallimento dell'intero progetto garantendo che alcuni requisiti mancanti non causino l'inutilità dell'intera soluzione.
Ma non possono cambiare la realtà, se si dispone di un razzo spaziale che ha sicuramente bisogno di X, Y e Z per volare. Allora hai bisogno di tutti e tre!
Il trucco sta nel riconoscere che generalmente nelle applicazioni aziendali non è così, nonostante ciò che il cliente potrebbe dire.