Durante le varie conferenze ed i vari incontri, capita (molto raramente a dire il vero) che qualcuno si ponga e ponga la seguente domanda:
“Scusate: ma il modello a Spirale non è un modello che assomiglia molto a quanto fatto con Scrum o, in generale, con le metodologie Agili incentrate sulla gestione del progetto?”
Questa domanda è da spunto per un confronto tra tali modelli di sviluppo che, nonostante presentino delle affinità, si differenziano profondamente, anche se, spesso, la confusione regna sovrana, soprattutto a causa della scarsa diffusione (e apprezzamento) del modello a Spirale stesso.
Modello a Spirale
Nella nostra analisi, partiamo proprio dal modello a Spirale, nato, principalmente, per mitigare i rischi annessi al classico modello waterfall, soprattutto in relazione alla rigidità dell’analisi dei requisiti UpFront. Come si vede dalla figura precedente, lo sviluppo è Iterativo, incentrato su quattro fasi caratterizzanti che si ripetono ad ogni loop: Determinazione degli obiettivi della fase, Identificazione e riduzione dei rischi con valutazione delle alternative, Sviluppo e verifica della fase, Pianificazione della fase successiva. La forma caratteristica del modello è dovuto alla volontà di evidenziare l’aumento del costo del progetto all’allontanarsi dal centro.
Il modello a Spirale è spesso definito anche meta-modello perché sfrutta sia il modello a cascata che quello prototipale. Qui troviamo una differenza fondamentale rispetto all’Agile: lo sviluppo non è incrementale, ma vengono sfruttati uno o più cicli basati su prototipi per dirimere il rischio e poi passare, solo successivamente, allo sviluppo vero e proprio che avviene in chiave waterfall. In pratica è come se avessimo una fase di Inception (rif. RUP e DAD) molto lunga che però, una volta completata, viene completamente congelata tramite “pesanti” documenti di progetto.
Si intuisce che la complessità del modello (e il costo) lo rende applicabile a progetti di ampia durata, almeno 18-24 mesi, e con una forte componente di rischio. Inoltre, molto effort viene speso nella gestione dei processi annessi e nella realizzazione di documentazione di dettaglio (vi dice qualcosa l’SRS?).
Vediamo, dualmente, il confronto con uno sviluppo Agile (generico, senza riferirci ad una metodologia o ad un framework specifico).
Agile Development
Lo sviluppo in chiave Agile è Iterativo ed Incrementale, basato su iterazioni/sprint brevi (tipicamente 2-4 settimane) ed è incentrato sui Valori e sui Principi del Manifesto Agile. L’aspetto fondamentale è che ad ogni iterazione viene prodotto codice funzionante e testato che entra a far parte della soluzione finale, e non prototipi come accade nel modello a Spirale.
In tale ottica la metodologia Agile adottata, per quanto prescrittiva, punta a rafforzare il Valore intrinseco del Team e a produrre sempre e solo artefatti che rappresentano a loro volta un vero Valore per il cliente: non è necessario, ad esempio, produrre una documentazione approfondita, se non richiesta, come invece prescritto dal modello a Spirale.
Al di là delle differenze evidenti, esistono comunque alcuni punti di raccordo tra il modello a Spirale e l’approccio Agile:
- In entrambi le stime (costi, tempi, ecc..) sono aggiornate ripetutamente, rendendole decisamente più attendibili;
- La gestione (possibilmente abbattimento) del Rischio è uno dei fattori chiave di entrambi i processi (almeno fino all’inizio dello sviluppo nel modello a Spirale)
- I Cambiamenti sono accettati con più elasticità (almeno fino all’inizio dello sviluppo nel modello a Spirale)
- Il monitoraggio delle attività è flessibile e dinamico.