06.07.2018

Non-Functional Requirements ....mind this gap!

06.07.2018

Non-Functional Requirements ....mind this gap!

Un elemento importante quando si devono prendere decisioni che riguardano un software sono i non-functional requirements detti anche NFR. Mentre un requisito funzionale serve per definire il comportamento di un software (brutalmente definire il cosa deve fare) un NFR serve per definire come valutare l'operato di un software. Potete trovare un elenco (non completo) di NFR qui, tra questi compaiono performance, testabilità, accessibilità, etc. Tenere in considerazione gli NFR è fondamentale per definire l'architettura di un'applicazione in maniera consapevole. Anche la scelta dei framework e delle librerie da utilizzare rientra nelle scelte fortemente influenzate dagli NFR. 

Proprio per facilitarci in questa scelta abbiamo ideato un tool che ci permette di tracciare quali sono gli NFR più importanti, da utilizzare durante la nostra discovery. Il nome di questo tool è Framework Compass Chart.

Come compilare un Framework Compass Chart

Il primo step è quello di scegliere gli NFR importanti per il progetto, cercando di sceglierne un numero che va da un minimo di 4 ad un massimo di 6. A questo punto si posizionano gli NFR su di un grafico a radar come il seguente. Una cosa importante da segnalare è che la compilazione del grafico viene fatta da tutto il team, compreso il cliente, e non solo dal reparto tecnico.

Grafico Vuoto

Il secondo step è quello di dare un voto da 1 a 5 per ognuno degli NFR selezionati. Qui la tecnica da utilizzare è la stessa del Planning Poker. Tutti i membri del team votano contemporaneamente, ed i membri che hanno dato il voto più alto o più basso prendono la parola giustificando il loro voto; il processo quindi si ripete finché non si ottiene l'unanimità. Una volta ottenuti i valori li si riporta sul grafico, ottenendo un risultato simile al seguente:

Grafico Compilato

Il nome Framework Compass Chart non è casuale. Va infatti utilizzato come "bussola" durante le discussioni del team tecnico. Utilizzandolo abbiamo notato un maggiore allineamento durante le discussioni, evitando incomprensioni causate da cose che vengono date per scontato.

L'importanza dei tradeoff

Questo grafico aiuta anche a ricordare che ogni scelta tecnologica ha sempre un tradeoff. Scegliere il framework più testabile potrebbe portare a rinunciare ad un po' di velocity e viceversa. Questo argomento può essere molto delicato da affrontare in un team di sviluppatori. A tal proposito mi piace ricordare questa citazione: 

Developers understand the benefits of everything and the tradeoffs of nothing! — Rich Hickey

Proprio visualizzare quali sono gli NFR e la loro importanza aiuta a trovare il giusto equilibrio tra i benefici dei framework che utilizziamo ed i loro tradeoff. Se volete provare a creare un Framework Compass Chart, stiamo sviluppando un side project chiamato "Make up your mind": piccola suite di tool per il decision making utilizzabili da web. Qui trovate una demo, mentre il codice è disponibile su GitHub .

Appuntamento a Vienna

Il prossimo Settembre sarò ospite di ViennaJS, user group dedicato al JavaScript attivo nella capitale austriaca, proprio con un talk dedicato a questo tool. Sarà un'ottima occasione di parlare di NFR e di scelte tecnologiche, argomenti che oggi mi stanno particolarmente a cuore. Sarà l'occasione per testare le nostre idee con una community nuova e, perché no, assaggiare l'originale Sachertorte.