Metodologie di sviluppo Agile Software Development – 3 Parte – Scrum

Scrum è la fase di mischia del gioco del Rugby, in particolare al momento della ripresa del gioco dopo il verificarsi di un’infrazione. Questo tipo di operazione viene introdotto all’interno delle metodologie Agile, in quanto il team di sviluppo viene visto come una squadra di rugby che si muove omogenea per il raggiungimento di un’unico obiettivo condiviso, passandosi la palla avanti ed indietro.

Utilizzando Scrum nello sviluppo software,  il processo  è suddiviso in 3 fasi:

  • Pre-game: fase in cui avviene il dialogo iniziale con il cliente. Le necessità del cliente vanno a creare il Product Backlog, che contiene tutti i requisiti che dovrà avere l’applicazione da realizzare. I requisiti potranno essere definiti dal cliente ma anche dal team degli sviluppatori. Ad ogni requisito verrà associata una priorità ed una stima dello sviluppo. E’ in questa fase che viene definito il Team di sviluppo, le tecnologie da utilizzare e le convenzioni da adottare.
  • Development (oppure Game): è la fase centrale in cui viene effettuata la realizzazione vera e propria dell’applicazione. Lo sviluppo avviene tramite una serie di piccoli steps denominati Sprint. Gli Sprint sono dei cicli di sviluppo, molto rapidi, in cui vengono implementate le funzionalità dell’applicazione aggiustanto le varie variabili (tempo di sviluppo,risorse, requisiti), seguendo e modellando l’applicazione in base ai cambiamenti. Ogni sprint è limitato nel tempo (tipicamente un massimo di quattro settimane) e verrà modellato in base alle priorità  e alle stime . Ad ogni sprint il Team si riunisce per la creazione di uno Sprint BackLog: un sottoinsieme delle funzionalità da realizzare ed estratto dal Product Backlog. Giornalmente viene effettuata una riunione tipicamente chiamata Daily Scrum meeting in cui avviene il confronto e l’aggiornamento tra gli sviluppatori. Lo sviluppo dei singoli sprint potrebbe comportare la nascita di nuovi requisti espressi dal cliente, oppure modifiche allo sviluppo: semplicemente andranno ad integrare il Product Backlog aggiornando le stime e le priorità. E’ chiaro che al termine di ogni sprint si ottiene un incremento delle funzionalità del programma finale. Nel caso in cui rimanga qualche elemento da sviluppare al termine dello Sprint Backlog, le parti mancanti dovranno essere integrate nello sprint successivo. Nel momento in cui non rimangono funzionalità da sviluppare all’interno del Product Backlog, la fase di Development si può ritenere conclusa.
  • Post-game: quando tutte le attività del Product Backlog sono state esaurite, si è giunti nella fase in cui il prodotto può essere dichiarto concluso. Superato il test, l’applicazione può essere rilasciata al cliente unitamente alla documentazione prodotta ed integrata nei singoli sprint del passo precedente.

scrum

Nella metodologie Scrum sono state definite una serie di figure con diverse responsabilità all’interno del progetto.

  • Scrum Master: responsabile delle applicazioni delle metodologie e delle regole del processo di sviluppo. Il suo compito fondamentale è quello di garantire la massima produttività del Team.
  • Product Owner: responsabile del progetto. E’ il tramite tra Team ed il Cliente finale. Effettua la pianificazione del Product Backlog e traduce le funzionalità da sviluppare in elementi del Product Backlog.
  • Scrum Team: è il team di sviluppo. Sviluppa i vari sprint e comunica eventuali impedimenti nello sviluppo allo Scrum Master.
  • User: è il committente. Tipicamente il cliente finale.

Al fine di poter garantire uno sviluppo concreto ed efficiente, è necessario tenere in considerazione le seguenti attivitità:

Effort Estimation: si analizzano le stime del Product Backlog, ad ogni variazione delle informazioni in possesso. Questo tipo di valutazione è a carico del Product Owner e dello Scrum Team.

Sprint: è il Team che organizza autonomamente il tempo di sviluppo dello sprint (fino ad un massimo di quattro settimane).

Product Backlog: tenuto aggiornato dal Product Owner, adeguato ed integrato con i requisiti che possono verificarsi durante la fase di sviluppo dei singoli sprint.

Sprint Planning Meeting: è una riunione del team di sviluppo. Tipicamente si compone di due fasi:

  • Fase uno: in cui tutti i partecipanti fanno parte del progetto sono coinvolti e si relazione con lo Scrum Master.
  • Fase due: Scrum Master e Scrum Team si incontrano e stabiliscono le operazioni che verranno effettute durante il prossimo sprint.

Sprint Backlog: è la fase iniziale di ogni singolo sprint. In questa fase si decidono le singole fasi di ogni sprint. Alla definizione delle fasi partecipano Scrum Master, Scrum Team e Product Owner.

Daily Scrum Meeting: riunione quotidiana. Tipicamente di poche decine di minuti. In questa riunione vengono riassunti i progressi nelle fase di implementazione. Eventuali problemi dovranno essere risolti dallo Scrum Master. Una buona abitudine è quella di effettuare le riunioni in piedi (ad esempio alla macchinetta del caffè), in modo da concentrarsi sui problemi e renderla la più breve possibile.

Sprint Review Meeting: Questa riunione viene svolta l’ultimo giorno dello sprint. Scrum Team e Scrum Master, presentano i risultati dello sprint al Product Owner e/o al Cliente. Definiti i progressi, vengono definiti gli steps successivi dell’implementazione. Eventuali modifiche e funzionalità verranno introdotte all’interno del Product Backlog.

Burdown Chart: eventuali diagrammi in cui vengono evidenziati gli steps ancora da realizzare all’interno dello sprint corrente e le attività complessive da realizzare per arrivare al termine del Product Backlog.

Il sito di riferimento di Scrum  http://www.scrumguides.org/