Dal processo a cascata alle metodologie agili di sviluppo

Il processo di produzione di un nuovo software è caratterizzato da una serie di fasi ben identificabili. Il metodo waterfall, o a cascata, è il modo più naturale per gestire le fasi di sviluppo, suddividendo il processo in una sequenza di passi rigidamente unidirezionale:

  • l’identificazione dei requisiti;
  • la progettazione;
  • la realizzazione;
  • i test di funzionamento e conformità ai requisiti;
  • il rilascio;
  • la manutenzione.

Il processo ha la grande attrattiva della semplicità e, grazie alla presenza di milestone precise, suddivide l’esecuzione del progetto in fasi distinte e verificabili. Il metodo waterfall ha avuto una forte diffusione, anche grazie al fatto che nel 1980 è divenuto lo standard per i processi di procurement e sviluppo di software del Dipartimento della Difesa americano (DOD-STD-2167).

In realtà l’elevato controllo garantito dal processo waterfall è puramente illusorio: il processo di creazione di un nuovo software è soggetto a cambiamenti in corsa e il metodo waterfall è rigido e non prevede nessun processo di revisione del progetto o dei requisiti. E’ comune, ad esempio, trovare dei problemi di progetto al momento dell’implementazione o trovarsi di fronte ad un cambiamento dei requisiti del cliente dovuti al naturale approfondimento dei processi originato dallo stesso progetto di sviluppo o a mutate condizioni di mercato.
Ci sono studi che correlano in modo inequivocabile l’utilizzo del metodo waterfall con una riduzione della produttività, aumento dei difetti (e non parliamo solo di bug, ma aderenza alle specifiche reali) e fallimento dei progetti. A fronte di queste considerazioni il Dipartimento della Difesa americano ha sostituito lo standard precedente con il MIL-STD-498, che prevede una gestione iterativa dei progetti di sviluppo. Nonostante questo il metedo waterfall continua ad essere piuttosto diffuso.

Negli anni 90, a fronte della crescente insoddisfazione sui risultati, vennero ricercate metodologie più efficaci. Nacquero una serie di approcci alternativi come Xtreme Programming, Scrum, DSDM, Crystal e FDD. Queste avevano molte caratteristiche comuni e si cercò di identificare un terreno sul quale costruire un approccio unitario. Il risultato fu l’Agile Manifesto, un documento che illustra un nuovo approccio mosso da una scala di valori in contrapposizione con le priorità tipiche della metodologia waterfall:

  • Gli individui e le interazioni sono più importanti dei processi e gli strumenti
  • Il software funzionante è più importante di una documentazione estensiva
  • La collaborazione col cliente è più importante della negoziazione del contratto
  • La risposta al cambiamento è più importante dell’ aderenza al piano di sviluppo

Per l’Agile Manifesto la soddisfazione del cliente è prioritaria e i cambiamenti al progetto, anche in fase avanzata di sviluppo, sono bene accetti. Il progresso del progetto è misurato sulla base della funzionalità raggiunta dal software. Questi obiettivi sono ottenuti con un costante dialogo tra sviluppatori, utenti e figure commerciali e applicando le migliori tecnologie e best practice. Le attività di sviluppo sono snelle e volte all’esaltazione di una semplicità che porta alla riduzione all’essenziale del lavoro svolto.

Di fronte a queste considerazioni, chi non è abituato a questo tipo di approccio non può non restare perplesso: la prima impressione è quella di assenza di controllo.
Facciamo delle considerazioni:

  • Un progetto, per definizione, deve avere un inizio ed una fine.
  • La durata del progetto influenza indirettamente il suo costo
  • Una variazione dei requisiti ha quasi sempre un impatto sui costi
  • La modifica in corsa dei requisiti, specie se tardiva, ha un potenziale impatto sulla qualità

A prima vista sembrerebbe che un processo iterativo di sviluppo mandi a gambe all’aria il tripode del project management…

Il processo di creazione di un software nasce da una necessità formalizzata come una richiesta interna o un contratto. La definizione dell’ambito del progetto chiarisce le finalità ed i limiti dell’attività di sviluppo definendo il campo all’interno del quale si può muovere il nostro processo iterativo senza revisioni dal punto di vista economico o contrattuale. Il processo di sviluppo si muoverà all’interno di questi limiti e, grazie ad una continua collaborazione tra cliente e team di sviluppo viene compreso e realizzato ciò che il cliente desidera realmente. Con lo stesso spirito collaborativo i limiti del progetto possono essere rivisti, ad esempio come conseguenza di un cambiamento degli scenari di mercato del cliente.
Tutti i project manager sanno come ci si deve comportare di fronte ad un progetto oggetto di cambiamenti: procedere per approssimazioni successive, inseguendo finalità in continua mutazione è il modo migliore per andare verso il fallimento. E’ imperativo avere deliverables utilizzabili, anche se solo parzialmente aderenti alle specifiche desiderate.
Le Agile Metodologies rispettano questo criterio realizzando un prodotto potenzialmente utilizzabile ad ogni iterazione e, se durante l’esecuzione di una iterazione di sviluppo appaiono nuove features per il software, queste vengono valutate, ordinate per priorità e accodate per l’iterazione successiva.

Ci si chiederà cosa succede se alla data di consegna non tutte le features sono state implementate. Utilizzando un approccio rigido si accenderebbero le sirene e ci si rimboccherebbero le maniche per mantenere il progetto sotto controllo.
Applicando le metodologie di sviluppo agile, le features sono ordinate in base al valore per il cliente e si accetta la possibilità che non tutte siano implementate per la data di consegna. A prima vista sembra assurdo, ma da una ricerca è emerso che in una applicazione tipica il 20% delle funzioni sono usate raramente ed il 45% non sono mai usate. Di conseguenza se lo sforzo del team di sviluppo è orientato verso quelle funzioni davvero importanti la possibilità che una funzione rimanga non implementata inizia a diventare accettabile. Le funzioni implementate realizzeranno il valore ricercato dal cliente.

Questa voce è stata pubblicata in Project management e contrassegnata con , , , , , , , , . Contrassegna il permalink.

Lascia un commento

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...