Sviluppo: come funziona il metodo agile
Con l’espressione metodo agile – in inglese agile software development – si inquadra un insieme di metodologie di sviluppo dei software. Questo approccio ha cominciato a farsi strada all’inizio degli anni 2000, prendendo come riferimento i principi del cosiddetto “Manifesto per lo sviluppo agile del software”, che porta la firma di informatici di fama mondiale come Kent Beck, Robert C. Martin e Martin Fowler (si tratta degli autori di punta).
Contrapposto al modello a cascata, il metodo agile si contraddistingue per il fatto di mettere in primo piano le esigenze del cliente, senza però trascurare quelle del professionista che gestisce il progetto. Tutto ciò si basa su un metodo di natura squisitamente empirica e non predittiva.
I vantaggi concreti riguardano innanzitutto un livello migliore di comunicazione e di chiarezza, che garantisce da un lato la soddisfazione del cliente e, per quanto riguarda lo sviluppatore, una maggior libertà nella gestione dei carichi di lavoro.
Inoltre, i professionisti si impegnano per ridurre i rischi di fallimento concentrando lo sviluppo dei software in finestre di tempo limitate dette iterazioni. Queste ultime, durano generalmente qualche settimana.
Ogni iterazione viene considerata come progetto a sé. Fondamentale è che contenga tutto quello che è necessario per contribuire a un incremento, anche se minimo, della funzionalità del software. Secondo i principi del metodo agile, l’unione dei risultati delle varie iterazioni deve restituire un output il più vicino possibile alle richieste del cliente.
La conseguenza diretta della metodologia è prima di tutto la percentuale più bassa di richieste di modifiche. Raggiungere il suddetto obiettivo è possibile grazie a tre fattori fondamentali: collaborazione, apertura al cambiamento e funzionalità. In virtù di questi aspetti, il metodo agile è sempre più utilizzato e ha conquistato il favore di numerose aziende IT e non solo.
Strumenti di lavoro
La popolarità acquisita dal metodo agile in questi anni ha permesso agli sviluppatori di mettere a punto alcuni importanti strumenti di lavoro. Tra questi è possibile chiamare in causa i numerosi software finalizzati alla creazione di framework Agili, grazie ai quali si ha modo di concretizzare una comunicazione diretta e continua con i clienti.
Concentrandosi su un ambito prettamente gestionale, si può individuare come strumento di lavoro principale la lavagna Kanban, molto semplice da utilizzare e decisiva sia per tenere sotto controllo tutte le fasi della progettazione, sia per ottimizzare i carichi di lavoro quando è necessario. Grazie a questi strumenti di lavoro, il metodo può essere applicato a qualsiasi progetto, a prescindere dalla complessità dello stesso.
Cosa sapere sulle pratiche
Le pratiche applicabili all’interno del metodo agile sono numerose. La scelta dipende dalle necessità dell’azienda e dallo stile professionale del project manager. Un esempio utile per capire come ci si può muovere è quello dell’Extreme Programming, situazione in cui si fa fronte alla mancanza di progettazione ricorrendo a uno stretto coinvolgimento del cliente. In ogni caso, le pratiche sono abbastanza simili tra loro e possono essere classificate in categorie che stiamo per elencare:
- l Automazione;
- l Coinvolgimento del cliente (in questo caso, ci si può basare su diversi gradi);
- l Comunicazione stretta;
- l Consegne frequenti;
- l Cultura del team;
- l Facilitated Workshop;
- l Formazione di squadra e proprietà del codice;
- l Iterative development;
- l Messa in proprietà;
- l Miglioramento della conoscenza;
- l Modellizzazione;
- l Pair Programming;
- l Prioritization;
- l Progettazione e documentazione.
L’elenco delle pratiche non finisce qui. Si può infatti parlare anche di refactoring (pratica che prevede la ristrutturazione di parti di codice senza cambiarne però aspetto esterno e comportamento) e di retroingegneria (un approccio che consente di ottenere automaticamente tutta la documentazione a partire dal codice già prodotto). Le altre pratiche del metodo agile sono la semplicità, il test, il Test Driven Development, il Timeboxing e il controllo di versione.
