Cosa significa e perché è vantaggioso usare Agile nello sviluppo software

Cosa significa e perché è vantaggioso usare Agile nello sviluppo software

Metodologia Agile

Con il termine Metodologie Agili ci si riferisce ad una serie di metodologie di sviluppo software ispirate dal Manifesto Agile, impiegate per superare i limiti emersi dal modello tradizionale a cascata (waterfall). Tramite queste metodologie i team di sviluppo software sono in grado di ridurre sensibilmente il rischio di non rispetto dei tempi e/o di commettere errori di interpretazione dei requisiti, organizzando il proprio lavoro in piccole iterazioni, chiamate sprint, della durata di poche settimane (tipicamente 2-3) che permettono il rilascio del software in modo incrementale. In questo modo i progetti software di entità medio- grande possono essere suddivisi in tanti progetti di dimensioni più piccole, aventi ciclo di vita proprio, rilascio in produzione compreso, lavorabili nell’ambito di un singolo sprint. Agile non è, in se, un processo caratterizzato da regole. E’ più una filosofia, un modo di fare. Detta linee guida e raccomandazioni che vengono poi implementate da diverse metodologie.

Tra le più comuni si sono:

  1. Extreme Programming (XP) – Per le attività ingegneristiche di sviluppo software.
  2. Scrum – Per le attività di gestione del processo nel suo insieme.
  3. Kanban – Sistema per la gestione delle attività

Tra i principali vantaggi offerti dall’Agile Programming, vi sono una maggiore qualità del software rilasciato, in quanto ogni parte incrementale di prodotto viene testata nell’ambito di uno sprint, ed una maggiore capacità di adeguamento del team di sviluppo ad eventuali variazioni in corso d’opera dei requisiti da parte del committente, cosa molto attuale nei progetti software odierni.
Uno dei requisiti chiave per il buon funzionamento dell’impiego delle metodologie agili è la continua interazione tra sviluppatori (in toto o tramite rappresentanti) ed il committente (cliente o Product Owner) al fine di aver sempre una visione chiara ed aggiornata di esigenze, requisiti e feedback del lavoro svolto da una parte e dello stato dell’arte del prodotto dall’altra.

Cosa significa e perché è vantaggioso usare Agile nello sviluppo software

L’Agile Programming offre ai team ripetute possibilità di valutare un progetto all’interno del suo ciclo di vita, inteso come insieme di sviluppi incrementali, e di aggiornare quindi le valutazioni precedenti in base a cambiamenti del contesto. Queste possibilità sono diretta conseguenza del sistema di lavoro a sprint. Al termine di ogni sprint il team presenta un pezzo di software (quindi un componente software) funzionante al Product Owner per approvazione. Questa enfasi su un pezzo di software garantisce che il team ha correttamente compreso i requisiti. Dal momento che gli sprint si ripetono ed il prodotto continua a guadagnare funzionalità (incrementi di prodotto), l’agile programming è descritto come iterativo e incrementale. Nel modello tradizionale o a cascata, il team ha una sola occasione per svolgere correttamente ogni parte di un progetto. Non è così nell’agile programming, dove ogni aspetto relativo allo sviluppo è revisionato durante l’intero ciclo di vita di un progetto. Virtualmente, non c’è possibilità che un progetto segua a lungo una direzione errata. Dal momento che il team verifica con il committente lo stato del progetto (ed i rilasci incrementali) cadenze regolari, c’è sempre il tempo per cambiare in corsa (strategia inspect-and-adapt).

Gli effetti di questa strategia inspect-and-adapt sono evidenti. Riducono significativamente i costi di sviluppo ed il time to market. I team Agili proseguono e raffinano la raccolta ed analisi requisiti durante lo sviluppo del prodotto, e questo non può quindi ostacolare il progresso del lavoro svolto dal team. Inoltre dal momento che il team sviluppa in cicli di lavoro corti e ripetitivi, gli Stakeholders hanno l’opportunità di assicurarsi che il prodotto in sviluppo incontri la vision del committente.
In sostanza, si può affermare che l’Agile Programming aiuta le aziende a costruire il prodotto che i clienti desiderano. Anziché consegnare software “fumoso” e sub-ottimizzato, l’Agile Programming mette in condizione i team di costruire il miglior software possibile. L’Agile Programming protegge quindi l’adeguatezza del prodotto rispetto al mercato e previene il rischio che il lavoro svolto finisca in un cassetto senza mai venir rilasciato e questo “accontenta” sia sviluppatori che Stakeholders.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: www.vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *