Feature Driven Development (F-D-D)
Questa metodologia Agile basa le sue funzionalità riportando qualasiasi funzionalità del software da realizzare al template
<azione> <risultato> <da-per-di-a><oggetto>
Si può pensare al concetto di template al concetto di User Story definito nell’articolo precedente relatito alla metodologia Extreme. Tipicamente questo tipo di approccio non tiene in considerazione dell’analisi delle funzionalità e dei requisiti del software da realizzare. La fase di analisi e di raccolta informazione, tipicamente è già stata effettuata a priori.
Il modello FDD basa i suoi principi sullo sviluppo per requisiti: il software da sviluppare viene suddiviso in micro-aree (piccole funzionalità), che devono essere implementate con tempistiche molto strette (al massimo qualche settimana).
Tipicamente questo tipo di approccio realizzativo, viene utilizzato in sviluppi medio/lunghi con un gran numero di partecipanti (superiori a 50 unità).
Il modello FDD è composto da tre fasi, a partire dall’analisi dei requisiti che deve essere già stata effettuata.
- Creazione del modello generale: partendo dall’analisi dei requisiti (già raccolti) viene generata la documentazione ad alto livello del sistema, identificando le aree di competenza dei membri del team. Definiti e prodotti i singoli modelli, vengono uniti per formare il modello generale del modello da produrre.
- Lista delle feature: utilizzando il modello generale prodotto nello step precedente vengono estratte dal team le feature che il software da realizzare dovrà avere. E’ l’elenco dei requisiti che dovranno essere soddisfatti. In questa fase è fondamentale la collaborazione tra Cliente, Team di sviluppo e Utilizzatori.
- Progettazione ed implementazione: vengono estratte alcune feature (in base alla priorità) dall’elenco prodotto al punto precedente e vengono assegnate al team di sviluppo. Al termine dell’implementazione della singola feature, queste verranno integrate all’interno della mail build e verranno assegnate nuove feature al team di sviluppo. Questo fase viene re-iterata fino al termine dello sviluppo, soddisfando tutte le esigenze definite nel modello generale.
Anche per questo modello vengono definite delle figure chiave, con ruoli specifici:
- Project Manager: si occupa di aspetti finanziari e amministrativi del progetto. Ha il potere decisionale sul progetto.
- Chief architect: responsabile della progettazione del sistema e ha potere decisionale sulle problematiche durante l’implementazione.
- Development manager: definisce le tempistiche nello sviluppo e risolve eventuali problemi legati all’implementazione. Se necessario organizza le risorse.
- Chief programmer: è un programmatore con esperienza. Segue e guida i programmatori lungo tutto il processo di sviluppo. Il suo compito fondamentale è quello di guidare tutti gli altri sviluppatori nelle difficoltà dell’implementazione. Risolve anche problemi tecnici e produce report settimanali con i progressi del team.
- Domain Expert:trasmette le sue competenze agli sviluppatori e garantisce che il team riesca a produrre i requisiti avvalendosi della sua esperienza tecnica.
- Release Manager: responsabile dello sviluppo del sistema. Utilizza i report prodotti dallo Chief Programmer.
- Language guru: ha una conoscenza approfondita dei linguaggi di programmazione che verranno utilizzati durante lo sviluppo.