In un mondo ideale, i requisiti devono essere il più completi possibile e non ci sarebbe alcuna deviazione dalle aspettative, poiché tutte le aspettative sarebbero tradotte in requisiti.
Nel mondo reale, d'altra parte, i requisiti sono spesso incompleti, il che lascia spazio a aspettative non scritte. Esempi:
-
Un'applicazione impiega dieci minuti per eseguire il compito più semplice, rendendolo totalmente inutilizzabile (vedere la risposta di David Schwartz sopra).
-
Un'applicazione ha pulsanti blu, mentre lo stakeholder odia il blu e il suo colore preferito è il giallo.
-
Tutte le password dell'utente sono archiviate in testo normale e mostrate a tutti coloro che eseguono la procedura "Password dimenticata".
-
Il design visivo fa schifo.
-
L'applicazione invia informazioni sensibili allo sviluppatore. Lo sviluppatore ha anche un accesso backdoor all'applicazione, permettendogli di fare quello che vuole.
Hai notato che alcune aspettative sono tradotte molto facilmente in requisiti . Ad esempio, il primo può essere verificato con un semplice requisito non funzionale relativo alle prestazioni:
The loading of [...] performs 85% of the time below 500 ms. when tested on machine with the performances specified in appendix G part 2 and the load below 15% for the CPU, below 40% for memory and no active R/W disk operations.
Gli altri non hanno bisogno di uno, ma di diversi requisiti . Ad esempio, il terzo non può essere espresso come:
The system is secure.
o
Passwords are stored in a secure way.
poiché entrambi non sono i requisiti: non sono abbastanza precisi e sono soggetti a interpretazione; non possono essere testati oggettivamente. Ciò significa che è necessario un requisito relativo all'algoritmo di hashing e diversi requisiti su come la procedura "Forgot my password" funziona generando una password con un generatore di numeri pseudo-casuali crittograficamente sicuro, quindi inviandolo via email.
Inoltre, alcune aspettative sono vicine all'obiettività di altre. Almeno, molte persone sarebbero d'accordo sul fatto che il quinto esempio illustra qualcosa di dannoso: uno sviluppatore non deve avere un accesso completo alle informazioni sensibili , specialmente quando non lavora più al progetto. Lo stesso non è vero per il punto 4, e ancora di più per il punto 2: il colore preferito è qualcosa di personale e non può essere una ragionevole aspettativa non scritta per un progetto.
L'obiettività risponde alla tua domanda "[Il] stakeholder potrebbe vedere ovunque un bug come si aspettava che fosse così o così ... Come posso davvero saperlo?":
-
Se la maggior parte delle persone ha la stessa aspettativa per lo stesso prodotto, allora potresti voler implementare l'aspettativa. Se hai salvato tutte le password in testo semplice, sta a te correggere questo e per sostenere il costo delle conseguenze. Se, d'altra parte, li hai hash con SHA512, ma non hai usato il sale, lo stakeholder non sarebbe stato in grado di dichiararlo come un bug solo perché si aspettava che fosse usato PBKDF2.
-
Se diverse persone hanno opinioni diverse, lo stakeholder dovrebbe aver scritto requisiti più completi , dal momento che non è possibile conoscere il gusto dello stakeholder.
Nota: ricorda di fare la differenza tra aspettative di buon senso e aspettative di pratica comune .
Alcuni requisiti sono spesso omessi perché coprono una pratica comune, prevista da qualsiasi sviluppatore decente. Deviando da quelle pratiche, giustificandolo dal fatto che non ci sono requisiti, sarebbe poco professionale. Ad esempio, non vedo la necessità di specificare che un sito Web non deve avere SQL Injection, a meno che non lavori con programmatori molto inesperti.
Perché questi requisiti sono omessi? Perché sarebbe costoso descrivere tutto. Dobbiamo dire che un'applicazione web dovrebbe usare HTTP? Dobbiamo dire che deve usare un database? O che non si salvano file di lunghezza 1 GB in un RDBMS, a meno che non si usi la funzionalità FILESTREAM di Microsoft SQL Server?
-
Esempio di aspettativa di buon senso: "Un sito web dovrebbe essere accessibile da qualsiasi luogo, non solo da localhost". Beh, sì, questo è quello che i siti web sono per.
-
Esempio di un'aspettativa pratica comune: "Un sito web deve utilizzare HTML 4, HTML 5 o XHTML." Infatti, scritti da zero, i siti HTML 3 sono piuttosto rari quei giorni.