Università degli Studi di Padova - Sviluppo di una Timeline integrata in VideoMatch - DIPARTIMENTO DI MATEMATICA - SIAGAS

Pagina creata da Margherita Molteni
 
CONTINUA A LEGGERE
Università degli Studi di Padova - Sviluppo di una Timeline integrata in VideoMatch - DIPARTIMENTO DI MATEMATICA - SIAGAS
Università degli Studi di Padova
                      D IPARTIMENTO DI M ATEMATICA
                      C ORSO   DI   L AUREA   IN I NFORMATICA

           Sviluppo di una Timeline integrata in
                        VideoMatch

                           Tesi di laurea triennale

Relatore                                                              Laureando
Prof. Gilberto Filè                                             Federico Ziliotto

                        A NNO A CCADEMICO 2013-2014
Università degli Studi di Padova - Sviluppo di una Timeline integrata in VideoMatch - DIPARTIMENTO DI MATEMATICA - SIAGAS
Università degli Studi di Padova - Sviluppo di una Timeline integrata in VideoMatch - DIPARTIMENTO DI MATEMATICA - SIAGAS
Ringraziamenti

Un grazie particolare all’azienda SICS S.r.l. e al suo titolare, Michele Crestani, per
l’opportunità di vivere un’esperienza lavorativa importante che mi ha formato e da cui
ho imparato le sfide e i problemi che si vivono giornalmente nel mondo del lavoro.
Desidero ringraziare Carlo Gambirasio, per il supporto e l’aiuto ottenuto durante
l’esperienza di stage, per essere sempre stato disponibile nei miei confronti e per tutti i
consigli che mi ha dato per risolvere i problemi più difficili.
Vorrei esprimere la mia gratitudine a tutto il corpo docente del corso di Laurea in
Informatica e in particolare al Prof. Gilberto Filè, relatore della mia tesi, per il supporto
e l’aiuto che mi ha dato nel preparare la tesi.
Desidero ringraziare con affetto i miei genitori e la mia famiglia per il sostegno, il
grande aiuto e per essermi stati vicini in ogni momento durante gli anni di studio.
Infine voglio fare un ringraziamento a tutti i miei amici e conoscenti per tutti gli anni
passati insieme.

Padova, Ottobre 2014                                                      Federico Ziliotto

                                             iii
Università degli Studi di Padova - Sviluppo di una Timeline integrata in VideoMatch - DIPARTIMENTO DI MATEMATICA - SIAGAS
Università degli Studi di Padova - Sviluppo di una Timeline integrata in VideoMatch - DIPARTIMENTO DI MATEMATICA - SIAGAS
Indice

1 Introduzione                                                                                                                               1
  1.1 L’azienda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                            1
  1.2 L’idea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                           1
  1.3 Organizzazione del testo . . . . . . . . . . . . . . . . . . . . . . . . .                                                             2

2 Descrizione dello stage                                                                                                                   5
  2.1 Introduzione al progetto          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
  2.2 VideoMatch . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
      2.2.1 Configurazione .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   6
      2.2.2 Esportazione . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
  2.3 Requisiti e obiettivi . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
      2.3.1 Timeline . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
      2.3.2 Matrice azioni .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   8
  2.4 Analisi dei rischi . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   9

3 Norme, Strumenti e tecnologie utilizzate                                                                                                  11
  3.1 Ambiente di lavoro . . . . . . . . . . .                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
      3.1.1 Java . . . . . . . . . . . . . . .                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
      3.1.2 Swing . . . . . . . . . . . . . .                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
      3.1.3 SVN . . . . . . . . . . . . . . .                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
      3.1.4 Netbeans . . . . . . . . . . . .                            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
      3.1.5 GUI Builder . . . . . . . . . . .                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
      3.1.6 Tortoise SVN . . . . . . . . . .                            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
  3.2 Norme di Codifica . . . . . . . . . . .                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14

4 Analisi dei requisiti                                                                                                                     15
  4.1 Casi d’uso . . . . . . . . . . . . . . . . . . . . . . . . .                                          .   .   .   .   .   .   .   .   15
  4.2 Tracciamento dei requisiti . . . . . . . . . . . . . . . .                                            .   .   .   .   .   .   .   .   24
       4.2.1 Tabella di tracciamento dei requisiti Funzionali                                               .   .   .   .   .   .   .   .   25
       4.2.2 Tabella di tracciamento dei requisiti di Vincolo                                               .   .   .   .   .   .   .   .   27

5 Progettazione e codifica                                                                                                                  29
  5.1 Ambiente software .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
      5.1.1 Thread . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
      5.1.2 Eventi . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
      5.1.3 VideoMatch .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
  5.2 Architettura . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   31

                                                        v
vi                                                                                               INDICE

         5.2.1 VideoMatch::design::timeline::timelinePanel .         .   .   .   .   .   .   .   .   .   32
         5.2.2 VideoMatch::design::timeline::timelineTable .         .   .   .   .   .   .   .   .   .   37
         5.2.3 VideoMatch::design::timeline::buttons . . . .         .   .   .   .   .   .   .   .   .   39
     5.3 Tabella di tracciamento requisiti-classi . . . . . . . .    .   .   .   .   .   .   .   .   .   42
     5.4 Design Pattern utilizzati . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   43

6 Verifica e validazione                                                                                 49
  6.1 Analisi Statica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                      49
  6.2 Analisi Dinamica . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                         50
  6.3 Tabella di tracciamento test-requisiti . . . . . . . . . . . . . . . . . .                         53

7 Conclusioni                                                                                            55
  7.1 Raggiungimento degli obiettivi . . . . . . . . . . . . . . . . . . . . .                           55
  7.2 Conoscenze acquisite . . . . . . . . . . . . . . . . . . . . . . . . . . .                         55
  7.3 Considerazioni personali . . . . . . . . . . . . . . . . . . . . . . . . .                         56

Bibliografia                                                                                             57
Elenco delle figure

 2.1 Schermata di analisi di una partita in VideoMatch . . . . . . . . . . .         6
 2.2 Visualizzazione delle azioni di gioco di una partita . . . . . . . . . .        8
 2.3 Matrice che visualizza il numero di azioni per giocatore e per tipo . .         8

 3.1 Logo del linguaggio java . . . . . . . . . . . . . . . . . . . . . . . . .     11
 3.2 Logo dell’IDE Netbeans . . . . . . . . . . . . . . . . . . . . . . . . . .     13
 3.3 Logo di Tortoise SVN . . . . . . . . . . . . . . . . . . . . . . . . . . .     14

 4.1 Use Case - UC0: Scenario principale . . . . . . . . . . . . . . . . . .        16
 4.2 Use Case - UC1: Visualizzazione della timeline delle azioni per giocatore 17
 4.3 Use Case - UC1.2: Visualizza informazione azioni . . . . . . . . . . .         18
 4.4 Use Case - UC1.3: Selezione delle azioni . . . . . . . . . . . . . . . .       19
 4.5 Use Case - UC1.4: Controllo della timeline . . . . . . . . . . . . . . .       21
 4.6 Use Case - UC2: Visualizzazione del numero di azioni per tipo . . . .          23

 5.1 Architettura generale, vista package     . . . . . . . . . . . . . . . . . .   31
 5.2 Struttura del package TimelinePanel . . . . . . . . . . . . . . . . . .        32
 5.3 Selezione dei pannelli dei giocatori nella timeline . . . . . . . . . . .      34
 5.4 Visualizzazione dello slider della Timeline . . . . . . . . . . . . . . .      36
 5.5 Visualizzazione del package timelineTable . . . . . . . . . . . . . . .        38
 5.6 Architettura del package buttons . . . . . . . . . . . . . . . . . . . .       40
 5.7 Dettaglio della schermata di esportazione delle azioni, con la lista
     delle azioni esportate tramite la il pulsante di esportazione . . . . . .      41
 5.8 Diagramma descrittivo del design pattern MVC . . . . . . . . . . . .           43
 5.9 Diagramma della struttura del pattern Adapter . . . . . . . . . . . .          44
 5.10 Diagramma della struttura del pattern Façade . . . . . . . . . . . . .        45
 5.11 Diagramma della struttura del pattern Observer . . . . . . . . . . . .        46
 5.12 Diagramma della struttura del pattern Singleton . . . . . . . . . . . .       47

                                       vii
