Metodologie agili: programmare insieme al cliente
A partire dagli anni '90, l'informatica ha assunto un ruolo sempre più rilevante nel mondo, partendo dalla rivoluzione dell'informatica personale, alla nascita di internet, all'euforia ad essa legata con conseguente bolla della new economy e in questi anni al consolidamento di un mondo dove internet e la tecnologia sono pervasivi.
Proprio negli anni della bolla della new economy nascono le metodologie agili.
Ma ancora prima della scelta del linguaggio e della scrittura del codice possiamo individuare differenti approcci alla realizzazione di un progetto. Dalla più classica metodologia a cascata (o waterfall) al più recente sviluppo agile, basato su uno sviluppo iterativo del software in stretta collaborazione con il cliente.
Con la pubblicazione del “Manifesto per lo sviluppo agile del software” nel 2001 sono stati pubblicati ufficialmente i 4 valori e 12 principi comuni a tutte le metodologie da quel momento in poi definite agili.
Esse sono diventate a poco a poco l’approccio più utilizzato per la realizzazione di un progetto grazie alla loro facilità di esecuzione e alla loro capacità di adattarsi a problemi e cambiamenti con un conseguente risparmio in termini di tempi e costi. Vantaggi che si aggiungono alla comodità da parte del committente di essere costantemente aggiornato sui progressi in modo tangibile grazie alla release di software progressivi.
Evoluzione dello sviluppo agile
Queste numerose release sono frutto di un meccanismo progressivo per il quale ogni volta si aggiunge al programma una nuova funzionalità in ordine di importanza. Di solito un paio di settimane. Ogni team si occupa di pianificazione, analisi, progettazione e sviluppo delle migliorie previste del quale il cliente viene notificato grazie al rilascio di un software stabile.
La vera differenza tra lo sviluppo agile e gli altri metodi di sviluppo sta nell’importanza data alla componente umana e alla fiducia riposta in ogni team. Di fatto ogni team risulta essere indipendente, non esiste un team il cui compito sia quello di organizzare e gestire il progetto.
L’aggiungere progressivamente funzionalità permette sempre di avere una release precedente stabile in caso di cambiamenti o di problemi non previsti all’inizio. Inoltre avere versioni successive permette di poter iniziare a fare dei test già dalla prima versione in modo da evidenziare le criticità. Inoltre la parola chiave “semplicità” si abbina molto bene alla ricerca di velocità di progettazione.
Principi della metodologia agile
La metodologia agile, per quanto si differenzi in molteplici scuole, si basa su 4 valori e 12 principi fondanti espressi nel loro manifesto.
In primis viene ribadita l’importanza della componente umana non soltanto come puro principio filosofico ma come mezzo per ottenere risultati migliori. Si ricerca infatti un confronto di persona e non via mail, e un aiuto reciproco nel quotidiano (covid permettendo).
La pianificazione risulta essere un elemento importante nello sviluppo del software ma questa metodologia nasce in modo da dare la possibilità di eseguire cambiamenti in modo agile e veloce.
È ovviamente importante rispettare il contratto e gli accordi presi ma ancora più importante è il confronto con il cliente, facilitato dalle numerose versioni del programma che vengono rilasciate progressivamente. Una collaborazione diretta permette quindi di raggiungere il risultato desiderato in modo rapido potendo adattare il programma alle esigenze del committente. Tutto ciò evita di dover riadattare un programma ultimato per sfumature non apprezzate dal cliente, operazione che spesso può portare non pochi problemi.
L’obiettivo è la realizzazione di un software funzionante, avere una documentazione esaustiva ha un’importanza relativa. Lo scopo primo rimane il prodotto finito e utilizzabile.
Ciclo di vita dello sviluppo agile
- Fase 0: la fase iniziale o fase 0 è il momento il cui progetto viene organizzato, dalla scelta del team a quella dell’ottenimento dei fondi passando dal coinvolgimento degli stakeholder. Vengono individuate la caratteristiche base del progetto e viene creato un modello iniziale dell’architettura.
- Sviluppo iterativo: è la fase centrale del processo durante la quale vengono realizzate versioni sempre più avanzate del software cercando di rispettare tutte le richieste. In questa fase giocano un ruolo importante la collaborazione stretta con gli stakeholder e gli altri membri del team. Questo stretto rapportarsi permette agli stakeholder di avere pieno controllo sul progetto e sulla lista delle proprietà da implementare.
Lo sviluppo avviene prima attraverso un’analisi dei requisiti sfruttando tecniche di model storming per poi passare a dei modelli di architettura fino all’effettivo sviluppo del codice. Sviluppo che parte dalla realizzazione di un test che valuti i requisiti scelti, una volta realizzato si passa quindi alla scrittura di un codice, il nucleo del progetto, il cui compito è quello di passare il test sopra descritto. Questa tecnica di sviluppo si chiama TDD (Test Driven Development) e si tratta di una pratica di eXtreme Programming (XP) in quanto incoraggia a programmare in modo strutturato.
Il processo prosegue quindi in modo iterativo secondo i passaggi di scrittura del test e sviluppo del codice per superarlo.
Ad ogni test superato viene salvato un codice stabile e funzionante da mostrare poi agli stakeholder. - Rilascio del software: una volta terminato il ciclo di iterazione e quindi dopo aver ottenuto un programma avente tutte le caratteristiche stabilite si passa alla fase di Demo in modo da ricevere immediatamente i feedback degli Stakeholder. Ovviamente ci saranno sempre dei dettagli da correggere e ciò porterà a un rework del progetto. Una volta sicuri della funzionalità del software in tutti i suoi aspetti si passa ad una fase di training in cui viene insegnato a sfruttare a pieno il programma ai futuri utenti.
Il tempo è denaro
La metodologia agile nasce con uno scopo ben preciso, ottenere un prodotto valido ottimizzando tempo e costi e soddisfando le aspettative e richieste. Di fatto possiamo parlare di quattro variabili universali per la realizzazione di un progetto: costo, tempo, qualità e portata. Nella metodologia agile solo tre delle quattro proprietà descritte sopra sono fisse in modo che, in caso di necessità, si possano fare dei cambiamenti. Ad esempio a parità di costo e portata si può scegliere di aumentare la qualità aumentando il tempo, o si può aumentare la portata aumentando il costo, e così via. Rimane però come punto cardine delle metodologie agili la creazione di un progetto di massima qualità, poiché la qualità ripaga sempre l’investimento.
Ormai non possiamo parlare di questa metodologia come di una novità, dato che se ne parla ormai da due decenni, eppure soprattutto in italia notiamo come non tutti abbracciano felicemente questi nuovi principi. Una speranza ci viene però data dall’utilizzo della stessa in ambito universitario, di fatto siamo sempre più che sicuri che, anche in italia, il futuro volgerà nella sua direzione.