Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo...

46
Anno Accademico 2014/2015 UNIVERSITÀ DEGLI STUDI DI TRIESTE DIPARTIMENTO DI INGEGNERIA ED ARCHITETTURA CORSO DI LAUREA TRIENNALE IN INGEGNERIA DELL'INFORMAZIONE CURRICULUM INFORMATICA PROGETTAZIONE ED IMPLEMENTAZIONE DI UNA PIATTAFORMA SOFTWARE PER LA GESTIONE REMOTA E IL CONTROLLO DEGLI ACCESSI DI UNA SALA PROVE MUSICALI RELATORE Chiar.mo Prof. Maurizio Fermeglia LAUREANDO Lorenzo Rossoni

Transcript of Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo...

Page 1: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

Anno Accademico 2014/2015

UNIVERSITÀ DEGLI STUDI DI TRIESTE

DIPARTIMENTO DI INGEGNERIA ED ARCHITETTURA

CORSO DI LAUREA TRIENNALE IN INGEGNERIA DELL'INFORMAZIONE

CURRICULUM INFORMATICA

PROGETTAZIONE ED IMPLEMENTAZIONE DI UNA PIATTAFORMA

SOFTWARE PER LA GESTIONE REMOTA E IL CONTROLLO DEGLI ACCESSI DI UNA SALA PROVE MUSICALI

RELATORE Chiar.mo Prof. Maurizio Fermeglia

LAUREANDO

Lorenzo Rossoni

Page 2: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

1

Indice

1 Introduzione .............................................................................................................................................. 3

1.1 Obiettivo della tesi............................................................................................................................. 3

1.2 Risultato della tesi ............................................................................................................................. 3

1.3 Motivazione ....................................................................................................................................... 3

1.4 Stato dell’arte .................................................................................................................................... 4

1.5 Tecnologie ......................................................................................................................................... 4

1.6 Riassunto dei capitoli seguenti .......................................................................................................... 5

2 Analisi ........................................................................................................................................................ 6

2.1 Raccolta delle informazioni e definizione dei requisiti ...................................................................... 6

2.2 Analisi dell'infrastruttura per la piattaforma .................................................................................... 6

2.3 Analisi dettagliata dei casi d’uso ....................................................................................................... 7

2.3.1 Analisi dettagliata del caso d’uso dell’utente amministratore.................................................. 8

2.3.2 Analisi dettagliata del caso d’uso dell’utente fruitore .............................................................. 9

3 Progettazione della base di dati .............................................................................................................. 10

3.1 Glossario dei termini ....................................................................................................................... 10

3.2 Strutturazione dei requisiti .............................................................................................................. 10

3.3 Operazioni previste ......................................................................................................................... 11

3.4 Progettazione concettuale .............................................................................................................. 12

3.4.1 Entità e relazioni ...................................................................................................................... 12

3.4.2 Analisi delle entità ................................................................................................................... 13

3.4.3 Analisi delle relazioni e delle cardinalità ................................................................................. 15

3.4.4 Business rules .......................................................................................................................... 17

3.5 Progettazione logica ........................................................................................................................ 17

3.5.1 Tavola dei volumi ..................................................................................................................... 17

3.5.2 Tavola delle operazioni ............................................................................................................ 17

3.5.3 Ristrutturazione dello schema E-R .......................................................................................... 18

3.5.4 Scelta degli identificatori principali ......................................................................................... 20

3.5.5 Scelta delle chiavi esterne ....................................................................................................... 20

3.5.6 Schema fisico ........................................................................................................................... 21

3.6 Programmabilità .............................................................................................................................. 22

3.6.1 Vincoli di integrità e indici di unicità ....................................................................................... 22

3.6.2 Triggers e stored procedures ................................................................................................... 22

Page 3: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

2

4 Progettazione della piattaforma ............................................................................................................. 24

4.1 Progettazione del portale web ........................................................................................................ 24

4.1.1 Area utente anonimo .............................................................................................................. 25

4.1.2 Area utente fruitore ................................................................................................................ 25

4.1.3 Area utente amministratore .................................................................................................... 25

4.2 Progettazione della Web API ........................................................................................................... 26

4.2.1 OAuth ....................................................................................................................................... 26

4.2.2 Notifications ............................................................................................................................ 27

4.2.3 Bookings .................................................................................................................................. 27

4.2.4 Users ........................................................................................................................................ 27

4.2.5 Rooms ...................................................................................................................................... 27

4.3 Progettazione dell’applicazione mobile .......................................................................................... 27

4.4 Progettazione del dispositivo di controllo remoto .......................................................................... 28

5 Interfaccia ................................................................................................................................................ 30

5.1 Interfaccia del portale web .............................................................................................................. 30

5.2 Interfaccia dell’applicazione mobile ................................................................................................ 34

5.3 Interfaccia del dispositivo di controllo ............................................................................................ 35

6 Implementazione ..................................................................................................................................... 36

6.1 Implementazione del portale web e della Web API ........................................................................ 36

6.2 Implementazione dell’applicazione mobile ..................................................................................... 40

7 Conclusioni .............................................................................................................................................. 43

7.1 Risultati ottenuti .............................................................................................................................. 43

7.2 Lavoro svolto ................................................................................................................................... 43

7.3 Scenari di sviluppo futuri ................................................................................................................. 43

8 Bibliografia e sitografia ............................................................................................................................ 45

8.1 Riferimenti bibliografici ................................................................................................................... 45

8.2 Riferimenti sitografici ...................................................................................................................... 45

Page 4: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3

1 – Introduzione

1.1 – Obiettivo della tesi

Lo scopo di questa tesi è la creazione e la progettazione di una piattaforma software finalizzata alla

gestione remota e al controllo degli accessi di una sala prove musicali.

Si intende fornire uno strumento capace di semplificare e automatizzare alcuni aspetti relativi

all'amministrazione e alla fruizione del servizio. In particolare tra le funzionalità destinate all'utente

amministratore troviamo:

Gestione delle transazioni e del credito utente Gestione del calendario delle prenotazioni Gestione remota dei locali adibiti a sala prove

Dal punto di vista dell'utente fruitore il progetto si propone di fornire un sistema semplificato che consenta:

Prenotazione da remoto Gestione delle transazioni e del credito utente Gestione dello storico delle transazioni e delle prenotazioni Accesso automatizzato ai locali tramite autenticazione NFC1 (Smartphone HCE2-enabled o

SmartCard3)

1.2 – Risultato della tesi

Il risultato di questa tesi è rappresentato dalla piattaforma software “Rehearsal Room Manager” costituita

da quattro elementi principali, i cui dettagli saranno analizzati successivamente in maniera più specifica.

Questi elementi sono:

Un portale web unificato per l’utente amministrazione e per l’utente fruitore accessibile

all’indirizzo web http://rehearsalroommanager.azurewebsites.net

Un’applicazione mobile per Smartphone e Tablet Windows 10 dedicata agli utenti fruitori

disponibile al seguente indirizzo web https://www.microsoft.com/store/apps/9nblggh3tq8l

Un dispositivo hardware di controllo remoto progettato per l’automazione dei locali adibiti a sale

prova

Un’infrastruttura di Web API REST4 il cui compito è di coordinare e interconnettere i precedenti

elementi

1.3 – Motivazione

L’idea alla base di questo progetto nasce dalla constatazione dell’esistenza di uno squilibrio tra l’offerta di

sale prova e la crescente domanda e dalla conseguente necessità di trovare soluzioni per abbattere i costi di

avvio e di gestione di una struttura adibita a tale scopo.

Mediante l’utilizzo di questa piattaforma infatti si intende automatizzare e centralizzare alcuni aspetti

1 https://en.wikipedia.org/wiki/Near_field_communication 2 https://en.wikipedia.org/wiki/Host_card_emulation 3 https://en.wikipedia.org/wiki/Contactless_smart_card 4 https://en.wikipedia.org/wiki/Representational_state_transfer

Page 5: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

1 – Introduzione

4

fondamentali di tale attività, quali il sistema di prenotazione, di pagamento e di accesso fisico alla sala, in

maniera tale da ridurre al minimo l’impiego di personale dedicato.

1.4 – Stato dell’arte

Al momento dello sviluppo del progetto sono state individuate strutture che forniscono un sistema di

prenotazione online ma non forniscono un servizio analogo a quello che si intende fornire. Sono presenti

invece sul mercato alcuni prodotti commerciali dalle funzionalità simili dedicati però a diverse aree di

interesse.

1.5 – Tecnologie

Durante le varie fasi dello sviluppo del progetto si è fatto uso delle seguenti tecnologie e librerie software:

Applicazione web e Web API REST

o HTML5 e CSS3

o Microsoft ASP.NET MVC 55

o Microsoft .NET Entity Framework 66

o Newtonsoft Json.NET7

o Microsoft Azure Web Apps8

o Microsoft Azure SQL Database9

o Microsoft Azure Notification Hubs10

o SignalR11

o jQuery12

o Bootstrap13

Applicazione mobile