viii                                                           ELENCO DELLE TABELLE

Elenco delle tabelle

       4.1 Tabella di tracciamento dei requisiti Funzionali . . . . . . . . . . . .     25
       4.2 Tabella di tracciamento dei requisiti di Vincolo . . . . . . . . . . . . .   27

       5.1 Tabella di tracciamento requisiti-classi . . . . . . . . . . . . . . . . .   42

       6.1 Tabella di tracciamento test-requisiti . . . . . . . . . . . . . . . . . .   53
Capitolo 1

Introduzione

   Negli ultimi anni, il progresso delle tecnologie informatiche ha portato la loro ap-
plicazione in molti ambiti prima inesplorati. Uno di questi è lo sport professionistico,
che ha la possibilità, con le tecnologie oggi a disposizione, di ricavare dati di tipo
statistico sugli atleti in campo e di analizzarli.
   Dato l’ammontare di dati che si possono ottenere (fisici, tattici, posizionali,
temporali) e la poca esperienza del personale tecnico con gli strumenti informatici
offerti, è necessario che i software prodotti allo scopo di lavorare su tali dati siano il
più facilmente utilizzabili anche dal personale meno esperto. L’obiettivo è quindi
quello di creare prodotti e servizi di elevata qualità tecnologica che aiutino gli staff
tecnici nel loro lavoro.

1.1    L’azienda
    SICS S.r.l.è un’azienda specializzata nello sviluppo di applicazioni e servizi per lo
Sport.
    Da anni progetta e realizza software con la collaborazione tecnica di alcuni dei
più preparati professionisti nel calcio sia per l’aspetto atletico che tecnico-tattico.
    A partire dal 1995 ha lavorato a stretto contatto con le più importanti realtà spor-
tive nazionali e internazionali sviluppando e fornendo servizi e prodotti innovativi
che continuano a soddisfare le esigenze sempre più sofisticate degli staff tecnici e
dei club professionistici.
    La Match Analysis, la Pianificazione e il Controllo degli allenamenti, la ricerca
delle soluzioni più semplici e efficienti da proporre ai nostri clienti sono gli obiettivi
primari di questa società. Le soluzioni software sono interamente progettate e
sviluppate in collaborazione con uno staff di sport-scientists che uniscono un altissimo
livello di esperienza e professionalità a una passione smodata per lo sport in genere
e il calcio in particolare.

1.2    L’idea
   Il primo incontro con l’azienda è avvenuto durante l’evento STAGE-IT 2014 nel
quale, dopo una breve introduzione all’azienda, sono state esposte proposte di stage.
I progetti offerti sono stati:

                                            1
2                                                      CAPITOLO 1. INTRODUZIONE

    • Timeline eventi: progetto che richiede la creazione di componenti grafiche
      da inserire nel software di punta di SICS, ovvero VideoMatch;

    • Jasper Report: consiste nella creazione di relazioni delle partite presenti in
      VideoMatch tramite l’uso di grafici e diagrammi di rappresentazione dei dati;

    • Motion Detection tramite OpenCV: progetto di ricerca che consiste nello
      studiare le librerie OpenCV con lo scopo di applicarle al riconoscimento passivo
      del movimento dei giocatori e della palla in una partita di calcio o di altri sport
      di squadra;

    • Editor video avanzato: progetto che consiste nell’integrazione in VideoMatch
      di un editor video che permetta all’utente di tagliare, spostare e unire por-
      zioni diverse di un video, con lo scopo di creare clip riassuntive delle azioni
      importanti di una partita;

    • Superschemi Mobile: progetto da sviluppare in ambiente mobile con l’utilizzo
      di PhoneGap che consenta all’utente di creare schemi personalizzati per i
      giocatori di una squadra di calcio.

    I progetti sono stati presentati in ordine di priorità di svolgimento. Infatti, dato
che la nuova stagione calcistica era alle porte, era stata data priorità maggiore
ai progetti che potessero essere completati in tempo per il rilascio della versione
successiva del software VideoMatch.
    La scelta del progetto Timeline è stata fatta sia per andare incontro alle necessità
dell’azienda, sia per la chiarezza dei requisiti esposti durante il colloquio. Un
altro progetto interessante riguardava l’utilizzo della libreria OpenCV per effettuare
motion detection sui giocatori durante una partita. Questo progetto di ricerca, per
quanto interessante, era caratterizzato da incertezza sia riguardo alla fattibilità che
ai possibili tempi di realizzazione, perciò era stato scartato.
    In un successivo colloquio sono stati definiti maggiormente i requisiti obbligatori
e facoltativi del progetto, le funzionalità principali e sono stati inoltre presentati
i processi e gli strumenti di sviluppo. L’obiettivo del progetto è quello di fornire
all’utente di VideoMatch una nuova modalità di accesso alle informazioni sulle
azioni della partita e che in generale migliori l’esperienza e la facilità di utilizzo del
prodotto.

1.3     Organizzazione del testo
Il secondo capitolo introduce al progetto di stage vero e proprio, definendo i re-
      quisiti di partenza, le funzionalità previste dal prodotto e gli strumenti e le
      tecnologie atte allo sviluppo finale.

Il terzo capitolo introduce agli strumenti e alle tecnologie utilizzate per la realizza-
       zione del progetto.

Il quarto capitolo approfondisce i requisiti individuati durante la fase di analisi dei
      requisiti, che sono stati classificati. Vengono inoltre esposti i casi d’uso in cui
      l’utente si trova normalmente ad utilizzare il software.
1.3. ORGANIZZAZIONE DEL TESTO                                                      3

Il quinto capitolo riguarda la progettazione e la codifica del prodotto finale, quali
      design pattern sono stati utilizzati e la struttura delle classi finale.

Il sesto capitolo riguarda la fase di verifica e validazione del software, ovvero il
      controllo della qualità del prodotto.

Nel settimo capitolo vengono tratte alcune conclusioni sull’andamento complessi-
     vo dell’attività di stage.
Capitolo 2

Descrizione dello stage

   In questo capitolo viene descritto lo svolgimento dello stage e analizzato il pro-
getto da realizzare. Sono esposti i requisiti del progetto e il piano di lavoro seguito
durante lo stage per portarlo a compimento.

2.1     Introduzione al progetto
   L’obiettivo dello stage è di sviluppare una timeline integrata nel software Video-
Match che consenta la visualizzazione di eventi delle partite di calcio o di altri sport
di squadra.

