Jump to section

Cos'è la metodologia agile?

Copia URL

2024: I trend globali della tecnologia

Il settore delle tecnologie ha subito una rapida trasformazione, richiedendo alle organizzazioni di rivedere le proprie priorità per le aree di business più importanti. Come negli scorsi 10 anni, continuiamo a condividere le novità del settore. Nel rapporto Global Tech Trends per il 2024, abbiamo evidenziato le 6 priorità di investimento in ambito tecnologico e non tecnologico e 3 ostacoli al progresso.

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, le metodologie di sviluppo software agile consistono nel rilasciare rapidamente modifiche al software in piccole porzioni con l'obiettivo di migliorare la soddisfazione dei clienti. Le metodologie utilizzano approcci flessibili e il lavoro di gruppo per concentrarsi sul miglioramento continuo. Con l'adozione dello sviluppo agile i vari team, costituiti da pochi sviluppatori ciascuno, si organizzano in autonomia e 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.

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 i programmatori propongono un nuovo approccio allo sviluppo del software descrivendo 4 aspetti chiave che a loro parere devono avere la priorità su altri. I team di sviluppo software devono tenere conto di:

  • 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 a risultati migliori nello sviluppo del prodotto. 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. 

L'approccio agile al lavoro è stato concepito per far fronte ai limiti percepiti del metodo a cascata, che trae le sue sorgenti 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. L'approccio SRE (Site Reliability Site Engineering) è un'implementazione di DevOps che prevede l'uso del software come strumento per la gestione dei sistemi e l'automazione di tali operazioni.Tenendo conto della continua evoluzione del software, i metodi CI/CD mettono a disposizione degli sviluppatori gli strumenti necessari per 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 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". I team di Scrum sono formati dai membri del team, da un master Scrum e da un titolare del prodotto. 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 che vengono analizzati in "retrospettiva": il motto non ufficiale di Scrum potrebbe essere "analizza e adatta".

Altri framework agili, ad esempio Kanban, precedono il Manifesto agile. 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.

Keep reading

ARTICOLO

Cos'è la metodologia DevSecOps?

Per sfruttare tutta l'agilità e la reattività di un approccio DevOps, occorre tenere conto anche di un altro elemento cruciale dell'intero ciclo di vita delle tue applicazioni: la sicurezza IT.

ARTICOLO

Cosa si intende con CI/CD?

Il metodo CI/CD introduce l'automazione costante e il monitoraggio continuo in tutto il ciclo di vita delle applicazioni, dalle fasi di integrazione e test a quelle di distribuzione e deployment.

ARTICOLO

Il ruolo di un ingegnere DevOps

Un ingegnere DevOps possiede competenze ed esperienze specifiche che promuovono collaborazione, innovazione e trasformazione all'interno di un'azienda.