Metodologie agili e metodologie a cascata

Ci sono differenze sostanziali tra metodologie agili e metodologie a cascata. Un metodo dà più spazio a flessibilità e cambiamento, l’altro è sicuramente più rigido e rigoroso.

In questo articolo ti darò una breve panoramica su entrambi i metodi, mettendone in risalto le principali caratteristiche.

Come funzionano le metodologie a cascata

metodologie a cascata o waterfall

By Peter Kemp / Paul Smith (Adapted from Paul Smith’s work at wikipedia) [CC BY 3.0 (http://creativecommons.org/licenses/by/3.0)]

Chiunque lavori in un tradizionale, almeno in Italia, progetto sequenziale o a cascata (waterfall in inglese) ha esperienza di estenuanti sessioni di analisi e scrittura dei requisiti. Il prodotto, seppur ancora inesistente, viene rivoltato come un calzino e ogni elemento viene analizzato in dettaglio. Poi si passa alle fasi di documentazione e di design, e poi entrano in gioco i temibili Gantt e Microsoft Project.

Tutte le fasi vengono suddivise in attività e stimate dettagliatamente. A volte capita che alcune fasi si prolunghino più del necessario, ritardando l’inizio di quelle successive. Finalmente, quando gli stakeholder approvano il progetto, si parte con l’implementazione. Ognuno prende in carico la sua parte e al termine passa la palla a un altro compartimento.

Questo approccio ha i suoi pro e i suoi contro. Da una parte è un modo di procedere logico e la documentazione è in genere molto dettagliata; dall’altra non tiene in considerazione il fattore umano – e gli esseri umani non sono in grado di prevedere il futuro! I metodi a cascata danno infatti per scontato che tutte le idee e le componenti da implementare siano identificate e codificate prima dell’inizio del ciclo di rilascio, ma spesso accade che le idee più brillanti vengano alla luce nel bel mezzo del processo di implementazione.

Quante volte ti sei trovato a dire: “Questo avrei potuto pensarlo in un altro modo”, oppure: “Questo avrei potuto farlo meglio”? In genere i metodi a cascata privilegiano la prevenzione dei cambiamenti: i requisiti, una volta formalizzati, sono modificabili soltanto attraverso procedure di escalation. Se vogliamo estremizzare, può succedere che al rilascio il prodotto sia già obsoleto, in quanto i presupposti su cui si fondava inizialmente non siano più validi.

Come funzionano le metodologie agili

metodologie agili

By Planbox (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)]

Con metodologie agili (agile methodologies) si intende una serie di pratiche di sviluppo software che hanno iniziato ad emergere a partire dai primi anni 2000. Questa famiglia si basa fondamentalmente sul concetto di iterazione e di feedback continuo che ben si adatta alle dinamiche moderne. Ogni iterazione ha una durata di tempo limitata, generalmente da una a quattro settimane. In gergo si dice che ogni iterazione è “timeboxed”.

I principi agili enfatizzano il rilascio di componenti software funzionanti in maniera più rapida possibile, in modo che l’utente possa testarle e utilizzarle immediatamente, piuttosto che investire tempo in analisi dei requisiti e documentazione.

Lo sviluppo agile si basa su team di sviluppo cross-funzionali, auto-organizzati e dotati di potere decisionale, dove le gerarchie e le rigide suddivisioni in funzioni sono soltanto un vecchio ricordo del passato. È normale che ogni sviluppatore abbia il suo ambito di interesse e la sua specialità, tuttavia in questi team di sviluppo non è raro trovare full-stack developers, ovvero sviluppatori in grado di coprire l’intero spettro.

Il termine “metodologie agili” identifica una famiglia di pratiche che condividono una visione comune, così come esposto nel Manifesto Agile. Altri aspetti importanti, oltre al processo iterativo e incrementale, sono:

  • Trasparenza
  • Il coinvolgimento continuo del committente
  • La flessibilità riguardo all’afflusso di nuovi requisiti
  • La priorizzazione in base al valore di business
  • I test automatici e sovente l’utilizzo di tecniche quali TDD (Test Driven Development) e BDD (Behaviour Driven Development)
  • I rilasci continui.

Fanno parte delle metodologie agili framework come: Scrum, Extreme Programming (XP), Lean Software Development, Feature Driven Development, Crystal, DSDM.

L’immagine in copertina è di proprietà di frogDNA ed è rilasciata su Flick con licenza Creative Commons 2.0.