2.2     VideoMatch
   VideoMatch è un software per la visualizzazione e l’analisi delle partite in tempo
reale. Le azioni che l’utente può compiere sono sincronizzate con il video della
partita tramite il quale si possono vedere l’azione in corso, i giocatori coinvolti e
tutte le altre caratteristiche dell’evento, come in figura 2.1.
   L’utente che utilizza VideoMatch ha l’obiettivo di effettuare un’analisi approfondita
di una partita di calcio, individuando le azioni decisive, gli errori dei singoli giocatori
oppure studiando la disposizione in campo della propria squadra o degli avversari.
Per fare questo ha già alcuni strumenti importanti all’interno del software:

   • Un pannello video dove è visibile in riproduzione il video della partita che
     l’utente ha scelto dalla propria libreria personale;

   • Un campo di gioco dove sono visibili i giocatori nelle rispettive posizioni;

   • Una tabella delle azioni che contiene la lista degli eventi di gioco;

   • Un pannello contenente i pulsanti per l’inserimento di nuove azioni per la
     partita visualizzata.

   Un’azione di gioco è un evento di una partita determinato da:

   • Un determinato tempo di inizio e un determinato tempo di fine, che servono
     per collocarlo nella linea temporale;

                                            5
6                                        CAPITOLO 2. DESCRIZIONE DELLO STAGE

              figura 2.1: Schermata di analisi di una partita in VideoMatch

    • Una lista di giocatori associati all’azione, che hanno partecipato direttamente
      o indirettamente a essa;

    • Un tipo di evento, che rappresenta una categoria a cui appartiene l’azione (ad
      esempio "Azione d’attacco", "Azione di difesa", "Tiro", "Cartellino Giallo" ecc...);

    Queste informazioni sono presenti durante l’esecuzione e sono visualizzabili
tramite una tabella, che consente di effettuare filtri, ricerche e selezioni delle azioni
interessanti. In questo modo però l’utente è limitato ad una modalità di utilizzo alla
volta (vedere il video della partita oppure scorrere la lista delle azioni) e non può
tenere traccia facilmente delle azioni in corso mentre osserva il video. Inoltre, il
sistema di filtri della tabella (seppur molto potente in quanto permette di filtrare per
ogni caratteristica dell’azione) è poco intuitivo e poco facile da utilizzare per utenti
meno esperti.
    Era richiesta dunque una modalità di visualizzazione nuova delle azioni che
consentisse all’utente di conoscere le azioni in corso semplicemente guardando il
video della partita. La soluzione che è stata pensata è di rappresentare le azioni
lungo una linea temporale per permettere all’utente di conoscere in ogni momento
di gioco le azioni in corso.
    Molto spesso, inoltre, è stato richiesto dagli utenti di VideoMatch la possibilità
di selezionare velocemente solo le azioni di uno o più giocatori per analizzarle (ad
esempio l’allenatore in un certo momento può essere interessato solo alle azioni dei
giocatori di difesa).

2.2.1    Configurazione
    La configurazione è un impostazione del programma che definisce quali sono
i tipi delle azioni che si devono considerare durante l’esecuzione. Ciò serve a
catalogare le azioni in base alla tipologia d’utente che sta utilizzando il software. La
2.3. REQUISITI E OBIETTIVI                                                               7

configurazione di default è "SICS 2015" ed è offerta e implementata dall’azienda.
Altre configurazioni sono possibili, in particolare nel caso l’utente sia un arbitro,
esiste una configurazione che permette di vedere le azioni di gioco che richiedono
l’intervento arbitrale, quali falli, cartelli ecc...
    Data l’estensibilità e la possibilità di personalizzazione del programma, è inoltre
possibile per l’utente definire delle configurazioni ad-hoc in base alle esigenze
riscontrate.

2.2.2    Esportazione

   Il software VideoMatch presenta una pagina da cui l’utente può esportare i filmati
delle singole azioni, estrapolati dal video della partita. La modalità di utilizzo
dell’esportazione non presenta però all’utente la possibilità di esportare direttamente
i video della partita che sta analizzando dalla sezione di analisi. Ciò aumenta i
tempi di interazione dell’utente con il software nel caso debba scegliere le azioni
manualmente dalla lista presentata nella pagina di esportazione.
   Una funzionalità utile che è stata individuata è quella di spostare direttamente
le azioni selezionate dall’utente durante l’analisi nella pagina di esportazione. Da
questa l’utente potrà utilizzare le azioni esportate per la creazione di brevi filmati
video personalizzati.

2.3     Requisiti e obiettivi
   L’obiettivo dello stage è la creazione di due componenti distinte ma correlate che
permettano all’utente di visualizzare le azioni di una partita di calcio in modi diversi.
Ciò permetterà all’utente di interagire con VideoMatch nel modo migliore possibile,
eseguendo l’analisi della partita con gli strumenti più adatti alle proprie necessità.

2.3.1    Timeline

    Per la prima componente si è pensato a una linea temporale con la lista dei
giocatori che hanno partecipato alla partita e, per ogni giocatore, la serie di azioni a
cui ha preso parte.
    Come si può vedere in figura 2.2, tramite la timeline l’utente ha la possibilità di
vedere la lista completa de giocatori che partecipano alla partita. La presenza di uno
slider permette all’utente di spostare il filmato (che è visibile su un altro pannello del
programma) per approfondire una parte di partita a lui interessante.
    Lo slider offerto dalla timeline permette inoltre all’utente di scorrere con più
facilità il video della partita, dato che tramite l’utilizzo dello zoom, la porzione
di tempo visualizzata può essere aumentata oppure diminuita a piacimento. Così
l’utente può decidere di focalizzarsi sull’analisi di una sola fase di gioco della partita
e tramite la timeline avrà la possibilità di vedere solo le azioni per quella fase (si noti
che le se la porzione di tempo viene diminuita, la dimensione delle azioni mostrate
sulla timeline sarà maggiore).
8                                           CAPITOLO 2. DESCRIZIONE DELLO STAGE

               figura 2.2: Visualizzazione delle azioni di gioco di una partita

2.3.2     Matrice azioni
    Una seconda modalità di visualizzazione degli stessi eventi prevista è quella
tramite una matrice con i giocatori e, per ogni giocatore, il numero di azioni a cui ha
partecipato in base al tipo delle azioni. In questo modo l’utente può avere facilmente
la possibilità di vedere statistiche interessanti sulla partita, ad esempio il numero di
tiri effettuati da un particolare giocatore. Da qui, l’utente ha anche la possibilità di
selezionare una qualunque cella della tabella e di vedere in riproduzione le azioni
selezionate (azioni di un particolare tipo per giocatore).

        figura 2.3: Matrice che visualizza il numero di azioni per giocatore e per tipo

    Le caratteristiche minime del prodotto fornito sono dunque le seguenti:

    • Lettura dei giocatori e delle informazioni delle azioni dal database;
2.4. ANALISI DEI RISCHI                                                                   9

   • Rappresentazione grafica delle azioni presenti nel database;

   • Funzionalità di zoom che consenta all’utente di vedere nello slider della timeli-
     ne solo una porzione di tempo della partita, ma in modo ampliato, così che si
     possano distinguere facilmente le azioni presenti;

   • Possibilità di esportare una playlist delle azioni selezionate dall’utente;

   • Calcolo del numero di eventi per tipo e per giocatore;

   • Sincronizzazione della linea temporale con il video in esecuzione tramite la
     libreria vlcj;

    Un obiettivo primario del progetto è quello di rendere la componente creata il
