Accedi / Registrati Account

DevOps

Cos'è la metodologia agile?

La "metodologia agile" è un approccio allo sviluppo del software basato sulla distribuzione continua di software efficienti creati in modo rapido e iterativo. 

Benché l'espressione faccia riferimento specifico a un determinato sviluppo del software, questa metodologia non prevede regole da rispettare tassativamente nell'ambito dello sviluppo del software. Si tratta piuttosto di un tipo di approccio alla collaborazione e ai flussi di lavoro fondato su una serie di valori in grado di guidare il nostro modo di procedere.

In pratica, lo sviluppo agile consiste nel rilasciare rapidamente modifiche al software in piccole porzioni con l'obiettivo di migliorare la soddisfazione dei clienti. Con l'adozione dello sviluppo agile i vari team costituiti da pochi sviluppatori ciascuno collaborano direttamente con i rappresentanti aziendali tramite incontri periodici durante l'intero ciclo di vita dello sviluppo del software. La metodologia agile consente di adottare un approccio più leggero alla stesura della documentazione software e di integrare le modifiche in qualsiasi fase del ciclo di vita, anziché ostacolarle.

 

I valori della metodologia agile

La metodologia agile, come la conosciamo oggi, risale al 2001. Nel tentativo di trovare un'alternativa al project management "a cascata", che struttura un progetto software in una serie di sequenze lineari, un gruppo di sviluppatori software ha delineato un nuovo metodo redigendo il Manifesto per lo sviluppo agile di software. In questo documento gli sviluppatori propongono un nuovo approccio allo sviluppo del software descrivendo 4 aspetti chiave che a loro parere devono avere la priorità su altri. Secondo loro, i membri di un team agile dovrebbero dare priorità a quanto segue:

  • Individui e interazioni rispetto a processi e strumenti
  • Un software efficiente rispetto a una documentazione esaustiva
  • La collaborazione con il cliente rispetto alla negoziazione dei contratti
  • La preparazione ad affrontare il cambiamento rispetto all'esecuzione di un piano

Gli autori chiariscono comunque che tutti gli aspetti indicati sopra sono importanti, ognuno a suo modo. Sostengono tuttavia che dare la priorità agli aspetti a sinistra (in grassetto) rispetto a quelli a destra può portare ad approcci migliori per lo sviluppo del software. Il Manifesto non determina una serie di pratiche da seguire, ma è da intendere come una guida verso un nuovo modo di pensare allo sviluppo del software.

Il Manifesto ha portato all'ottenimento di svariati risultati pratici. Ad esempio, anziché sviluppare software in modo sequenziale, ovvero da una fase all'altra, che è il modo in cui il metodo a cascata garantisce la qualità del prodotto, un metodo agile può promuovere lo sviluppo e il test come processi continui e simultanei. In sostanza, lo sviluppo a cascata presuppone il completamento di una fase prima di poter passare a quella successiva, mentre il modello agile supporta più sequenze contemporanee alla volta. 

 

Le origini della metodologia agile

L'approccio agile al lavoro è stato concepito per far fronte ai limiti percepiti del metodo a cascata, che trae le sue origini dal metodo manifatturiero basato sulla catena di montaggio del 1913 di Henry Ford, applicato più tardi allo sviluppo di software. Dalla sua nascita nel 2001, lo sviluppo agile si è fatto strada nel settore dei software e del project management subendo molti cambiamenti.

L'impulso che ha spinto alcuni sviluppatori a introdurre una metodologia agile era legato alla mancata capacità dei cicli di produzione e dei metodi di collaborazione a cascata di portare ai risultati attesi. Questo problema ha iniziato a diffondersi nei primi anni '90, quando potevano trascorrere anni tra l'identificazione di un'esigenza aziendale e l'erogazione di un'applicazione efficiente volta a risolverla. Quegli anni erano caratterizzati da esigenze di business in costante mutamento, e molti dei progetti software venivano addirittura annullati prima che fossero erogati. Questa perdita di tempo e di risorse ha portato molti sviluppatori software a cercare un'alternativa.

Messe in difficoltà dalle continue innovazioni, le organizzazioni hanno iniziato ad adottare sempre più strategie di trasformazione digitale per tenere il passo con un settore in continua evoluzione. E qui entra in gioco lo sviluppo agile del software.

La metodologia agile è alla base di molti flussi di lavoro digitale odierni. Il cloud computing, con la sua infrastruttura IT flessibile e scalabile, è cresciuto di pari passo con le richieste dello sviluppo agile di software. Lo sviluppo cloud native integra la nozione di software "agile" per ottenere una serie di servizi interconnessi e scalabili volti a soddisfare le esigenze aziendali. Il concetto di DevOps rompe il confine tra sviluppo del software e operazioni. Tenendo conto della continua evoluzione del software, i metodi CI/CD mettono a disposizione degli sviluppatori gli strumenti necessari ad accelerare i tempi di deployment di un nuovo codice.

Ne deduciamo quindi che il concetto di "metodologia agile" incorpora un'idea agile in grado di rispondere alle esigenze dei suoi clienti (ovvero, gli sviluppatori software) nel tempo. È importante tenere conto di questo aspetto quando si analizzano alcuni framework agili, che hanno nomi diversi e spesso variano da un'implementazione all'altra.

 

Framework agili

Framework agili per lo sviluppo di software come Scrum, Kanban o Extreme Programming (XP) costituiscono la base dei più famosi processi di sviluppo di software quali DevOps e l'integrazione e il deployment continui (CI/CD).

Scrum è forse il framework agile più conosciuto in adozione al giorno d'oggi, sebbene ogni suo aspetto non sia necessariamente agile, e viceversa. Scrum è un framework per la gestione del lavoro progettato per team interfunzionali di piccole dimensioni, costituiti da 5 a 9 membri, che suddividono il loro lavoro in azioni completabili entro un periodo di tempo costante denominato "sprint". Generalmente, Scrum viene implementato quando un progetto di grandi dimensioni può essere suddiviso in sprint da 2-4 settimane. Scrum è incentrato su cicli di feedback: il motto non ufficiale di Scrum potrebbe essere "analizza e adatta".

Altri framework agili, ad esempio Kanban, precedono il Manifesto. Ma questi framework sono considerati agili perché promuovono i valori delineati nel Manifesto agile. I framework agili e gli approcci verso la metodologia agile sono troppi per poterli menzionare tutti in questa sede.