Una user story descrive una funzionalità dal punto di vista dell'utente finale, usando un formato standard che ne
cattura identità, obiettivo e motivazione. Non è una specifica tecnica: è una promessa di conversazione tra team e
cliente.
As a student, I want to filter the library search results by "Available Now," so that I don't waste time looking for books that are already checked out.
As a[ruolo] — chi è l'utente che trae beneficio
I want to[azione] — cosa vuole fare concretamente
So that[motivazione] — perché, il valore di business
ID identifica la storia · Estimate = story points (complessità relativa)
Acceptance Criteria — formato Given/When/Then
Ogni user story viene completata con gli acceptance criteria (AC): scenari eseguibili che definiscono quando la
storia è "done". Il formato standard è Given / When / Then.
AC 1: Successfully filtering by availability
The Happy Path
Givensono sulla pagina dei risultati per "Software
Engineering" e i risultati contengono sia libri "Available" che "Checked Out"
Whenseleziono la checkbox "Available Now"
Thenla lista si aggiorna mostrando solo libri con
status "Available"
Andil "Results Count" diminuisce per rispecchiare
solo gli item disponibili
AC 2: Removing the filter to see all results
Alternate Path
Givenho già applicato il filtro "Available Now" ai
risultati
Whende-seleziono la checkbox "Available Now"
Thenla lista si aggiorna mostrando tutti i libri
corrispondenti alla ricerca, indipendentemente dallo status
Andil "Results Count" aumenta per mostrare il totale
dei libri nel catalogo
AC 3: No items match the filter
Edge Case
Givensto visualizzando risultati dove tutti i
libri sono "Checked Out"
Whenseleziono la checkbox "Available Now"
Thenvisualizzo il messaggio "No books matching your
search are currently available"
Andla lista dei risultati è vuota
Acceptance Criteria — formato Checklist
In alternativa al formato narrativo, gli AC possono essere espressi come una checklist binaria, spesso usata in
GitHub Issues o ticket Jira per tracciare lo stato di completamento.
// Acceptance Criteria — LIB-102 · Checklist format
✓
Quando il filtro è attivo, appaiono solo i libri con status "Available"
✓
Il Results Count si aggiorna dinamicamente all'attivazione del filtro
✓
Rimuovere il filtro ripristina la lista completa con tutti gli status
Se nessun libro è disponibile, viene mostrato un messaggio di feedback
Il filtro persiste durante la navigazione tra le pagine di risultati
Analisi del dominio
Domain Model
Il Domain Model rappresenta i concetti chiave del dominio applicativo e le relazioni tra di essi — senza logica
implementativa. Per un gioco software con Player e Sistema, individua le entità reali che esistono nel "mondo del
gioco".
📐 Un Domain Model NON è un diagramma di classi Java. È una mappa concettuale: mostra cosa esiste nel dominio, non
come è implementato. Gli attributi sono proprietà reali degli oggetti del mondo, non campi di database.
✅ Il Domain Model non contiene metodi di logica applicativa complessa. I metodi mostrati (move, checkWin…)
rappresentano responsabilità concettuali, non firme Java finali.
Interazione sistema
System Sequence Diagram
Il System Sequence Diagram (SSD) mostra le interazioni tra attori esterni (Player) e il sistema trattato come una
black box. Definisce i messaggi di sistema — i contratti di operazione — senza rivelare l'implementazione interna.
⚠️ Nell'SSD il sistema è una singola scatola nera chiamata "System". Non si vedono classi interne, oggetti o
componenti. L'obiettivo è definire cosa entra nel sistema e cosa esce, non come.
✅ Ogni freccia solida è un'operazione di sistema. Ogni freccia tratteggiata è un valore di ritorno. Le operazioni
di sistema diventano poi i metodi pubblici del Controller (pattern GRASP).
Design
Design Class Model
Il Design Class Model (DCM) è il diagramma delle classi che evolve dal Domain Model per riflettere le decisioni
implementative: aggiunge pattern, relazioni di dipendenza, interfacce e visibilità degli attributi.
Design interno
Internal Sequence Diagram
L'Internal Sequence Diagram (ISD) apre la scatola nera del sistema e mostra come le classi interne collaborano per
realizzare un'operazione di sistema. È la traduzione delle decisioni di design in collaborazioni concrete tra
oggetti.
📐 Mentre l'SSD mostra "cosa fa il sistema", l'ISD mostra "come lo fa internamente". Ogni oggetto nel diagramma
corrisponde a una classe del Design Class Model.
✅ L'ISD mostra chiaramente il pattern Observer in azione: GameSystem notifica ScoreUI tramite l'interfaccia
IGameObserver, senza dipendenza diretta. Il Controller applica GRASP Controller e Low Coupling.