più facilmente usabile da utenti meno esperti, dato il target degli utilizzatori finali.
Per questo, si è pensato inoltre di inserire qualunque tipo di aiuto all’utente, ad
esempio attraverso l’implementazione di scorciatoie tramite tastiera oppure con la
visualizzazione di tooltip su ogni pulsante disponibile, che consentano di conoscere
le funzionalità offerte.

2.4     Analisi dei rischi
    Durante la fase di analisi iniziale sono stati individuati alcuni possibili rischi a cui
si potrà andare incontro. Si è quindi proceduto a elaborare delle possibili soluzioni
per far fronte a tali rischi.

1. Possibilità di riscontrare errori durante l’integrazione del software
Descrizione: Data la poca familiarità con il software VideoMatch, esiste la possibilità
di introdurre errori imprevisti e che vengono riscontrati solo durante l’integrazione
della nuova componente con il prodotto principale.

Soluzione: Si può prevenire il rischio tramite un attento controllo delle interfacce
di comunicazione tra la nuova componente e il software principale.

2. Modifica dei requisiti durante lo sviluppo del progetto
Descrizione: Dato che la componente software da creare presenta caratteristiche
di utilizzo nuove, inizialmente non sarà possibile essere sicuri di quali siano le
interazioni di cui l’utente ha bisogno. Infatti il rischio è di creare una componente
ridondante, che ha funzionalità simili ad altre ma che non viene utilizzata perché
non presenta vantaggi specifici all’utente.

Soluzione: La soluzione possibile è quella di comunicare con gli stakeholder quali
sono le funzionalità specifiche che desiderano dal progetto. Conoscere le interazioni
tipiche dell’utente è fondamentale per creare del software usabile. In particolare,
data la loro grande esperienza nel settore, discutere con il titolare dell’azienda SICS
e con il tutor interno, ha aiutato a minimizzare gli errori possibili durante l’analisi
dei requisiti.
10                                     CAPITOLO 2. DESCRIZIONE DELLO STAGE

Inoltre è stata prevista la creazione di prototipi con funzionalità limitate (oppu-
re semplicemente per testare il funzionamento dell’interfaccia utente), per avere
rapidamente un feedback da parte degli utilizzatori finali del software.
3. Mancato completamento del progetto nei tempi previsti
Descrizione: Per qualunque progetto nuovo e per cui lo sviluppatore non ha un’espe-
rienza precedente che lo aiuti con il lavoro, è necessario un tempo iniziale dedicato
allo studio delle tecnologie utilizzate. A questo si aggiunge il periodo di tempo
necessario all’inserimento in un nuovo ambiente lavorativo e ad assumere familiarità
con gli strumenti e le procedure utilizzate dall’azienda. Questi tempi non sono
prevedibili a priori e ciò mette a rischio la riuscita nei tempi del progetto.

Soluzione: In questo caso è importante l’aiuto del tutor interno e dei colleghi di
lavoro per rendere il passaggio al nuovo ambiente il più facile possibile. Inoltre è
stato previsto nel piano di lavoro un periodo consistente (una settimana) di studio
degli strumenti e delle tecnologie da utilizzare.
Capitolo 3

Norme, Strumenti e tecnologie
utilizzate

3.1     Ambiente di lavoro
   L’ambiente di lavoro è costituito dall’insieme degli strumenti per la codifica, il test,
la manutenzione e il versionamento del codice prodotto. Molti di questi strumenti si
possono trovare all’interno di un’IDE(Integrated Development Environment), che può
essere utilizzato come editor di testo avanzato, compilatore e debugger del codice.

3.1.1    Java
   Java è un linguaggio di programmazione nato nel 1995 e orientato agli oggetti,
specificatamente progettato per essere il più possibile indipendente dalla piattaforma
di esecuzione. Questo permette ai programmi scritti in Java di essere eseguiti nello
stesso modo in tutti i sistemi operativi dotati di una JVM (Java Virtual Machine), che
interpreta il codice Java e lo esegue in base alla piattaforma di destinazione.

                           figura 3.1: Logo del linguaggio java

   Java è ad oggi uno dei linguaggi più diffusi data la sua versatilità e la sua natura
open-source. Proprio per questo, Java è stato scelto come il principale linguaggio
di sviluppo sia lato client che lato server di VideoMatch, in particolare per venire
incontro alle esigenze dei clienti (ovvero allenatori e staff tecnici), che soprattutto
negli ultimi anni hanno iniziato ad utilizzare sempre di più prodotto Apple.

                                           11
12                CAPITOLO 3. NORME, STRUMENTI E TECNOLOGIE UTILIZZATE

    Un altro dei vantaggi di Java rispetto agli altri linguaggi è la presenza di una serie
di librerie standard che forniscono agli sviluppatori gli strumenti per scrivere codice
in modo rapido e sicuro. Tra queste librerie le più importanti e che sono utilizzate in
questo progetto sono:

     • JCF - Java Collections framework: un’insieme di classi e interfacce che
       permettono il riuso delle strutture dati più comuni nell’ambito informatico,
       come liste, insiemi e alberi;

     • AWT - Abstract Window Toolkit: fornisce componenti di interfaccia grafica
       di basso livello;

     • JavaFX: nuova libreria Java introdotta con Java 8 e che permette ai componenti
       grafici creati di essere modificati tramite CSS (Cascading Style Sheets).

3.1.2    Swing
    Swing è la libreria di riferimento di Java per la creazione di interfacce grafiche
e che viene utilizzata prevalentemente nel software VideoMatch. Uno dei vantaggi
di Swing rispetto alle altre librerie è che permette l’utilizzo di diversi Look & Feel
(come vengono visualizzate le componenti grafiche nei vari sistemi operativi). Ciò
permette alle applicazioni la cui interfaccia grafica è stata scritta in Swing di avere
lo stesso aspetto tra le varie piattaforme oppure di utilizzare l’aspetto classico del
sistema operativo sottostante.
    Inoltre Swing utilizza al suo interno prevalentemente il pattern MVC (Model View
Controller) per separare i dati dalle componenti grafiche. In questo modo lo svilup-
patore ha la possibilità di scegliere se implementare un modello di rappresentazione
dei dati oppure di usarne uno di default messo a disposizione dal framework.

3.1.3    SVN
    Apache Subversion (abbreviato come SVN) è un sistema di versionamento del
software e di controllo di versione distribuito con la licenza gratuita Apache.
    Si differenzia da altri sistemi di versionamento perché le azioni di commit(ovvero
l’atto di inserire una nuova versione di un file) sono effettuate come operazioni
atomiche, ovvero non ci possono essere due azioni di commit che avvengono con-
temporaneamente sullo stesso file. Questo modo di procedere presenta vantaggi e
svantaggi. L’azienda SICS utilizza SVN perché permette di avere un quadro della
storia dei file più semplice e consistente, ed evita la maggioranza dei conflitti se i
programmatori stanno sviluppando su componenti del software separate.

3.1.4    Netbeans
   Netbeans è uno IDE (Integrated Development Environment) per lo sviluppo di
software pensato primariamente per Java e i linguaggi che fanno uso della JVM, ma
può essere usato per lo sviluppo in qualunque altro linguaggio.
   Lo strumento presenta caratteristiche interessanti, in particolare per quanto
