• Non ci sono risultati.

3. Progettazione del sistema: definizione, modellazione e design

3.1. Comprensione degli obiettivi del progetto

La prima procedura che dovrebbe essere eseguita consiste nel limitare il campo d’azione del progetto, ovvero specificare da una parte tutti gli elementi che dovranno essere incorporati nel sistema, dall’altra comprendere invece quali non sono necessari. Per ottenere questo è necessario iniziare a definire in maniera più dettagliata le funzionalità e/o le proprietà che il sistema dovrà possedere.

24

È buona pratica partire dall’obiettivo principale del progetto che si era dichiarato, riassunto qui di seguito:

“L’obiettivo che si vuole ottenere è la realizzazione di una piattaforma in grado di gestire le segnalazioni di disservizi effettuate dall’utenza interna ad un campus universitario e di avvisare rapidamente il personale tecnico affinché le risolvi. Sono richiesti i requisiti di semplicità nell’uso del sistema, la possibilità di localizzare in modo automatico o semi-automatico la posizione del disservizio ed elementi di gamification.”

Allo scopo di evitare ambiguità e raffinare questi requisiti primitivi, tenendo inoltre conto degli studi preliminari condotti nei primi capitoli, sono stati condotti alcuni incontri di preambolo assieme alla relatrice, al termine dei quali sono state selezionate le seguenti specifiche di progetto:

• l’utente avrebbe avuto accesso al sistema grazie ad un’applicazione installata su dispositivo mobile, questo per via dell’enorme diffusione di tali apparecchi nonché per la possibilità di poter sfruttare i sensori, la capacità di accesso alla rete e la potenza di calcolo già insiti in tali dispositivi;

• per ovviare ai notevoli problemi tecnologici legati alla localizzazione indoor precedentemente spiegati senza dover incorrere in eccessivi costi economici per procurarsi l’hardware necessario o dover allungare eccessivamente i tempi di produzione del progetto, si è scelto di utilizzare una tecnologia già studiata e sviluppata precedentemente all’interno dell’università che fornisce all’utente la possibilità di sfruttare una mappa interattiva per selezionare una posizione della struttura e aver accesso a informazioni relative a quella immagazzinate all’interno di un database online; adattando questa tecnologia agli scopi del progetto, l’utente avrebbe potuto selezionare una posizione interna all’edificio scolastico e segnalarne un eventuale disservizio, al contempo avrebbe potuto ricevere la posizione di altri disservizi segnalati nel campus;

• vi era la necessità di raccogliere informazioni di vario genere sia sulle segnalazioni effettuate sia sugli utenti segnalanti, così da poterle in seguito analizzare, pertanto è stata prevista la costruzione di un database dove salvare questo storico di dati;

• gli utenti avrebbero ricevuto notifiche push in merito agli aggiornamenti compiuti da altri utenti sulle segnalazioni (per esempio un tecnico avrebbe

25

captato un messaggio di avviso quando fosse stata effettuata una nuova segnalazione e l’utente che l’aveva fatta avrebbe ricevuto notizia qualora fosse stata risolta);

• al fine di rendere più piacevole l’utilizzo di questa applicazione e al contempo di trasmettere un messaggio all’utente di un campus sicuro e da mantenere in ordine sarebbero stati ideati dei mini-giochi, i cui punteggi pro-capite potevano essere visualizzati in una classifica disponibile in una pagina dell’app; tuttavia tale requisito non è stato considerato necessario bensì facoltativo.

Studiando successivamente quale tipo di applicazione mobile creare, sono emerse le seguenti tre principali opzioni [HTML19]:

• applicazione nativa: si tratta di un’app specifica per un certo sistema operativo, il che la rende ottimizzata per la piattaforma sulla quale viene sviluppata, è veloce nell’operare, è in grado di funzionare anche offline e ha facile accesso a tutte le funzionalità del dispositivo mobile, ma proprio a causa di questa sua specificità ha costi di sviluppo maggiori, legati al dover implementare e aggiornare l’applicativo per ogni piattaforma su cui lo si vuole rendere disponibile;

• applicazione web: sono software che sfruttano un linguaggio indipendente dal tipo di piattaforma su cui operano, fondamentalmente si tratta di veri e propri siti web il cui funzionamento viene reso simile a quello di una normale app e come tali hanno quindi un impatto nullo sulla memoria o sulle capacità di calcolo del telefono, tuttavia necessitano della rete in modo costante per poter contattare il web service di appoggio; non risultano ottimizzate per nessuna particolare piattaforma e pertanto sono più lente rispetto al tipo di app precedente, inoltre possiedono un accesso nullo o solo parziale alle funzionalità del sistema operativo e non possono essere disponibili su nessuno store di applicazioni mobili, in compenso i costi di produzione sono alquanto contenuti;

• applicazione ibrida: come suggerisce il nome, si tratta di un’applicazione che prende caratteristiche da entrambe le precedenti tipologie, ovvero viene prodotto un sito web che sfrutta linguaggi cross-platform (in genere vengono utilizzati JavaScript, HTML5 e CSS) e che fa uso di un componente nativo (ad esempio una WebView in Android), grazie al quale l’esecuzione e la visualizzazione dei contenuti web ricorda all’utente quelli di una normale app; è possibile produrre

26

una versione unica per ogni piattaforma, per cui produzione, manutenzione e aggiornamento risultano poco costosi, inoltre l’accesso alla rete non è sempre necessario mentre è possibile sfruttare maggiormente le capacità dell’hardware e le funzionalità base del sistema operativo, anche se queste potrebbero variare a seconda della piattaforma.

Alla fine la scelta è ricaduta sulla tipologia ibrida, per la possibilità di avere accesso a certe funzionalità del dispositivo mobile (si è pensato per esempio che tramite la fotocamera l’utente avrebbe potuto scattare una foto a supporto della segnalazione che voleva effettuare, oppure GPS e Bluetooth sarebbero potuti risultare utili in futuro, volendo aggiornare il sistema di localizzazione del software), poiché non era necessario sviluppare diverse versioni del software specifiche per una singola piattaforma e diminuendo così i tempi di produzione e anche perché si è considerato che la app non avrebbe dovuto effettuare calcoli complessi e avrebbe ottenuto di conseguenza performance comunque accettabili.