Metodologia agile
Da Wikipedia, l'enciclopedia libera.
Nell'ingegneria del software, per metodologia agile o metodo agile si intende un particolare metodo di sviluppo software che coinvolge quanto più possibile il committente, ottenendo in tal modo una elevata reattività alle sue richieste. Esistono un certo numero di di tali metologie, tra le quali vanno citate quelle della Agile alliance, una organizzazione no-profit creata allo scopo di diffonderle.
Indice |
[modifica] Introduzione
La gran parte dei metodi agili tentano di ridurre il rischio di fallimento sviluppando il software in finestre di tempo limitate chiamate iterazioni che, in genere, durano qualche settimana. Ogni iterazione è un piccolo progetto a sé stante e deve contenere tutto ciò che è necessario per rilasciare un piccolo incremento nelle funzionalità del software: pianificazione (planning), analisi dei requisiti, analisi, implementazione, test e documentazione.
Anche se il risultato di ogni singola iterazione non ha sufficienti funzionalità da essere considerato completo deve essere rilasciato e, nel susseguirsi delle iterazioni, deve avvicinarsi semprè di più alle richieste del cliente. Alla fine di ogni iterazione il team deve rivalutare le priorità di progetto.
I metodi agili preferiscono la comunicazione in tempo reale, preferibilmente faccia a faccia, a quella scritta (documentazione). Il team agile è composto da tutte le persone necessarie per terminare il progetto software. Come minimo il team deve includere i programmatori ed i loro clienti. (con clienti si intendono le persone che definiscono come il prodotto dovrà essere fatto. Possono essere dei product manager, dei business analysts, o veramente dei clienti)
[modifica] Suddivisione
Il nome deriva da una differenziazione all'interno dell'ingegneria del software per quanto riguarda i metodi e i modelli di sviluppo. Infatti si parla di:
- Metodologie pesanti per i vecchi metodi come il Modello a cascata
- Metodologie iterative per i metodi come il Modello a spirale
- Metodologie agili
[modifica] Obiettivi
L'obiettivo è la piena soddisfazione del cliente e non solo l'adempimento di un contratto.
L'uso di queste metodologia, inoltre, serve ad abbattere i costi di sviluppo del software e a ridurre al minimo la parte di progettazione che spesso era quella più dispendiosa. Essa è esplosa proprio in concomitanza con la crisi successiva al boom di Internet prendendo spunto dai metodi applicati in piccole software house.
[modifica] Il manifesto
Tale nozione è nata da un manifesto firmato da 17 personalità tra cui Ward Cunningham, inventore di Wiki.
[modifica] Insieme di metodologie
In senso lato questo termine indica tutte quelle metodologie di sviluppo che rivoluzionano i vecchi sistemi di ingegneria del software (modello a cascata, modello a spirale, etc.), basati su una raccolta delle specifiche e su una strutturazione sequenziale dello sviluppo software.
In questo modo sotto questo nome si raggruppano metodologie innovative come Extreme Programming, SCRUM, Feature Driven Development, DSDM, Crystal e Lean Software Development. Tali metodologie si chiamano appunto agili perché consentono di rivedere di continuo le specifiche e di cambiarle durante lo sviluppo mediante un forte scambio di informazioni e di pareri con il committente.