riguarda la fase di debugging di un’applicazione. C’è infatti la possibilità di effettuare
3.1. AMBIENTE DI LAVORO                                                               13

                           figura 3.2: Logo dell’IDE Netbeans

modifiche al codice durante il debug di un software in esecuzione, che portano ad
una ricompilazione del codice oggetto per le classi modificate. Ciò permette la facile
risoluzione di bug minori.
   Un altro aspetto caratteristico di Netbeans è la presenza di una suite per la
creazione di interfacce grafiche in Java. Questa è supportata dalla possibilità di
prendere degli snapshot dell’interfaccia di un’applicazione in esecuzione per vedere
le caratteristiche delle varie componenti grafiche, come layout, posizionamento,
dimensioni ecc. . .
   Queste caratteristiche sono solo alcuni degli aspetti che rendono Netbeans uno
dei migliori IDE per lo sviluppo in Java disponibili al momento, ed è stato utilizzato
per tutta la durata del progetto. L’utilizzo di un IDE ha aiutato a migliorare in
generale la qualità del lavoro svolto, velocizzando di conseguenza tutto il processo
di sviluppo.

3.1.5    GUI Builder

    Si tratta di uno strumento interno all’IDE Netbeans per la creazione di componenti
di interfaccia graficamente. Si possono creare le finestre e i pannelli base di cui è
costituito il software in modo facile e intuitivo. Altrettanto facile è la generazione del
layout da assegnare a ciascun pannello, senza dover scrivere il codice manualmente.
    Infatti il codice generato, nel caso di Java e in particolare per la libreria Swing,
è molto spesso ridondante e poco leggibile. Tramite questo strumento è possibile
lasciare la generazione del codice al software sottostante ed è più facile concentrarsi
sulla struttura dell’interfaccia grafica voluta.
    Un altro vantaggio dell’utilizzo del GUI Builder integrato in Netbeans è la possi-
bilità di effettuare l’attività di refactoring del codice in modo automatico. Inoltre
viene offerta la possibilità di inserire velocemente delle componenti standard della
libreria (slider, pulsanti, tabelle ecc...) tramite interfaccia grafica e di assegnare dei
comportamenti aggiuntivi in risposta agli eventi generati dall’interazione utente,
quali la pressione di un tasto oppure il movimento del mouse.

3.1.6    Tortoise SVN

   Tortoise è un client gratuito e open source per l’utilizzo di vari sistemi di versiona-
mento, tra i quali Subversion. Fornisce un’interfaccia grafica semplice ed efficace
per effettuare tutte le operazioni di versionamento più comuni, tra le quali quelle di
commit e update. Inoltre presenta la possibilità di risolvere efficacemente conflitti
nei file locali tramite uno strumento di conflict solver interno.
14                CAPITOLO 3. NORME, STRUMENTI E TECNOLOGIE UTILIZZATE

                             figura 3.3: Logo di Tortoise SVN

3.2      Norme di Codifica
   Le norme di codifica sono state indicate dal responsabile del progetto e sono
seguite in tutti i progetti realizzati all’interno dell’azienda. Per quanto riguarda il
codice le norme principali che sono state seguite sono:

     • il nome di metodi e variabili deve iniziare con la lettera minuscola e se composti
       da più parole consecutive, le stesse devono iniziare con la lettera maiuscola
       (modalità CamelCase);

     • le variabili devono essere inizializzate al momento della loro dichiarazione;

     • il nome delle classi deve iniziare con la lettera maiuscola e seguire il metodo
       CamelCase per i nomi formati da più di una parola, mentre i nomi dei package
       devono iniziare con la lettera minuscola;

     • i nomi delle variabili e delle classi devono essere in lingua inglese;

     • le variabili di iterazione devono avere scopo locale;

     • i commenti relativi al codice devono avere la seguente struttura:

          – i commenti per i campi dati devono essere posti nella riga precedente il
            campo dato stesso e lasciare sotto quest’ultimo una riga vuota;
          – commenti per i metodi devono essere posti nella riga precedente il metodo
            stesso e contenere i commenti per i parametri di ingresso e quelli di
            ritorno;
          – i commenti TODO vanno adoperati come promemoria nel codice per
            indicare attività da svolgere o prestare attenzione ad un determinato
            punto.
Capitolo 4

Analisi dei requisiti

   Prima di effettuare lo sviluppo software, è stata svolta un’attività di analisi
dei requisiti, volta a individuare e classificare funzionalità e caratteristiche del
prodotto finale. Ciò è stato fatto a partire dal piano di lavoro iniziale e con la
partecipazione degli stakeholder (in questo caso l’azienda), per avere un quadro
completo e delineato del lavoro da svolgere.

4.1    Casi d’uso
    I diagrammi dei casi d’uso dello standard UML sono stati utilizzati per effettuare
l’analisi. Si tratta di diagrammi che rappresentano gli scenari tipici nei quali l’utente
interagisce con il software. Attraverso i diagrammi è possibile individuare per ogni
scenario le funzionalità disponibili all’utente, con condizioni di ingresso e uscita e il
flusso di azioni con cui vengono eseguite.
    Infine, sono stati individuati i requisiti (ovvero le caratteristiche che il prodotto
finale deve avere) e che saranno tracciati attraverso le altre attività per garantire il
loro soddisfacimento finale.

UC0: Scenario principale
Attori Principali: Utente
Precondizioni: L’utente ha avviato VideoMatch e ha aperto una partita da analizzare

Descrizione: Viene mostrata una timeline che consente all’utente di visualizzare gli
eventi della partita in corso raggruppati per giocatore
Postcondizioni: Il sistema è pronto l’interazione con l’utente

UC1: Visualizzazione della timeline delle azioni per giocatore
Attori Principali: Utente
Precondizioni: L’utente ha avviato una partita e ha aperto la timeline di visualizza-
zione delle azioni dei giocatori
Descrizione: Viene visualizzata una linea del tempo che mostra il tempo della

                                           15
16                                            CAPITOLO 4. ANALISI DEI REQUISITI

                     figura 4.1: Use Case - UC0: Scenario principale

partita. Per ogni giocatore l’utente può vedere le azioni nella posizione corretta
lungo la linea del tempo. L’utente può:

     • Scegliere un’azione e vederla visualizzata a video;

     • Vedere le informazioni di un’azione voluta;

     • Selezionare una o più azioni (UC 1.3);

     • Modificare la visualizzazione della timeline tramite i controlli (ad esempio per
       aumentare lo zoom o modificare la posizione temporale, si veda UC1.4);

     • Esportare le azioni selezionate ne pannello di esportazione dell’applicazione;

     • Riprodurre come playlist le azioni selezionate: le azioni vengono riprodotte in
       ordine sequenziale nella schermata video;

Postcondizioni: L’utente ha eseguito le operazioni volute

UC1.1: Visualizzazione video azione
Attori Principali: Utente
Precondizioni: L’utente sta visualizzando le azioni di una partita
Descrizione: L’utente sceglie un’azione tra quelle presenti lungo la linea del tempo
e può visualizzare il video dell’azione. Se il video era in riproduzione, viene sincro-
nizzato con la posizione d’inizio dell’azione selezionate, altrimenti viene avviata la
riproduzione da quel punto.
4.1. CASI D’USO                                                                            17

   figura 4.2: Use Case - UC1: Visualizzazione della timeline delle azioni per giocatore

