Che cos'è il DSDM?
Il metodo di sviluppo di sistemi dinamici (DSDM) è un framework agile per la realizzazione di progetti, nato per la prima volta nel 1994 e utilizzato all'epoca per lo sviluppo software. Era concepito come un miglioramento dello sviluppo rapido delle applicazioni (RAD), che dava priorità alla prototipazione rapida e all'iterazione basata sul feedback degli utenti. Come molti metodi agili di realizzazione dei progetti, il framework agile per i progetti DSDM è passato dall'essere una soluzione specifica per il software a diventare uno strumento più generale di gestione dei progetti.

Gli elementi del metodo di sviluppo di sistemi dinamici includono:
- Si distingue dagli altri metodi per la dipendenza da solide basi e da una governance efficace
- Approccio incrementale e iterativo al progresso
- Il feedback degli utenti o dei clienti è fondamentale per i miglioramenti continui
- Si basa su rigidi vincoli di costi, qualità e tempistiche
- Stabilisce le priorità dell'ambito in base a ciò che si deve avere, si dovrebbe avere, si potrebbe avere o non si avrà
Oltre alla pratica in sé, il DSDM ha portato anche alla creazione del DSDM Consortium nel 1994. Ingegneri del software e altri esperti si sono riuniti per sviluppare e migliorare il framework come alternativa valida alle più comuni metodologie di sviluppo rapido delle applicazioni. All'epoca, il gruppo comprendeva rappresentanti di aziende come British Airways, American Express, Oracle, Logica, Data Sciences e Allied Domecq. Il gruppo ha poi cambiato nome e ora è conosciuto come Agile Business Consortium.
Il manuale DSDM è stato reso disponibile gratuitamente per la consultazione e l'utilizzo online nel 2014.
DSDM rispetto a RAD e alle metodologie agili
La metodologia RAD era estremamente popolare nei primi anni Novanta come metodologia di sviluppo di sistemi per lo sviluppo software e altri progetti IT. In quel periodo si passò dalla tradizionale UX a “schermo verde” alle interfacce grafiche che oggi sono diventate sinonimo di tutta la tecnologia. Questo cambiamento significava che anche il ciclo di sviluppo poteva cambiare, utilizzando questo nuovo tipo di interfaccia utente visiva per la comunicazione, la prototipazione rapida e l'iterazione.
La metodologia RAD era una forma piuttosto caotica di sviluppo agile dei sistemi. Non aveva un unico approccio o una definizione condivisi. Il DSDM agile offriva un approccio più strutturato a questo tipo di modello di sviluppo software. Il metodo di sviluppo di sistemi dinamici era fortemente incentrato sui budget di tempo e costi attraverso una rigorosa definizione delle priorità dell'ambito. Dava inoltre priorità alla comunicazione (e alle azioni conseguenti) tra tutti i portatori di interesse.
Il DSDM non è rigido solo per quanto riguarda scadenze e budget, ma tende anche ad avere un ordine preciso degli eventi: fase pre-progetto, fase del ciclo di vita del progetto e fase post-progetto. I metodi di sviluppo software RAD riguardano maggiormente un lavoro libero e non strutturato, lasciando spazio alla creatività e all'indipendenza anche a costo di esaurire le risorse.
Scrum rispetto a DSDM
Scrum e DSDM condividono molte somiglianze, ma presentano anche alcune differenze importanti. Alcune sono semplicemente basate sulla terminologia: ad esempio, il DSDM divide il lavoro in “attività di ingegneria” (ovvero la fase di sviluppo) e “soluzione emergente” (ovvero il risultato). In Scrum, invece, il risultato è noto come “incremento potenzialmente rilasciabile”.
Entrambi i metodi prevedono elenchi di sottoattività completate in base al rispetto di scadenze ravvicinate. Entrambe le metodologie puntano inoltre alla realizzazione di un progetto completo, che Scrum considera raggiunto quando il progetto arriva alla “Definizione di completato”. Tuttavia, non esiste un momento specifico del progetto in cui questa “Definizione di completato” viene concordata. Questa è una differenza fondamentale tra Scrum e DSDM.
Nel DSDM esiste una fase precisa in cui viene concordata la definizione del lavoro (e del lavoro completato): la fase delle fondamenta del progetto. Ciò avviene relativamente presto, il che può talvolta significare che ipotesi ancora non verificate influenzino il processo di pianificazione. Per tenerne conto, la definizione del lavoro “completato” deve essere riesaminata periodicamente durante il ciclo di vita del progetto. Un altro punto critico è che i responsabili del team devono evitare la progettazione completa iniziale (BDUF), che è più caratteristica delle metodologie a cascata e non di quelle agili.
Principi del DSDM
I principi agili del DSDM sono la forza guida di ogni progetto. In totale, i principi sono 8.
- Concentrarsi sulle esigenze aziendali
- Rispettare le scadenze
- Collaborare
- Non compromettere mai la qualità
- Costruire in modo incrementale partendo da solide basi
- Sviluppare in modo iterativo
- Comunicare in modo continuo e chiaro
- Dimostrare il controllo
Tecniche e pratiche DSDM
Ciò che distingue DSDM dagli altri metodi di sviluppo dei sistemi sono le seguenti # tecniche e pratiche.
Definizione di intervalli temporali: DSDM aderisce a rigorosi standard relativi alle scadenze. A tal fine, è necessario suddividere l'intero progetto in elementi più piccoli, ciascuno con un budget e un arco temporale definiti. Per gestire questo processo, i requisiti vengono classificati in base alla priorità. Se il tempo o il denaro stanno per esaurirsi, i requisiti con la priorità più bassa vengono rimossi. Il progetto completato comprenderà quindi solo gli elementi dei requisiti più essenziali.
MoSCoW: si tratta dei gruppi di priorità utilizzati per classificare gli elementi dal livello di importanza più alto a quello più basso. I gruppi di priorità sono Obbligatori, Dovrebbero essere presenti, Potrebbero essere presenti e Non saranno presenti. La gestione della configurazione aiuta a gestire tutti questi risultati da realizzare in concorrenza tra loro, spesso sviluppati contemporaneamente.
Modellazione e sviluppo iterativo: la modellazione aiuta a visualizzare i diversi aspetti del progetto durante il suo svolgimento. Ciò consente di presentare ogni elemento in fase di sviluppo e di permettere uno sviluppo iterativo fornendo riscontri regolari e implementando miglioramenti.
Prototipazione: come in molte metodologie agili, la prototipazione è essenziale per testare il progetto in una fase iniziale e concettuale. È un modo per delineare le funzioni di base, individuare le criticità più evidenti e consentire agli utenti di testare il software.
Laboratori: utenti e parti interessate vengono riuniti per discutere requisiti, problemi, risultati e test. DSDM si basa su livelli elevati di interazione con gli utenti, fin dall'inizio. I test sono estremamente importanti per DSDM, poiché garantiscono risultati di alta qualità.
Ruoli DSDM
Qualsiasi sviluppo agile di sistemi prevede un elenco di ruoli da ricoprire. DSDM non fa eccezione. Secondo il relativo manuale, questi sono i ruoli essenziali in qualsiasi ambiente DSDM.
1. Sponsor esecutivo (il “campione del progetto”) - L'organizzazione utente e/o il cliente forniranno una persona per questo ruolo. Questa persona può anche assegnare fondi e risorse, se necessario. Ha l'ultima parola quando si tratta di prendere decisioni.
2. Responsabile della visione - Munito di obiettivi concreti e della comprensione dell'attività dell'utente, il responsabile della visione avvia il progetto concentrandosi fin dall'inizio sui requisiti con la priorità più alta e guidando il team di conseguenza.
3. Utente ambasciatore - Un “utente di prova” ideale che porta nel progetto il punto di vista della comunità degli utenti. Diventa una fonte fondamentale di riscontri durante l'intero processo.
4. Utente consulente - Un altro tipo di utente che dovrebbe apportare punti di vista essenziali al progetto in questione. Potrebbe avere intuizioni specifiche o altre competenze che lo rendono il candidato ideale.
5. Responsabile del progetto - Il responsabile del progetto è la persona che gestisce il progetto nel suo complesso.
6. Coordinatore tecnico - Progetta l'architettura del sistema ed è responsabile del controllo qualità di tutti gli elementi tecnici.
7. Responsabile del team - Il responsabile del team, incaricato del coordinamento e della facilitazione della collaborazione.
8. Sviluppatore della soluzione - Gestisce tutti i requisiti del sistema, modella il sistema, sviluppa il codice da consegnare e crea prototipi.
9. Collaudatore della soluzione - Verifica il prodotto e fornisce commenti e documentazione quando si verificano errori. Esegue inoltre nuovi test dopo l'implementazione delle correzioni.
10. Redattore - Registra i requisiti, gli accordi, le decisioni e qualsiasi altra informazione utile per l'avanzamento del progetto.
11. Facilitatore - È incaricato di motivare e preparare il laboratorio per mantenere i progressi costanti e regolari. Deve essere un comunicatore eccellente, capace di mantenere tutti sulla giusta direzione.
12. Ruoli specialistici - Sono ruoli ricoperti da specialisti del relativo settore o ambito, che forniscono supporto aggiuntivo in base alle esigenze del progetto. Possono variare da progetto a progetto e da team a team. Tra questi ruoli possono rientrare l'architetto aziendale, il responsabile della qualità, l'integratore di sistemi e altri.
Consigli per la gestione dei progetti DSDM
Questi consigli possono aiutare a ottenere il massimo dal progetto DSDM, sebbene anche tutti i sistemi Agile possano trarre vantaggio dall'utilizzo di parte di queste conoscenze.
1. L'alta dirigenza e tutti i dipendenti devono comprendere e sostenere la metodologia scelta per un progetto.
2. Il team che guida il progetto deve impegnarsi nei test degli utenti, nella raccolta dei riscontri e nel coinvolgimento durante l'intero processo, dall'ideazione al lancio.
3. Deve esserci un team di progetto centrale stabile e dotato dei poteri necessari. I membri del team devono avere il potere decisionale necessario per garantire che il processo non rimanga bloccato in procedure di proposta e approvazione inutilmente complicate. Il team deve inoltre disporre di tutto ciò che gli serve per operare, come la tecnologia adeguata, un ambiente di sviluppo sano, strumenti di gestione dei progetti e altro ancora.
4. Deve esserci un rapporto di collaborazione e proattivo tra il cliente e il fornitore, indipendentemente dal fatto che i progetti siano sviluppati internamente o affidati a terzi.
5. Il team deve dimostrare coraggio quando si tratta di stabilire onestamente le priorità delle esigenze del progetto ed eliminare, se necessario, gli elementi a bassa priorità. È così che si rispettano le tempistiche e il budget.
