Agile? Un attimo… ma non somiglia al modello a Spirale?

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 spirale

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

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.

Comments are closed.