Postcondizioni: Viene avviata la riproduzione, da parte del video player integrato,
dell’azione scelta dall’utente

UC1.2: Visualizza informazione azioni
Attori Principali: Utente
Precondizioni: L’utente sta visualizzando le azioni di una partita
Descrizione: L’utente sceglie un’azione e può vederne le informazioni relative:

   • I giocatori che hanno partecipato all’azione;

   • Il tipo dell’azione;

   • Il minuto di inizio e quello di fine dell’azione;

Postcondizioni: L’utente ha visualizzato le informazioni volute

UC1.2.1: Visualizza giocatori coinvolti
18                                             CAPITOLO 4. ANALISI DEI REQUISITI

             figura 4.3: Use Case - UC1.2: Visualizza informazione azioni

Attori Principali: Utente
Precondizioni: L’utente sta visualizzando un’azione della partita
Descrizione: L’utente può conoscere quali sono i giocatori coinvolti nell’azione
desiderata

UC1.2.2: Visualizza tipo dell’azione
Attori Principali: Utente
Precondizioni: L’utente sta visualizzando un’azione della partita
Descrizione: L’utente può conoscere il tipo dell’azione considerata. Questo può
essere composto anche da una combinazione di tipi basilari. Le azioni vengono
classificate in base ai tipi della configurazione attualmente in uso.

UC1.2.3: Visualizza del tempo di inizio e di fine di un’azione
Attori Principali: Utente
Precondizioni: L’utente sta visualizzando un’azione della partita
Descrizione: Il tempo di inizio e di fine di un’azione vengono mostrati all’utente.
Questi vengono visualizzati nel seguente modo: {T}{M}{S}, dove:

 T= : il tempo di gioco in cui è avvenuta l’azione (primo tempo, secondo tempo,
    supplementari ecc...);

M= : il minuto di gioco riferito all’inizio del tempo in cui è avvenuta l’azione;

 S= : il secondo di inizio/fine dell’azione.
4.1. CASI D’USO                                                                   19

UC1.3: Selezione delle azioni
Attori Principali: Utente
Precondizioni: L’utente sta visualizzando le azioni di una partita
Descrizione: L’utente può selezionare una o più azioni per poterne vedere le infor-
mazioni, riprodurle in sequenza o esportarle come clip video. La selezione avviene
tramite click del mouse, mentre la selezione multipla è attivata tramite un pulsan-
te dedicato all’attivazione di tale funzionalità oppure tramite il tasto del sistema
operativo dedito alla selezione multipla. Inoltre, una volta effettuata una selezione,
l’utente può decidere di deselezionare le azioni correnti.
Postcondizioni: Le azioni scelte dall’utente sono state selezionate/deselezionate

                  figura 4.4: Use Case - UC1.3: Selezione delle azioni

UC1.3.1: Selezione singola di un’azione
Attori Principali: Utente
Precondizioni: L’utente sta visualizzando la timeline delle azioni
Descrizione: L’utente può selezionare un’azione tra quelle disponibili nel periodo di
tempo visualizzato dalla timeline

UC1.3.2: Visualizzazione video dell’azione selezionata
Attori Principali: Utente
20                                            CAPITOLO 4. ANALISI DEI REQUISITI

Precondizioni: L’utente ha precedentemente selezionato un’azione tra quelle dispo-
nibili.
Descrizione: L’utente visualizza il filmato dell’azione che ha selezionato.

UC1.3.3: Selezione multipla delle azioni
Attori Principali: Utente
Precondizioni: L’utente sta visualizzando la timeline delle azioni.
Descrizione: L’utente attivare la modalità di selezione multipla delle azioni e iniziare
a selezionarle.
Postcondizioni: Le azioni scelte dall’utente vengono selezionate.

UC1.3.4: Selezione di tutte le azioni di un giocatore
Attori Principali: Utente
Precondizioni: L’utente sta visualizzando la timeline delle azioni
Descrizione: L’utente sceglie uno o più giocatori presenti e può selezionare tutte le
azioni di tali giocatori. Solo le azioni in cui compaiono i giocatori scelti dall’utente
saranno visibili.
Postcondizioni: Vengono visualizzate tutte e sole le azioni dei giocatori scelti
dall’utente

UC1.3.5: Deselezione di tutte le azioni
Attori Principali: Utente
Precondizioni: L’utente sta visualizzando la timeline delle azioni e ha precedente-
mente selezionato una o più azioni.
Descrizione: L’utente può scegliere di deselezionare contemporaneamente tutte le
azioni precedentemente selezionate. in questo modo anche la selezione avvenuta
tramite la scelta di uno o più giocatori viene annullata e ripristinata alla visualizza-
zione completa della timeline con tutte le azioni.
Postcondizioni: Vengono deselezionate e visualizzate tutte le azioni lungo la
timeline.

UC1.4: Controllo della timeline
Attori Principali: Utente
Precondizioni: L’utente sta visualizzando le azioni di una partita
Descrizione: L’utente può scegliere di modificare la visualizzazione della timeline.
È possibile:

     • Effettuare lo zoom in avanti e indietro della timeline. In questo modo l’inter-
       vallo di tempo visualizzato si espande oppure diminuisce, di conseguenza le
       azioni presenti nella linea del tempo saranno visivamente più o meno grandi.
4.1. CASI D’USO                                                                   21

   • Spostare il cursore del tempo della timeline ad una posizione prefissata. Il
     video si sposterà sulla posizione indicata continuando la riproduzione da quel
     punto.

   • Nel caso in cui sia stato effettuato lo zoom, l’utente può spostare l’intervallo
     di tempo visualizzato in avanti oppure indietro, mostrando le azioni che sono
     avvenute successivamente oppure precedentemente alla posizione attuale della
     riproduzione video.

Postcondizioni: La visualizzazione della timeline è stata modificata in base all’azio-
ne dell’utente

                 figura 4.5: Use Case - UC1.4: Controllo della timeline

UC1.4.1: Modifica dello zoom della timeline
Attori Principali: Utente
Precondizioni: L’utente vuole modificare la visualizzazione della timeline
Descrizione: L’utente può modificare lo zoom
Postcondizioni: Lo zoom è stato modificato per aumentare il dettaglio o diminuirlo

UC1.4.2: Spostamento del video alla posizione indicata
22                                          CAPITOLO 4. ANALISI DEI REQUISITI

Attori Principali: Utente
Precondizioni: L’utente vuole modificare la visualizzazione della timeline.
Descrizione: L’utente vuole spostare in avanti o indietro la riproduzione del video
della partita. In questo caso la timeline rappresenterà la porzione di tempo conte-
nente quella che si sta riproducendo, mantenendo il livello di zoom precedente.
Postcondizioni: Il video ora riproduce dalla posizione indicata.

UC1.4.3: Spostamento in avanti/indietro del lasso di tempo visualizzato

Attori Principali: Utente
Precondizioni: L’utente vuole modificare la visualizzazione della timeline, e sta
visualizzando solo una parte del tempo totale di gioco.
Descrizione: L’utente sposta in avanti oppure indietro la timeline in modo da vedere
la porzione di tempo successiva o precedente.
Postcondizioni: La visualizzazione della timeline è stata modificata.

