Carolina Rutta - Interaction Designer in Yumi
Nel 2001, a Snowbird in Utah, 17 esperti software si incontrarono per discutere delle attuali e inadeguate metodologie di sviluppo software. In quegli anni, le metodologie software erano processi lenti, poco efficaci, e molto pesanti. Da una parte, la metodologia Waterfall (Figura 1) si basa su una sequenza ben definita di passaggi in stile cascata: sebbene, dunque, il team sia a conoscenza dei propri compiti e delle tempistiche da rispettare, se c’è un ritardo, tutti i processi slittano fino a che il processo in questione non è terminato. Conseguentemente, il cliente potrebbe ricevere un prodotto diverso da quello che si aspettava perché la fase di testing e valutazione non viene iterata. Inoltre, a volte la soluzione tecnica implementata si rivela ben presto tecnologicamente obsoleta.
Figura 1: grafico di Winston Royce che ispirò lo sviluppo Waterfall (W.W. Royce, Managing the development of large software systems, in Proceedings, IEEE WESCON, 1970)
Dall’altra parte, la tecnica Scientific Management è un approccio top-down, in cui i manager decidono le procedure da seguire per ottenere un determinato obiettivo, e le commissionano ai dipendenti. Ancora una volta, questa metodologia non prevede che ci siano ritardi, e non sempre è possibile pronosticare alternativi sviluppi alle procedure precedentemente decise.
In questo contesto, si sviluppa dunque la metodologia Agile. L’Agile consiste in un insieme di pratiche che supportano e facilitano il lavoro in piccoli gruppi di sviluppo software. Il suo manifesto si fonda su 4 valori principali:
I dodici principi invece sono i seguenti:
Nella pratica, tale processo consiste in 4 fasi, che si iterano, funzione dopo funzione. Nella fase zero, si elencano le funzionalità del progetto tramite delle user stories, e si stimano le tempistiche di implementazione. Nella fase uno, vengono scelte le funzionalità da implementare in base alle proprietà. Nella fase due, si passa alla progettazione software in cui tutto il team viene incluso. Nell’ultima fase, la quarta, si lavora sulla presentazione di una piccola demo e si rilascia una versione del software. Ogni una/due settimane questo processo viene iterato, a partire dalla fase uno, in cui vengono scelte le funzionalità da implementare in base alle priorità, alla tre in cui vengono presentate (Figura 2).
Figura 2: grafico che indica il processo Agile
Durante questo processo è necessario tenere a mente alcune pratiche che possono facilitare lo sviluppo software. Di seguite, se ne elencano alcune:
Infine alcune pratiche di natura tecnica sono prese in considerazione come nucleo stesso della metodologia Agile affinché sia efficacemente applicata, come segue:
In questo framework, la metodologia agile può portare molti vantaggi sia a tutti gli attori coinvolti (stakeholders, programmatori, manager) sia all’azienda stessa. L'implementazione della soluzione si snellisce, e diventa più rapida. Sussegue una riduzione degli sprechi grazie alla riduzione delle risorse necessarie, e una flessibilità e adattamento al cambiamento che garantisce un successo maggiore, riducendo gli sforzi. Infine, i processi di sviluppo sono ottimizzati, focalizzandosi su uno sviluppo ottimale del prodotto, consegnando un prodotto che si basi sulle esigenze specifiche del cliente.