guess these tunes

22
Guess these Tunes Software Requirements Specification Version 1.5 Lead Software Engineers Alessandro Capra, Davide Gamberoni, Matthia Sabatelli

Upload: davide-gamberoni

Post on 27-Mar-2016

222 views

Category:

Documents


2 download

DESCRIPTION

Guess these Tunes

TRANSCRIPT

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 16

• A1.2 Class Diagram – Android

Guess these Tunes

Software Requirements Specification page 17

• A1.3 Sequence

Guess these Tunes

Software Requirements Specification page 18

• A1.4 Activity Diagrams

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