UC1.5: Esportazione delle azioni selezionate
Attori Principali: Utente
Precondizioni: L’utente sta visualizzando le azioni di una partita
Descrizione: L’utente ha selezionato degli eventi e può esportarli come dei filmati
video. Questo significa che le azioni che sono state selezionate saranno disponibili
nella tabella di esportazione del software VideoMatch. Se non sono state selezionate
azioni precedentemente da parte dell’utente, nessuna azione sarà esportata.
Postcondizioni: All’utente viene visualizzata la tabella di esportazione dei filmati
video, contenente le azioni precedentemente selezionate.

UC1.5: Riproduzione della playlist delle azioni selezionate
Attori Principali: Utente
Precondizioni: L’utente sta visualizzando le azioni di una partita
Descrizione: Le azioni selezionate dall’utente vengono filtrate nella tabella delle
azioni e viene lanciata la riproduzione sequenziale delle azioni.
Postcondizioni: Il player video integrato ha riprodotto le azioni selezionate dall’u-
tente.

UC2: Visualizzazione del numero di azioni per tipo
Attori Principali: Utente
Precondizioni: L’utente ha avviato VideoMatch e ha aperto una partita da analizzare.

Descrizione: L’utente decide di aprire la visualizzazione della tabella contenente il
4.1. CASI D’USO                                                                     23

numero di azioni ordinate per giocatore e per tipo. Le azioni sono legate al video
della partita in corso e possono essere visualizzate come una playlist di azioni oppure
esportate come clip video.

        figura 4.6: Use Case - UC2: Visualizzazione del numero di azioni per tipo

UC2.1: Selezione delle azioni di un giocatore per tipo
Attori Principali: Utente
Precondizioni: L’utente aperto la visualizzazione della tabella delle azioni ordinate
per tipo.
Descrizione: L’utente può scegliere delle azioni dalla tabella, ad esempio tutti i tiri
di un giocatore oppure tutte le parate del portiere.
Postcondizioni: Le azioni scelte dall’utente sono state selezionate.

UC2.2: Esportazione delle azioni selezionate
Attori Principali: Utente
Precondizioni: L’utente aperto la visualizzazione della tabella delle azioni ordinate
per tipo. Inoltre, dalla tabella sono state selezionate una o più azioni.
Descrizione: L’utente vuole esportare come filmati le azioni che ha precedentemente
selezionato. All’utente viene mostrata la schermata di VideoMatch che permette
l’esportazione dei filmati con inserite le azioni selezionate della tabella.
Postcondizioni: L’utente può procedere con l’esportazione delle azioni come clip
video.
24                                             CAPITOLO 4. ANALISI DEI REQUISITI

UC2.3: Visualizzazione della playlist delle azioni selezionate
Attori Principali: Utente
Precondizioni: L’utente aperto la visualizzazione della tabella delle azioni ordinate
per tipo. Inoltre, dalla tabella sono state selezionate una o più azioni.
Descrizione: La selezione effettuata dall’utente può essere visualizzata nel player
video integrato in VideoMatch come una playlist di azioni.
Postcondizioni: L‘utente ha visualizzato i video delle azioni selezionate in sequenza.

4.2     Tracciamento dei requisiti
   A partire dall’analisi degli scenari dei casi d’uso, sono stati individuati i requisiti
del sistema, che sono stati denominati tramite un codice identificativo. Il codice dei
requisiti è così strutturato R(F/Q/V)(O/D/F) dove:

R = requisito

F = funzionale

Q = qualitativo

V = di vincolo

O = obbligatorio

D = desiderabile

F = facoltativo

   Nelle tabelle che seguono sono riassunti i requisiti e il loro tracciamento con gli
use case delineati in fase di analisi.
4.2. TRACCIAMENTO DEI REQUISITI                                                  25

4.2.1    Tabella di tracciamento dei requisiti Funzionali

              tabella 4.1: Tabella di tracciamento dei requisiti Funzionali

        Requisito                   Descrizione                       Use Case
                       Il software deve permettere la visua-
   RFO-1               lizzazione delle azioni di una partita     UC1
                       su un’asse temporale
                       L’utente deve poter visualizzare il
   RFO-1.2             video di un’azione presente nella          UC1.3.2
                       timeline
                       Delle azioni si possono visualizzare
   RFO-2                                                          UC 1.2
                       le informazioni relative
                       Deve essere possibile vedere i gio-
   RFO-2.1             catori coinvolti in un’azione, il tipo     UC1.2
                       dell’azione e i tempi di inizio e fine
                       Deve essere fornita la possibilità di
   RFO-3                                                          UC1.3
                       selezione multipla delle azioni
                       La selezione multipla deve poter es-
   RFO-3.1             sere attivabile tramite scorciatoie        UC 1.3.3
                       tastiera
                       Per il sistema operativo Windows, la
                       scorciatoia tastiera per la selezione
   RFO-3.1.1                                                      UC1.3.3
                       multipla è attivata tramite il tasto
                       Ctrl
                       Per il sistema operativo OSX, la
                       scorciatoia tastiera per la selezione
   RFO-3.1.2                                                      UC1.3.3
                       multipla è attivata tramite il tasto
                       Cmd
                       La selezione multipla delle azioni
                       deve filtrare le azioni nella tabella
   RFO-3.2                                                        UC1
                       relativa per mostrare solo le azioni
                       attualmente selezionate
                       L’utente può selezionare contempo-
   RFO-4               raneamente tutte le azioni di un           UC1.3.4
                       giocatore
                       La selezione di uno o più giocato-
   RFO-4.1             ri, rende visibili solo le azioni in cui   UC 1.3.4.1
                       hanno partecipato tali giocatori
                       L’utente deve poter modificare il
   RFO-5                                                          UC1.4.1
                       livello di zoom della timeline
                       La modifica dello zoom mantiene
   RDO-5.1             la posizione del cursore del tempo         UC1.4.1
                       nella stessa posizione
26                                   CAPITOLO 4. ANALISI DEI REQUISITI

               Deve essere possibile effettuare
     RFO-5.2   lo zoom tramite gli eventi della         UC1.4.1
               rotellina del mouse
               La modifica dello zoom cambia la
               dimensione relativa delle azioni rap-
     RFO-5.3   presentate lungo la timeline, in mo-     UC1.4.1
               do che siano proporzionali rispetto
               al lasso di tempo rappresentato
               L’utente può visualizzare il periodo
               di tempo precedente o successivo
     RFO-6                                              UC1.4.3
               a quello attualmente rappresentato
               nella timeline
               L’utente può esportare le azioni
     RFO-7                                              UC1.5
               selezionate come filmati video
               L’utente può visualizzare la play-
               list delle azioni selezionate nel-
     RFO-8                                              UC1.6
               la schermata video del software
               VideoMatch
               L’utente deve poter visualizzare una
               tabella contenente per ogni giocato-
     RFO-8     re e per ogni tipo di azione, il nume-   UC2
               ro di azioni a cui tale giocatore ha
               partecipato
               Il tipo delle azioni rappresentate
               deve essere quello della configura-
     RFO-9                                              UC2
               zione attuale caricata nel software
               VideoMatch
               La tabella delle azioni deve suppor-
               tare le configurazioni:

                  • SICS 2014;
     RFO-9.1                                            UC2
                  • SICS 2015;

                  • AIA;

               La tabella delle azioni deve esse-
     RFO-9.2   re compatibile con configurazione UC2
               create dall’utente
               L’utente deve aver la possibilità di se-
               lezionare contemporaneamente tut-
     RFO-10                                             UC2.1
               te le azioni di un certo tipo per un
               dato giocatore
               L’utente deve avere la possibilità di
     RDO-11    selezionare più celle della tabella di UC2.1
               rappresentazione delle azioni
