Titolo completo:
User Stories: cosa sono, a cosa servono, come si usano e come no - Andrea Francia @ WeDev 7 novembre 2018
Relatore: Andrea Francia
Abstract:
Come si decide quello che dovrà fare un sistema software? E poi, come comunicare la decisione alle varie persone coinvolte? È una problema difficile perché ognuna delle parti in gioco ha visioni e necessità diverse. Project manager, sviluppatori, utenti, tester e clienti hanno bisogni diversi e punti di vista diversi. Come creare un confronto produttivo tra queste persone arrivando ad una singola decisione condivisa che tutti possono supportare e mantenerne l'equilibrio per mesi o addirittura anni? In eXtreme Programming si usano le storie, un metodo per organizzare lo sviluppo semplice e efficace che però spesso viene spiegato complicato e snaturato delle caratteristiche che lo rendono utile. In questa presentazione riprendiamo la definizione originale e vediamo come usarlo come strumento per la pianificazione del lavoro e di supporto alla comunicazione e condivisione di conoscenza.
Video:
https://www.youtube.com/watch?v=dC9G4o-m5X8
26. Come ottenere la visione
condivisa secondo me?
• Lasciare parlare chi deve costruire il prodotto
(sviluppatori) con chi ha bisogno che il prodotto sia
costruito (clienti).
• Il manager dovrebbe facilitare la comunicazione tra
sviluppatori e cliente, non dovrebbe essere il canale.
• In XP è previsto il “cliente il loco” (customer on site) che
è a disposizione del team di sviluppo per rispondere a
qualsiasi domanda e scrive i test di accettazione per
ogni carta.
29. Cosa sono le storie?
• Sono il modo con cui si organizza lo sviluppo in eXtreme
Programming
USER STORIES
13
https://www.slideshare.net/xpmatteo/agile-fluency-e-che-cosa-significa-per-il-business/13
41. Independent
• Ogni storia dovrebbe essere indipendente dalle altre.
• In questo modo il cliente può scegliere la priorità senza
vincoli
• Sono necessarie degli skill dal punto di vista del design
per farlo.
42. Negotiable
• Le storie dovrebbero essere negoziabili.
• Non sono un contratto scritto, ne dei requisiti su cosa il
software deve implementare
• Le carte dovrebbero avere una breve descrizione della
funzionalità
• I dettagli verrano fuori durante la discussione tra il cliente
e i programmatori.
43. Valuable
• Ogni storia dovrebbe avere un valore per qualcuno, per
l’utente finale, il cliente o qualche altro stakeholder.
44. Small
• Le storie dovrebbero essere abbastanza piccole da poter
stare dentro un iterazione.
• Una buona dimensione potrebbe essere quella che
permette di mettere da tre a cinque storie nell’iterazione.
• Usare le tecniche di splitting
45. Testable
• La storia poter essere verificabile
• altrimenti potrebbe essere impossibile dire quando
sono finite.
• I criteri di accettazione si possono mettere per esempio
dietro la carta
• Noi usavamo una wiki
47. Esempio criteri di
accettazione
• Storia: “A user can pay for the items in her shopping cart with a credit card”
• Criteri di accettazione:
• Test with Visa, MasterCard and American Express (pass).
• Test with Diner's Club (fail).
• Test with a Visa debit card (pass).
• Test with good, bad and missing card ID numbers from the back of the
card.
• Test with expired cards.
• Test with different purchase amounts (including one over the card's limit).
49. Planning poker
• 1. Agree on a short size scale
• 2. Team briefly discusses a story
• 3. Everyone silently selects a point card
• 4. Team reveals all cards in unison
• 5. If outliers exist, discuss and re-vote
50. Planning Game
• Si misura la velocità del tema nell’iterazione precedente
• Si stima la capacità del team per prossima l’iterazione
• Il cliente da una priorità alle storie
• Gli sviluppatori danno una stima alle storie
• Si scelgono tante storie quante ne servono per riempire
l’iterazione, se necessario si splitta qualche storia
51. Quanto fare lunga
l’iterazione?
• Più corta è meglio è
• Servono skill sulle pratiche tecniche e design per tenerla
corta
• Cercare di arrivare ad una settimana dovrebbe essere un
obiettivo
58. Come ce lo raccontano
• As a ___________________
• I want to ___________________
• So that ___________________
59. Un esempio
• Come addetto al customer care telefonico
• Vorrei poter filtrare velocemente gli ordini dato il nome di
un cliente
• Così da poter vedere subito i suoi ordini e trovare quello
su cui ha il problema
60. Permette di chiarire gli aspetti
fondamentali della storia
• As a ___________________ —> Chi ne beneficia?
• I want to ___________________ —> Da che cosa?
• So that ___________________ —> Perché?
70. Dove finiscono le
specifiche?
• Sul cartoncino non c’è spazio per le specifiche
• Non vuol dire che non dobbiamo farle, solo che le
mettiamo sul supporto adeguato => Non tutto è scritto
sul cartoncino
71. Le storie sono una
promessa per una
conversazione futura
74. Code and Tests
• Maintain only the code and the tests as permanent
artifacts. Generate other documents from the code and
tests. Rely on social mechanisms to keep alive important
history of the project.
• Customers pay for the what the system does today and
what the team can make the system do tomorrow. Any
artifacts contributing to these two sources of value are
themselves valuable. Everything else is waste.
78. Le storie sono una pratica
dell’eXtreme Programming
User
Stories
79.
80. Come si usano le storie
• Fatto significa fatto tutto: per ogni storia:
• si raccolgono, comprendono e discutono i requisiti
• si decide una soluzione soddisfarli
• si implementa, si integra, si valida e si rilascia
l’incremento
84. Perché usare la carta?
• Lo fanno anche ad Atlassian (gli sviluppatori di Jira)
• Non serve login per vedere le informazioni.
• Le operazioni sono più veloci (CRUD).
• Montare una webcam su una board costa meno di una
licenza di un tool di planning.