o Microsoft Windows Universal Platform14 (XAML + C#)

o Newtonsoft Json.NET

Dispositivo di controllo remoto

o .NET Micro Framework 4.315

o .NET Gadgeteer16

o Json.NETMF17

Per la progettazione e lo sviluppo dei precedenti componenti software si è fatto uso dell’IDE Microsoft

Visual Studio 2015.

L’Applicazione Web, la Web API e il relativo database sono ospitati sulla piattaforma di cloud computing

5 http://www.asp.net/mvc 6 https://msdn.microsoft.com/en-us/data/ef 7 http://www.newtonsoft.com/json 8 https://azure.microsoft.com/en-us/services/app-service/web/ 9 https://azure.microsoft.com/en-us/services/sql-database/ 10 https://azure.microsoft.com/en-us/services/notification-hubs/ 11 http://signalr.net 12 https://jquery.com 13 http://getbootstrap.com 14 https://msdn.microsoft.com/en-us/library/windows/apps/dn958439.aspx 15 http://www.netmf.com 16 http://www.netmf.com/gadgeteer/ 17 https://github.com/mweimer/Json.NetMF

Page 6: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

1 – Introduzione

5

Microsoft Azure sfruttando una sottoscrizione riservata agli studenti universitari fornita tramite il

programma DreamSpark18.

1.6 – Riassunto dei capitoli seguenti

Nel capitolo 2 verranno analizzate le informazioni raccolte e, sulla base di queste, saranno

determinati i requisiti del progetto. Successivamente ci si occuperà dell'analisi e della progettazione

dell'infrastruttura per la piattaforma

Il capitolo 3 si occuperà dell'analisi e della progettazione della base di dati per il sistema

Nel capitolo 4 verrà approfondita la fase di progettazione dei vari componenti della piattaforma

Il capitolo 5 si occuperà della progettazione dell’interfaccia per il portale web e per l’applicazione

mobile. Verranno inoltre presentati alcuni esempi tipici di utilizzo

Nel capitolo 6 saranno descritte le funzioni implementate all’interno del portale web e

dell’applicazione mobile

Nel capitolo 7 verranno esposte le conclusioni riguardanti il progetto e saranno presentati alcuni

possibili scenari di sviluppo e miglioramento

Infine nel capitolo 8 sarà presente una breve bibliografia e sitografia

18 https://www.dreamspark.com

Page 7: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

6

2 – Analisi

2.1 – Raccolta delle informazioni e definizione dei requisiti

Lo scopo di questo progetto è la realizzazione di una piattaforma software per l’amministrazione delle

utenze di una sala prove, è quindi chiaro che una delle fondamentali funzionalità che questo dovrà fornire è

rappresentata da un sistema di gestione dei dati anagrafici e di fatturazione associati agli utenti.

Dopo una breve analisi dei ruoli, si possono distinguere all’interno del sistema due tipi di utenze cui la

piattaforma si rivolgerà: gli utenti fruitori saranno coloro che beneficeranno del servizio di noleggio delle

sale, mentre gli utenti amministratori saranno quegli utenti preposti alla supervisione e alla gestione del

sistema.

Considerati i presupposti del progetto, oltre alla gestione anagrafica, la piattaforma dovrà implementare un

sistema di gestione delle prenotazioni che dovrà essere in grado di gestire parallelamente e in maniera

semplice più sale prove e pensato in modo tale da scongiurare alcuni tipici inconvenienti, come ad esempio

l’immissione di prenotazioni concorrenti.

La piattaforma fornirà inoltre un meccanismo di credito utente, ricaricabile direttamente dal portale web o

dall’applicazione, volto a permettere un’efficiente amministrazione delle transazioni anche in caso di

disdetta delle prenotazioni.

Tale meccanismo consentirà inoltre all’utente di tenere facilmente traccia delle operazioni di prenotazione

effettuate e dei costi sostenuti direttamente dai propri dispositivi.

Infine sarà presente un sistema di automazione dei locali che includerà un meccanismo di autenticazione

basato su una chiave elettronica NFC (emulabile tramite Smartphone che supportano la tecnologia HCE) e

una serie di funzionalità dedicate alla gestione remota da parte degli amministratori.

Il meccanismo di autenticazione basato su chiave elettronica permetterà ad ogni utente fruitore di

possedere al più una SmartKey e uno Smartphone abilitati contemporaneamente ed è pensato per rendere

la gestione degli accessi più semplice e sicura, eliminando l’esigenza di una chiave fisica e permettendo una

facile revoca del diritto di accesso.

Per quanto riguarda invece le funzionalità remote, queste comprenderanno la possibilità di gestire

l’impianto di illuminazione e alimentazione principale delle singole sale e di bloccarne o sbloccarne

temporaneamente gli accessi.

2.2 – Analisi dell'infrastruttura per la piattaforma In questa sezione analizzeremo la struttura della piattaforma e le modalità di interazione tra le diverse parti

che la compongono. Come abbiamo precedentemente anticipato, queste sono:

Applicazione Web

Web API REST

Applicazione Mobile

Dispositivo di controllo remoto

L’Applicazione Web e l’Applicazione Mobile rappresentano l’interfaccia di comunicazione diretta tra

l’utente e il sistema, attraverso queste infatti l’utente può accedere ai servizi di prenotazione, di gestione

del credito e di modifica delle informazioni personali offerti dalla piattaforma.

Page 8: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

2 – Analisi

7

Un ruolo fondamentale è svolto dalla Web API, questa infatti rappresenta la modalità con la quale sia

l’Applicazione Mobile che il dispositivo di gestione remota interagiscono con il sistema e la relativa base di

dati.

Tramite la Web API infatti il sistema è in grado di ricevere informazioni e impartire comandi ai dispositivi di

controllo remoto situati nelle sale, e sempre grazie alla Web API gli stessi dispositivi forniscono la

funzionalità di autenticazione e di accesso ai locali.

Smartphone

Database

PC

Applicazione WebWeb API

Dispositivo di accesso e di controllo remoto

SmartKey

Figura 1 – Struttura della piattaforma

La base di dati infine rappresenta il nodo principale dell’infrastruttura, ad essa sono infatti collegati

l’Applicazione Web e la Web API, ed in essa sono contenute tutte le informazioni che consentono al sistema

fornire e di coordinare le varie funzionalità.

2.3 – Analisi dettagliata dei casi d’uso Esamineremo ora le modalità fondamentali con cui gli utenti, amministratori e fruitori interagiscono con il

sistema e le fasi di tali interazioni.

Page 9: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

2 – Analisi

8

Notifica di prenotazione

ConfermaNo

Notifica di conferma della prenotazione

Inserimento della prenotazione

Autenticazione mediante

Smartphone o SmartKey

L utente è autorizzato

No

Accesso fisico alla sala

Notifica di mancata conferma

Notifica di autenticazione

fallita

Figura 2 – Diagramma delle attività

Vediamo ora in dettaglio i casi d’uso dei due tipi di utente.

2.3.1 – Analisi dettagliata del caso d’uso dell’utente amministratore

I casi d’uso tipici dell’utente amministratore consistono in mansioni di gestione dello stato delle sale prova,

come ad esempio l’aggiunta o rimozione di sale in fase di configurazione iniziale e compiti di supervisione e

verifica delle registrazioni dei nuovi utenti e delle prenotazioni immesse nel sistema.

Ad esempio per confermare una prenotazione l’utente amministratore dovrà:

Effettuare l’accesso all’area riservata del portale web

Consultare le nuove notifiche o recarsi nella sezione predisposta alla gestione delle prenotazioni

Selezionare le prenotazioni in attesa di conferma e confermarla o eventualmente rifiutarla

Analogamente per gestire le sale esistenti o aggiungerne/rimuoverne l’utente amministratore dovrà:

Effettuare l’accesso all’area riservata del portale web

Recarsi nella sezione dedicata alla gestione delle sale

Aggiungere, rimuovere o modificare le sale inserendo le informazioni aggiornate quali ad esempio il

prezzo orario

Dalla stessa sezione l’amministratore potrà inoltre verificare lo stato attuale delle sale ed

eventualmente intervenire remotamente su alcuni parametri come ad esempio l’apertura delle

porte, l’illuminazione e l’alimentazione elettrica

Page 10: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

2 – Analisi

9

2.3.2 – Analisi dettagliata del caso d’uso dell’utente fruitore

Consideriamo i casi d’uso dell’utente fruitore. Questi consistono principalmente nella registrazione e nella

prenotazione di una sala e fruizione della stessa.

La prima fase consiste nella registrazione, in una specifica sezione dedicata del portale web in cui è

richiesto all’utente di fornire le proprie generalità e informazioni personali per fini anagrafici e di

fatturazione.

In seguito alla registrazione e all’approvazione della stessa da parte di un amministratore, l’utente sarà

abilitato alla prenotazione e alla fruizione dei servizi offerti e potrà configurare il proprio Smartphone come

dispositivo di accesso tramite l’applicazione mobile dedicata o richiedere una SmartKey fisica da utilizzare al

momento dell’autenticazione presso le sale.

Vediamo ora le azioni che l’utente dovrà compiere per prenotare una sala:

Effettuare l’autenticazione al portale web

Recarsi nella home page e mediante il calendario di prenotazione selezionare la data e l’ora

prescelta

Inserire le informazioni di prenotazione quali la sala preferita, eventuali note e compagni di

sessione registrati presso la piattaforma con cui condividere il diritto di accesso

Attendere la notifica di avvenuta conferma della prenotazione da parte degli amministratori

Una volta collocata la prenotazione l’utente si recherà presso i locali nella data prefissata, a quel punto per

accedere alla struttura l’utente potrà utilizzare per autenticarsi il proprio Smartphone (se supportato e

configurato) o la SmartKey abilitata spedita a seguito della registrazione.

Potranno autenticarsi per l’accesso ai locali, non solo l’utente che ha inserito fisicamente la prenotazione,

ma anche tutti gli utenti che sono stati inclusi come compagni al momento della collocazione.

Una volta terminato il periodo riservato il sistema provvederà automaticamente allo spegnimento

dell’alimentazione elettrica per la sala (ad esclusione dei dispositivi di sicurezza), invitando gli utenti

occupati a liberare i locali.

Page 11: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

10

3 – Progettazione della base di dati

3.1 – Glossario dei termini

Termine Descrizione Collegamenti

Utente amministratore o Amministratore

Rappresenta l’utente che si occupa di mansioni di gestione e manutenzione

Sala, Prenotazione

Sala Rappresenta una delle sale disponibili per la prenotazione, identifica inoltre la destinazione per i comandi di controllo remoto

Prenotazione, Utente, Amministratore

Utente fruitore o Utente

Rappresenta l’utente che gode del servizio di noleggio delle sale

Prenotazione, Transazione, Dispositivo di accesso

Prenotazione Rappresenta una prenotazione effettuata dall’utente

Sala, Utente, Transazione, Amministratore

Dispositivo di accesso Rappresenta uno dei dispositivi di accesso configurati per l’utente, può essere uno Smartphone compatibile o una SmartKey

Utente

Transazione Rappresenta un movimento sul conto dell’utente, può essere una ricarica del conto o l’addebito di una prenotazione

Utente, Prenotazione

3.2 – Strutturazione dei requisiti

Frasi di carattere generale

Si vuole realizzare una base di dati per l’archiviazione delle informazioni relative agli utenti della piattaforma e di quelle relative alle prenotazioni effettuate

Frasi relative agli utenti e amministratori

Esistono due tipi di utilizzatori della piattaforma: gli amministratori e gli utenti

Un profilo utente prima di essere utilizzabile necessita dell’approvazione da parte di un amministratore

Un amministratore si riserva il diritto di bloccare un profilo utente che non rispetta i termini di utilizzo

Ad ogni utente sono associati dati di carattere anagrafico e informazioni di fatturazione

Ad ogni utente sono associati dei dispositivi di accesso, al più uno per ogni tipo (Smartphone, SmartKey)

È possibile creare relazioni di amicizia tra i vari utenti per permettere di condividere con questi i diritti di accesso alle sale prenotate

Ad ogni utente è associato un credito che si modifica mediante accrediti (ricariche) e addebiti (prenotazioni). Ad ognuna di queste operazioni di accredito e addebito corrisponde una transazione

Un utente con saldo nullo o comunque non sufficiente non è in grado di effettuare prenotazioni

Frasi relative alle sale

Ogni sala è identificata da un nome, inoltre ogni sala possiede un identificativo univoco associato al dispositivo di controllo remoto presente nella stessa

Una sala può risultare temporaneamente non prenotabile, ad esempio nel caso di manutenzione tecnica

Ad ogni sala corrisponde una tariffa oraria che può subire variazioni nel corso del tempo

Ogni sala possiede una descrizione che ne espone le caratteristiche

Frasi relative alle prenotazioni

Ad ogni prenotazione è associata a una sala

Una prenotazione possiede una data di inizio e una di fine

Page 12: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

11

Non possono esistere prenotazioni concorrenti, cioè non è possibile prenotare una sala per periodi di tempo che si intersecano tra loro

Una prenotazione prima di diventare effettiva necessita l’approvazione da parte di un amministratore

Ad ogni prenotazione sono associati uno o più membri, questi utenti potranno utilizzare i propri dispositivi di accesso al momento dell’autenticazione alla sala

Ad ogni prenotazione corrisponde una transazione (addebito) sul conto dell’utente che l’ha inserita

Una prenotazione può essere cancellata entro un tempo prestabilito dall’inizio della stessa

Frasi relative ai dispositivi di accesso

Ad ogni utente sono associati uno o più dispositivi di accesso

I tipi di dispositivo sono due: Smartphone o SmartKey

Il numero di dispositivi per ogni utente è limitato a uno per tipo

Un dispositivo può essere revocato da un amministratore ad esempio nel caso si ipotizzi una compromissione o manomissione dello stesso

Ogni dispositivo possiede un nome descrittivo per renderlo facilmente identificabile dall’utente

Ad ogni dispositivo corrisponde un identificativo univoco utilizzato per l’autenticazione

Ad ogni dispositivo è associato un codice che identifica il dispositivo fisico di riferimento (Smartphone o SmartKey)

Frasi relative alle transazioni

Ad ogni operazione di accredito (ricarica) è associata una transazione

Ad ogni operazione di addebito (prenotazione) è associata una transazione

Ogni transazione si riferisce a uno specifico utente

Ad ogni transazione corrisponde una data e un importo

Ogni transazione possiede alcune informazioni aggiuntive specifiche del tipo di transazione, ad esempio la prenotazione a cui si riferisce o l’identificatore della transazione monetaria reale

3.3 – Operazioni previste

Per i vari elementi sopra descritti sono previste le seguenti operazioni:

Utenti e amministratori

o Ricerca

o Inserimento

o Modifica

o Eliminazione

Sale

o Inserimento

o Modifica

o Eliminazione

Prenotazioni

o Ricerca

o Inserimento

o Modifica

o Eliminazione

Dispositivi di accesso

o Inserimento

o Modifica

o Eliminazione

Page 13: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

12

Transazioni

o Inserimento

o Eliminazione

3.4 – Progettazione concettuale

Per realizzare lo schema E-R sarà utilizzata una strategia di tipo misto. Si parte individuando i concetti

principali e si realizza uno schema iniziale sulla base del quale poi si può decomporre, raffinare, espandere

e integrare, fino a raggiungere lo schema finale.

3.4.1 – Entità e relazioni

Nello schema E-R di Figura 3 sono rappresentate le entità che sono state individuate e le relazioni che

sussistono tra di esse.

Utente

Amicizia

SalaPrenotazione

Partecipazione

Noleggio

Dispositivo di accessoPossesso

Addebito accredito

Transazione

Riferimento

Figura 3 – Schema E-R iniziale

Page 14: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

13

Dai requisiti espressi possiamo infatti definire le seguenti entità:

Utente amministratore o più semplicemente Amministratore

Utente fruitore o semplicemente Utente

Dispositivo di accesso

Transazione

Sala

Prenotazione

In particolare tra queste entità sussistono le seguenti relazioni:

Amicizia: rappresenta la relazione che intercorre tra due entità utente

Possesso: esprime la relazione di appartenenza di un dispositivo di accesso ad un determinato

utente

Partecipazione: consiste nella relazione di inclusione di un utente tra i membri abilitati all’accesso

alla sala prove relativi ad una determinata prenotazione

Noleggio: rappresenta la relazione tra una prenotazione e la sala a cui essa si riferisce

Addebito/accredito: identifica la relazione tra una determinata transazione e il relativo utente sul

conto del quale avviene l’addebitato o l’accredito

Riferimento: esprime la relazione tra una transazione sotto forma di addebito e la prenotazione a

cui questa si riferisce

3.4.2 – Analisi delle entità

Amministratore

Id Valore univoco che identifica un amministratore, è candidato a diventare la chiave primaria dell’entità «Amministratore»

Email Indirizzo e-mail dell’amministratore per fini di autenticazione

Password Hash della password per fini di autenticazione

Nome Nome dell’amministratore per fini identificativi

Cognome Cognome dell’amministratore per fini identificativi

Utente

Id Valore univoco che identifica un utente, è candidato a diventare la chiave primaria dell’entità «Utente»

Email Indirizzo e-mail dell’utente per fini di autenticazione

Password Hash della password per fini di autenticazione

Nome Nome dell’utente per fini anagrafici e di fatturazione

Cognome Cognome dell’utente per fini anagrafici e di fatturazione

Codice fiscale Codice fiscale dell’utente per fini anagrafici e di fatturazione

Paese Paese di residenza dell’utente per fini anagrafici e di fatturazione

Città Città di residenza dell’utente per fini anagrafici e di fatturazione

Indirizzo Indirizzo di residenza dell’utente per fini anagrafici e di fatturazione

Numero di telefono Numero di telefono dell’utente per fini anagrafici

Bilancio Stato del bilancio dell’utente aggiornato all’ultima transazione effettuata. Il valore predefinito è 0

Stato di conferma Rappresenta lo stato di conferma del profilo, è Confermato se l’utente è stato verificato e approvato da un amministratore, Non confermato altrimenti. Il valore predefinito è Non confermato

Page 15: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

14

Dispositivo di accesso

Tipo Tipo di dispositivo di accesso, può essere Smartphone o SmartKey

Id dispositivo Id univoco del dispositivo di accesso associato al dispositivo hardware relativo

Token Token di sicurezza generato per il dispositivo, viene utilizzato per l’autenticazione mediante il dispositivo. Assieme al tipo e all’id dispositivo identificano univocamente un dispositivo di accesso

Descrizione Testo descrittivo del dispositivo per una più semplice individuazione

Stato abilitazione Rappresenta lo stato di abilitazione del dispositivo, è Abilitato se il dispositivo è configurato e funzionante, Disabilitato se disattivato o revocato. Il valore predefinito è Abilitato

Transazione

Id Valore univoco che identifica una transazione, è candidato a diventare la chiave primaria dell’entità «Transazione»

Importo Rappresenta l’importo della transazione che si riflette sul bilancio dell’utente. Assume valore positivo in caso di accredito e valore negativo in caso di addebito

Data Data di registrazione della transazione

Informazioni aggiuntive Rappresenta le informazioni aggiuntive relative alla transazione. Nel caso di un accredito contiene le informazioni sulla transazione monetaria reale, in caso di addebito un riferimento alla prenotazione che ha generato la transazione

Sala

Id Valore univoco che identifica una sala, è candidato a diventare la chiave primaria dell’entità «Sala»

Nome Corrisponde al nome della sala

Id dispositivo remoto Rappresenta l’identificativo del dispositivo di controllo remoto associato alla sala

Descrizione Descrizione della sala e delle sue caratteristiche

Costo orario Rappresenta il costo orario per il noleggio della sala. L’importo della transazione di prenotazione è calcolato in base a questo valore

Stato abilitazione Rappresenta lo stato di abilitazione della sala, è Abilitata se la sala è funzionante e prenotabile, Disabilitato se è non disponibile ad esempio per motivi di manutenzione. Il valore predefinito è Abilitata

Prenotazione

Id Valore univoco che identifica un amministratore, è candidato a diventare la chiave primaria dell’entità «Prenotazione»

Data di inizio Corrisponde alla data e ora di inizio della prenotazione

Data di fine Corrisponde alla data e ora di fine della prenotazione

Note Note aggiuntive associate alla prenotazione. È un attributo opzionale

Stato di conferma Rappresenta lo stato di conferma della prenotazione, è Confermata se la prenotazione è stata confermata da un amministratore, Non confermata altrimenti. Il valore predefinito è Non confermata

Page 16: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

15

3.4.3 – Analisi delle relazioni e delle cardinalità

Amicizia (Utente → Utente) Cardinalità Attributi

Un utente può possedere più amici come non possederne nessuno

(0, N) Stato di conferma

Un’amicizia sussiste esattamente tra due utenti (1, 1)

Possesso (Utente → Dispositivo di accesso) Cardinalità Attributi

Un utente può possedere più dispositivi di accesso come anche non possederne alcuno. Il limite superiore è definito dal vincolo di un dispositivo per tipo

(0, N)

Ogni dispositivo di accesso è associato ad uno ed un solo utente

(1, 1)

Partecipazione (Utente → Prenotazione) Cardinalità Attributi

Un utente può partecipare a più prenotazioni come non partecipare ad alcuna

(0, N)

Una prenotazione deve essere associata ad almeno un utente

(1, N)

Noleggio (Sala → Prenotazione) Cardinalità Attributi

Una sala può essere noleggiata tramite più prenotazioni (col vincolo che i periodi non si intersechino) come non essere noleggiata affatto

(0, N)

Ogni prenotazione si riferisce ad una e una sola sala

(1, 1)

Addebito/accredito (Utente → Transazione) Cardinalità Attributi

Un utente può aver effettuato più transazioni ma può anche non averne effettuata alcuna

(0, N)

Una transazione può essere effettuata da uno e un solo utente

(1, 1)

Riferimento (Transazione → Prenotazione) Cardinalità Attributi

Una transazione può riferirsi ad una unica prenotazione ma può anche non riferirsi affatto ad una (accredito)

(0, 1)

Ad una prenotazione è associata una e una sola transazione (addebito)

(1, 1)

Possiamo a questo punto integrare gli attributi e le cardinalità nel diagramma E-R iniziale lo schema E-R

finale rappresentato in Figura 4.

Page 17: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

16

Utente

Amicizia

SalaPrenotazione

Partecipazione

Noleggio

Dispositivo di accessoPossesso

Addebito accredito

Transazione

Riferimento

(0, N) (1, 1)

(1, N)

(0, N)

(0, N)

(1, 1)

(0, 1)

(1, N) (1, 1)

(1, 1) (0, N)

(0, N)

Id Emai

l

Pas

swo

rd

No

me

Cog

nom

e

Co

dic

e fi

scal

e

Pae

se

Cit

Ind

iriz

zo

Nu

mer

o d

ite

lefo

no

Bila

ncio

Stat

o d

ico

nfe

rma

Tip

o

Id d

isp

osi

tivo

Toke

n

Des

criz

ion

e

Stat

o d

iab

ilita

zio

ne

Stat

o d

ico

nfe

rma

Id

Imp

ort

o

Dat

a

Info

rma

zio

ni

aggi

un

tive

Id

No

me

Id d

isp

osi

tivo

re

mo

to

Des

criz

ion

e

Cos

to o

rari

o

Stat

o d

iab

ilita

zio

eId

Dat

a d

i in

izio

Dat

a d

ifi

ne

No

te

Stat

o d

i co

nfe

rma

Figura 4 – Schema E-R finale

Page 18: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

17

3.4.4 – Business rules

In base ai requisiti del progetto possiamo definire le seguenti condizioni di unicità e vincoli per alcuni

attributi delle entità appena viste:

Il bilancio di un utente deve essere sempre maggiore o uguale a 0,00

Non possono esistere più utenti con lo stesso indirizzo e-mail

Non possono esistere più utenti con lo stesso codice fiscale

Ad un utente possono essere associati al più un dispositivo di accesso per tipo

Il prezzo orario per una sala deve essere maggiore di 0,00

L’orario di fine di una prenotazione non può precedere o coincidere con l’orario di inizio

3.5 – Progettazione logica

Possiamo a questo punto procedere a definire alcuni indici di prestazioni mediante la costruzione di due

tabelle, la tavola dei volumi, che descrive il numero di occorrenze previste per le entità e per le relazioni, e

la tavola delle operazioni, la quale analizza invece il numero di occorrenze di entità e relazioni visitate

durante le operazioni.

3.5.1 – Tavola dei volumi

Concetto Tipo Volume Note

Amministratore E 10 Si prevedono un massimo di 10 amministratori per il sistema considerando una stima abbondante

Sale E 10 Si ipotizzano un massimo di 10 sale per struttura

Utente E 500 Si prevedono in media 500 utenti

Dispositivo di accesso E 1000 Si stimano al massimo 2 dispositivi per ogni utente

Prenotazione E 10000 Nel peggiore dei casi si hanno un totale di 24 prenotazioni al giorno per sala. Consideriamo un arco di tempo di 1 anno e approssimiamo

Transazione E 20000 Consideriamo una transazione di addebito per ogni prenotazione, in più ipotizziamo una media di 20 accrediti per utente nel corso di 1 anno

Partecipazione R 30000 Si prevede la partecipazione di una media di 3 utenti per prenotazione

Amicizia R 2500 Assumiamo che ogni utente possieda mediamente 5 amici

3.5.2 – Tavola delle operazioni

Operazione Tipo Frequenza

Registrazione o modifica di un amministratore W 10 / anno

Aggiunta o modifica di una sala W 10 / anno

Registrazione o modifica di un utente W 50 / mese

Aggiunta di un dispositivo di accesso W 100 / mese

Aggiunta di un’amicizia W 1 / mese

Inserimento di una prenotazione W 100 / giorno

Aggiunta di una partecipazione W 300 / giorno

Inserimento di una transazione W 150 / giorno

Lettura di un amministratore R 10 / giorno

Lettura di un utente R 100 / giorno

Lettura di un dispositivo di accesso R 500 / giorno

Ricerca di una sala R 150 / giorno

Page 19: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

18

Ricerca di una transazione R 200 / giorno

Ricerca di una prenotazione R 500 / giorno

Lettura di una partecipazione R 1500 / giorno

Lettura di un’amicizia R 300 / giorno

3.5.3 – Ristrutturazione dello schema E-R

Considerando il diagramma E-R finale di Figura 5 possiamo notare che la relazione denominata

Partecipazione può essere scomposta, analizziamo infatti la relazione sussistente tra l’entità Utente e

l’entità Prenotazione. In base alle specifiche infatti un utente può partecipare a più prenotazioni ed ogni

prenotazione può essere condivisa tra più utenti, conseguentemente la relazione istauratasi tra le due

entità è di tipo molti a molti.

Con lo scopo di semplificare la realizzazione del relativo database relazionale è conveniente convertire una

relazione M:N in due relazioni 1:N e 1:M del tipo uno a molti mediante l’introduzione di un’ulteriore entità

denominata entità associativa.

Definiamo a questo scopo l’entità UtentePrenotazione, otteniamo allora per la relazione in questione lo

schema mostrato in Figura 5.

Utente Partecipazione UtentePrenotazione PrenotazionePartecipazione(0, 1) (1, N) (1, M) (1, 1)

Utente Appartenenza Prenotazione(0, N) (1, M)

Figura 5 – Relazione Utente-Prenotazione

Discorso analogo va fatto per la relazione Amicizia che intercorre tra due entità di tipo Utente.

La conversione effettuata mediante l’introduzione dell’entità UtenteUtente è in questo caso è mostrata

nello schema di Figura 6.

Utente Amicizia UtenteUtente PrenotazioneAmicizia(0, 1) (1, N) (1, M) (1, 1)

Utente Amicizia Utente(0, N) (1, M)

Figura 6 – Relazione Utente-Utente

Page 20: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

19

Analizziamo ora le entità Amministratore e Utente, possiamo immediatamente notare come queste possono essere rappresentate come specializzazioni di una terza entità astratta chiamata Persona. Abbiamo in particolare la gerarchia descritta in Figura 7.

Persona

Id Emai

l

Pass

wor

d

Nom

e

Cog

nom

e

Cod

ice

fisc

ale

Paes

e

Cit

Indi

rizz

o

Num

ero

di

tele

fono

Bila

ncio

Stat

o d

ico

nfe

rma

UtenteAmministratore

Figura 7 – Generalizzazione Amministratore-Persona-Utente

Si è scelto di rappresentare tale gerarchia sostituendo le generalizzazioni con relazioni.

Il medesimo approccio è stato scelto per rappresentare i due tipi di entità Transazione esistenti,

differenziandoli in Addebito e Accredito, in questo caso per sfruttare i vantaggi del vincolo referenziale con

l’entità Prenotazione. La gerarchia assume allora la forma rappresentata in Figura 8.

Transazione

Id Imp

orto

Dat

a

Info

rmaz

ioni

ag

giu

ntiv

e

AccreditoAddebito

Pren

otaz

ione

Figura 8 – Generalizzazione Accredito-Transazione-Addebito

Page 21: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

20

3.5.4 – Scelta degli identificatori principali

Il passo successivo in vista della realizzazione fisica della base di dati è stata la determinazione degli

identificatori principali per ciascuna entità.

Ad ogni entità è stata assegnata una chiave primaria che la identifica in modo univoco, in particolare

abbiamo le seguenti associazioni.

Entità Identificatore

Persona Id, creato ad hoc

Dispositivo di accesso Chiave composta dagli attributi Tipo, Id dispositivo e Token, dati i requisiti di unicità di questi

Transazione Id, creato ad hoc

Sala Id, creato ad hoc

Prenotazione Id, creato ad hoc

3.5.5 – Scelta delle chiavi esterne

Giunti a questo punto dobbiamo realizzare le relazioni di cardinalità analizzate precedentemente,

introduciamo perciò per alcune entità le relative chiavi esterne e i vincoli di integrità referenziale.

Analizziamole entità per entità.

Utente

o FK_UtentePersona, rappresenta il vincolo con l’entità Persona nella relazione gerarchica

Utente-Persona

Amministratore

o FK_AmministratorePersona, rappresenta il vincolo con l’entità Persona nella relazione

gerarchica Amministratore-Persona

Dispositivo di accesso

o FK_DispositivoDiAccessoPersona, rappresenta il vincolo tra l’entità Dispositivo di accesso e

l’entità Utente per la relazione di Possesso

UtenteUtente

o FK_UtenteUtente1, rappresenta il vincolo con l’entità Utente che rappresenta il primo

partecipante alla relazione Amicizia

o FK_UtenteUtente2, rappresenta il vincolo con l’entità Utente che rappresenta il secondo

partecipante alla relazione Amicizia

Prenotazione

o FK_PrenotazioneSala, rappresenta il vincolo con l’entità Sala per la relazione Noleggio

UtentePrenotazione

o FK_UtentePrenotazione1, rappresenta il vincolo con l’entità Utente per la relazione

Partecipazione

o FK_ UtentePrenotazione2, rappresenta il vincolo con l’entità Prenotazione per la relazione

Partecipazione

Transazione

o FK_TransazioneUtente, rappresenta il vincolo con l’entità Utente per la relazione

Addebito/Accredito

Addebito

o FK_AddebitoTransazione, rappresenta il vincolo con l’entità Transazione per la relazione

gerarchica Addebito-Transazione

Page 22: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

21

o FK_AddebitoPrenotazione, rappresenta il vincolo con l’entità Prenotazione per la relazione

Riferimento

Accredito

o FK_AccreditoTransazione, rappresenta il vincolo con l’entità Transazione per la relazione

gerarchica Accredito-Transazione

3.5.6 – Schema fisico

Figura 9 – Schema fisico del database

In Figura 9 troviamo lo schema fisico che identifica in maniera reale il database.

Le entità sono state rappresentate mediante tabelle secondo la tabella di mappatura seguente.

Entità Tabella

Persona Users

Page 23: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

22

Amministratore AdministratorUsers

Utente CustomerUser

Dispositivo di accesso UserAccessDevices

UtenteUtente UserFriendships

Prenotazione Bookings

Sala Rooms

UtentePrenotazione UserBookings

Transazione Transactions

Addebito BookingTransactions

Accredito RechargeTransactions

3.6 – Programmabilità

Vediamo ora come sono state sfruttate le funzionalità di programmabilità della base di dati per rendere più

semplice ed efficiente la gestione e la modifica della stessa.

3.6.1 – Vincoli di integrità e indici di unicità

Al fine di garantire il rispetto delle business rules e l’integrità dei dati all’interno della base di dati, sono

stati implementati alcuni vincoli di check19 elencati nella tabella sottostante.

Tabella Espressione

CustomerUsers (Balance >= 0.0)

Rooms (HourPrice > 0.0)

Bookings DATEDIFF(hour, StartDate, EndDate) > 0

Sono inoltre stati aggiunti degli indici di unicità per assicurarsi che i vincoli di singolarità definiti dalle

business rules siano rispettati.

Tabella Indice Attributi

Users IX_UserEmail Email

CustomerUsers IX_UserTaxCode TaxCode

UserAccessDevices IX_AccessDeviceType UserId, Type

3.6.2 – Triggers e stored procedures

Con l’obiettivo di automatizzare la modifica del bilancio di un utente in seguito all’inserimento o

all’eliminazione di una transazione sono stati implementati i seguenti triggers20 relativi alla tabella

Transactions.

Il primo trigger incrementa (o decrementa) il saldo di un utente all’inserimento di una nuova transazione ed

è implementato mediante il seguente statement SQL:

CREATE TRIGGER UpdateUserBalanceOnInsert ON Transactions FOR INSERT AS BEGIN SET NOCOUNT ON

UPDATE cu SET cu.Balance = cu.Balance + ins.Amount FROM CustomerUsers cu JOIN inserted ins ON cu.Id = ins.UserId

END

19 https://en.wikipedia.org/wiki/Check_constraint 20 https://en.wikipedia.org/wiki/Database_trigger

Page 24: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

3 – Progettazione della base di dati

23

Il secondo trigger invece decrementa (o incrementa) il saldo di un utente in seguito all’eliminazione di una

transazione, lo statement che lo implementa è il seguente:

CREATE TRIGGER UpdateUserBalanceOnDelete ON Transactions FOR DELETE AS BEGIN SET NOCOUNT ON

UPDATE cu SET cu.Balance = cu.Balance - del.Amount FROM CustomerUsers cu JOIN deleted del ON cu.Id = del.UserId

END

Transactions

UpdateUserBalanceOnInsert

UpdateUserBalanceOnDelete

CustomerUsers

INSERT Transaction DELETE Transaction

UPDATE Balance UPDATE Balance

Figura 10 – Grafo di attivazione dei triggers

Page 25: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

24

4 – Progettazione della piattaforma

In questo capitolo affronteremo in dettaglio la fase di progettazione affrontata per i componenti principali

della piattaforma.

4.1 – Progettazione del portale web Il primo passo per la progettazione del portale web è stato definire la relativa struttura di base.

In Figura 11 è mostrato il grafico che rappresenta la struttura dell’applicazione con le relative funzionalità.

Accesso

Home page utenteHome page

amministratore

Cronologia prenotazioni

Conto personale

Amici Impostazioni

Informazioni personali

Dispositivi di accesso

Informazioni di accesso

ImpostazioniInformazioni di

accesso

Prenotazioni Utenti

Sale

Prenotazione

Registrazione Home page Contatti

Transazioni

Figura 11 – Struttura del portale web

In particolare le aree caratterizzate da uno sfondo scuro rappresentano le pagine del sito accessibili anche

senza aver effettuato l’autenticazione mediante la pagina di accesso.

Le parti che invece possiedono uno sfondo chiaro rappresentano diverse sezioni contestuali accessibili

senza la necessità di navigare verso una diversa pagina.

Dallo schema è inoltre possibile notare in seguito alla procedura di accesso avviene una differenziazione del

flusso di utilizzo in base alla tipologia di utente che ha effettuato l’autenticazione, nello specifico gli utenti

amministratori saranno reindirizzati verso una sezione dell’applicazione ad essi dedicata e predisposta alle

mansioni che questi dovranno compiere.

Analogamente gli utenti fruitori saranno indirizzati verso un’area specifica in cui potranno inserire nuove

prenotazioni, gestire il proprio profilo, il proprio conto e il proprio storico delle operazioni.

Page 26: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

4 – Progettazione della piattaforma

25

Analizziamo ora le singole pagine e le funzioni svolte da esse.

4.1.1 – Area utente anonimo

Home page: è la pagina iniziale del sito web, permette una vista del calendario delle prenotazioni

per controllare la disponibilità ma non permette la prenotazione

Registrazione: rappresenta la pagina di registrazione per i nuovi utenti

Contatti: in questa pagina sono inserite alcune informazioni di contatto e un form per l’inserimento

di domande

Accesso: è la pagina di login mediante la quale gli utenti effettuano l’autenticazione

4.1.2 – Area utente fruitore

Home page: è la pagina verso la quale l’utente è reindirizzato dopo aver effettuato

l’autenticazione.

In questa pagina è possibile consultare il calendario delle prenotazioni ed eventualmente inserire

una nuova prenotazione

Cronologia prenotazioni: in questa pagina sono elencate le prenotazioni inserite dall’utente e

quelle a cui ha partecipato o parteciperà.

Da questa pagina è inoltre possibile gestire le prenotazioni inserite per aggiungere nuovi membri o

per richiederne la cancellazione

Conto personale: rappresenta la pagina di gestione del conto personale associato a ciascun utente.

In questa pagina è possibile visualizzare la cronologia delle transazioni, il proprio saldo attuale ed è

inoltre possibile effettuare una ricarica del conto mediante PayPal21 o carta di credito

Amici: mediante questa pagina è possibile gestire le proprie amicizie, le richieste in sospeso e

aggiungere nuovi utenti alla propria cerchia

Impostazioni: è la pagina attraverso cui l’utente gestisce le proprie impostazioni per la piattaforma.

Attraverso questa pagina l’utente può modificare le proprie impostazioni personali, cambiare le

proprie credenziali e infine gestire i propri dispositivi d’accesso

4.1.3 – Area utente amministratore

Home page: è la pagina verso la quale l’utente è reindirizzato dopo aver effettuato

l’autenticazione.

Questa pagina è offre all’amministratore una panoramica delle prenotazioni effettuate dagli utenti

e permette a questo di confermarle o rifiutarle

Utenti: in questa pagina è visualizzata una lista degli utenti iscritti alla piattaforma. Mediante

questa pagina è possibile gestire i vari profili e amministrarne le informazioni.

Tramite questa pagina un amministratore è in grado di convalidare e abilitare i profili appena iscritti

e in attesa di approvazione

Sale: questa pagina permette all’amministratore di gestire le sale prova, modificarne le

informazioni e disponibilità.

Sempre tramite questa pagina è possibile controllare lo stato di una determinata sala ed effettuare

delle operazioni da remoto

Impostazioni: è la pagina attraverso cui l’amministratore gestisce le proprie impostazioni per la

piattaforma.

In particolare attraverso questa pagina l’utente può modificare le proprie impostazioni personali

21 https://www.paypal.com/

Page 27: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

4 – Progettazione della piattaforma

26

Queste ultime due aree possiedono inoltre un sistema di notifiche in tempo reale basato sulla tecnologia

SignalR che permette agli utenti e agli amministratori di avere riscontro immediato al verificarsi di alcuni

eventi.

Ad esempio un utente sarà notificato se viene aggiunto ad una prenotazione da un altro utente, nel

momento in cui riceve una richiesta di amicizia o alla conferma di una prenotazione da parte di un

amministratore.

Allo stesso modo un amministratore riceverà una notifica nel caso sia inserita una nuova prenotazione o

quando un nuovo utente si iscrive alla piattaforma.

Il sistema notificherà inoltre l’amministratore al verificarsi di alcune circostanze di errore nei dispositivi di

controllo remoto delle sale.

4.2 – Progettazione della Web API Analizziamo ora le funzionalità offerte dalla Web API che permettono al sistema di interfacciarsi con le

applicazioni mobile e il dispositivo di controllo.

In particolare la Web API è composta dai cinque endpoint, ciascuno con un compito specifico, mostrati in

Figura 12.

/oauth /api/notifications /api/users /api/rooms

Dispositivo di controllo remoto

/api/bookings

Applicazione mobile

Figura 12 – Struttura della Web API

Vediamo ora in dettaglio gli endpoint offerti.

4.2.1 – OAuth

L’endpoint con URI relativo “/oauth” rappresenta il servizio che offre le funzionalità di autenticazione per

l’applicazione mobile mediante protocollo OAuth 2.022.

Tramite questa API l’applicazione mobile permette agli utenti di effettuare l’accesso al proprio profilo e di

22 https://en.wikipedia.org/wiki/OAuth

Page 28: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

4 – Progettazione della piattaforma

27

ottenere un access token23 che permette di utilizzare le risorse24 degli altri servizi web che richiedono

autenticazione.

4.2.2 – Notifications

Questo endpoint, di URI relativo “/api/notifications”, offre invece le funzionalità di registrazione e gestione

al sistema di notifiche push25 per l’applicazione mobile, offerto dall’infrastruttura Microsoft Azure

mediante Notification Hub.

Le notifiche push permettono all’applicazione di ricevere avvisi riguardo eventi che si verificano nell’ambito

del profilo utente direttamente sul proprio dispositivo, analogamente a quanto avviene nel portale web.

4.2.3 – Bookings

L’endpoint con URI relativo “/api/bookings” è uno dei servizi utilizzati dall’applicazione mobile.

Questo servizio in particolare permette all’applicazione di:

Visualizzare il calendario delle prenotazioni

Inserire nuove prenotazioni

4.2.4 – Users

L’endpoint con URI relativo “/api/users” rappresenta il servizio principale utilizzato dall’applicazione

mobile.

Tale servizio offre infatti tutte le funzionalità che permettono all’utente tramite l’applicazione di:

Ottenere le informazioni personali dell’utente

Visualizzare la cronologia delle prenotazioni

Esaminare lo storico delle transazioni e visualizzare il proprio bilancio

Consultare e gestire la lista delle proprie amicizie

4.2.5 – Rooms

Infine l’endpoint con URI relativo “api/rooms” offre le funzionalità necessarie al dispositivo di controllo

remoto per interagire con la piattaforma ed effettuare operazioni quali l’autenticazione degli utenti

mediante dispositivo di accesso o la gestione remota della sala a cui il dispositivo di controllo è associato.

4.3 – Progettazione dell’applicazione mobile

In modo analogo al portale web, l’applicazione mobile permette all’utente fruitore di accedere ai servizi

offerti dalla piattaforma anche in mobilità e direttamente dal proprio Smartphone.

Tale applicazione permette inoltre, sui dispositivi supportati, di fungere da dispositivo di accesso facendo

uso della tecnologia HCE che permette al telefono di emulare una SmartCard NFC.

Come il portale web, una volta effettuato l’accesso tramite la schermata di login, l’utente può accedere alle

varie sezioni in cui è divisa l’app, e in particolare:

Home: in questa sezione è possibile consultare il calendario delle prenotazioni ed eventualmente

inserire una nuova prenotazione

Cronologia prenotazioni: in questa sezione sono invece elencate le prenotazioni inserite dall’utente

e quelle a cui ha partecipato o parteciperà

23 https://en.wikipedia.org/wiki/Access_token 24 https://en.wikipedia.org/wiki/Web_resource 25 https://en.wikipedia.org/wiki/Push_technology

Page 29: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

4 – Progettazione della piattaforma

28

Conto personale: rappresenta invece la sezione di gestione del conto personale associato a ciascun

utente. Da qui è possibile visualizzare la cronologia delle transazioni e consultare il proprio saldo

attuale

Impostazioni: questa è infine la sezione in cui è possibile impostare alcune opzioni per

l’applicazione. In particolare è possibile decidere, se il telefono lo supporta, se utilizzare o meno

quest’ultimo come dispositivo di accesso, è possibile inoltre disabilitare la recezione delle notifiche,

selezionare la modalità di vista predefinita per il calendario e impostare se aggiungere o meno un

appuntamento al calendario nel momento in cui viene inserita una prenotazione

L’applicazione è inoltre progettata per integrarsi con Cortana26, l’assistente personale dei dispositivi

Windows 10, per fornire funzionalità di ricerca vocale di sale prova e aggiunta delle prenotazioni effettuate

al calendario del dispositivo.

4.4 – Progettazione del dispositivo di controllo remoto

Per poter testare appieno tutte le potenzialità della piattaforma è stato progettato e costruito un prototipo

funzionante di dispositivo di accesso e controllo remoto.

Questo dispositivo è stato realizzato utilizzando la piattaforma Gadgeteer ed è schematizzato in Figura 13.

Figura 13 – Schema dispositivo di controllo remoto

Come visibile dallo schema, il dispositivo è composto da diversi moduli collegati alla scheda principale, nello

specifico questi componenti sono:

26 http://windows.microsoft.com/en-us/windows-10/getstarted-what-is-cortana

Page 30: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

4 – Progettazione della piattaforma

29

Un modulo di alimentazione

Un led di stato che indica lo stato delle operazioni effettuate

Un modulo ethernet per la connessione del dispositivo alla rete internet

Uno schermo a caratteri per l’output di informazioni sulle operazioni effettuate e sullo stato del

dispositivo

Un buzzer27 per la notifica acustica dell’esito di alcune operazioni

Un lettore RFID e NFC per la lettura dei dispositivi di accesso

Un lettore di schede di memoria SD utilizzata per il mantenimento delle impostazioni di

configurazione e per il caching di alcune informazioni

Un orologio RTC28 per gestire in maniera efficiente e precisa eventi temporizzati e per mantenere

aggiornate la data e l’ora del dispositivo

Il dispositivo è inoltre pensato per potersi interfacciare con uno o più relè29 in modo da poter comandare

una serratura elettrica e automatizzare l’impianto di illuminazione della sala.

Per alcuni dei moduli, in particolare il modulo RTC e il lettore RFID è stato necessario implementare il driver

di controllo per la piattaforma .NET Gadgeteer e per il Micro Framework. Per la realizzazione di questi ci si è

basati sulla documentazione ufficiale dei relativi componenti riportata nella bibliografia.

Dal punto di vista del software, il dispositivo è interfacciato alla piattaforma mediante la Web API

precedentemente descritta.

Il dispositivo sfrutta inoltre la tecnologia e il protocollo SignalR per la comunicazione in real-time associata

alle funzionalità di controllo remoto. A questo scopo è stata creata una libreria software dedicata data

l’assenza di un’implementazione preesistente per il suddetto protocollo destinata alla piattaforma .NET

Micro Framework.

27 https://en.wikipedia.org/wiki/Buzzer 28 https://en.wikipedia.org/wiki/Real-time_clock 29 https://en.wikipedia.org/wiki/Relay

Page 31: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

30

5 – Interfaccia

Dopo aver analizzato la fase di progettazione dei vari componenti che compongono l’infrastruttura,

vedremo ora come è stata la realizzazione dell’interfaccia grafica per gli elementi che ne dispongono.

Esamineremo in particolare come sono state sviluppate le GUI30 per l’applicazione web e per l’applicazione

mobile. Analizzeremo inoltre le soluzioni che sono state adottate per permettere al dispositivo di controllo

di comunicare il proprio stato e di fornire messaggi riguardanti le operazioni in corso e il loro esito.

5.1 – Interfaccia del portale web

Per la progettazione dell’interfaccia grafica per l’applicazione web si è fatto uso del linguaggio di markup

HTML5 e del linguaggio di formattazione CSS3, in particolare si è ricorsi alla sintassi ASP.NET Razor31 offerta

dal framework ASP.NET MVC che permette di utilizzare i costrutti HTML mescolati a codice C# per creare

pagine web dinamiche secondo il paradigma MVC32.

Per la realizzazione del sito web si è inoltra fatto uso del framework Bootrstrap e della libreria JavaScript

jQuery per rendere dinamiche le pagine e risolvere in modo semplice ed efficiente alcune problematiche

quali ad esempio l’adozione della tecnica di design web adattivo33 che permette all’interfaccia di una pagina

web di ridimensionarsi e riposizionare automaticamente gli elementi per adattarsi alle dimensioni del

riquadro di visualizzazione.

Figura 14 – Home page

In Figura 14 è rappresentata l’home page del portale web, sono visibili in particolar modo il calendario di

prenotazione e i collegamenti di navigazione per la pagina di accesso e di registrazione.

30 https://en.wikipedia.org/wiki/Graphical_user_interface 31 https://en.wikipedia.org/wiki/ASP.NET_Razor 32 https://en.wikipedia.org/wiki/Model–view–controller 33 https://en.wikipedia.org/wiki/Responsive_web_design

Page 32: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

5 – Interfaccia

31

Figura 15 – Accesso

Mediante la pagina di accesso di Figura 15 gli utenti e gli amministratori possono autenticarsi e accedere

alla propria area privata dedicata.

Per registrarsi invece come nuovi utenti è necessario recarsi nella pagina di registrazione di Figura 16 e

compilare i campi necessari.

Figura 16 - Registrazione

Una volta effettuato l’accesso, l’utente può inserire una prenotazione semplicemente facendo click sulla

data e l’ora prescelta, se è disponibile una sala per la prenotazione in tale periodo apparirà la finestra

modale di Figura 17 che permetterà di finalizzare la prenotazione.

Page 33: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

5 – Interfaccia

32

Figura 17 – Finestra modale di prenotazione

Una volta inserita la prenotazione, questa sarà consultabile nella pagina relativa alla cronologia delle

prenotazioni visibile in Figura 18. Dalla stessa pagina è inoltre possibile richiedere la cancellazione di una

prenotazione precedentemente aggiunta semplicemente facendo click sul pulsante raffigurante il cestino.

Figura 18 – Cronologia delle prenotazioni

In Figura 19 è invece rappresentata la pagina di riassunto del conto personale dell’utente.

Oltre al saldo corrente in questa pagina è possibile consultare lo storico delle transazioni ed eventualmente

ricaricare il conto tramite il servizio di pagamenti online PayPal.

Page 34: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

5 – Interfaccia

33

Figura 19 – Conto personale

La Figura 20 mostra la pagina dedicata alla gestione degli amici, da questa pagina l’utente è in grado di

visualizzare, aggiungere o rimuovere amicizie dalla propria cerchia oppure accettare o rifiutare richieste di

amicizia in sospeso.

Figura 20 – Amici

Infine dalla pagina ritratta in Figura 21 l’utente potrà modificare alcune informazioni personali, sostituire le

credenziali di accesso e gestire i propri dispositivi di accesso.

Page 35: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

5 – Interfaccia

34

Figura 21 – Impostazioni

5.2 – Interfaccia dell’applicazione mobile

Per quanto riguarda invece la progettazione dell’interfaccia grafica per l’applicazione mobile si è scelto di

rimanere fedeli alle linee guida34 suggerite da Microsoft per lo sviluppo di applicazioni per la piattaforma

Windows 10.

In particolare si è deciso di adottare il cosiddetto Hamburger menu35 per la navigazione tra le sezioni e di

implementare responsive design36 già citato per l’applicazione web. Tale tecnica di design permette

all’interfaccia di modificarsi e adattarsi alle dimensioni dello schermo e al dispositivo su cui viene eseguita,

in tal modo l’applicazione è fruibile non solo da Smartphone Windows 10 Mobile ma anche da PC e tablet

che utilizzano Windows 10 come sistema operativo.

Figura 22 – Alcune schermate dell’applicazione mobile

34 https://dev.windows.com/en-us/design 35 https://en.wikipedia.org/wiki/Hamburger_button 36 https://msdn.microsoft.com/en-us/library/windows/apps/dn958435.aspx

Page 36: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

5 – Interfaccia

35

In Figura 22 sono mostrate alcune immagini rappresentanti l’interfaccia grafica dell’applicazione e le varie

sezioni da cui è composta, e l’integrazione con l’assistente personale Cortana che permette la ricerca vocale

di sale prove libere.

5.3 – Interfaccia del dispositivo di controllo

Dal momento che il dispositivo di controllo non possiede una vera e propria interfaccia grafica ma che a fini

di debug si è reso necessario che il dispositivo stesso possa comunicare l’esito e lo stato di alcune

operazioni, si è deciso di implementare un sistema di output basato su notifiche sonore, luminose e su uno

schermo a caratteri.

Figura 23 – Prototipo del dispositivo di controllo

Nello specifico il sistema di notifiche luminose è basato su un codice a tre colori, rosso, giallo e verde: il

primo sta a significare uno stato di errore, il secondo indica che un’operazione è in corso mentre il terzo

rappresenta un esito positivo. Analogamente le notifiche acustiche sono caratterizzate da due tonalità

diverse per lo stato di successo e lo stato di errore.

Il display a caratteri infine permette di visualizzare messaggi anche più lunghi dei 16x2 caratteri

nominalmente supportati dal modulo mediante l’utilizzo ti una tecnica di visualizzazione a scorrimento del

testo.

In Figura 23 sono evidenziati il led di notifica e il display a caratteri.

LED di notifica

Display a

caratteri

Page 37: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

36

6 – Implementazione

Questo capitolo ha infine lo scopo di esporre il funzionamento interno del software che si cela dietro i

principali componenti della piattaforma.

Al fine di una trattazione più semplice verranno analizzati solamente alcune delle funzioni e porzioni di

codice sorgente che compongono le singole parti.

6.1 – Implementazione del portale web e della Web API

Con l’intento di rendere lo sviluppo dell’applicazione web più rapida si è deciso di ricorrere all’Entity

Framework come strumento di accesso ai dati forniti dal database.

In particolare l’Entity Framework è un set di tecnologie basate su ADO.NET37 che permette lo sviluppo

semplificato di applicazioni orientate ai dati.

Tale framework consente infatti allo sviluppatore di utilizzare i dati sotto forma di proprietà e oggetti

specifici indipendentemente dalle colonne e dalle tabelle del database sottostante in cui questi sono

archiviati. È perciò possibile operare a un livello superiore di astrazione nel momento in cui ci si trova a

dover gestire tali dati e tutto ciò consente di creare e gestire l’applicazione in maniera semplice e con meno

codice rispetto alle tradizionali applicazioni.

Questa scelta si riflette nel fatto che nel codice di accesso ai dati non sono presenti esplicite queries SQL ma

l’accesso ai dati avviene piuttosto mediante costrutti LINQ38, i quali vengono tradotti a runtime

automaticamente dal framework in linguaggio SQL.

Vediamo ora ad esempio il codice che si occupa di trovare tutte le prenotazioni in un arco temporale

definito dalle variabili startDate e endDate ordinandole per data di inizio

BookingStore.Bookings.Where(b => b.StartDate >= startDate && b.EndDate <= endDate).OrderBy(s

=> s.StartDate);

BookingStore.Bookings rappresenta il “contenitore” delle prenotazioni dalla quale vengono selezionate

quelle che rispettano i vincoli imposti. Tale costrutto LINQ viene tradotto al momento dell’esecuzione in

una query SQL simile alla seguente

SELECT * FROM Bookings WHERE StartDate >= @startDate && EndDate <= @endDate ORDER BY

StartDate

Per quanto riguarda invece la gestione del traffico HTTP, il framework ASP.NET MVC fornice la classe base

Controller39 che implementa i meccanismi per rispondere alle richieste effettuate al sito secondo il

pattern Model-View-Controller.

Ogni pagina del sito web possiede perciò il proprio Controller specifico che eredita dalla suddetta classe,

nello specifico ciascuna di tali classi implementa delle funzioni predisposte a rispondere a determinate

richieste HTTP40 discriminate per metodo e URI della risorsa di destinazione.

37 https://en.wikipedia.org/wiki/ADO.NET 38 https://en.wikipedia.org/wiki/Language_Integrated_Query 39 https://msdn.microsoft.com/en-us/library/system.web.mvc.controller(v=vs.118).aspx 40 https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_message

Page 38: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

6 – Implementazione

37

Queste funzioni ricevono in input i parametri ricevuti mediante le richieste HTTP (parametri query string41

e/o form in caso di richieste POST42) in output la View sotto forma di contenuto HTML.

Specifica attenzione meritano i metodi che restituiscono le cosiddette viste parziali, utilizzate nell’ambito

della programmazione AJAX43 e che permettono l’aggiornamento di determinate porzioni della pagina web

senza la necessità di ricaricare l’intera pagina.

Questa tecnica trova particolare applicazione quando si tratta di visualizzare discrete quantità dati

organizzate in pagine tra cui l’utente può navigare senza però dover ricaricare la pagina nella sua interezza.

Analizziamo come esempio il Controller e le Views associate alla pagina “Cronologia prenotazioni”.

In Figura 24 è raffigurato il codice relativo all’implementazione della classe BookingsController che si

occupa di gestire il traffico HTTP per la pagina con URI relativo “/Bookings”, in particolare consideriamo i

metodi Index e Navigate.

La funzione Index si occupa di rispondere alle richieste di tipo GET verso la risorsa predefinita associata alla

pagina, restituendo in output la View mostrata in Figura 25 che si occupa di visualizzare il modello

BookingsModel contenente la lista delle prenotazioni dell’utente autenticato, impaginate a gruppi di 10

elementi.

Il metodo Navigate è preposto a gestire le richieste, sempre di tipo GET, destinate invece alla risorsa

caratterizzata dall’URI “/Bookings/Navigate”.

Questo metodo è stato creato nello specifico per permettere la navigazione della lista delle prenotazioni

mediante AJAX, esso riceve infatti in input l’indice della pagina da visualizzare e risponde con la

visualizzazione parziale di Figura 26 che si occupa di rappresentare le prenotazioni corrispondenti a tale

indice, sotto forma di elementi HTML.

Particolare menzione merita l’attributo Autorize44 a decorazione della classe BookingsController. Tale

attributo garantisce che solamente gli utenti autenticati possano accedere alla pagina gestita dal Controller,

in questo caso specifico solamente gli utenti appartenenti al ruolo Customer (che identifica l’utente

fruitore), gli utenti non autenticati o appartenenti ad un diverso ruolo riceveranno una risposta HTTP di

status code 40145.

Analogamente a quanto avviene per le pagine web, il framework ASP.NET fornisce una classe base che

funge da Controller per le Web API, tale classe è chiamata ApiController46.

A differenza di quanto abbiamo visto prima, i metodi di questa classe non restituiscono le Views associate ai

modelli sotto forma di contenuto HTML, bensì generano in output tali oggetti codificati secondo la

notazione JSON47, ne consegue che le Web API per la piattaforma è rappresentata semplicemente da un

insieme di classi che ereditano da tale classe base, completate dai metodi che si occupano di gestire le

richieste HTTP verso le risorse associate ai servizi che si intende fornire.

41 https://en.wikipedia.org/wiki/Query_string 42 https://en.wikipedia.org/wiki/POST_(HTTP) 43 https://en.wikipedia.org/wiki/Ajax_(programming) 44 https://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.118).aspx 45 https://en.wikipedia.org/wiki/List_of_HTTP_status_codes 46 https://msdn.microsoft.com/en-us/library/system.web.http.apicontroller(v=vs.118).aspx 47 https://en.wikipedia.org/wiki/JSON

Page 39: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

6 – Implementazione

38

Figura 24 – BookingsController.cs

Page 40: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

6 – Implementazione

39

Figura 25 – Index.cshtml

Figura 26 – _BookingListPartial.cshtml

Page 41: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

6 – Implementazione

40

6.2 – Implementazione dell’applicazione mobile

Vediamo adesso come sono state implementate alcune soluzioni per l’applicazione mobile.

L’applicazione in questione è stata rilasciata per il momento esclusivamente per la piattaforma Windows 10

UWP data la familiarità con gli strumenti di sviluppo e il supporto ad alcune tecnologie richieste dai requisiti

del progetto.

Analizziamo a fini esemplificativi il codice associato alla sezione “Cronologia prenotazioni” dal momento

che le stesse tecniche sono utilizzate anche nelle altre sezioni dell’applicazione.

In Figura 27 è possibile esaminare il codice che si occupa di sincronizzare e visualizzare lo storico delle

transazioni per l’utente nella pagina il cui layout e visibile in Figura 28.

In particolare possiamo vedere come il compito di aggiornare la lista delle transazioni sia svolto dalla

funzione Refresh. Tale metodo si occupa di richiamare la Web API mediante il client HTTP identificato da

((App)Application.Current).Client, di effettuare l’impaginazione in pagine di 10 elementi tramite

l’oggetto PagedDataCollection e infine di effettuare il data binding48 all’elemento ListView49 denominato

BookingsListView a cui e demandata la rappresentazione effettiva degli elementi.

48 https://en.wikipedia.org/wiki/Data_binding 49 https://msdn.microsoft.com/library/windows/apps/windows.ui.xaml.controls.listview.aspx

Page 42: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

6 – Implementazione

41

Figura 27 – BookingsPage.xaml.cs

Page 43: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

6 – Implementazione

42

Figura 28 – BookingsPage.xaml

Page 44: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

43

7 – Conclusioni

7.1 – Risultati ottenuti

Gli obiettivi prefissati per il progetto sono stati raggiunti mediante l’implementazione e la creazione dei

seguenti elementi:

Applicazione Web sviluppata con ASP.NET MVC 5

Web API REST sviluppata con ASP.NET MVC 5

Applicazioni Mobile per dispositivi Windows 10

Progettazione, firmware e drivers per il dispositivo di controllo remoto

Durante lo sviluppo di questo progetto sono inoltre state acquisite nuove conoscenze e approfondite altre,

in particolare riguardanti:

Sviluppo di applicazioni web ASP.NET MVC 5

Tecnologie web quali HTML5 e CSS3

Sviluppo e progettazione di software data-oriented mediante Entity Framework

Progettazione di una base di dati

Sviluppo di applicazioni per la piattaforma UWP destinate a dispositivi Windows 10

Tecnologia NFC, standard MIFARE50 e ISO 14443 A/B51

7.2 – Lavoro svolto

Al fine di realizzare il progetto software oggetto di questa tesi sono stati realizzati un totale di

1 database composto da 15 tabelle

Circa 3100 righe di codice C# a formare indicativamente 130 classi suddivise tra 6 progetti Visual

Studio

Più di 170 righe di codice JavaScript

Più di 550 righe di codice XAML

Circa 900 righe tra tag HTML e regole di stile CSS

7.3 – Scenari di sviluppo futuri

Il progetto non è attualmente operativo e necessita alcuni miglioramenti soprattutto dal punto di vista

dell’interfaccia grafica, del sistema di notifiche e del sistema di controllo remoto.

Una volta effettuate migliorie necessarie e sottoposto il software ad un’accurata fase di testing la

piattaforma potrà ritenersi pronta per debuttare sul mercato e diventare un prodotto commerciale.

Tra gli scenari di sviluppo futuri troviamo inoltre la possibilità di implementare un meccanismo che

consenta la suddivisione della spesa in caso di prenotazioni condivise tra più membri di uno stesso gruppo

ed eventualmente un sistema di registrazione e archiviazione online delle sessioni di prova in modo da

premettere agli utenti di accedere facilmente a queste direttamente dal portale o dall’applicazione,

50 https://en.wikipedia.org/wiki/MIFARE 51 https://en.wikipedia.org/wiki/ISO/IEC_14443

Page 45: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

7 – Conclusioni

44

casomai fornendo l’integrazione con piattaforme di hosting musicale già esistenti, quali ad esempio

SoundCloud52.

Anche se inizialmente dedicato alla gestione di sale prova musicale, il progetto può facilmente vedere

applicazione anche in altri campi e situazioni in cui è necessaria l’automazione della gestione di luoghi

pubblici condivisi.

52 https://soundcloud.com

Page 46: Progettazione ed implementazione di una piattaforma software per la gestione remota e il controllo degli accessi di una sala prove musicali

45

8 – Bibliografia e sitografia

8.1 – Riferimenti bibliografici

MFRC522 Product data sheet Rev. 3.6, NXP Semiconductors — 14 December 2011

SD2403 High Precision RTC module Product data sheet, Shenzhen wave electronic technology ltd

ISO/IEC FCD 14443-4 Identification cards — Contactless integrated circuit(s) cards — Proximity

cards — Part 4: Transmission protocol, ISO/IEC — 13 June 2007

AN1303 — MIFARE Ultralight as Type 2 Tag Rev. 1.5, NXP Semiconductors — 2 October 2012

AN1305 — MIFARE Classic as NFC Type MIFARE Classic Tag Rev. 1.3, NXP Semiconductors — 2

October 2012

AN10833 — MIFARE Type Identification Procedure Rev. 3.5, NXP Semiconductors — 27 March 2014

NFC Record Type Definition (RTD) technical specification, NFC Forum™— 24 July 2006

HTML5 CSS3 JavaScript — Pellegrino Principe, Apogeo — 19 September 2012

Programming Microsoft ASP.NET MVC, 3rd Edition — Dino Esposito, Microsoft — 15 February 2014

Microsoft Visual C# Step by Step, 8th Edition — John Sharp, Microsoft — 30 October 2015

Getting started with .NET Gadgeteer — Simon Monk, Make: Projects — 7 May 2012

8.2 – Riferimenti sitografici

https://en.wikipedia.org/

https://msdn.microsoft.com/en-us/library/

http://research.microsoft.com/en-us/projects/gadgeteer/

http://www.slideshare.net/mobile/mircovanini1/iot-with-signalr-net-gadgeteer-netmfwork/

http://blogs.msdn.com/b/nfc/archive/2015/05/01/how-to-write-an-nfc-host-card-emulation-hce-

app-with-windows-10-for-mobile.aspx

https://mva.microsoft.com/en-US/training-courses/a-developers-guide-to-windows-10-12618

https://mva.microsoft.com/en-US/training-courses/introduction-to-asp-net-5-13786

https://mva.microsoft.com/en-US/training-courses/adding-style-with-css-8474

https://mva.microsoft.com/en-us/training-courses/building-responsive-ui-with-bootstrap-8378

https://mva.microsoft.com/en-US/training-courses/introduction-to-jquery-8429