4.2. TRACCIAMENTO DEI REQUISITI                                                  27

                       Le azioni selezionate devono po-
   RFO-12              ter essere visibili nella tabella delle    UC2.1
                       azioni
                       L’utente può visualizzare nella scher-
   RFO-13              mata video la playlist delle azioni        UC2.3
                       che ha selezionato
                       L’utente ha la possibilità di esportare
   RFO-14                                                         UC2.2
                       le azioni selezionate
                       Una volta selezionata l’esportazione,
                       all’utente viene mostrata la scher-
   RFO-14.1                                                       UC 2.2
                       mata con le clip video che può
                       esportare

4.2.2    Tabella di tracciamento dei requisiti di Vincolo

              tabella 4.2: Tabella di tracciamento dei requisiti di Vincolo

        Requisito                  Descrizione                        Use Case
                      Il software deve essere integrato in
   RVO-1                                                          -
                      VideoMatch
                      Il software deve poter essere ese-
   RVO-2              guito sia su ambiente Mac che su            -
                      ambiente Windows
                      Devono essere utilizzati i controlli
   RVO-2.1            standard del sistema operativo per          -
                      le scorciatoie tramite tastiera
                      Tutte le parti testuali all’interno del
                      software devono essere codificate in
   RVO-3              modo da permettere facilmente il            -
                      cambio della lingua del programma
                      in esecuzione
                      Il testo usato all’interno del soft-
   RVO-3.1            ware deve essere fornito sia in lingua      -
                      italiana che in lingua inglese
Capitolo 5

Progettazione e codifica

5.1     Ambiente software
   Data la natura del progetto e le sue caratteristiche, si è fatto ampio uso delle
librerie Swing disponibili. Prima di passare alla descrizione del progetto è quindi
indispensabile un’introduzione all’ambiente di sviluppo in cui il progetto è stato
realizzato e ad alcune caratteristiche del linguaggio Java.

5.1.1   Thread
    I Thread sono flussi di esecuzione del programma che vengono eseguiti in parallelo
rispetto al Thread principale. Il parallelismo è in questo caso solo logico, perché
l’esecuzione delle varie operazioni viene poi organizzata dal sistema operativo in
base al numero di processori fisici disponibile.
    La libreria Swing utilizza un thread proprio per l’esecuzione delle operazioni che
riguardano la visualizzazione delle componenti di interfaccia e per la gestione degli
eventi.
    Nel progetto i thread sono stati principalmente utilizzati per effettuare operazioni
che avevano bisogno di essere ripetute a intervalli di tempo costanti. Un altro
ambiente di utilizzo è per la sincronizzazione delle componenti create con il video in
esecuzione in VideoMatch, che viene eseguito in un thread separato.

5.1.2   Eventi
   In Java gli eventi sono oggetti che rappresentano azioni effettuate dall’utente
tramite le periferiche di input. Java si preoccupa di interpretare l’evento del sistema
operativo e permette allo sviluppatore di programmare la risposta a certi eventi.
In particolare le componenti di Swing che derivano da JComponent possono essere
abilitati ad ascoltare i seguenti eventi tramite la creazione di oggetti Listeners che
implementano i metodi che devono essere invocati alla ricezione del proprio evento.
Tra questi i più usati nel progetto sono:

   • MouseListener: risponde agli eventi creati dal click, dalla pressione e dal
     rilascio del mouse;

                                          29
30                                     CAPITOLO 5. PROGETTAZIONE E CODIFICA

     • MouseWheelListener: ascolta gli eventi creati dalla rotazione della rotellina
       del mouse all’interno della componente;

     • KeyListener: ascolta la pressione dei tasti della tastiera, alla pressione e al
       rilascio degli stessi e permette di identificare i tasti premuti;

     • ComponentListener: risponde alle modifiche apportate alla visualizzazione
       della componente sullo schermo, come la modifica della posizione o delle
       dimensioni;

     • FocusListener: il focus è una proprietà che permette ad una componente
       di rispondere agli eventi della tastiera. Tramite questo Listener è possibile
       conoscere quando una componente ha ottenuto o lasciato il focus della tastiera.

   Gli eventi che riguardano le componenti di interfaccia grafica e in particolare
di Swing, vengono gestiti dalla JVM tramite un unico thread chiamato EDT (Event
Dispatch Thread). In questo modo si evitano problemi di sincronizzazione perché la
risoluzione degli eventi (ovvero la chiamata degli oggetti registrati ad un particolare
evento) viene effettuata in modo sequenziale. Tuttavia questa soluzione impedisce a
thread esterni di poter effettuare modifiche dirette all’interfaccia grafica, che vanno
dunque evitate.

5.1.3    VideoMatch
   VideoMatch è un software esteso che contiene diversi package che sono stati
utilizzati durante il progetto. Le componenti grafiche sono contenute nel package
design dove sono state inserite le nuove componenti create durante il progetto. Tale
package contiene i moduli dedicati all’interfaccia grafica come i pannelli principali
che visualizza l’utente. Le altre componenti utilizzate durante il progetto sono:

     • domain: contiene i tipi di dato principale che vengono utilizzati dal software
       VideoMatch, ad esempio i tipi:

          – Action: un’azione di gioco, rappresentata da tempi di inizio e fine, i
            giocatori coinvolti, il tipo di azione;
          – Player: rappresenta un giocatore, con tutte le informazioni relative come
            nome, squadra e numero di maglia;
          – MatchData: rappresenta i dati di una partita di calcio. Qui si possono
            ricavare le informazioni relative all’inizio e alla fine dei tempi di gio-
            co (primo tempo, secondo tempo e tempi supplementari), i nomi delle
            squadre in campo, il risultato finale ecc...

     • helper: package che contiene alcune componenti di utilità generale, ad esem-
       pio per la gestione degli errori o per reperire informazioni sulle impostazioni
       attuali;

     • thread: package che contiene alcuni thread di supporto all’applicazione che
       sono eseguiti in background;
5.2. ARCHITETTURA                                                                     31

   • video: package contenente i moduli di gestione dei player video integrati in
     VideoMatch. Tramite questo package è possibile interfacciarsi con la libreria
     vlcj che contiene le componenti adatte alla visualizzazione e alla riproduzione
     di file video.

5.2    Architettura
    La progettazione del software ha avuto inizio a seguito dell’analisi dei requisiti. Si
è iniziato a partire dall’architettura generale. Il pattern scelto per gestire contempora-
neamente le componenti create e fornire all’esterno un’unica interfaccia di accesso è
il pattern Façade, in cui un’unica classe permette di rappresentare la complessità del
sistema sottostante. In questo modo è stato possibile ridurre il numero di interventi
nelle altre parti dell’applicazione per effettuare l’integrazione del software.

                     figura 5.1: Architettura generale, vista package

VideoMatch::design::timeline
   Il package timeline è quello generale del software sviluppato. Dato che la compo-
nente da creare era una componente nuova e indipendente, è stato scelto di inserirla
in un nuovo package con l’intento di diminuire l’accoppiamento tra questa e le altre
componenti della view. Il package timeline è stato inserito nel package design di
VideoMatch per la sua correlazione con le altre componenti di interfaccia presenti
nel software.
Puoi anche leggere