La metodologia agile, inizialmente pensata per l’industria del software, è una formula orientata a sviluppare progetti che richiedono velocità, flessibilità e che cambiano mentre sono in corso. Utilizzando cicli di sviluppo brevi, denominati “sprint”, questa metodologia permette di cambiare priorità in ogni fase del progetto adeguandolo ai risultati ottenuti durante lo sviluppo.
La metodologia agile consente dunque di concentrarsi fin da subito sul raggiungimento dei risultati in base agli obiettivi e alle esigenze del cliente.
Manifesto Agile
I principi e i valori che sono alla base del metodo agile sono riportati nel Manifesto Agile, redatto nel febbraio del 2001 da 17 sviluppatori come presa di posizione contro i vecchi processi di sviluppo considerati troppo costosi e lenti, ma soprattutto incapaci di raggiungere gli obiettivi ricercati.
I quattro valori fondamentali sono:
- Gli individui e le interazioni più che i processi e gli strumenti
- Il software funzionante più che la documentazione esaustiva
- La collaborazione col cliente più che la negoziazione dei contratti
- Rispondere al cambiamento più che seguire un piano
I 12 principi della metodologia agile descritti nel manifesto sono:
- La nostra massima priorità è soddisfare il cliente attraverso il rilascio immediato e continuo di software di valore.
- Accettare cambi nei requisiti, anche a stadi avanzati dello sviluppo. Il processo agile sfrutta il cambiamento a vantaggio competitivo del cliente.
- Rilasciare software funzionante di frequente, da un paio di settimane a un paio di mesi, con una preferenza per intervalli più brevi.
- Le persone del business e gli sviluppatori lavorano insieme quotidianamente durante tutto il progetto.
- Costruisci il software intorno a persone motivate. Offri loro il contesto e il supporto di cui hanno bisogno e fidati della loro capacità di svolgere il lavoro.
- Il metodo più efficiente ed efficace di veicolare le informazioni da e verso il team di sviluppo è la comunicazione faccia a faccia.
- Il software funzionante è la principale misura di progresso del lavoro.
- Il processo agile promuove lo sviluppo sostenibile. Gli sponsor, gli sviluppatori e gli utenti devono essere in grado di mantenere indefinitamente un ritmo costante.
- La continua attenzione all’eccellenza tecnica e alla buona progettazione migliora l’agilità.
- La semplicità – cioè l’arte di massimizzare la quantità di lavoro non fatto – è essenziale.
- Le architetture, i requisiti e le progettazioni emergono da team auto organizzati.
- A intervalli regolari, il team riflette su come divenire più efficienti e poi regola il suo comportamento di conseguenza.
Cosa sono le metodologie a cascata e quelle agili
Entrambe le metodologie servono per lo sviluppo software prevedendo le fasi di:
- analisi
- design
- codifica
- testing
la differenza sta nelle
modalità.
La metodologia a cascata o
waterfall è più tradizionale e prevede la
sequenzialità delle quattro fasi. In questo caso le richieste per la versione del software che si intende realizzare vengono raccolte a monte e non sono modificabili, poi seguono le varie fasi.
Nella metodologia agile invece la realizzazione del software viene fatta
a piccoli passi in questo modo al cliente vengono presentate le diverse funzionalità del programma nel corso dello sviluppo. In questo modo oltre a coinvolgere maggiormente il committente è possibile cambiare le specifiche adattandole man mano alle nuove esigenze che vengono fuori dalle varie fasi.
Metodologia agile scrum
Scrum è una tipologia di metodo Agile tra le più diffuse, utile in particolar modo per progetti complessi e innovativi.
La metodologia scrum prevede la divisione del processo di gestione di un progetto in brevi cicli di sviluppo che durano da 1 a 4 settimane in modo tale da riuscire a coordinare lo sviluppo del prodotto con le esigenze del cliente.
Scrum consiste in una serie di pratiche che rendono il lavoro dei team (autonomi e autorganizzati) altamente produttivo e funzionante.
Il metodo scrum si basa su tre principi:
- trasparenza: tutti i partecipanti al progetto conoscono lo scopo del lavoro e sanno esattamente cosa stanno facendo gli altri membri del team
- ispezione: si basa sul concetto di controllo empirico cioè ogni iterazione ed incremento sono misurati in base alle metriche decise prima di apportare modifiche alle iterazioni successive
- adattamento: il team di sviluppo si adatta ai risultati dell’ispezione e ripianifica il lavoro in base a questi per portare maggiore valore al cliente
Le componenti principali di SCRUM si dividono in:
- ruoli: sono 3 (scrum master, product master, product owner) e lavorano in stretta connessione in modo da assicurare un veloce e continuo scambio di informazioni
- artefatti: pensati per massimizzare la trasparenza delle informazioni principali
- eventi: che servono a creare regolarità, sincronizzare le attività e ridurre la necessità di incontri non definiti.
Metodologia kanban
Quella kanban è probabilmente la più semplice e intuitiva delle metodologie agile.
È basata sull’utilizzo di una lavagna che serve a organizzare e gestire visivamente i processi di sviluppo e le sue variabili.
Per utilizzare la metodologia Kanban occorrono:
- lavagna: su cui disegnare una tabella con tre colonne. La prima denominata To Do contiene i compiti da completare, la seconda In Progress contiene le attività che sono in elaborazione, la terza Done contiene le attività già concluse
- post-it o cartoncini di diversi colori, rappresentano le attività e in genere sono raggruppati per il tipo di attività che il team esegue
- pennarelli colorati.
Il vantaggio di questo metodo è offrire una rapida organizzazione e un costante monitoraggio dei processi di sviluppo.
Extreme programming
Extreme Programming è una disciplina dello sviluppo software basata su cinque valori fondamentali:
- Comunicazione, continua tra componenti del team e con il cliente
- Semplicità del processo di sviluppo in modo tale da averne una maggiore conoscenza
- Feedback continuo: essenziale in ottica di miglioramento e flessibilità nei confronti del team e del cliente
- Coraggio nel prendere decisioni importanti e soprattutto nel riconoscere che una decisione già presa si è rivelata inadeguata
- Rispetto nei confronti di tutte le persone coinvolte nel progetto e delle loro opinioni.
Uno degli aspetti più interessanti dietro Extreme Programming è l’utilizzo del Test Driven Development (TDD), che consiste nella scrittura dei test prima di iniziare a sviluppare la parte funzionale. In altre parole lo sviluppo è guidato dai test. Grazie al TDD è possibile testare ogni piccola componente del software prima della sua implementazione e individuare i possibili errori in fase di sviluppo.
Vantaggi della metodologia agile
La metodologia Agile è diventata molto popolare e largamente adottata perché offre moltissimi benefici.
Tra i più apprezzati ci sono:
- maggiore flessibilità
- maggiore produttività
- maggiore comunicazione e trasparenza
- feedback costanti
- riduzione degli sprechi
- tempi di consegna più rapidi
- maggiore coinvolgimento e soddisfazione del cliente.