Sabato 11 Novembre 2006

Agile Project Management

L'IT, come tutte le esperienze umane, vive di marchi e di simboli. Uno di questi nomi che risuona negli ultimi anni e' "agile", inteso come Gestione di progetti "agile" e sviluppo software "agile".

Questo nome, associato ai progetti software, nasce nel 2001, quando un gruppo di "praticanti" di nuove religioni di metodologie di sviluppo software decisero, sulla base di innumerevoli esperienze, che era fondamentale l'interazione tra sviluppatori e "business experts". Questo gruppo ha creato un Manifesto per lo sviluppo "agile".

In essenza, il credo di questo nuovo modo di vedere i progetti di sviluppo software e' stato sintetizzato come segue (liberamente tradotto):

  • Gli individui e le interazioni piu' che processi e gli strumenti
  • Software funzionante piu' che completa documentazione
  • Collaborazione con gli utenti piu' che contratti
  • Rispondere ai cambiamenti piu' che seguire i piani

In pratica, nonostante si riconosca l'importanza degli elementi a destra nelle frasi riportate, si ritengono piu' importanti quelli a sinistra.

Wikipedia describe le metodologie Agili nel modo seguente:

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)

Cio' che cambia, ed e' una sorta di rivoluzione copernicana, e' l'obiettivo: la piena soddisfazione del cliente e non solo l'adempimento di un contratto.

Le metodologie agili servono a diminuire significativamente i costi di sviluppo del software e a ridurre al minimo la parte di progettazione (spesso la piu' costosa). Queste metodologie, quindi, rivoluzionano i vecchi sistemi di ingegneria del software (modello a cascata, modello a spirale, etc.), basati su una raccolta formale delle specifiche e su un processo strutturato dello sviluppo software. Queste metodologie non vedono le specifiche come un elemento fisso, ma ne colgono l'aspetto reale del cambiamento, le necessita' degli utenti di fatto spesso cambiano e/o si chiariscono meglio con l'avanzare del progetto. Le metodologie Agili 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.

Tra queste metodologie vi sono le seguenti:

  • Extreme Programming
  • SCRUM
  • Feature Driven Development
  • DSDM
  • Crystal
  • Lean Software Development
Posted by mliuzzi at 18:20:37 | Permanent Link | Comments (0) |
Commenti
Write a comment