planning patterns and antipatterns
DESCRIPTION
Slides from my presentation at Better Software 2011 (in Italian)TRANSCRIPT
![Page 2: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/2.jpg)
La pianificazione Agile• L’organizzazione sceglie un Product Owner
• Il PO definisce con gli sviluppatori le User Stories
• Gli sviluppatori stimano le US
• Ogni settimana:
• Il PO sceglie le X storie più importanti
• Gli sviluppatori implementano le US secondo le indicazioni del PO
• Demo delle US che vengono accettate dal PO
Che cosa può andare storto?
![Page 3: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/3.jpg)
Antipattern: sì bwana
![Page 4: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/4.jpg)
Tu mi dici quello che devo fare e io lo faccio.
Corollario: poi se va male è colpa tua
![Page 5: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/5.jpg)
Siamo contractor o consulenti?
Di chi è la responsabilità di progettare?
Pretendiamo che sia il PO a trovare le soluzioni?
![Page 6: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/6.jpg)
Antipattern: Progettisti in erba
![Page 7: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/7.jpg)
PO Progettista in erba
• Questo bottone mettilo più in qua
• Ci deve essere il mio logo lampeggiante!
• E questo fammelo un po’ più viola
![Page 8: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/8.jpg)
Antipattern: Disconnessione
![Page 9: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/9.jpg)
Disconnessione dagli utenti
• Si lavora sulle storie che interessano di più il Product Owner
• Gestiamo 42 diverse varianti di coupon
• .... ma non c’è il carrello!
![Page 10: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/10.jpg)
Disconnessione dagli stakeholders
• Si lavora sulle user stories che interessano di più il Product Owner
• Ci interfacciamo con servizi di analisi statistica del comportamento degli utenti
• Ma il committente dice “Tutto quello che volevo era un sito che assomigli a quello del Gorgonzola Zeta”
![Page 11: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/11.jpg)
Antipattern: Se non ha valore per il PO allora non esiste
![Page 12: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/12.jpg)
Conseguenze:
• “Non si possono” splittare le storie perché al PO non serve una funzionalità incompleta
• “Non si possono” eseguire attività di miglioramento del design perché non sono visibili al PO
![Page 13: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/13.jpg)
Antipattern: i requisiti sono solo funzionali
![Page 14: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/14.jpg)
Esempio: “Riscrivetemi questo sistema!”
![Page 15: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/15.jpg)
Dove sono i requisiti non funzionali??
• Analizziamo l’applicazione vecchia con il cliente
• Ricaviamo un backlog di user stories
![Page 16: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/16.jpg)
“Rick Kazman mio prof di architetture software diceva: i progetti falliscono per il non soddisfacimento dei requisiti non funzionali, raramente per il non soddisfacimento dei requisiti funzionali.”
Francesco Cirillo, extremeprogramming-it, 18/02/2010
![Page 17: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/17.jpg)
Il cliente ha già un sistema che funziona.Replicare le funzioni non basta.
Più veloce Più stabile Più usabile Più bello ... Deve farmi fare più soldi!
![Page 18: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/18.jpg)
Nome: Più-FatturatoTipo: Requisito non funzionaleDescrizione: Fatturare di più che con il sistema vecchioScala: € fatturati al meseStatus [dec. 2010]: 123 K€Goal [dec. 2011]: 180 K€
![Page 19: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/19.jpg)
Nome: Più-FatturatoTipo: Requisito di qualitàDescrizione: Fatturare di più che con il sistema vecchioScala: € fatturati al meseStatus [dec. 2010]: 123 K€Goal [dec. 2011]: 180 K€
![Page 20: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/20.jpg)
Nome: Più-FatturatoTipo: ValoreDescrizione: Fatturare di più che con il sistema vecchioScala: € fatturati al meseStatus [dec. 2010]: 123 K€Goal [dec. 2011]: 180 K€
![Page 21: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/21.jpg)
Nome: Più-FatturatoTipo: ValoreStakeholder: Gino Rossi, proprietarioDescrizione: Fatturare di più che con il sistema vecchioScala: € fatturati al meseStatus [dec. 2010]: 123 K€Goal [dec. 2011]: 180 K€
![Page 22: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/22.jpg)
Nome: Più-FatturatoTipo: ValoreStakeholder: Gino Rossi, proprietarioDescrizione: Fatturare di più che con il sistema vecchioScala: € fatturati al meseStatus [dec. 2010]: 123 K€Goal [dec. 2011]: 180 K€
Nome: Acquisto-FacileTipo: ValoreStakeholder: UsersScala: tempo necessario per trovare e acquistare un determinato articoloStatus [giu. 2011]: 150sGoal [dic. 2011]: 30s Nome: Disponibile
Tipo: ValoreStakeholder: Davide, operationsScala: % di tempo in cui il sistema è disponibileStatus [giu. 2011]: 90%Goal [dic. 2011]: 97%
Nome: Aggiornamento-FacileTipo: ValoreStakeholder: Luca, help deskScala: Tempo necessario per aggiornare i bannerStatus [giu. 2011]: 290sGoal [dic. 2011]: 30s
Nome: Codice-PulitoTipo: ValoreStakeholder: Team di sviluppoScala: McCabeStatus [giu. 2010]: 2,7Goal [sempre]: < 3
Nome: Modifiche-FaciliTipo: ValoreStakeholder: Proprietà XPeppersScala: Tempo necessario a implementare una modifica definitaStatus [giu. 2011, modifica=nuova home page]: 30 pomodoriGoal [set.2011, modifica=nuova home page]: 10 pomodori
![Page 23: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/23.jpg)
Pattern: Avere un piano
![Page 24: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/24.jpg)
Stakeholder Values!
Quarterly CyclePlan work a quarter at a time. Once a quarter reflect on the team, the project, its progress, and its alignment with larger goals.
Extreme Programming Explained,
2nd ed., 2005
Pratica: release plan
As the XP customer, you have a right to an overall plan, ... to define software releases and to manage scope to get a quality release out on time.
Extreme Programming Installed, 2000.
![Page 25: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/25.jpg)
Pattern: Distinguere i requisiti dalle soluzioni
![Page 26: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/26.jpg)
Nome: Informazioni-StudentiTipo: Requisito funzionale (?)Descrizione: I segretari possono visualizzare e aggiornare le informazioni [A,B,C,...] di uno studente
Nome: Produttività-SegreteriaTipo: ValoreDescrizione: Il segretario esegue la procedura amministrativa [XYZ] più agevolmenteScala: Tempo necessario ad eseguire [XYZ] (secondi)Status [giu. 2011]: 350s Goal: 20s
Requisito o Soluzione tecnica?
![Page 27: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/27.jpg)
Nome: Produttività-SegreteriaTipo: ValoreDescrizione: Il segretario esegue la procedura amministrativa [XYZ] più agevolmenteScala: Tempo necessario ad eseguire [XYZ] (secondi)Status [giu. 2011]: 350s Goal: 20s Nome: Wizard-Iscrizione-Studenti
Tipo: SoluzioneDescrizione: Sequenza di passi orientata al compito di iscrivere gli studenti
Nome: Crud-StudentiTipo: SoluzioneDescrizione: Maschere di gestione tabella studenti
Soluzioni che supportano i Valori
![Page 28: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/28.jpg)
Product Owner
Developers
Committente
Vuole descrivere soluzioni tecniche
Fanno quel che gli si dice di fare
Ha dei criteri di Valore che non sono considerati
![Page 29: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/29.jpg)
Product Owner
Developers
Stakeholder
Decide quali Soluzionitecniche producono maggior
Valore per il costo
Propongono Soluzionitecniche
StakeholderStakeholder
Stakeholder
Stakeholder
Stakeholder
Hanno Valori
![Page 30: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/30.jpg)
Caso: rifacimento di un sistema
![Page 31: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/31.jpg)
I rifacimenti sono rischiosi
• Abbiamo capito tutto quello che fa il sistema?
• Cosa succede il giorno in cui sostituiamo il sistema vecchio con il nuovo?
• Che cosa farà il nuovo sistema meglio di quello vecchio?
![Page 32: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/32.jpg)
Nome: Migrazione-UtentiTipo: ValoreDescrizione: l’Utente prosegue la sua operatività con il nuovo sistemaScala: % degli Utenti migratiGoal: [01/01/2012] 100%
Qual è il requisito più importante?
![Page 33: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/33.jpg)
Censimento UtentiUtenti tipo I - 3 utenti che necessitano della feature AUtenti tipo II - 7 utenti che necessitano delle feature A, BUtenti tipo III - 400 utenti che necessitano delle feature A, B, C, D
Nome: Step-Feature-ATipo: StepDescrizione: Implementare la feature ACriterio di accettazione: Un utente tipo I migrato con successo
Nome: Step-Feature-BTipo: StepDescrizione: Implementare la feature BCriterio di accettazione: Un utente tipo II migrato con successo
Nome: Migrazione-UtentiTipo: ValoreDescrizione: l’Utente prosegue la sua operatività con il nuovo sistemaScala: % degli Utenti migratiGoal: [01/01/2012] 100%
Come raggiungere questo obiettivo?
![Page 34: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/34.jpg)
Censimento UtentiUtenti tipo I - 3 utenti che necessitano di AUtenti tipo II - 7 utenti che necessitano di A, BUtenti tipo III - 400 utenti che necessitano di A, B, C, D
Nome: Step-Feature-ATipo: StepDescrizione: Implementare la feature ACriterio di accettazione: Un utente di tipo I migrato con successo
Nome: Step-Feature-BTipo: StepDescrizione: Implementare la feature BCriterio di accettazione: Un utente di tipo II migrato con successo
Nome: Piano-IncrementaleVersione: 0.1 Passo 0: Step-Feature-APasso 1: Step-Feature-BPasso 2: Step-Feature-C...
Nome: Migrazione-UtentiTipo: ValoreDescrizione: l’Utente prosegue la sua operatività con il nuovo sistemaScala: % degli Utenti migratiGoal: [01/01/2012] 100%
![Page 35: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/35.jpg)
Nome: Sincronizzare-DB-LegacyTipo: SoluzioneDescrizione: Ogni TX sul DB nuovo viene copiata sul DB vecchioSupporta: Migrazione-Utenti, Piano-Incrementale
Database
nuovo
Linux
App nuova
Database
legacy
Windows
App vecchia
Batch Sync
Utente tipo I Utente tipo II Admin
Altre soluzioni tecniche
Nome: Migrazione-UtentiTipo: ValoreDescrizione: l’Utente prosegue la sua operatività con il nuovo sistemaScala: % degli Utenti migratiGoal: [01/01/2012] 100%
![Page 36: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/36.jpg)
Nome: ScalabileTipo: ValoreDescrizione: possiamo estendere la capacità del sistema aggiungendo HWScala: TX/s supportate rispetto a un cluster di 1 serverGoal: [2 server] 180% Goal: [3 server] 250% Goal: [4 server] 310%
Nome: StatelessTipo: SoluzioneDescrizione: I server non conservano stato fra una richiesta HTTP e l’altraSupporta: Scalabile
Nome: Sessione-su-DBTipo: SoluzioneDescrizione: La sessione HTTP viene conservata sul DBSupporta: Scalabile, StatelessImpatta: Latenza
Nome: Sessione-su-cookie-crittatoTipo: SoluzioneDescrizione: La sessione HTTP viene conservata in un cookie crittato stile RailsSupporta: Scalabile, StatelessImpatta: Sicurezza
Soluzioni alternative
![Page 37: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/37.jpg)
Altro caso: il “progetto” stage studente
![Page 38: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/38.jpg)
Per saperne di più
![Page 39: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/39.jpg)
1988 2005
EVO, Planguage
![Page 40: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/40.jpg)
Kai Gilb, kickassproject.com
![Page 41: Planning Patterns and Antipatterns](https://reader034.vdocumenti.com/reader034/viewer/2022052321/554a11a8b4c9058c5d8b4b16/html5/thumbnails/41.jpg)
Extreme Programming:development & mentoring
Grazie dell’attenzione!