# Dynamic Systems Development Method

Il Dynamic Systems Development Method è una metodologia agile distribuita gratuitamente dal consorzio DSDM ai propri membri, è fornito in pacchetto insieme ad un framework. Questo consorzio è nato per definire e distribuire uno standard industriale per il framework RAD (Rapid Application Development).
DSDM è una metodologia che si integra facilmente con le altre metodologie agili (esistono risorse già pronte per farlo con Extreme Programming, Prince2, RUP, ecc.). Il consorzio non suggerisce nessun particolare strumento per l'applicazione del suo metodo.

## Principi

Il metodo DSDM, che il consorzio definisce framework perché prevede di integrarlo al framework RAD, si basa su quattro principi:
* lo sviluppo è un lavoro di gruppo;
* l'alta qualità si ottiene con velocità e robustezza;
* lo sviluppo può essere incrementale;
* bisogna spendere il tempo dedicato allo sviluppo concentrandosi prima sulle funzionalità che rendono di più in termini di business.
Nell'ambito disegnato da questi principi si inseriscono le regole di base:
* coinvolgimento attivo degli utenti;
* potere decisionale al team;
* distribuzioni frequenti del prodotto;
* distribuire le versioni dando priorità allo sviluppo delle funzionalità finalizzate al business;
* sviluppo iterativo ed incrementale;
* tutti i cambiamenti effettuati durante lo sviluppo devono essere reversibili;
* i requisiti e le specifiche sono definite solo ad alto livello;
* la fase di test è integrata nel ciclo di vita del prodotto;
* collaborazione e cooperazione fra gli attori coinvolti nel progetto sono un obbligo.
L'assunto da cui si parte per ottenere un buon prodotto in tempi migliori è che, anche se le prime versioni non saranno perfette, in generale è meglio distribuirle subito perché l'80% del prodotto richiesto può essere sviluppato nel 20% del tempo necessario a sviluppare il prodotto intero. Poi, nel resto del tempo, si potrà terminare il lavoro e correggere gli errori che gli utenti segnaleranno.

## Ruoli

Differenza sostanziale rispetto alle altre metodologie leggere è la definizione dei ruoli degli attori del progetto, ognuno dei quali può essere coperto da più persone (o viceversa, una persona può ricoprire più ruoli):
* Executive Sponsor (cioè il Project Champion);
* Visionary (responsabile dell'attivazione del progetto);
* Ambassador User (proveniente dall'area di business coperta);
* Advisor User (automatizza la conoscenza del lavoro giorno per giorno);
* Project Manager (può provenire dalla comunità degli utenti o dell'IT);
* Technical Co-ordinator (presiede ogni team di sviluppo);
* Team Leader (responsabile del lavoro di un singolo team);
* Developer (modella ed interpreta le richieste degli utenti, sviluppando prototipi e versioni da distribuire);
* Tester (effettua solo i test che gli utenti non possono svolgere);
* Scribe (presiede tutte le riunioni per mettere per iscritto i punti importanti);
* Facilitator (gestisce le riunioni di lavoro, è indipendente dal team di progetto);
* Specialist Roles (tutte le figure specialistiche che possano servire, Business Architect, Quality Manager, ecc.).
Il Facilitator gestisce perciò le riunioni di lavoro, che sono il punto importante del metodo e sono dette Facilitaded Workshops.