Sviluppo del software: La metodologia Agile

Sviluppo del software: La metodologia Agile

Il modello agile prevede un continuo contatto con il cliente in modo da facilitare la richiesta di requisiti e la soluzione di alcuni problemi emersi durante sviluppo. I principi su cui si basa, seguendo il Manifesto Agile, sono i seguenti:

  • Le persone e le loro interazioni sono più importanti dei processi e degli strumenti, ossia le relazioni e la comunicazione tra gli attori di un progetto software sono la miglior risorsa del progetto.
  • È più importante avere un software funzionante che la documentazione, è opportuno rilasciare nuove versioni del software a intervalli frequenti, bisogna mantenere il codice semplice e avanzato tecnicamente riducendo la documentazione al minimo indispensabile.
  • Bisogna collaborare con i clienti al di là del contratto perché la collaborazione diretta offre risultati migliori dei rapporti contrattuali.
  • Bisogna essere pronti a reagire immediatamente alla domanda del mercato e di conseguenza il team di sviluppo dovrebbe essere autorizzato a suggerire modifiche al progetto in ogni momento.
Sviluppo del software - La metodologia Agile
Sviluppo del software – La metodologia Agile

I metodi che derivano dall’applicazione della metodologia agile sono molteplici e dipendono fortemente dal contesto in cui questi devono essere applicati. Benché ciascuno dei metodi agili sia unico nel suo approccio specifico, tutti condividono una visione comune e una serie di valori di base come chiaramente esposto nel Manifesto Agile. Tutte le metodologie incorporano infatti il concetto di iterazione e feedback continuo allo scopo di rilasciare e successivamente raffinare un sistema software. Tutte le metodologie coinvolgono le attività di pianificazione, test e integrazione continua assieme ad altre forme di evoluzione, allo scopo di perfezionare qualsiasi aspetto relativo sia al progetto, sia al software. Tutte le tecniche più diffuse sono simili fra loro e possono essere riconducibili a un numero limitato di principi:

  • Coinvolgimento del cliente: sono previsti differenti gradi di coinvolgimento del cliente.
  • Comunicazione diretta: comunicazione fra tutti gli attori del progetto e con il cliente prima di tutto.
  • Consegne frequenti: effettuare rilasci frequenti di versioni intermedie del software consente di ottenere più risultati contemporaneamente. Da una parte si offre al cliente qualcosa con cui lavorare, distraendolo così da eventuali ritardi nella consegna del progetto completo, dall’altra, lo si può impiegare come “tester” dal momento che, utilizzando il software rilasciato, sarà lui stesso a segnalare eventuali anomalie.
  • Progettazione e documentazione: sebbene l’importanza attribuita a queste due attività venga sensibilmente ridimensionata nella metodologia agile, sarebbe errato credere che le stesse siano del tutto assenti dal processo di sviluppo.
  • Automazione: le attività problematiche, come ad esempio la documentazione, possono essere automatizzate. La tecnica per ottenere in maniera automatica la documentazione a partire dal codice già prodotto è detta “retro-ingegneria”. Questa è una delle pratiche più diffuse e più controverse: diffusa perché permette un guadagno enorme in termini di tempo, ma controversa perché, molto spesso, la documentazione prodotta è inutilizzabile e viene conservata solo per motivi burocratici pur senza avere una reale utilità.
  • Gerarchia: la scelta di creare una struttura gerarchica all’interno del team di sviluppo è delicata. Se si decide per una struttura gerarchica ad albero, si ottiene la possibilità di gestire un numero molto alto di programmatori e di lavorare a diversi aspetti del progetto parallelamente; se viceversa si decide per una totale assenza di gerarchia si avrà un team di sviluppo molto compatto e motivato, ma questo dovrà essere necessariamente piccolo in termini di numero di programmatori.
  • Programmazione di coppia: è stato dimostrato che i costi di questa scelta sono inferiori ai benefici che comporta, ma ci sono esempi pratici che indicano come questa pratica possa essere insopportabile per alcuni programmatori e quindi controproducente.
  • Refactoring: riscrittura completa di parti di codice mantenendone invariato l’aspetto esterno.
    Miglioramento della conoscenza: Si sfrutta per migliorare il lavoro quotidiano, imparando ad esempio dai fallimenti.
  • Semplicità: semplicità nel codice, nella documentazione, nella progettazione, nella modellazione. I risultati così ottenuti comportano una migliore leggibilità dell’intero progetto e una conseguente agevolazione nelle fasi di correzione e modifica;
  • Controllo di versione: necessità di introdurre un modello, un metodo, uno strumento, per il controllo delle versioni del prodotto software rilasciato.

Un esempio di metodologia agile è “Scrum”. Infatti secondo la definizione: “Scrum non è un processo o una tecnica per costruire prodotti ma piuttosto è un framework all’interno del quale è possibile utilizzare vari processi e tecniche”. In generale, consta delle seguenti fasi:

  1. Sprint: prevede di dividere il progetto in blocchi rapidi di lavoro alla fine dei quali consegnare una versione al cliente.
  2. Backlog: indica come definire i dettagli del lavoro da fare nell’immediato futuro, ovvero quello che deve essere ancora fatto.
  3. Scrum Meeting: sono organizzate riunioni giornaliere del team di sviluppo per verificare cosa si è sviluppato e cosa deve essere ancora sviluppato.
Precedente Modellazione di processi: Le reti di Petri Successivo Sviluppo del software: La metodologia DevOps

Lascia un commento

*