Quali sono le pratiche di metodologia agile nello sviluppo del software

Quali sono le pratiche di metodologia agile nello sviluppo del software

Quando si sviluppa un software occorre valutare molti aspetti e soprattutto rispettare le necessità del cliente.  Tra le varie metodologie di sviluppo del software, le cosiddette metodologie agili sono quelle in grado di adattarsi ai repentini cambi di percorso; poiché ne esistono varie è bene rivolgersi ad agenzie specializzate, come Area Software, una società di sviluppo software a Roma che segue il cliente dalla progettazione fino alla documentazione e ai sistemi di sicurezza dei software installati. Ma quali sono le principali pratiche di sviluppo software con metodologia agile?

Le pratiche più diffuse di metodologia agile nello sviluppo del software

Le pratiche possono essere comprese in macro-categorie, perché spesso sono simili tra loro e si differenziano di poco. Le principali categorie sono:

  • Automazione: consiste nell’automatizzare o eliminare alcune attività collaterali alla programmazione, come per esempio eliminare la documentazione a favore  del testing, vale a dire privilegiare le prove sul campo piuttosto che adagiarsi su test e documenti demo, sebbene molti teorici delle metodologia agile sconsigliano di omettere la aumentazione dalle fasi del progetto.

  • Extreme programming: comporta il totale e costante coinvolgimento del cliente anche in fase di progettazione e sviluppo e in tutte le fasi intermedie dello sviluppo;

  • Stretta comunicazione: uno dei primi teorici delle metodologie agili, Allstair Cockburn, sosteneva l’importanza di una comunicazione intensa e interpersonale tra tutti gli attori dello sviluppo dei un software per garantire una buona analisi e un’efficace collaborazione tra programmatori;

  • Consegne frequenti: una pratica diffusa è quella di consegnare al cliente versioni intermedie del prodotto in modo da utilizzare il cliente come tester e correggere subito eventuali anomalie; questo metodo serve anche a “distrarre” il cliente dai tempi reali previsti di consegna;

  • Modellizzazione: consiste nell’impiego di modelli, prototipi, soluzioni, tracciati, rappresentazioni visuali, schemi, riproduzioni in scala del programma da sviluppare;

  • Programmazione in coppia: lo sviluppo del software è affidato a coppie di programmatori che si alternano;

  • Priorità: è necessario stabilire l’ordine delle priorità degli obiettivi in base ai quali definire caratteristiche e funzionalità. Una pratica nota è la tecnica Moscow, acronimo per Must  – Should – Could – Wont’ haves.

  • Retro ingegneria: è una pratica che rende automatica la produzione di documentazione; sebbene sia molto diffusa, questa pratica ha una controindicazione che è quella di produrre documentazione inutilizzabile o prodotta o soli fini burocratici per soddisfare il cliente.

  • Testing: un elemento fondamentale nella riuscita di un software è la fase di test. Nelle metodologie agili esistono tre tipologie di test: test funzionali per verificare l’effettiva funzionalità del software, test unitari per verificare il corretto funzionamento di ogni parte del software, test indiretti effettuati indirettamente dal cliente ogni volta che si consegna una versione intermedia.

  • Time boxing: consiste nel dividere il progetti in intervalli di tempo scanditi (da pochi a giorni a settimane) entro i quali ci si pone l’obiettivo di consegnare parti del progetto funzionanti e utilizzabili dal cliente prima della messa a punto completa della soluzione finale.

  • Controllo della versione: l’introduzione all’interno del ciclo di sviluppo di uno strumento automatico che controlli la versione del software installato e la necessità di eventuali upgrade. Tra gli strumenti automatici più diffusi si cita il CVS.

Pratiche di metodologia agile per lo staff

Le metodologie agili non riguardano solo ed esclusivamente lo sviluppo del software, ma interessa soprattutto gli addetti allo sviluppo – dall’analista al programmatore – che devono lavorare in sinergia e sintonia. Le pratiche per lo staff tecnico sono:

  • One Team Culture: riguarda prettamente il lavoro di squadra e la collaborazione del team di sviluppo software. Si privilegia lo spirito di squadra, la collaboratività, la trasparenza e la chiarezza della comunicazione;

  • Workshop facilitati: durante il progetto, si cerca di agevolare la partecipazione a incontri e riunioni in cui tutti gli attori hanno modo di esprimere in libertà idee, obiettivi, mezzi per completare con successo il progetto;

  • Formazione e proprietà del codice: nella costituzione di una squadra di lavoro occorre fare delle scelte gerarchiche, seguire delle regole e adottare un codice di comunicazione condiviso.

  • Gerarchia: la scelta di impostare un ordine gerarchico dipende dal project manager. La struttura gerarchica prevede la gestione di un alto numero di programmatori, ma anche molta dispersione del lavoro; mentre l’assenza di gerarchia comporta per forza maggiore un numero ridotto di programmatori a stretto contatto tra loro, ma un team più motivato e compatto nel raggiungimento dell’obiettivo.