guess these tunes
DESCRIPTION
Guess these TunesTRANSCRIPT
Guess these Tunes
Software Requirements Specification Version 1.5
Lead Software Engineers Alessandro Capra, Davide Gamberoni,
Matthia Sabatelli
• Revision History
Date Description Author Comments
15/10/12 Version 1.0 Alessandro Capra,
Davide Gamberoni,
Matthia Sabatelli
Compilazione documento SRS
19/10/12 Version 1.1 Alessandro Capra,
Davide Gamberoni,
Matthia Sabatelli
Modifica di use case e
creazione classi
25/10/12 Version 1.2 Alessandro Capra,
Davide Gamberoni,
Matthia Sabatelli
Modifica classi e creazione
diagramma di classe
28/10/12 Version 1.3 Alessandro Capra,
Davide Gamberoni,
Matthia Sabatelli
Revisione grafica,
aggiornamento diagramma
classi, revisione contenuto
08/11/12 Version 1.4 Alessandro Capra,
Davide Gamberoni,
Matthia Sabatelli
Revisione contenuto, aggiunta
diagramma di attività e di
sequenza
25/11/12 Version 1.5 Alessandro Capra,
Davide Gamberoni,
Matthia Sabatelli
Revisione complessiva,
completamento delle parti da
definire, aggiornamento
diagramma di classe e use
cases
• Document Approval
Signature Printed Name Title Date
<Your Name> Lead Software Eng.
Table of Contents
REVISION HISTORY .......................................................................................................................................... II
DOCUMENT APPROVAL ................................................................................................................................... II
1. INTRODUCTION ........................................................................................................................................... 1
1.1 PURPOSE ................................................................................................................................................................ 1 1.2 SCOPE .................................................................................................................................................................... 1 1.3 GLOSSARY .............................................................................................................................................................. 1 1.4 REFERENCES ............................................................................................................................................................ 1
2. GENERAL DESCRIPTION ................................................................................................................................ 1
2.1 PRODUCT PERSPECTIVE ............................................................................................................................................. 2 2.2 PRODUCT FUNCTIONS ............................................................................................................................................... 2 2.3 USER CHARACTERISTICS ............................................................................................................................................. 2 2.4 GENERAL CONSTRAINTS ............................................................................................................................................ 2 2.5 ASSUMPTIONS AND DEPENDENCIES ............................................................................................................................. 3
3. SPECIFIC REQUIREMENTS ............................................................................................................................. 4
3.1 USER INTERFACES ..................................................................................................................................................... 4 3.2 FUNCTIONAL REQUIREMENTS ..................................................................................................................................... 9
3.2.1 <Login> ........................................................................................................................................................ 9 3.2.2 <Registrazione> ........................................................................................................................................... 9 3.2.3 <Scelta genere musicale> .......................................................................................................................... 10 3.2.4 <Inserimento titolo e artista> .................................................................................................................... 10 3.2.5 <Classifica> ................................................................................................................................................ 11 3.2.6 <Condivisione> .......................................................................................................................................... 11
3.3 CLASSES ............................................................................................................................................................... 12
3.3.1 <Gestione utente> ..................................................................................................................................... 12 3.3.2 <Genere musicale> .................................................................................................................................... 12 3.3.3 <Canzone > ................................................................................................................................................ 12 3.3.4 <Classifica> ................................................................................................................................................ 12 3.3.5 <Database> ............................................................................................................................................... 12 3.3.6 <Json parser>............................................................................................................................................. 12
3.4 NON-FUNCTIONAL REQUIREMENTS ........................................................................................................................... 14
3.4.1 Performance ............................................................................................................................................ 14 3.4.2 Security .................................................................................................................................................... 14 3.4.3 Business Rules .......................................................................................................................................... 14 3.4.4 Constraints ............................................................................................................................................... 14 3.4.5 Other ........................................................................................................................................................ 14
A. APPENDICES ...............................................................................................................................................15
A.1 APPENDIX 1 - ANALYSIS MODELS ..............................................................................................................15
A1.1 CLASS DIAGRAMS ................................................................................................................................................ 15 A1.2 CLASS DIAGRAMS - ANDROID ................................................................................................................................ 16 A1.3 SEQUENCE / COLLABORATION DIAGRAMS ................................................................................................................. 17 A1.4 ACTIVITY DIAGRAMS ............................................................................................................................................. 18
A.2 APPENDIX 2 - PROJECT PLANNING .............................................................................................................19
A2.1 TASKS, RESPONSIBILITIES, DELIVERABLES .................................................................................................................. 19 A2.2 GANTT DIAGRAM ................................................................................................................................................. 19
Guess these Tunes
Software Requirements Specification page 1
1. Introduction
1.1 Purpose
“Guess these Tunes” è un'app Android creata per simulare il funzionamento di un quiz
musicale. Quest'app si rivolge agli appassionati di musica che intendono mettere alla prova
la loro conoscenza di svariati generi musicali (rock, pop, elettronica...) e confrontarsi online,
in modo simultaneo, con altri utenti (tramite l’ascolto delle anteprime di Itunes Store);
questo confronto genera una classifica in base alla correttezza e completezza della risposta.
1.2 Scope
Lo scopo di questa app è intrattenere appassionati di musica ed aumentare la loro
conoscenza in ambito musicale, anche tramite la sfida e il confronto con altre persone;
inoltre il collegamento all'iTunes Store consente di recuperare ulteriori informazioni relative
alla specifica canzone (accesso alla discografia, possibilità di leggere la biografia, possibilità
di scaricare determinate canzoni o interi album). Un ulteriore obiettivo è la creazione di una
comunità di appassionati, che possa interagire anche tramite applicazioni esterne a questo
software (es. forum dedicato).
1.3 Glossary
Term Definition
GTT Abbreviazione di Guess These Tunes
TOS Terms of Service
1.4 References
Non ci sono documenti particolari a cui si fa riferimento nel documento, se non un sito
internet dal quale abbiamo acquisito i principi di progettazione delle interfacce grafiche.
Guess these Tunes
Software Requirements Specification page 2
2. General Description
2.1 Product Perspective
Esistono altre applicazioni simili a GTT sul Play Store di Google, ma confrontando le
funzionalità offerte e le implementazioni che arricchiscono il prodotto (es. condivisione sui
social network e multiplayer online) abbiamo deciso di sviluppare un prodotto completo e
coinvolgente, che copra gli aspetti tralasciati, o sviluppati in parte da altri, e che comprenda
il concetto di “comunità di giocatori” precedentemente illustrato.
2.2 Product Functions
� Login utente;
� Registrazione utente;
� Selezione del genere musicale nel quale si vuole confrontarsi (round 10 canzoni);
� Inserimento da parte dell’utente del nome dell’artista e della canzone;
� Assegnamento punteggio in base alla correttezza e completezza della risposta
(punteggio round 10 canzoni);
� Visualizzazione della cover dell’album in cui è presente la canzone (alla canzone
successiva) e del link iTunes corrispondente;
� Condivisione su Social Network dell’utilizzo dell’app;
� Aggiornamento della classifica generale sul server;
� Visualizzazione della classifica personale dell’utente, dei migliori punteggi e tempi di
risposta;
2.3 User Characteristics
L’utente deve necessariamente possedere un dispositivo Android (smartphone, tablet ecc.)
ed avere a disposizione una connessione Internet attiva (connessione tramite router
wireless o pacchetto dati del gestore telefonico).
E’ opportuno avere una buona conoscenza/cultura musicale che permetta di competere con
gli altri; in tutti i casi GTT è stato sviluppato anche per sopperire a questa mancanza e
contribuire a far scoprire nuovi artisti o canzoni.
2.4 General Constraints
� La dimensione dello schermo dei dispositivi finali, che incide sulla possibilità di disporre
gli elementi essenziali a comporre l’interfaccia di gioco (es. caselle di testo, pulsanti e
soprattutto la tastiera virtuale);
� La disponibilità di un server che regga la mole di dati degli utenti iscritti e che contenga
tutte le impostazioni salvate;
� La disponibilità dello streaming delle canzoni sull’iTunes Store;
� La velocità della connessione di rete, in modo che lo streaming delle canzoni sia
continuo e che non si blocchi continuamente a causa di rallentamenti e lag della
connessione;
� Inizialmente l’applicazione verrà localizzata in italiano, con la possibilità di essere
tradotta in altre lingue successivamente;
Guess these Tunes
Software Requirements Specification page 3
2.5 Assumptions and Dependencies
Uno dei requisiti fondamentali per chi utilizza GTT è disporre si uno smartphone o di un
tablet con installato il sistema operativo Android. Non vi sono fattori che influenzano i
requisiti indicati nel SRS in quanto, essendo GTT sviluppato per la versione di Android 4.0.3
è totalmente retrocompatibile con tutte le altre versioni di Android finora sviluppate.
Nuove versioni di Android potrebbero influenzare però la programmazione dell’app, che
dovrebbe essere rivista, modificata e aggiornata.
Guess these Tunes
Software Requirements Specification page 4
3. Specific Requirements
3.1 User Interfaces
Interfaccia 1 Descrizione
Schermata iniziale, visualizzata dopo che l’utente clicca sul logo
dell’ape. L’utente può solo cliccare sul pulsante “Comincia a
giocare” oppure può uscire dall’applicazione utilizzando il tasto
“indietro” del proprio smartphone o tablet.
Interfaccia 2 Descrizione
Schermata login, visualizzata dopo che l’utente clicca sul pulsante
“Comincia a giocare”. In questa sezione l’utente può inserire il
proprio username e password ed effettuare il login cliccando sul
bottone “Login” se ha già precedentemente effettuato la
registrazione, oppure cliccando sul pulsante “Registrazione” può
effettuarla:
Interfaccia 3 Descrizione
Schermata registrazione, visualizzata dopo che l’utente clicca sul
pulsante “Registrazione”. In questa sezione l’utente può inserire i
dati personali per la registrazione. Se la procedura di registrazione
avviene con successo al termine viene visualizzata la schermata
login.
Guess these Tunes
Software Requirements Specification page 5
Interfaccia 4 Descrizione
Schermata genere,visualizzata dopo che l’utente effettua con
successo il login. In questa sezione l’utente può:
� -selezionare il genere musicale su cui vuole confrontarsi
cliccando sull’icona corrispondente;
� -condividere l’utilizzo dell’app cliccando sul pulsante
“Condividi”;
� -visualizzare la propria classifica personale cliccando sul
pulsante “Classifica”;
Interfaccia 5 Descrizione
Schermata riproduzione canzone,visualizzata dopo che l’utente ha
scelto il genere. In alto è presente la barra di scorrimento del
tempo, subito sotto la finestra dove l’utente può inserire il nome
dell’artista e/o il titolo della canzone. Vi è inoltre la visualizzazione
del numero di canzoni riprodotte all’interno del round e il migliore
punteggio e tempo di risposta del genere. Infine, nella parte in
basso, è presente la cover dell’album della canzone precedente
nonché il link all’iTunes Store.Terminato il round di 10 canzoni il
software ritorna automaticamente alla schermata genere.
Interfaccia 6 Descrizione
Schermata classifica-genere, visualizzata dopo che l’utente ha
cliccato sul pulsante “Classifica”, consente allo stesso di scegliere il
genere, cliccando sul pulsante “Scelta Genere”, del quale vuole
visualizzare la classifica.
Guess these Tunes
Software Requirements Specification page 6
Interfaccia 7 Descrizione
Schermata seleziona genere – classifica, consente all’utente di
scegliere il genere relativamente al quale vuole visualizzare la
classifica. Una volta scelto si passa in automatico alla
visualizzazione della classifica.
Interfaccia 8 Descrizione
Schermata visualizzazione classifica, consente all’utente di
visualizzare tutte le informazioni relativi ai round giocati ed ai
tempi migliori di un determinato genere.
Interfaccia 9 Descrizione
Schermata condivisione, consente all’utente di scegliere la
modalità con cui condividere l’utilizzo dell’app. Viene visualizzata in
seguito alla pressione del pulsante “Condivisione”.
Guess these Tunes
Software Requirements Specification page 7
Dal sito http://developer.android.com/design/get-started/principles.html:
1. Enchant me:
1.1. Delight me in surprising ways: A beautiful surface, a carefully-placed animation, or a
well-timed sound effect is a joy to experience. Subtle effects contribute to a feeling of
effortlessness and a sense that a powerful force is at hand.
1.2. Real objects are more fun than buttons and menus: Allow people to directly touch and
manipulate objects in your app. It reduces the cognitive effort needed to perform a
task while making it more emotionally satisfying.
1.3. Let me make it mine: People love to add personal touches because it helps them feel at
home and in control. Provide sensible, beautiful defaults, but also consider fun,
optional customizations that don't hinder primary tasks.
1.4. Get to know me: Learn peoples' preferences over time. Rather than asking them to
make the same choices over and over, place previous choices within easy reach.
2. Simplify my life:
2.1. Keep it brief: Use short phrases with simple words. People are likely to skip sentences if
they're long.
2.2. Pictures are faster than words: Consider using pictures to explain ideas. They get
people's attention and can be much more efficient than words.
2.3. Decide for me but let me have the final say: Take your best guess and act rather than
asking first. Too many choices and decisions make people unhappy. Just in case you get
it wrong, allow for 'undo'.
2.4. Only show what I need when I need it: People get overwhelmed when they see too
much at once. Break tasks and information into small, digestible chunks. Hide options
that aren't essential at the moment, and teach people as they go.
2.5. I should always know where I am: Give people confidence that they know their way
around. Make places in your app look distinct and use transitions to show relationships
among screens. Provide feedback on tasks in progress.
2.6. Never lose my stuff: Save what people took time to create and let them access it from
anywhere. Remember settings, personal touches, and creations across phones, tablets,
and computers. It makes upgrading the easiest thing in the world.
2.7. If it looks the same, it should act the same: Help people discern functional differences
by making them visually distinct rather than subtle. Avoid modes, which are places that
look similar but act differently on the same input
2.8. Only interrupt me if it's importan: Like a good personal assistant, shield people from
unimportant minutiae. People want to stay focused, and unless it's critical and time-
sensitive, an interruption can be taxing and frustrating.
3. Make me amazing:
3.1. Give me tricks that work everywhere: People feel great when they figure things out for
themselves. Make your app easier to learn by leveraging visual patterns and muscle
memory from other Android apps. For example, the swipe gesture may be a good
Guess these Tunes
Software Requirements Specification page 8
navigational shortcut.
3.2. It's not my fault: Be gentle in how you prompt people to make corrections. They want
to feel smart when they use your app. If something goes wrong, give clear recovery
instructions but spare them the technical details. If you can fix it behind the scenes,
even better.
3.3. Sprinkle encouragement: Break complex tasks into smaller steps that can be easily
accomplished. Give feedback on actions, even if it's just a subtle glow.
3.4. Do the heavy lifting for me: Make novices feel like experts by enabling them to do
things they never thought they could. For example, shortcuts that combine multiple
photo effects can make amateur photographs look amazing in only a few steps.
3.5. Make important things fast: Not all actions are equal. Decide what's most important in
your app and make it easy to find and fast to use, like the shutter button in a camera,
or the pause button in a music player.
Guess these Tunes
Software Requirements Specification page 9
3.2 Functional Requirements
3.2.1 Login
3.2.1.1 Use Case Diagram
Use Case Name Login
Trigger Icona menu applicazioni Android
Input Inserimento nome utente e password (stringhe)
Basic Path 1. Output schermata login (2 caselle di testo e pulsante login)
2. Input dati da parte dell’utente
3. Invio dati al server per confrontare dati inseriti con quelli salvati
nel database SQL
Output Schermata Genere o messaggio di errore (vedi exception path)
Exception Paths • Errore nella connessione a Internet
• Errore nella connessione al server (stampa a video errore)
• Errore di scrittura / lettura del database SQL (stampa a video
errore)
Other
3.2.2 Registrazione
3.2.2.1 Use Case Diagram
Use Case Name Registrazione
Trigger Link registrazione su schermata login
Input Inserimento nome utente, password, verifica password, nazionalità,
email.
Basic Path 1. Output schermata registrazione (5 caselle di testo e pulsante
“registrati”)
2. Input dati da parte dell’utente
3. Invio dati al server per confrontare dati inseriti (nome utente ed
email devono essere unici)
Output Schermata Login, oppure messaggio errore (vedi exception path)
Exception Paths • Errore nella connessione al server (stampa a video errore)
• Errore di scrittura / lettura del database SQL (stampa a video
errore)
• Errore compilazione vari campi (nome utente o email già
presente/i, formato email non corretto, campi non compilati,
password non corrispondenti)
Other
Guess these Tunes
Software Requirements Specification page 10
3.2.3 Scelta genere musicale
3.2.3.1 Use Case Diagram
Use Case Name Scelta genere musicale
Trigger Schermata Login
Input Selezione genere
Basic Path 1. Output selezione genere (quadranti con immagine di sfondo)
2. Selezione da parte dell’utente
3. Invio url ad-hoc allo iTunes Store per selezionare le canzoni di
quel determinato genere
Output Passaggio a Riproduzione Canzone
Exception Paths • Errore nella connessione all’Itunes Store (stampa a video errore)
• Link malformato passato all’Itunes Store (stampa a video errore)
Other
3.2.4 Inserimento titolo e artista
3.2.4.1 Use Case Diagram
Use Case Name Inserimento titolo e artista
Trigger Quadrante selezionato del genere musicale
Input Inserimento nome artista e nome della canzone (una casella di testo,
è possibile inserire l’artista o la canzone senza un ordine preciso)
Basic Path 1. Output schermata di gioco (barra di riproduzione della canzone
con secondi, casella di testo per inserire la stringa,
classifica round e num. giocatori, artista, titolo e cover album della
canzone precedentemente riprodotta)
2. Riproduzione canzone randomizzata in base al vettore di elementi
restituiti da iTunes Search API
3. Inserimento di titolo o nome artista da parte dell’utente
4. Confronto dei dati inseriti dall’utente con quelli relativi alla
canzone riprodotta
5. Assegnamento punteggio in base a correttezza e completezza
della risposta (punteggio round [10 canzoni])
6. A fine round, visualizzazione punteggio finale
7. Scrittura dei punteggi sul database SQL della classifica presente
sul server
Output � Dettagli sulla canzone precedentemente riprodotta (artista,
titolo e album cover) e link iTunes dell’artista;
� Barra di scorrimento che indica i secondi rimanenti nella
riproduzione dell’errore
� Numero canzoni riprodotte
� Miglior punteggio del genere selezionato
Exception Paths • Errore nella connessione al server (stampa a video errore)
• Errore reperimento informazione canzoni dall’iTunes Store (stampa
a video errore)
• Errore scrittura sul database SQL (stampa a video errore)
Guess these Tunes
Software Requirements Specification page 11
3.2.5 Classifica
3.2.5.1 Use Case Diagram
Use Case Name Classifica
Trigger Schermata genere
Input Pressione pulsante classifica
Basic Path 1. Scelta genere di cui visualizzare la classifica personale
2. Output schermata classifica (nome utente , punteggio genere,
tempo medio risposta, round giocati, miglior punteggio del
genere, miglior tempo del genere). Recupero dati dal database
SQL presente sul server
Output Visualizzazione punteggio personale e miglior tempo e punteggio
Exception Paths • Errore lettura dal server (stampa a video errore)
• Errore connessione al server (stampa a video errore)
Other
3.2.6 Condivisione
3.2.6.1 Use Case Diagram
Use Case Name Condivisione
Trigger Schermata genere
Input Pressione pulsante condivisione
Basic Path 1. Scelta metodo di condivisione
Output Schermata metodo di condivisione selezionato
Exception Paths
Other
Guess these Tunes
Software Requirements Specification page 12
3.3 Classes
3.3.1 Gestione utente
3.3.1.1 Attributes
- Nessuno, utilizziamo quelli della classe Database
3.3.2 Genere musicale
3.3.2.1 Attributes
- Nome: String
- Link iTunes: String
- Cover: immagine
3.3.3 Canzone
3.3.3.1 Attributes
- Titolo: string
- Artista: string
- Nome album: string
- Preview url: string
- Cover album url: string
- Link iTunes Store: string
Classe: Gestione utente
Responsabilità:
� Input dati;
� Invio dati;
� Preleva dati db;
Collaboratori:
� Database;
� Login;
� Registrazione;
� Genere musicale;
Classe: Genere musicale
Responsabilità:
� Scelta Riproduzione Canzone;
� Visualizzazione genere;
Collaboratori:
� Gestione utente;
� Canzone;
� Classifica;
� Json Parser;
Classe: Canzone
Responsabilità:
� Comparazione dati inseriti;
� Verifica correttezza dati;
� Comparazione tempo;
� Assegnazione punteggio;
Collaboratori:
� Classifica;
� JsonParser;
� Genere musicale;
Guess these Tunes
Software Requirements Specification page 13
3.3.4 Classifica
3.3.4.1 Attributes
- Nessuno, utilizziamo quelli della classe Database
3.3.5 Database
3.3.5.1 Attributes
- Nome: string
- Password: string
- Nazionalità: string
- Email: string
- Numero partite giocate: int
- Tempo medio risposte: float
- Punteggio round: int
- Online: boolean
3.3.6 Json Parser
3.3.6.1 Attributes
- Message: List
Classe: Classifica
Responsabilità:
� Verifica dati utente;
� Calcolo punteggio round;
� Calcolo classifica generale;
Collaboratori:
� Gestione utente
� Genere musicale
� Canzone;
Classe: Database
Responsabilità:
� getErrore;
� Connetti;
� Disconnetti;
� isConnesso;
� esegui Aggiornamento;
� esegui Query;
Collaboratori:
� Gestione utente;
Classe: Json Parser
Responsabilità:
� Leggi stream Json;
� Leggi array messaggi;
� Leggi messaggio;
Collaboratori:
� Genere musicale;
� Canzone;
Guess these Tunes
Software Requirements Specification page 14
3.4 Non-Functional Requirements
3.4.1 Performance
E’ necessario specificare la versione di Android per cui andremo a sviluppare la nostra app,
in quanto se scegliessimo la versione 4.2 non potrà essere retrocompatibile con la maggior
parte dei dispositivi ancora in commercio (il 93% dei dispositivi utilizzano la versione 2.2
Froyo). Per sfruttare al meglio lo streaming audio, l’utente dovrebbe avere a disposizione
una connessione dati piuttosto veloce, altrimenti il funzionamento dell’app potrebbe
risultare frustrante per l’utente stesso.
3.4.2 Security
L’utente accetterà i TOS che prevedono l’invio di comunicazioni al proprio indirizzo mail
riguardanti solamente aggiornamenti dell’app, senza invio di pubblicità; esso inoltre
sceglierà il proprio nome utente e password che gli consentiranno di effettuare il login
obbligatorio. Identificando il suo nome utente all’interno della classifica generale potrà
identificare il suo piazzamento.
3.4.3 Business Rules
L’utente può:
• Effettuare il login;
• Effettuare la registrazione;
• Scegliere il genere musicale;
• Inserire caratteri nelle barre di selezione;
• Visualizzare informazioni per poter comprare una canzone;
• Visualizzare la classifica personale e i migliori tempi;
• Condividere l’utilizzo dell’app.
3.4.4 Constraints
Hardware Android su cui si può programmare risulta essere molto meno potente di quello
che può essere presente su un pc. Durante tutto il corso della progettazione è necessario
tenerlo ben presente.
Guess these Tunes
Software Requirements Specification page 15
A. Appendices
• A.1 Class Diagram - Conceptual
Guess these Tunes
Software Requirements Specification page 19
• A.2 Appendix 2 - Project Planning
A2.1 Tasks, Responsibilities, Deliverables
I vari compiti e responsabilità sono stati suddivisi uniformerete fra i componenti del gruppo e
tutte le varie fasi e risultati, indicate nel Gantt sotto riportato, sono stati condivisi fin dalle
prime fasi.
A2.2 Gantt Diagram