Waterfall, Incrementale o Agile?

Questo articolo fa parte di una serie di mie riflessioni sull’innovazione technology-driven, cominciata qui.

Le metodologia di sviluppo progettuale che più si sono affermate nel tempo sono, in alternativa fra loro, Waterfall, Incrementale o Agile.

Secondo wikipedia, “In ingegneria del software, il modello a cascata (waterfall model in inglese) è il più tradizionale modello di ciclo di vita del software. Secondo questo modello, il processo di realizzazione del software è strutturato in una sequenza lineare di fasi o passi, sequenziali; ogni fase produce un output che è usato come input per la fase successiva; ogni fase del processo viene documentata.

Questo modello riprende la sequenza di passi tipica della produzione manifatturiera, e fu il primo a essere applicato a partire dagli anni ‘70 quando lo sviluppo del software cominciò a essere concepito come attività industriale.

Waterfall

Il modello è stato progressivamente abbandonato dall’industria del software, ma rimane un importante riferimento teorico.”

La critica principale che si muove a questa metodologia è che qualunque errore concettuale si faccia nelle fasi iniziali, ad esempio nell’analisi dei requisiti, si deve attendere la fase di rilascio per avere un feedback dagli utenti ed è necessario ripercorrere tutto il ciclo per correggerlo. Questo metodo è inoltre troppo rigido per i linguaggi di programmazione che si sono affermati a partire dagli anni ‘80, con i quali non si tende più a sviluppare un’unica procedura che prevede dalla A alla Z tutte le funzioni, ma sistemi complessi di service providers e service users che dialogano sulla base di messaggi.

Ovviamente queste considerazioni si traslano anche in ambienti in cui lo sviluppo del software è solo uno dei componenti del progetto di innovazione.

Incrementale

La metodologia di tipo incrementale parte dai punti di debolezza della metodologia a cascata e lavora sul concetto di rischio, ovvero cerca di identificare in fase iniziale l’insieme di circostanze avverse che possono pregiudicare il processo di sviluppo e la qualità del software. Sempre secondo wikipedia

“La caratteristica principale del modello è quella di essere ciclico e non lineare, ogni ciclo di spirale si compone di quattro fasi, il raggio rappresenta il costo accumulato e la dimensione angolare il progresso nel processo. La prima fase identifica gli obiettivi e le alternative, poi le alternative si valutano nella seconda fase in cui vengono evidenziate le potenziali aree di rischio. La terza fase consiste nello sviluppo e nella verifica del prodotto, infine la quarta fase consiste nella revisione dei risultati delle tre fasi precedenti e pianificazione dell’iterazione successiva.

Il modello a spirale è un modello di processo del software che abbina la natura iterativa della prototipazione e gli aspetti controllati e sistematici del modello sequenziale lineare, consentendo un rapido sviluppo di versioni via via più complete del software, fino ad arrivare ad un prototipo operativo, sulla base del quale validare con l’utente il soddisfacimento dei requisiti e procedere all’industrializazione.

Il modello a spirale è utilizzato per progetti di grandi dimensioni poiché permette di raffinare ad ogni giro il materiale precedentemente elaborato ed approvato dal cliente; all’inizio probabilmente sarà sola documentazione cartacea contenente gli intenti e lo scopo finale, poi si costruiranno, se ritenuti opportuni, dei prototipi da verificare e validare, e così via fino a giungere al prodotto conclusivo.”

Sebbene più flessibile e meno rischiosa della precedente, questa metodologia mantiene la caratteristica di non consentire alcun rilascio effettivo fino alla conclusione del progetto.

A superare questo vincolo mirano le metodologie cosiddette Agile.

Proseguendo con wikipedia, “il termine Metodologie Agili fu coniato nel 2001 quando venne formulato l’Agile Manifesto.

La gran parte dei metodi agili tenta di ridurre il rischio di fallimento sviluppando il software in finestre di tempo limitate, chiamate iterazioni che, in genere, durano qualche settimana. Ogni iterazione è un piccolo progetto a sé stante e deve contenere tutto ciò che è necessario per rilasciare un piccolo incremento nelle funzionalità del software: pianificazione, analisi dei requisiti, progetto, implementazione, test e documentazione ….

I principi su cui si basa una metodologia leggera che segua i punti indicati dall’Agile Manifesto, sono solo quattro:

  1. le persone e le interazioni sono più importanti dei processi e degli strumenti (ossia le relazioni e la comunicazione tra gli attori di un progetto software sono la miglior risorsa del progetto);
  2. è più importante avere software funzionante che documentazione (bisogna rilasciare nuove versioni del software ad intervalli frequenti, e bisogna mantenere il codice semplice e avanzato tecnicamente, riducendo la documentazione al minimo indispensabile);
  3. bisogna collaborare con i clienti oltre che rispettare il contratto (la collaborazione diretta offre risultati migliori dei rapporti contrattuali);
  4. bisogna essere pronti a rispondere ai cambiamenti oltre che aderire alla pianificazione (quindi il team di sviluppo dovrebbe essere pronto, in ogni momento, a modificare le priorità di lavoro nel rispetto dell’obiettivo finale).

In sintesi, l’Agile Manifesto, sottolinea l’importanza dei su citati principi fermo restando il valore di processi, strumenti, documentazione, contratti e pianificazione.”

Un modo efficace per capire le differenze fondamentali fra i due approcci metodologici Waterfall e Agile, è pensare ad un progetto come ad un triangolo con ai vertici i vincoli di tempi/costi e obiettivi da raggiungere (Schedule, Cost e Scope in inglese).

Le metodologie tradizionali, fissano uno scope e poi stimano i tempi e costi necessari per raggiungerlo.

Agile vs waterfall

Le metodologie Agile, fissano un tempo ed un ammontare di risorse, ed in base a questo definiscono lo scope.

Prosegue qui

disclaimer

Annunci

Dimmi la tua ...

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...