Scrum, lo sviluppo incrementale e agile con .NET – Scrum, incremental development and agile with .NET

Negli ultimi mesi sto lavorando ad un progetto in particolare che utilizza Scrum e TDD (Test Driven Development) come metologie agile. La forza delle metodologie agile, dello sviluppo incrementale e delle iteration è davvero fantastica.

Metologia agile Scrum - Scrum agile metodology


Scrum è una metodologia agile iterativa che consente attraverso il planning e l’estimation di produrre delle release funzionanti ad ogni fine sprint, che può durare due o quattro settimane. La durata viene stabilita all’inizio del progetto e non dovrebbe più essere cambiata perchè diventa difficile calcolare la velocity, cioè la capacità che ha il team nello “smaltire” l’effort.

Il ProductOwner è “la voce” che rappresenta gli utenti dell’applicazione, è la figura che stabilisce quali sono le feature desiderate e che si occupa di scrivere le User Story. Le User Story sono l’elemento portante di qualsiasi metodologia agile, sono la formalizzazione delle feature.

All’inizio di ogni iterazione viene fatto il planning con il ProductOwner, il team e lo ScrumMaster, che è invece la figura mediatoria che prevalentemente si occupa di risolvere gli “impediment” che incontra il team; un impediment è un imprevisto che il team deve affrontare per procedere allo sviluppo della release.

La sessione di design si può affrontare usando il Planning Poker, ad esempio con questa applicazione WPF:
1. viene presa in considerazione una user story ritenuta prioritaria dal business
2. la user story viene suddivisa in task dal team
3. ogni membro del team gioca una carta per stimare l’effort (costo); l’efforto può essere un numero di Fibonacci (modificato :)) da 1 a 100 (1, 2, 3, 5, 8, 13, 20, 40, 60, 100, ?)
4. il team discute eventuali disparità nell’effort per concordare quale assegnare 
5. è buona regola suddividere ulteriormente task che superano 5

Lo sviluppo incrementale permette al business di pianificare correttamente le feature, anzichè “sparare” senza capire i costi di sviluppo, permette anche di pensare meglio a queli sono i benefici nei processi aziendali che si vogliono raggiungere prima grazie al software.

Al team invece permette di fare delle previsioni più affidabili e di concentrarsi sugli obiettivi e le problematiche tecniche imminenti anzichè divagare per cercare “la soluzione più bella”; si fa solo quello che è necessario per arrivare alla produzione della release. Il resto viene posticipato.

Ovviamente è necessaria anche una metodologie di sviluppo coerente con la metodologia di processo adottata… e qui arriviamo a TDD, per un prossimo post.

Per ulteriori dettagli sulla metodologia rimando a Wikipedia e al libro che ho segnalato.

Matteo Migliore.

Comments

# re: Scrum, lo sviluppo incrementale e agile con .NET – Scrum, incremental development and agile with .NET
Gravatar Molto interessante
Left by max on 6/16/2010 10:24 AM
# re: Scrum, lo sviluppo incrementale e agile con .NET – Scrum, incremental development and agile with .NET
Gravatar @Luca e Max: grazie!
Left by Matteo Migliore on 6/16/2010 12:18 PM
Comments have been closed on this topic.