Università degli Studi di Padova
Facoltà di Scienze MM.FF.NN
Laurea in Informatica
iWWAlarms
monitoraggio di un impianto industriale con
iPhone
Candidato:
Alberto Baggio Mat 560164
Anno Accademico 2010-2011
Relatore:
Paolo Baldan
Alberto Baggio
Tesi – iWWAlarms
1
Indice generale
Introduzione..........................................................................................................................................4
L'azienda..........................................................................................................................................5
Scopo dello stage.............................................................................................................................5
Prodotto ottenuto..............................................................................................................................7
Organizzazione del documento........................................................................................................7
Strumenti utilizzati...............................................................................................................................8
Strumenti utilizzati...........................................................................................................................9
Ambiente di sviluppo..................................................................................................................9
Strumenti forniti con Xcode........................................................................................................9
Cocoa........................................................................................................................................10
Analisi.................................................................................................................................................11
Scopo del documento.....................................................................................................................12
Scopo del prodotto....................................................................................................................12
Descrizione generale – configurazione .........................................................................................12
Funzioni del prodotto................................................................................................................13
Vincoli generali.........................................................................................................................13
Dipendenze................................................................................................................................13
Casi d'uso.......................................................................................................................................13
Use Case UC0 – Connessione/autenticazione...........................................................................13
Use Case UC1 – Post autenticazione........................................................................................14
Use Case UC3 – Impostazione parametri connessione.............................................................15
Use Case UC4 – Visione allarmi attivi.....................................................................................15
Use Case UC 4.1 – Dettaglio allarme.......................................................................................16
Use Case UC6 – Statistiche allarmi attivi.................................................................................17
Use Case UC7 – Filtraggio allarmi...........................................................................................17
Lista dei requisiti...........................................................................................................................18
Requisiti funzionali...................................................................................................................18
Requisiti di qualità....................................................................................................................20
Specifica.............................................................................................................................................21
Apple Notification Service, APNs.................................................................................................22
Connessione e comunicazione..................................................................................................22
JSON.........................................................................................................................................22
Formato del messaggio di notifica............................................................................................23
Sicurezza...................................................................................................................................24
Scelte progettuali...........................................................................................................................24
Alberto Baggio
Tesi – iWWAlarms
2
Modulo connessione.................................................................................................................25
Modulo Data Store....................................................................................................................25
Modulo Controllo-Visualizzazione...........................................................................................26
Definizione di prodotto.......................................................................................................................27
Pattern............................................................................................................................................29
Model.............................................................................................................................................31
DownloadAllarmiAttivi............................................................................................................31
StoreAllarmiAttivi....................................................................................................................32
DataBase...................................................................................................................................34
RandomColor............................................................................................................................35
Filters........................................................................................................................................35
View...............................................................................................................................................36
Classi che disegno i grafici:......................................................................................................36
Gestori touch utente..................................................................................................................37
Controller.......................................................................................................................................38
iAlarmsAppDelegate.................................................................................................................38
RootController..........................................................................................................................39
Page...........................................................................................................................................39
ContPage...................................................................................................................................40
ControllerQuartaVista...............................................................................................................40
DettaglioAllarme.......................................................................................................................41
ViewFilterResult.......................................................................................................................41
SaveFilters.................................................................................................................................41
MyFilterDisplay:.......................................................................................................................42
Elenco file:.....................................................................................................................................42
SLOC.............................................................................................................................................44
ToDo..............................................................................................................................................44
Conclusioni.........................................................................................................................................45
Risultato....................................................................................................................................47
Scostamento rispetto a quanto pianificato.................................................................................47
Riassuntivo ore..........................................................................................................................48
Esperienza maturata..................................................................................................................48
Miglioramenti............................................................................................................................48
Appendice...........................................................................................................................................49
Elenco Requisiti.............................................................................................................................50
Tracciamento dei requisiti..............................................................................................................51
Tracciamento: requisiti funzionali - Use Case..........................................................................51
Tracciamento: Use Case – requisiti funzionali.........................................................................52
Tracciamento Classi – requisiti soddisfatti...............................................................................52
Requisito – classi che partecipano al soddisfacimento.............................................................54
Glossario.............................................................................................................................................57
Bibliografia.........................................................................................................................................59
Alberto Baggio
Tesi – iWWAlarms
3
Indice delle illustrazioni
Illustrazione 1: Autoware - Logo aziendale..........................................................................................5
Illustrazione 2: Configurazione lato Server..........................................................................................6
Illustrazione 3: iPhone SDK.................................................................................................................9
Illustrazione 4: Configurazione..........................................................................................................12
Illustrazione 5: UC0 - Connessione/autenticazione............................................................................13
Illustrazione 6: UC1 - post autenticazione.........................................................................................14
Illustrazione 7: UC3 - Impostazione parametri connessione..............................................................15
Illustrazione 8: UC4 - Visione allarmi attivi......................................................................................15
Illustrazione 9: UC4.1 – Dettaglio allarme.........................................................................................16
Illustrazione 10: UC6 Statistiche allarmi attivi..................................................................................17
Illustrazione 11: UC7 - Filtro allarmi.................................................................................................18
Illustrazione 12: Schema comunicazione APNs.................................................................................22
Illustrazione 13: Oggetto JSON..........................................................................................................23
Illustrazione 14: Array JSON.............................................................................................................23
Illustrazione 15: Formato messaggio di notifica................................................................................23
Illustrazione 16: Token Trust..............................................................................................................24
Illustrazione 17: Visione ad alto livello - moduli...............................................................................25
Illustrazione 18: Diagramma Classi - prima parte..............................................................................28
Illustrazione 19: Diagramma Classi - seconda parte..........................................................................29
Illustrazione 20: NSNotificationCenter..............................................................................................29
Illustrazione 21: Diagramma di sequenza - scaricamento allarmi......................................................30
Illustrazione 22: Database filtri.db.....................................................................................................34
Illustrazione 23: Area selezionata.......................................................................................................36
Illustrazione 24: Grafici......................................................................................................................37
Illustrazione 25: Gerarchia viste.........................................................................................................38
Illustrazione 26: Pianificato................................................................................................................46
Illustrazione 27: Effettivo...................................................................................................................46
Illustrazione 28: Computazione statistiche.........................................................................................47
Alberto Baggio
Tesi – iWWAlarms
4
Introduzione
Alberto Baggio
Tesi – iWWAlarms
5
Il mercato degli smartphone è in continua crescita, basta analizzare alcuni dati per aver riprova
di questo:
•
15,037,000 è il numero di italiani che posseggono uno smartphone (fonte Ansa, 6 luglio
2010)
•
+38% è il tasso di crescita del mercato in Europa del 2009 rispetto al 2008 (fonte:
Comscore)
Questo stage nasce dall'esigenza di un'azienda vicentina, l'Autoware, di ampliare il suo
mercato verso nuovo prospettive come questa.
L'azienda
“La nostra società è nata nel 1996 con la convinzione che il software nel mondo della
produzione dovesse essere sviluppato in maniera altamente professionale e con un'elevata
qualità del servizio consulenziale. Autoware è stata, per oltre dieci anni, ed è un attore
importante nel mondo dell'integrazione dei sistemi di controllo dei processi e della gestione
della produzione. La ragione della nostra reputazione sta nel fatto di essere sempre stati, più di
ogni altra cosa, concentrati sul successo dei nostri clienti. Il nostro obbiettivo è fornire
soluzione e servizi per la gestione e l'automazione della produzione”.
Illustrazione 1: Autoware - Logo aziendale
Autoware è specializzata nella fornitura di soluzioni per la raccolta e la distribuzione dei dati di
produzione, sfruttando le più moderne tecnologie così da riempire il vuoto di comunicazione
che esiste tra shop floor e ERP.
Autoware è collaboratore di Wonderware, azienda americana leader mondiale nella produzione
di software atti alla gestione automatizzata delle attività industriali in tempo reale. I software
sviluppati in collaborazione dalle due aziende permettono la sincronizzazione della produzione
e delle attività industriali così da ottenere la velocità e la flessibilità necessarie per conseguire
un profitto costante.
Ad oggi Autoware è organizzata in tre business units che si occupano di aspetti diversi:
•
Industrial Automation
•
Manufacturing Execution Systems
•
Machine Vision Solutions
Scopo dello stage
Il presente stage ha avuto come obbiettivo lo sviluppo di un'applicazione iPhone che permette
la visualizzazione di allarmi provenienti da macchinari industriali, come: pressione elevata,
temperatura fuori norma, voltaggio inadatto, blocco del macchinario, etc. L'applicazione
presenta le seguenti funzioni: visualizza gli allarmi attivi e ne permette il filtraggio secondo
parametri configurabili; consente la visualizzazione di svariate statistiche; permette
l'impostazione dei parametri di connessione.
La configurazione presente lato server verrà descritta in dettaglio successivamente,
brevemente è così strutturata. Il monitoraggio degli impianti industriali è effettuato da oggetti
Alberto Baggio
Tesi – iWWAlarms
6
sviluppati con l'ambiente di sviluppo integrato, Archestra IDE. Questi sono eseguiti dal runtime
environment fornito con Archestra. I dati monitorati da questi vengono archiviati su di un
database centralizzato SQL Server.
Illustrazione 2: Configurazione lato Server
Le problematiche più rilevanti affrontate nel corso dello stage sono state:
•
la creazione del canale di comunicazione fra azienda e dispositivo;
•
la necessità di visualizzare allarmi in tempo reale, prima che questi vengano trasferiti al
database aziendale che ne tiene traccia;
•
il rilascio dei certificati SSL per usufruire dell'Apple Notification Service, indispensabili
per utilizzare il servizio di push;
•
l'allineamento fra la versione del software lato server e la versione dell'applicazione sul
client
Per quando riguarda il canale, fra server aziendale e dispositivo viene stabilita una connessione
socket persistente, e lo scambio d'informazione è effettuato utilizzando il protocollo Json-RPC.
Il problema di dover ricevere gli allarmi senza subire la latenza dovuta al tempo di
memorizzazione nel database, è stata risolta sviluppando un nuovo oggetto lato server che
effettua il monitoraggio dei macchinari e lavora simultaneamente all'oggetto che invia i dati al
database SQL Server. È stata adottata questa soluzione per avere una notifica degli allarmi
immediata, senza dovere attendere la loro comunicazione e memorizzazione nel server. Questa
scelta permette inoltre di alleggerire il carico di lavoro del server. Nel secondo capitolo verrà
descritta con più precisione la configurazione lato server presente, in particolare i diversi
strumenti che permettono la rilevazione e memorizzazione dei dati.
Il rilascio dei certificati, necessari per usufruire del servizio di push messo a disposizione da
Apple, al momento è ancora manuale. Il certificato permette al server di registrarsi/comunicare
con il servizio di push (APNs) messo a disposizione da Apple. Ogni server nel quale verrà
installato il pacchetto, necessiterà di un certificato differente. Al momento ogni cliente deve
registrarsi presso Apple e scaricare manualmente il certificato SSL per il proprio server. È
previsto lo sviluppo futuro di una procedura automatizzata
Vi è ancora da risolvere il problema dell'allineamento fra le versioni dell'applicazione lato
server e lato client; in particolare per poter usufruire a pieno delle funzionalità presenti, sarà
Alberto Baggio
Tesi – iWWAlarms
7
necessario che la versione del client sia sempre aggiornata all'ultima rilasciata. Se questa
risulta datata rispetto l'oggetto server con cui comunica, viene informato l'utente, utilizzatore
del dispositivo, della necessità di aggiornamento.
Prodotto ottenuto
L'applicazione ottenuta è in grado di visualizzare gli allarmi attivi, calcolare statistiche su questi
e permette la configurazione dei parametri di connessione. Non è completa ma è comunque già
fruibile; al momento non è stata ancora provata in un vero impianto industriale ma solamente
con il database e ambiente di prova presente in sede di sviluppo.
Non è ancora stata sviluppata completamente la sezione che visualizza dati statistici calcolati
sullo storico degli allarmi memorizzato nel server aziendale, differente da quella che visualizza
dati statistici sugli allarmi attivi. Anche se preventivata, questa sezione è ancora da sviluppare
per due motivi: la mancanza di tempo e la necessità di aggiungere funzionalità lato server atte
ad alleggerire la quantità di calcolo da effettuare nel client (in particolare il calcolo di dati
statistici su grosse quantità di dati).
Durante lo sviluppo dell'applicazione sono stati effettuati svariati test tesi a verificare il corretto
funzionamento dell'applicazione in casi limiti come: il sovraccarico del server, l'invio di
pacchetti vuoti o errati, la mancanza di connessione. Il testing finale e completo
dell'applicazione, anche se preventivato, deve ancora essere effettuato, per la mancanza di
tempo e perché l'applicazione non è completa.
L'applicazione è stata presentata nel mese di ottobre a Los Angeles in una fiera di settore dei
prodotti MES.
Organizzazione del documento
I capitoli successivi sono così strutturati: il capitolo seguente descrive gli strumenti utilizzati per
lo sviluppo. Capitolo 3 e 4 presentano l'analisi dei requisiti e definizione di prodotto. Infine
nell'ultimo capitolo sono presenti le conclusioni.
Alberto Baggio
Tesi – iWWAlarms
8
Strumenti utilizzati
Alberto Baggio
Tesi – iWWAlarms
9
Strumenti utilizzati
Per lo sviluppo dell'applicazione e stato utilizzato l'SDK (Software Development Kit) iPhone SDK.
È stato rilasciato il 6 marzo 2008 e permette lo sviluppo di applicazioni per iPhone e iPod touch,
a partire dalla 3.1 anche per iPad.
L'ambiente di sviluppo integrato (Integrated Development Envoiroment, IDE) fornito dall'SDK è
Xcode. Oltre questo sono stati utlizzati gli strumenti iPhone Simulator, Interface Builder e
Instrument tutti forniti nel kit. iPhone SDK richiede un Mac Intel con Mac OS X Leopard. Altri
sistemi operativi, inclusi Microsoft Windows (qualsiasi versione), Linux e vecchie versioni di Mac
OSX, non sono supportati.
Illustrazione 3: iPhone SDK
Ambiente di sviluppo
È stato utilizzato l'IDE (Integrated Development Envoiroment) Xcode , sviluppato da Apple Inc,
e disponibile solo per amibente Mac OS X. Questo è fornito gratuitamente con il sistema
operativo a partire da Mac OS X 10.3 Panther e scaricabile gratuitamente, previa registrazione,
dal sito: http://developer.apple.com/technologies/tools/xcode.html.
Dalla versione 3.1, Xcode e lo strumento per sviluppare le applicazioni native per iPhone, iPod
touch. Dalla versione 3.2 consente lo sviluppo anche per iPad.
Strumenti forniti con Xcode
•
Instrument: tool integrato in Xcode che permette il monitoraggio e l'analisi delle
prestazioni di un'applicazione eseguita su iPhone. In particolare è in grado di
visualizzare aspetti fondamentali quali: allocazione e rilascio della memoria, sequenza
degli eventi, attività della CPU, threads in esecuzione e risorse impiegate da questi,
traffico network e altro ancora.
•
Interface Builder: software che permette di disegnare interfacce grafiche per i
framework Cocoa e Carbon. Le interfacce vengono salvate in directory contenenti gli
oggetti grafici e le loro relazioni; il tutto è raggruppato in file XML o NeXT con estensione
.nib. Al lancio dell'applicazione i corrispondenti oggetti NIB vengono scompattati e
collegati al codice binario.
•
Iphone Simulator: tool che permette di emulare l'iPhone su pc Mac.
Alberto Baggio
Tesi – iWWAlarms
10
Cocoa
L'applicazione è stata sviluppata in Objective-C, linguaggio orientato agli oggetti con a base il
C. Per lo sviluppo in Objective-C si è utilizzato Cocoa, insieme di framework orientati agli
oggetti che permettono lo sviluppo di applicazioni eseguibili in MAC OS X e iPhone OS. Cocoa e
Objective-C risultano essere unico framework ed unico linguaggio utilizzabili nello sviluppo per
iPhone OS.
Molti potrebbero non concordare con questa visione chiusa e vincolante da parte di Apple. La
giustificazione data da Steve Jobs (CEO Apple) in risposta alla domanda di un utente, riguardo il
blocco dello sviluppo di applicazioni realizzate in Flash CS5 e poi esportate in Objective-c, è
stata la seguente:
“Apple ha creato una piattaforma di sviluppo senza precedenti, in grado di offrire agli
sviluppatori una certa immediatezza ed una semplicità assoluta nella costruzione del codice e
dell'interfaccia grafica dell'applicazione. Creare piattaforme alternative in grado di appoggiarsi
alla nostra non fa altro che confondere gli sviluppatori e sicuramente non fa bene a noi dato
che blocca i progressi e i possibili miglioramenti di tutto ciò che abbiamo creato”.
Vi è da precisare che sono presenti altri tool che permettono di programmare in linguaggi
diversi, come JavaScript, e poi tradurre il tutto in un progetto Xcode.
Chiara la politica di difendere il proprio mercato, difficile trovarsi pienamente d'accordo
considerando che l'unico mercato di applicazioni per iPhone risulta essere l'AppStore di cui
Apple ha il pieno controllo. In particolare un'applicazione per essere commercializzata
nell'AppStore deve essere approvata da Apple. Inoltre i ricavati ottenuti dalla vendita finiscono
per il 70% al creatore e per il 30% ad Apple che si occupa completamente della
commercializzazione.
Alberto Baggio
Tesi – iWWAlarms
11
Analisi
Alberto Baggio
Tesi – iWWAlarms
12
Scopo del documento
Il seguente capitolo illustra in modo chiaro e dettagliato i bisogni evidenziati dal proponente, la
ditta Autoware. Prima di esporre i requisiti emersi, verrà esposta brevemente la configurazione
nella quale si integrerà il prodotto.
Nella stesura ed elaborazione dell'analisi si è fatto riferimento alla specifica v 1.0 fornita
dall'Ing. Andrea Piccolo.
Scopo del prodotto
iAlarms è un'applicazione iPhone in grado di visualizzare in tempo reale allarmi provenienti da
macchinari industriali nei quali sia installato e configurato l'ambiente Archestra di WonderWare.
Tipologie di allarmi visualizzati potrebbero essere: bloccaggio del macchinario, temperatura
eccessiva, sbalzi di tensione, pressione troppo elevata, etc.
Descrizione generale – configurazione
Il monitoraggio degli impianti industriali è effettuato da oggetti sviluppati con l'ambiente di
sviluppo integrato: Archestra IDE. Questi vengono eseguiti dal runtime environment fornito con
Archestra. I dati monitorati sono archiviati su di un database centralizzato SQL Server. Nei
dispositivi industriali oltre l'oggetto sviluppato con Archestra, è presente il software inTouch che
permette la visualizzazione dei dati in tempo reale. InTouch è in grado di interfacciarsi sia con
il database che all'oggetto in esecuzione.
Illustrazione 4: Configurazione
Alberto Baggio
Tesi – iWWAlarms
13
Quando in un macchinario vengono superati dei valori limite l'oggetto rivela lo stato di allarme
e registra questo nel server ed in InTouch.
Per il funzionamento dell'applicazione iPhone è stato sviluppato un ulteriore oggetto Archestra
che lavora in parallelo a quello già presente. Questo ogni qual volta viene registrato un allarme,
notifica l'evento all'applicazione iPhone. Il nuovo oggetto ha un piccolo database proprio nel
quale salva gli allarmi attivi; mentre lo storico degli allarmi è nel database centralizzato.
Funzioni del prodotto
L'applicazione presenta le seguenti principali caratteristiche funzionali:
•
visualizza gli allarmi attivi attraverso un sistema di paginazione
•
permette la visione di statistiche calcolate sullo storico degli allarmi
•
è in grado di fornire informazioni dettagliate sugli allarmi attivi
•
consente il filtraggio degli allarmi secondo svariati parametri
•
visualizza statistiche e grafici riguardanti gli allarmi attivi
•
permette l'impostazione dei parametri di connessione all'oggetto server (indirizzo IP,
porta, user, password).
Vincoli generali
Il prodotto è soggetto ai seguenti vincoli di ordine generale
•
funzionamento su iPhone OS a partire dal 3.1
Dipendenze
Per il corretto funzionamento è necessario che la versione dell'applicazione e del software lato
server siano compatibili fra loro.
Si assume che l'iPhone nel quale l'applicazione verrà eseguita abbia la funzione di push attivata
e disponga di una connessione a internet per effettuare lo scaricamento dei dati
Casi d'uso
Vengono riportati in questa sezione i casi d'uso, in modo grafico e in modo narrativo. L'intento
è evidenziare le funzionalità principali a base della fase di analisi.
Use Case UC0 – Connessione/autenticazione
Illustrazione 5: UC0 - Connessione/autenticazione
Caso d'uso: connessione al server remoto previa autenticazione
Sommario: effettua la connessione al server remoto, utilizzando i parametri di connessione
salvati nel file options.plist e configurabili dalla sezione apposita dell'applicazione.
Alberto Baggio
Tesi – iWWAlarms
14
Attore: l'utente
Precondizioni: per poter effettuare l'autenticazione l'utente deve:
•
Aver impostata indirizzo IP e porta corretti di una macchina dove sia funzionante
l'oggetto server.
•
Avere inserito le credenziali corrette per l'autenticazione.
Post-condizione:
dall'applicazione.
è
possibile
usufruire
delle
funzionalità
messe
a
disposizione
Use Case UC1 – Post autenticazione
Illustrazione 6: UC1 - post autenticazione
Caso d'uso: funzionalità disponibili dopo aver effettuato la connessione ed autenticazione al
server.
Sommario: sarà possibile:
•
Impostare i parametri di connessione (disponibile anche prima di essersi autenticati)
•
Visionare gli allarmi attivi
•
Visionare statistiche riguardanti gli allarmi attivi
•
Visionare statistiche riguardanti lo storico degli allarmi
•
Filtrare gli allarmi secondo parametri decidibili
•
Gestire il push degli allarmi
Attore: l'utente
Precondizioni: per poter usufruire di queste funzionalità l'utente deve essere connesso e
autenticato al server remoto. L'impostazione dei parametri di connessione non necessità la
connessione.
Alberto Baggio
Tesi – iWWAlarms
15
Post-condizioni: è possibile utilizzare ulteriormente l'applicazione.
Use Case UC3 – Impostazione parametri connessione
Illustrazione 7: UC3 - Impostazione parametri connessione
Caso d'uso: impostazione dei parametri di connessione
Sommario: possibilità di impostare i seguenti parametri di connessione:
•
indirizzo IP server
•
porta
•
user e password di autenticazione
Attore: l'utente
Precondizione: nessuna
Post-condizione: è possibile utilizzare ulteriormente l'applicazione
Use Case UC4 – Visione allarmi attivi
Illustrazione 8: UC4 - Visione allarmi attivi
Caso d'uso: visione allarmi attivi
Sommario: sistema di paginazione che visualizzi gli allarmi attivi evidenziando descrizione,
area e data per ogni allarme. Deve essere inoltre possibile visualizzare in dettaglio ogni singolo
allarme.
Attore: l'utente
Alberto Baggio
Tesi – iWWAlarms
16
Precondizione: per poter usufruire di queste funzionalità l'utente deve essere connesso e
autenticato al server remoto.
Post-condizione: è possibile utilizzare ulteriormente l'applicazione
Use Case UC 4.1 – Dettaglio allarme
Illustrazione 9: UC4.1 – Dettaglio allarme
Caso d'uso: visione dettaglio allarmi
Sommario: visione dettagliata informazioni riguardanti:
•
Descrizione allarme
•
Area provenienza allarme
•
Data lancio allarme
•
Provider provenienza allarme
•
Nome completo allarme
•
Priorità allarme
•
Valore allarme
Attore: l'utente
Precondizione: per poter usufruire di queste funzionalità l'utente deve essere connesso e
autenticato al server remoto.
Post-condizione: è possibile utilizzare ulteriormente l'applicazione
Alberto Baggio
Tesi – iWWAlarms
17
Use Case UC6 – Statistiche allarmi attivi
Illustrazione 10: UC6 Statistiche allarmi attivi
Caso d'uso: visione statistiche allarmi attivi
Sommario: statistiche riguardanti:
•
Occorrenze allarmi per area, visualizzate con tre differenti grafici (Radar-plot, bar-graph,
pie-plot)
•
Occorrenze allarmi per descrizione, visualizzate con tre differenti grafici (Radar-plot, bargraph, pie-plot)
•
Distribuzione allarmi ultima settimana
•
Distribuzione allarmi ultime sette ore
Attore: l'utente
Precondizione: per poter usufruire di queste funzionalità l'utente deve essere connesso e
autenticato al server remoto.
Post-condizione: è possibile utilizzare ulteriormente l'applicazione
Use Case UC7 – Filtraggio allarmi
Caso d'uso: filtraggio allarmi attivi
Sommario: possibilità di filtrare gli allarmi attivi secondo i seguenti parametri:
•
Area provenienza
•
Descrizione allarme
Alberto Baggio
Tesi – iWWAlarms
18
•
Priorità allarme
•
Ora lancio allarme
Attore: l'utente
Precondizione: per poter usufruire di queste funzionalità l'utente deve essere connesso e
autenticato al server remoto.
Post-condizione: è possibile utilizzare ulteriormente l'applicazione
Illustrazione 11: UC7 - Filtro allarmi
Lista dei requisiti
Di seguito verranno elencati i requisiti emersi suddivisi per categoria (funzionali, di qualità,
d'ambiente). All'interno di ogni categoria verranno classificati per importanza (obbligatori,
desiderabili).
Requisiti funzionali
Requisiti funzionali obbligatori (RFO):
•
RFO1: gestione del push degli allarmi dall'oggetto server al dispositivo
•
RF02: visione degli allarmi attivi attraverso un sistema di paginazione che evidenzi:
•
RFO2.1: data e ora attivazione allarme
•
RFO2.2: nome (Description) allarme
•
RFO2.3: area sorgente allarme
•
RFO3: possibilità di visualizzare informazioni statistiche calcolare sullo storico degli
allarmi
•
RFO4: possibilità di effettuare il filtraggio degli allarmi secondo i seguenti parametri:
•
RFO4.1: descrizione allarme
Alberto Baggio
Tesi – iWWAlarms
19
•
•
•
RFO4.2: area provenienza allarme
•
RFO4.3: priorità allarme
•
RFO4.4: data e ora attivazione allarme
RFO5: visualizzazione dettagliata del singolo allarme con informazioni riguardo:
•
RFO5.1: data e ora attivazione allarme
•
RFO5.2: provider di provenienza dell'allarme
•
RFO5.3: area di provenienza dell'allarme
•
RFO5.4: tipologia allarme
•
RFO5.5: descrizione allarme
•
RFO5.6: indicazione numerica priorità
•
RFO5.7: valore allarme
•
RFO5.8: eventuale commento dell'utente che ha effettuato il riconoscimento
dell'allarme
•
RFO5.9: nome completo allarme
RFO6: visualizzazione statistiche riguardanti gli allarmi attivi:
•
•
•
•
RF06.1: distribuzione occorrenze allarmi per area visualizzata con tre differenti
grafici:
•
RFO6.1.1: pie-chart
•
RFO6.1.2: bar graph
•
RFO6.1.3: radar-plot
RF06.2: distribuzione occorrenze allarmi per descrizione visualizzata con tre
differenti grafici:
•
RFO6.2.1: pie-chart
•
RFO6.2.2: bar graph
•
RFO6.2.3: radar-plot
•
RFO6.3: distribuzione occorrenze allarmi ultima settimana
•
RFO6.4: distribuzione occorrenze allarmi ultime sette ore
RFO7: Impostazione parametri connessione:
•
RFO7.1: indirizzo IP oggetto server
•
RFO7.2: porta a cui connettersi
•
RFO7.3: nome utente per la login al server
•
RFO7.4: password per la login al server
RFO8: possibilità di salvare i filtri personalizzati
Requisiti funzionali desiderabili (RFD):
•
RFD1: gaussiana tempi riconoscimento degli allarmi salvati nello storico
Alberto Baggio
Tesi – iWWAlarms
20
Requisiti di qualità
Requisiti di qualità obbligatori:
•
RQO1: è garantito il funzionamento su iPhone iOS 3.1 o superiore
•
RQO2: il codice sorgente è corredato di documentazione
•
RQO3: saranno effettuate fasi di test corredate di documentazione
Le tabelle descriventi il tracciamento dei requisiti sono presenti in appendice.
Alberto Baggio
Tesi – iWWAlarms
21
Specifica
Alberto Baggio
Tesi – iWWAlarms
22
In questa sezione vera data una visione ad altro livello delle scelte progettuali che sono state
fatte nello sviluppo del prodotto. Prima di fare questo viene descritto il funzionamento del
servizio di push nel dispositivo iPhone (APNs, Apple Push Notification Service).
Apple Notification Service, APNs
APNs è un servizio messo a disposizione da Apple in grado di propagare informazione ad
iPhone, iPod, iPod Touch ed iPad. Questi dispositivi si registrano al servizio, stabilendo una
connessione IP protetta e ricevono le notifiche. Se una notifica arriva mentre l'applicazione non
è in esecuzione, il dispositivo avverte l'utente dei dati in attesa.
L'oggetto server aziendale, con cui l'applicazione scambia dati, invia le notifiche all'APNs,
questo effettua il push ai dispositivi interessati. Fra oggetto server ed APNs viene stabilita una
connessione socket persistente.
Connessione e comunicazione
Una notifica è un breve messaggio costituito da due parti: il token del dispositivo e
l'informazione (payload).
Il token è un codice che permette all'APNs di localizzare il dispositivo nel quale è installata
l'applicazione. Viene utilizzato anche per autenticare l'invio della notifica (solamente i provider
in sua conoscenza sono in grado inviare notifiche al dispositivo proprietario).
Illustrazione 12: Schema comunicazione APNs
La comunicazione avviene nel modo seguente:
•
Server e dispositivo stabiliscono una connessione con il servizio di notifica
•
Il dispositivo comunica al server il proprio token associato all'applicazione
•
L'oggetto server crea un pacchetto di notifica che include il token del dispositivo e
l'informazione
•
Questo pacchetto viene inviato al servizio APNs, che effettua il push al dispositivo con il
token comunicato. Da notare che l'iPhone OS del dispositivo mantiene una connessione
persistente con l'Apple Notification Service.
•
L'iPhone OS del dispositivo decodifica la notifica e determina se è presente
un'applicazione destinataria della notifica (potrebbe essere stata disinstallata nel
frattempo).
È presente un servizio di feedback che notifica al server quando l'invio di una notifica non va a
buon fine, in particolare è in grado di informare dell'eventualità che nel dispositivo sia stata
disinstalla l'applicazione.
JSON
JSON è un semplice protocollo per lo scambio dei dati basato su due strutture differenti: oggetti
ed array.
Un oggetto è una serie ordinata di coppie nome-valore (un dizionario). Inizia con '{' e finisce
Alberto Baggio
Tesi – iWWAlarms
23
con '}'. Ogni nome è seguito da ':' ed il valore associato. Le coppie nome-valore sono separate
da virgole.
Un array è una raccolta ordinata di valori, separati da virgole. Comincia con '[' e finisce con ']'.
Un valore può essere una stringa, un numero, un booleano o un oggetto o array annidato. Il
formalismo ed i caratteri di escape per le stringhe sono i medesimi del C.
Illustrazione 13: Oggetto JSON
Illustrazione 14: Array JSON
Formato del messaggio di notifica
Il pacchetto che costituisce la notifica push è un oggetto dizionario JSON. Le coppie del
dizionario descrivono: il messaggio di allerta, il numero da visualizzare nel badge
dell'applicazione (il pallino rosse che compare sopra l'icona) ed il suono di allerta da associarvi.
Il messaggio di allerta può essere una stringa o un dizionario contenente più elementi. Nel caso
in cui sia semplicemente una stringa, il testo inviato viene visualizzato in una finestra di allerta
contenente due pulsanti: 'annulla' o 'vedi'. Alla pressione del tasto vedi viene avviata
l'applicazione e passata la notifica.
Illustrazione 15: Formato messaggio di notifica
Se il messaggio è un dizionario, contiene diversi elementi: body, action-loc-key e loc-args. Il
campo body specifica il messaggio di allarme da visualizzare. Action-loc-key specifica il testo
da visualizzare nel pulsante 'vedi' della finestra di allarme; se impostato a null, apparirà un
unico tasto con impresso 'OK', la cui pressione comporta la chiusura della finestra senza il
Alberto Baggio
Tesi – iWWAlarms
24
lancio dell'applicazione. Loc-Key permette di impostare una stringa da visualizzare di default
all'occorrenza di un certo allarme. Loc-args permette di specificare una lista di argomenti da
associare a Loc-Key prima descritto.
La stringa binaria inviata è formata come in figura. Il primo byte identifica il comando; due byte
indicano la lunghezza del token; n byte rappresentano il token; altri due byte indicano la
lunghezza del carico utile; in coda è presente il carico utile. La lunghezza massima del carico
utile deve essere di 256 byte.
Illustrazione 16: Token Trust
Sicurezza
Per garantire la sicurezza vi sono due meccanismi che devono essere implementati: Connection
Trust e Token Trust.
Connection Trust consiste nell'utilizzo di un protocollo TSL di comunicazione
Token Trust serve per avere la sicurezza che il messaggio inviato sia ricevuto solamente dalla
propria applicazione e non sia intercettato. Per questo è il dispositivo che richiede un token, da
associare all'applicazione, all'APNs e dopo averlo ricevuto lo comunica all'oggetto server
aziendale, che lo utilizzerà nel push.
Scelte progettuali
La seguente sezione descrive le scelte progettuali che sono state adottate nella realizzazione
dell'applicazione.
Ad altissimo livello sono individuabili tre moduli separati e cooperanti fra loro:
•
un modulo che si occupa della connessione con il server remoto e dello scambio di dati
con questo;
•
un modulo che si occupa del salvataggio dei dati;
•
un modulo che si occupa del controllo e della visualizzazione.
Alberto Baggio
Tesi – iWWAlarms
25
Illustrazione 17: Visione ad alto livello - moduli
Modulo connessione
Questo modulo è stato importato dal progetto iCem ,applicazione sviluppata da Autoware.
Il modulo implementa le seguenti funzionalità:
•
stabilisce una connessione socket con il server, prelevando le informazioni riguardo
indirizzo IP, porta, utente e password dal file di configurazione option.plist, modificabile
dall'applicazione;
•
permette la disconnessione dal server;
•
permette il trasferimento di dati dal server, utilizzando il protocollo JSON-RPC (codificadecodifica i pacchetti);
•
registra il dispositivo all'APNs di Apple;
•
implementa la coda nella quale si registrano gli oggetti in attesa di Informazione dal
server;
•
definisce le varie tipologie di errore di connessione e le gestisce;
•
permette l'hashing del token del dispositivo prima dell'invio
Tracciamento
RFO1
RFO3
RFO7
Modulo Data Store
Il seguente modulo permette la memorizzazione locale degli allarmi scaricati dal server ed il
salvataggio dei filtri personalizzati creati dall'utente utilizzatore dell'applicazione.
Alberto Baggio
Tesi – iWWAlarms
26
Implementa le seguenti funzionalità:
•
salvataggio e lettura allarmi attivi, scaricati dall'oggetto remoto;
•
permette l'interrogazione e la modifica del database nel quale sono salvati i filtri
personalizzati creati dall'utente;
•
permette il salvataggio di filtri personalizzati;
•
fornisce accesso ad una lista di 100 colori utilizzati per disegnare i grafici
Tracciamento
RFO2
RFO4
RFO8
Modulo Controllo-Visualizzazione
Questo modulo implementa le componenti che costituiscono l'interfaccia dell'applicazione, e le
componenti che ne implementano la logica di controllo.
Implementa visualizzazione e controllo delle seguenti funzionalità:
•
visualizzazione allarmi attivi;
•
filtraggio allarmi attivi attraverso parametri decidibili;
•
salvataggio e applicazione filtri personalizzati;
•
visualizzazione di statistiche e grafici riguardanti gli allarmi;
•
impostazione dei parametri di connessione.
Tracciamento
RF02
RFO3
RFO4
RFO5
RFO6
RFO7
Alberto Baggio
Tesi – iWWAlarms
27
Definizione di prodotto
Alberto Baggio
Tesi – iWWAlarms
28
Illustrazione 18: Diagramma Classi - prima parte
Alberto Baggio
Tesi – iWWAlarms
29
Pattern
Illustrazione 19: Diagramma Classi - seconda parte
Nella progettazione del software è stato utilizzato il pattern MVC, nell'implementazione sono
stati adottati i pattern Observer e Singleton.
•
L'utilizzo del pattern Model View Controller è vincolato dalla struttura stessa
dell'ambiente di sviluppo, tool come Interface Builder impongono l'aderenza a questo
modello. Data la suddivisione dei componenti in conformità a MVC, verranno descritti
seguendo questa catalogazione.
•
Il pattern Observer è utilizzato implicitamente dal sistema di notifica fornito dalla classe
NSNotificationCenter (visibile in figura). Ricevuta una notifica NSNotificationCenter la
propaga a tutti gli oggetti registrati su questa (Observer Object), in questo modo
produce un aggiornamento dello stato di tali oggetti.
Illustrazione 20: NSNotificationCenter
Alberto Baggio
Tesi – iWWAlarms
30
•
E' stato adottato il pattern Singleton in modo da avere un'unica istanza per le classi che
lo necessitano. Le classi che si è scelto rendere Singleton sono: StoreAllarmiAttivi,
DownloadAllarmiAttivi, ServerConnection, DataBase e Filters.
L'invocazione [nomeClasse condivisa] ritorna il riferimento all'unica istanza della classe.
Illustrazione 21: Diagramma di sequenza - scaricamento allarmi
Alberto Baggio
Tesi – iWWAlarms
31
Model
DownloadAllarmiAttivi
DownloadAllarmiAttivi, classe Singleton che estende NSObject. Si occupa di effettuare lo
scaricamento ed il salvataggio (utilizzando StoreAllarmiAttivi) degli allarmi attivi.
Utilizza la classe classe Singleton ServerConnection, per comunicare con il Server e scaricare i
dati. ServerConnection attraverso le classi Json e Json-RPC invoca nel server remoto il metodo
getActiveAlarm. Dopo aver ricevuto il pacchetto di dati in risposta, ServerConnection effettua il
parsing e successivamente passa i dati al metodo delegato alla loro gestione, in questo caso (void) storeAllarmiAttivi della classe stessa.
Il pacchetto ritornato dal server in risposta alla richiesta di scaricamento degli allarmi attivi è
così strutturato:
Chiave
Informazione
acessName
Nome dell'oggetto che ha lanciato l'errore nel server remoto
ackComment
Se presente, commento inserito dall'operatore
effettuato il riconoscimento dell'allarme
ackOperatorName
Se presente, nome dell'operatore
riconoscimento dell'allarme
alarmClass
Tipologia di allarme
cookie
Indice incrementato ad ogni transizione di stato dell'allarme
description
Descrizione dell'allarme
dstBias
che
ha
che
effettuato
ha
il
–
fileTime
Ora in cui si è attivato l'allarme
GroupName
Area di provenienza
guid
Codice univoco che identifica l'allarme
limit
Soglia oltre la quale viene attivato l'allarme
localTimeBias
Fuso orario dell'impianto industriale nel quale è emerso
l'allarme
nodeName
Nome del nodo da cui è partito l'allarme
operatorName
Nome operatore delegato alla gestione/manutenzione
dell'impianto/macchinario dal quale è partito l'allarme
priority
Priorità dell'allarme
quality
-
selected
-
state
Stato dell'allarme (riconosciuto/non riconosciuto)
transition
Stato precedente
type
Livello di allerta dell'allarme, classificato secondo la scala:
Hi, HiHi, HiHiHi, Lo, LoLo, LoLoLo
user1
-
user2
-
Alberto Baggio
Tesi – iWWAlarms
32
Chiave
Informazione
user3
-
value
Indica il fatto che l'allarme è attivo (sempre true)
Campi dati:
•
NSDate* oraScaricamento: ora dell'ultimo scaricamento degli allarmi
Metodi:
•
+(DownloadAllarmiAttivi*) condivisa: ritorna il riferimento all'unica istanza della classe.
•
-(void) downloadAllarmi: effettua la richiesta di scaricamento degli allarmi al server
remoto. Associa il metodo -(void)storeAllarmi, della classe stessa, come delegato a
ricevere il pacchetto di dati inviato in risposta.
•
-(void) storeAllarmi: memorizza i dati ricevuti dal server remoto utilizzando la classe
Singleton StoreAllarmiAttivi.
•
-(NSDate*) getOraScaricamento: ritorna l'ora dell'ultimo scaricamento degli allarmi.
In modo più dettagliato i passaggi (visibili nel diagramma di sequenza soprastante) che
conducono allo scaricamento ed al salvataggio dei segnali sono i seguenti:
1. DownloadAllarmiAttivi invoca getActiveAlarms del Singlet ServerConnection
2. ServerConnection crea la richiesta conforme
createRequest(getActiveAlarms) di Json-RPC
al
protocollo
Json
invocando
3. DownloadAllarmiAttivi registra il metodo storeAllarmi, della classe stessa, come
responder associato alla richiesta. RequestResponder è la classe che gestisce la
selezione dei metodi in risposta all'arrivo dei pacchetti
4. ServerConnection
AsyncSocket.
invoca
il
metodo
writeData(richiesta)
della
classe
Singleton
5. WriteData invoca in remoto, sul canale socket, il metodo getActiveAlarms dell'oggetto
Server remoto
6. Ricevuto il pacchetto di risposta, Json-RPC ne effettua il parsing e lo invia a
RequestResponder che lo inoltra al metodo delegato alla sua gestione, nella fattispecie
storeAllarmi di DownloadAllaAttivi
7. StoreAllarmi memorizza i dati utilizzando la classe StoreAllarmiAttivi
StoreAllarmiAttivi
StoreAllarmiAttivi, classe Singleton che estende NSObject. Permette la memorizzazione degli
allarmi attivi. I dati relativi gli allarmi sono salvati in singoli array, contenuti all'interno del
vettore attributiAllarmi.
Tutte le classi che necessitano di informazioni sugli allarmi (per la visualizzazione o
l'elaborazione) utilizzano l'unica istanza di questa classe. DownloadAllarmiAttivi, dopo aver
scaricato gli allarmi, utilizza StoreAllarmiAttivi per memorizzare i dati.
Per completezza è presente una tabella che descrive l'ordinamento dei dati all'interno dei
Alberto Baggio
Tesi – iWWAlarms
33
vettori.
Informazione
Posizione
AccesName
0
attribute_id
1
Description
2
Priority
3
Value
4
GroupName (Area)
5
CheckValue (Soglia)
6
Provider
7
MilliSec (sempre 0)
8
fileTime (alarm Date)
9
Type
10
SubType (sempre 0)
11
guid
12
Campi Dati:
•
NSMutableArray* attributiAllarmi: memorizza i vettori contenenti le informazioni relative
gli allarmi
Metodi:
•
+(StoreAllarmiAttivi*) condivisa: ritorna il riferimento all'unica istanziazione della classe
•
-(void) svuotaArray: svuota l'array degli allarmi. E'invocato ogni volta che vengono
scaricati gli allarmi aggiornati, prima del salvataggio di questi
•
-(void) addArrayAttributi:(NSArray*)attributi: aggiunge al vettore degli allarmi l'allarme
passato
•
-(NSArray*) getArrayAttributi:(int) indiceAllarme:
informazioni relative l'allarme richiesto
•
-(NSDate*) getDateByAlarm:(int) indiceAllarme: ritorna l'ora per l'allarme richiesto come
oggetto [NSDate]
•
-(NSString*) getNomeByAlarm:(int) indiceAllarme: ritorna la descrizione per l'allarme
richiesto
•
-(NSString*) getAreaByAlarm:(int) indiceAllarme: ritorna il nome dell'area di provenienze
dell'allarme richiesto
•
-(NSString*) getPriorityByAlarm:(int) indiceAllarme: ritorna la priorità per l'allarme
richiesto
•
-(NSString*) getMillisecByAllarm:(int) indiceAllarme: ritorna il tempo di ack per l'allarme
ritorna
l'array
contenente
le
Alberto Baggio
Tesi – iWWAlarms
34
richiesto
•
-(NSString*) getValueByAlarm:(int) indiceAllarme: ritorna il valore dell'allarme richisto
•
-(NSString*) getTimeByAlarm:(int) indiceAllarme: ritorna l'ora per l'allarme richiesto in
formato stringa [giorno/mese/anno ore:minuti:secondi +fusoOrario]
•
-(NSString*) getProviderByAlarm:(int) indiceAllarme: ritorna il Provider dell'allarme
richiesto
•
-(NSString*) getCheckValueByAlarm:(int) indiceAllarme: ritorna il valore di soglia oltre il
quale si attiva l'allarme
•
-(NSString*) getFullNameByAlarm:(int) indiceAllarme: ritorna il nome intero dell'allarme
che lo identifica in modo univoco all'interno dello stabilimento
•
-(int) getNumeroAllarmi: ritorna il numero totale di allarmi attivi presenti
DataBase
DataBase, classe Singleton che estende NSObject. Attraverso il wrapper (sqllite3/Objective-C)
FmDb permette l'interrogazione e la modifica del database filtri.db, contenente i filtri
personalizzati dell'utente utilizzatore dell'applicazione.
Il database filtri.db è cosi strutturato:
Illustrazione 22: Database filtri.db
Campi dati:
•
FMDatabase* db: riferimento ad un oggetto del wrapper FmDb che permette
l'interfacciamento con il database
•
NSString* filterToDisplay: filtro selezionato
Metodi:
•
-(void) creazioneDatabase: apre il database filtri.db
•
-(FMResultSet*) queryDo:(NSString*) textQuery: effettua la query passata e ritorna il
risultato come un oggeto di tipo FMResultSet* (classe definita nel wrapper FmDb)
•
-(void) deleteDo:(NSString*) textQuery: effettua query che modificano lo stato del
Alberto Baggio
Tesi – iWWAlarms
35
database.
•
-(void) setDisplayFilter:(NSString*)filtro: imposta il nome del filtro che selezionato al
momento
•
-(NSString*) getDisplayFilter: ritorna il nome del filtro selezionato
•
-(void) open: apre il database
•
-(void) close: chiuede il database
RandomColor
RandomColor, estende NSObject. Rappresenta un array di 50 colori, utilizzati per disegnare i
grafici delle statistiche sugli allarmi. Presenta un unico metodo statico, +
(UIColor*)randomColor:(int)numeroAllarme, che ritorna un colore dato la sua posizione.
Filters
Filters, singleton che estende NSObject. Effettua il filtraggio degli allarmi attraverso i filtri
salvati nel database filtri.db o attraverso filtri i cui parametri sono stati impostati al momento.
Dopo aver letto i dati memorizzati in StoreAllarmiAttivi, ne effettua il filtraggio e memorizza i
dati su di un array temporaneo. Filters permette di catalogare gli allarmi in base all'area, alla
descrizione, alla priorità e all'ora.
Campi Dati:
•
int minPriority: rappresenta la priorità minima attualmente impostata per il filtraggio
•
int maxPriority: rappresenta la priorità massima attualmente impostata per il filtraggio
•
NSDate* minDate: rappresenta l'ora minima attualmente impostata per il filtraggio
•
NSDate* maxDate: rappresenta l'ora massima attualmente imposta per il filtraggio
•
NSMutableArray* afterFilter: array dinamico che contiene temporaneamente gli allarmi
che hanno superato i parametri impostati.
Metodi:
•
-(void) makeFiltering: (NSArray*)desc aree:(NSArray*)ar minPrio: (int)prioMin maxPrio:
(int)prioMax: salva nell'array afterFilter gli allarmi che soddisfano i parametri passati.
Desc, contiene i nome delle descrizioni, ar i nomi delle aree. MinPrio e maxPrio sono
rispettivamente la priorità massima e la priorità minima per le quali filtrare.
•
-(NSArray*) getAfterFilter: ritorna l'array contenente gli allarmi che soddisfano i
parametri impostati
•
-(NSMutableArray*) getElencoDescrizioni: ritorna un vettore contenente i valori di tutte
le descrizioni presenti fra gli allarmi attivi
•
-(NSMutableArray*) getElencoAree: ritorna un vettore contenente i valori di tutte le aree
presenti fra gli allarmi attivi.
Alberto Baggio
Tesi – iWWAlarms
36
View
Classi che disegno i grafici:
Le classi PieChart, Radar, BarGraph e Distribuition estendono UIView e permettono il disegno
rispettivamente dei grafici a torta, dei radar plot, dei grafici a barre e delle distribuzioni di
occorrenze degli allarmi.
Tutte definiscono i metodi:
•
-(void)drawRect:(CGRect)rect: disegna i grafici, utilizzando le funzioni definiti in
CoreGraphics, libreria di Cocoa.
•
-(void) touchesBegan:(NSSet*)touches withEvent:(UIEvent)event: identifica la porzione
di grafico. Se è un PieChart sposta all'esterno la fetta selezionata, se è un bar-plot
evidenzia la porzione selezionata, se è un radar-plot ruota il grafico affinché l'area
selezionata sia centrata sulla lancetta di identificazione.
Fatto questo, invoca il metodo della superView (PieTouch) delegato alla gestione del
tocco
Per identificare la porzione di grafico selezionata viene calcolato l'angolo formato fra la semiretta, limitata dal punto premuto e il centro del grafico, e la semi-retta limitata dal centro del
grafico e il punto (0,0).
Tutte le classi che ereditano da queste si limitano a disegnare il grafico a torta, a barre, radar o
distribuzioni di un particolare dato statistico.
Illustrazione 23: Area
selezionata
I grafici a torta e i grafici a barre danno una falsa illusione di tridimensionalità attraverso uno
schiacciamento dell'immagine; il rapporto ascisse/ordinate è di due a uno.
Alberto Baggio
Tesi – iWWAlarms
37
Gestori touch utente
I pie-chart, radar-plot
e bar-graph al tocco dell'utente visualizzano i dati relativi
all'area/descrizione selezionata. L'evento sollevato quando avviene il tocco è gestito dalla
classe PieTouch.
PieTouch che estende UIView, definisce il metodo:
•
-(void) touchesBegan:(NSSet*)touches withEvent:(UIEvent)event: identifica la porzione
di grafico selezionata dall'utente e ne visualizza le informazioni.
I restanti oggetti che costituiscono l'interfaccia grafica sono stati creati con l'interface Builder;
questi non verrano descritti. Ogni oggetto grafico è associato ad un corrispettivo controller.
Nell'immagine sottostante è visibile com'è strutturato uno degli oggetti grafici che permettono
la visualizzazione dei grafici.
Illustrazione 24: Grafici
Alberto Baggio
Tesi – iWWAlarms
38
Controller
Nella figura sottostante è visibile come è organizzata la navigazione e di conseguenza i
controller delle interfacce grafiche all'interno dell'applicazione.
All'avvio viene impostato come controller radice un oggetto rootController. L'oggetto grafico di
rootController presenta una scrollView contenente quattro pagine distribuite orizzontalmente;
ognuna di questa rappresenta una sezione differente ed ha associato un controller proprio.
Ogni sezione è accoppiata ad un'icona presente nella barra inferiore.
Nella sezione riguardante le statistiche sono visualizzabili i grafici, ognuno di questi è associato
Illustrazione 25: Gerarchia viste
ad un controller personalizzato.
Verrano documentate solamente le classi controller ritenute interessanti.
iAlarmsAppDelegate
iAlarmsAppDelegate è il delegato dell'applicazione, estende NSObject ed implementa
l'interfaccia UIApplicationDelegate.
Ridefinisce i seguenti metodi dell'interfaccia:
•
-(BOOL)application:(UIApplication*)application
didFinishLaunchingWith
Options:
(NSDictionary*) launchOptions: metodo invocato al lancio dell'applicazione. Effettua la
Alberto Baggio
Tesi – iWWAlarms
39
seguente sequenza di operazioni:
•
Alloca il rootController ed imposta la vista a questo associata come
dell'applicazione.
main View
•
Alloca la Singleton ServerConnection e procede alla connessione con il server
•
Se la connessione va a buon termine effettua lo scaricamento degli allarmi (questo
produce l'allocazione delle Singleton DownloadAllarmiAttivi e StoreAllarmiAttivi)
•
Infine procede alla visualizzazione.
RootController
RootController, che estente UIViewController, è il controller della schermata principale dell'app.
L'oggetto grafico accoppiato è RootController.xib, questo presenta una ScrolView e una serie di
icone oguna accoppiata ad una delle quattro sezioni presenti (allarmi attivi, filtri, statistiche,
settings). La scrollView contiene le quattro MainView dei quattro controller delle sezioni.
RootController definisce il delegato della ScrollView e ridefinisce il metodo -(void)ViewDidLoad
ereditato da UIViewController.
Metodi:
•
-(void)ViewDidLoad: inizializza i controller delle quattro sezioni e inserisci all'interno
della ScrollView le viste associate a questi controller.
•
-(IBAction) select:(id) sender: azione lanciato alla pressione di una delle icone, sposta
la scrollView nella vista relativa alla sezione selezionata
•
-(void)scrollViewDidEndDeclerating:(UIScrolView*)sender: invocato quando l'utente
scorre la ScrollView, effettua il traslamento di questa in modo discreto e non continuo,
in modo tale la visualizzazione passi da una sezione all'altra.
Page
Estende UIViewController. E' il controller della sezione che visualizza gli allarmi attivi. Presenta
un'unica ScrollView verticale all'interno della quale vengono visualizzati in pagine da 4 gli
allarmi.
Metodi:
•
-(void)viewDidLoad: inizializza la vista e registra l'oggetto nella lista che notifica
l'avvenuto scaricamento degli allarmi, associando come metodo delegato alla risposta (void)ricevutiAllarmi della classe stessa
•
-(void)ricevutiAllarmi: invocato in seguito alla notifica di scaricamento dei nuovi allarmi.
Alloca ed inserisce nella scrollView le pagine destinate alla visualizzazione degli allarmi
(oggetti di tipo ContPage). Il numero di pagine visualizzate è dato dal numero totale
degli allarmi diviso quattro ed arrotondato per eccesso. Ad ogni inserimento di una
pagina viene aggiornata la progressBar, eseguendo il metodo -(void)modifica in
background. Ad ogni nuovo scaricamento la ScrollView viene svuotata e riempita
nuovamente.
•
-(void)visualizzaDettaglio: visualizza il dettaglio del singolo allarme selezionato; fa
questo, allocando e visualizzando un oggetto di tipo DettaglioAllarme.
•
-(IBAction)aggiorna:(id)selector:
invocato
al
pressione
del
tasto
che
richiede
Alberto Baggio
Tesi – iWWAlarms
40
l'aggiornamento degli allarmi. Controlla che il dispositivo sia connesso al server ed
effettua
lo
scaricamento
invocando
downloadAllarmi
della
Singleton
DownloadAllarmiAttivi.
•
-(void) modifica: aggiorna l'avanzamento della progressBar
•
-(void)setLog: aggiorna lo stato della finestra che stampa il log delle operazioni di
connessione e scaricamento
ContPage
Estende UIViewController. Gestisce le pagine che visualizzano gli allarmi attivi in gruppi di
quattro. Preleva i dati dalla Singleton StoreAllarmiAttivi e li visualizza.
ControllerQuartaVista
Estende UIViewController e definisci il delegato della tabella che permette l'impostazione dei
parametri di filtraggio. Permette il filtraggio degli allarmi attivi utilizzando filtri creati al
momento o i filtri personalizzati salvati nel database filtri.db.
Campi dati:
•
NSMutableArray *areeSelezionate: elenco delle aree selezionata da includere nei
parametri per cui filtrare
•
NSMutableArray *descSelezionate: elenco delle descrizioni scelte da includere
parametri per cui filtrare
nei
Metodi:
•
- (IBAction) saveFilters: invocato quanto l'utente digita il pulsante save nella view
definita da controllerQuartaVista.xib. Permette il salvataggio delle impostazioni di
filtraggio selezionate attribuendo un nome al filtro appena creato. Dopo aver controllato
che il nome digitato non sia vuoto e non sia già presente, inserisce il nuovo filtro nel
database.
•
-(IBAction) showFilter: (id) selector: invocato quando l'utente preme il pulsante show,
visualizza gli allarmi che soddisfano i parametri impostati. Effettua le seguenti
operazioni:
•
Invoca il metodo [(void) makeFiltering: (NSArray*) desc aree: (NSArray*) ar minPrio: (int)
prioMin maxPrio: (int)prioMax ] della classe Singleton Filters. Questo effettua il filtraggio
e alloca l'array contenente gli allarmi filtrati.
•
Alloca un oggetto di tipo viewFilterResult che visualizza gli allarmi
•
-(void) showSaveFilter: (id) selector: alloca un oggetto saveFilters che visualizza i filtri
personalizzati salvati nel database
•
-(BOOL) descSel: (NSString *) desc: ritorna TRUE se la descrizione passata è fra quelle
selezionate nell'apposita tabella
•
-(BOOL) areaSel: (NSString *) area: ritorna TRUE se l'area passata è fra quelle
selezionate nell'apposita tabella
•
-(void) descSelRemove:(NSString *)desc: rimuove la descrizione passata dall'elenco
delle descrizioni selezionate dall'utente
Alberto Baggio
Tesi – iWWAlarms
41
•
-(void) areaSelRemove:(NSString *)desc: rimuove l'area passata dall'elenco delle aree
selezionate dall'utente
Delegato tabella, metodi rilevanti:
•
(void)tableView:(UITableView *) tableView didSelectRowAtIndexPath:(NSIndexPath *)
indexPath: invocato quando viene selezionata una riga della tabella che permette
l'impostazione dei parametri di filtraggio. L'azione effettuata dipende dalla sezione a cui
appartiene la riga selezionata [descrizioni, aree, priorità e data]. Se la sezione è la zero
(descrizioni), controlla lo stato della descrizione selezionata, se spuntata (graficamente
è visibile un checkmark), toglie la spunta e la rimuove dall'array delle discrezioni
selezionate, viceversa aggiunge il checkmark e l'aggiunge all'array. Nel caso in cui la
sezione sia la uno (aree), il comportamento è uguale alla sezione prima, con la modifica
dell'array delle aree al posto di quello delle descrizioni. Se la sezione è la due, la
gestione dell'evento è definita da setPriorityCell, essendo questa una cella
personalizzata. Infine quando la riga digitata appartiene alla quarta sezione (data) viene
aggiunto in coda al navigationViewController, e visualizzato, un viewController di tipo
DataSetFilter.
DettaglioAllarme
Estende UIViewController. Visualizza le informazioni dettagliate relative ad un singolo allarme. I
dati visualizzati vengono prelevati dalla Singleton StoreAllarmiAttivi.
ViewFilterResult
Estende UIViewController. Visualizza l'elenco degli allarmi dopo che è stato effettuato un
filtraggio. Ottieni i dati dalla classe Singleton Filters.
SaveFilters
Estende UIViewController. Visualizza l'elenco dei filtri personalizzati salvati nel database, inoltre
ne permette la modifica, l'aggiunta e la rimozione. Qui è definito il delegato della tabella che
visualizza i filtri.
Campi dati:
•
NSMutableArray* elencoFiltri: contiene l'elenco dei filtri salvati nel database
•
BOOL deleteMode: impostato a YES se si è in modalità di modifica, nella quale la
selezione di un filtro dall'elenco, comporta la sua eliminazione e rimozione dal database.
La modalità è abilitata/disabilitata dalla pressione del tasto [Delete] della view definita
da [SaveFilters.xib].
Metodi:
•
-(void) viewDidLoad: inizializza l'array elencoFiltri, interrogando il database riguardo i
filtri salvati ([“select nome from filter”).
•
-(IBAction)Delete: invocata alla pressione del tasto [Delete], imposta la variabile
Alberto Baggio
Tesi – iWWAlarms
42
[deleteMode] all'opposto dell'attuale valore e ricarica la tabella con l'elenco dei filtri.
•
-(IBAction)Add: (id) sender: invocato dopo la pressione del tasto [new]. Aggiunge un
nuovo filtro personalizzato al database. Prima di fare ciò, controlla che il nome inserito
nell'apposito spazio non sia vuoto. Per inserire il nuovo filtro utilizza la Singlton
DataBase, in particolare invoca il metodo -(void)deleteDo:(NSString*)query che
permette di applicare query che modificano lo stato del database. Infine ricarica la
tabella in modo che sia visualizzato anche il nuovo filtro inserito.
Delegato tabella:
•
(void)tableView: (UITableView *) tableView didSelectRowAtIndexPath: ( NSIndexPath * )
indexPath: invocato quando viene selezionato un filtro della tabella. Se [deleteMode] è
impostato a YES, elimina il filtro dalla tabella e dal database. Se impostato a NO
visualizza un oggetto di tipo MyFiltersDisplay, che permette la modifica e l'applicazione
del filtro selezionato.
MyFilterDisplay:
Estende UIViewController. Gestisce la visualizzazione la modifica e l'applicazione di un filtro
personalizzato salvato nel database filtri.db.
Le restanti classi che estendo UIViewController non presentano caratteristiche
interessante, perciò ne verra omessa la descrizione.
Elenco file:
CLASSE
DESCRIZIONE
MODEL
RandomColor
Lista 50 colori
DataBase
Interfacciamento con database filtri.db
Filters
Filtraggio allarmi
Json-RPC
(sviluppata
Piccolo)
Ing.
Andrea
Parsing/creazione richieste protocollo JSon-RPC
StoreAllarmiAttivi
Store allarmi attivi
DownloadAllaAttivi
Effettua lo scaricamento degli allarmi attivi
ServerConnection
Stabilisce, mantiene e gestisce la connessione con il server
(Sviluppata da Ing Andrea remoto
Piccolo)
RequestResponder
Lista degli oggetti in attesa di risposta remota
(Sviluppata da Ing Andrea
Piccolo)
AsyncSocket
Stabilisce la connessione socket, ed effettua l'invio/ricezione
(sviluppo
Dustion
Voss dell'informazione
code.google/p/cocoaasyncs
Alberto Baggio
Tesi – iWWAlarms
43
CLASSE
DESCRIZIONE
ocket)
VIEW
PieChart
Grafico a torta
Effetto3d
Grafico a torta della distribuzione di allarmi per aree
Effetto3dDesc
Grafico a torta della distribuzione di allarmi per descrizione
Radar
Grafico radar (TODO)
RadarArea
Grafico radar-plot della distribuzione di allarmi per area
RadarDesc
Grafico radar-plot della distribuzione di allarmi per descrizione
PieTouch
Gestore touch grafici (TODO)
GestoreTouch
Gestore touch vari grafici distribuzione aree
DescTouch
Gestore touch
rinominare)
BarGraph
Grafico a barre (TODO)
BarGraphArea
Grafico a barre distribuzione di allarmi per area
BarGraphDesc
Grafico a barre distribuzione di allarmi per descrizione
Distribuition
Grafico distribuzione occorrenze allarmi (TODO)
WeekOcc
Grafico distribuzione occorrenze allarmi ultima settimana
LastiSixHoursOcc
Grafico distribuzione occorrenze allarmi ultime 7 ore
vari
grafici
distribuzione
descrizioni
(da
CONTROL
Grafici
Controller grafici
ControllerBarArea
Controller grafico a barre distribuzione allarmi per area
ControllerBarDesc
Controller grafico a barre distribuzione allarmi per descrizione
ControllerWeekOcc
Controller
settimana
ControllerLastSixHours
Controller grafico distribuzione occorrenze allarmi ultime 7 ore
ControllerSecondaVista
Controller grafico a torta distribuzione allarmi per area
ControllerPieChartDesc
Controller grafico a torta distribuzione allarmi per descrizione
ControllerRadarAree
Controller radar-plot distribuzione allarmi per area
ControllerRadarDesc
Controller radar-plot distribuzione allarmi per descrizione
RootController
Controller vista principale applicazione
Page
Controller sezione allarmi attivi
ControllerQuartaVista
Controller sezione filtri
ControllerStats
Controller sezione statistiche
ControllerSettings
Controller sezione impostazione parametri connessione
ContPage
Controller pagine visualizzazione allarmi attivi
DettaglioAllarmi
Controller visualizzazione dettaglio singolo allarme
grafico
distribuzione
occorrenze
allarmi
ultima
Alberto Baggio
Tesi – iWWAlarms
44
CLASSE
DESCRIZIONE
SaveFilter
Controller visualizzazione/modifica/rimozione/
personalizzati
aggiunta
ViewFilterResult
Controller visualizzazione risultati filtraggio
MyFilterDisplay
Controller modifica/applicazione filtro personalizzato
SetDateFilterMax
Controller cella per impostazione data massima
DatSetFilter
Controller cella per impostazione data minima
MyFilterDisplayAdd
Controller aggiunta parametri filtro personalizzato
filtri
SLOC
http://cloc.sourceforge.net v 1.51 T=3.0 s (55.3 files/s, 6471.7 lines/s)
------------------------------------------------------------------------------Language
files
blank
comment
code
------------------------------------------------------------------------------Objective C
83
3068
2747
10312
C/C++ Header
83
713
1344
1231
------------------------------------------------------------------------------SUM:
166
3781
4091
11543
ToDo
Mancano da sviluppare la gestione del Push e la visualizzazione e connessione con lo storico
degli allarmi
Il push è già predisposto per essere implementato, basta abilitare il push nel delegato
dell'applicazione e nell'oggetto server remoto. Quando verrà ricevuto una notifica push
l'applicazione dovrà scaricare
Lo storico è previsto venga sviluppato come modulo se stante. Basterà aggiungere un
controller nella Scroll di rootController per accedere alla nuova sezione.
Alberto Baggio
Tesi – iWWAlarms
45
Conclusioni
Alberto Baggio
Tesi – iWWAlarms
46
Illustrazione 26: Pianificato
Illustrazione 27: Effettivo
Alberto Baggio
Tesi – iWWAlarms
47
Risultato
Gli obbiettivi iniziali sono stati soddisfatti. L'applicazione è in fasei di completamento, vi è
ancora da implementare la sezione che visualizza statistiche calcolate sullo storico. Per fare
questo è neccessario intervenire anche sull'oggetto serie, infatti non è ipotizzabile che il client
si scarichi tutti gli allarmi sollevati da una certa data e calcoli le statistiche su questi,
l'operazione sarebbe troppo onerosa; bensì è l'oggetto server che giornalmente deve fare dei
report contenenti le statistiche del giorno. In questo modo se si vogliono dati statistici su di un
lungo intervallo, ci si limita a calcolare prendento un dato al giorno, anziché tutti gli allarmi del
giorno. Sostenzialmente a differenza degli allarmi attivi, per le statistiche riguardanti lo storico
degli allarmi, la computazione è effettuata lato server.
Illustrazione 28: Computazione statistiche
Inoltre deve ancora essere attività la gestione del push, per questa vi sono da sistemare ancora
alcuni aspetti lato server per la gestione dei certificati; mentre il client è già predisposto per la
gestione.
Durante lo sviluppo dell'applicazione sono stati effettuati svariati test tesi a verificare il corretto
funzionamento dell'applicazione in casi limiti come: il sovraccarico del server, l'invio di
pacchetti vuoti o errati, la mancanza di connessione. Il testing finale e completo
dell'applicazione è ancora in fase di completamento. Non ho potuto occuparmene per la
mancanza di tempo e perchè l'applicazione non è completa.
Il prossimo mese (novembre) a Los Angeles verrà presentata una versione Beta
dell'applicazione. Entro due mesi l'applicazione verrà inviata ad Apple per l'iter di approvazione
e seguente distribuzione su Apple Store.
E' previsto il futuro rilascio dell'applicazione anche per sistema operativo Windows phone 7.
Chiaramente il client dovrà essere svilupppato nuovamente, non essendo portabile in ambiente
windows.
Scostamento rispetto a quanto pianificato
Come visibile dal confronto fra i due Gant soprastanti, vi sono stati diverse differenze fra ciò
che si è fatto e ciò che era pianificato.
I motivi sono i seguenti:
•
La progettazione del modulo che permette la comunicazione fra server e dispositivo non
è stata necessaria, è stata importata dal progetto iCem.
Alberto Baggio
Tesi – iWWAlarms
48
•
Le ferie sono state distribuite diversamente da quanto inizialmente pianificato, una sola
settimana a ferragosto invece di due
•
La fase di codifica ha richiesto una settimana in più del previsto
•
Non è stato possibile effettuare la fase di test conclusiva (comunque durante lo sviluppo
sono state effettuate svariati test). Questa verrà effettuata a partire da meta ottobre.
Riassuntivo ore
Attività
Ore
Studio
56
Analisi/Specifica/Progettazione
60
Codifica
180
Validazione/Revisione/Accettazione
40
Esperienza maturata
Sviluppare iWWAlarms è stato molto utile e costruttivo per svariati motivi: ho imparato un
nuovo linguaggio, ho dovuto affrontare diverse problematiche da solo, mi sono dovuto
integrare in un progetto già avviato.
La cosa che ritengo più utile è stato il fatto di dover pensare e sviluppare un'intera applicazione
dall'inizio alla fine da solo.
Lo sviluppo iPhone è stato piacevole, il kit di sviluppo è ben strutturato. L'unica cosa che non
mi ha pienamente soddisfatto è la gestione un po' contorta della memoria in Objective-C.
Miglioramenti
Il supporto che maggiormente mi è mancato nello sviluppo dell'applicazione è stato quello di
un grafico di professione. Trovarsi a pensare la grafica di un'applicazione, senza avere la
neccessaria esperienza, è risultato un po' frustrante a volte. Nonostante questo il risultato
estetico finale è gradevole, anche se potrebbe essere decisamente più accativante.
Una aspetto che difficilmente potrà essere migliorato è il fatto che i grafici tridimensionali su
iPhone 3g, con OS precedente al 3.2, hanno le animazioni leggermente rallentate; su iPhone 4g
funziona tutto perfettamente
Se avessi avuto più tempo sarebbe stato bello ampliare l'insieme delle statistiche visualizzabili
e migliore la precisione della barra che indica lo stato di scaricamento degli allarmi.
Alberto Baggio
Tesi – iWWAlarms
49
Appendice
Alberto Baggio
Tesi – iWWAlarms
50
Elenco Requisiti
REQUISITO
DESCRIZIONE
RFO1
Gestione push allarmi
RFO2
Visione allarmi attivi attraverso un sistema di paginazione che
evidenzi
RFO2.1
Date e ora attivazione
RFO2.2
Nome (Description) allarme
RFO2.3
Area sorgente allarme
RFO3
Possibilità di ricevere informazioni storiche riguardo gli allarmi
RFO4
Possibilità di effettuare il filtraggio degli allarmi secondo i
parametri:
RFO4.1
Descrizione allarme
RFO4.2
Area di provenienza allarme
RFO4.3
Priorità allarme
RFO4.4
Data
RFO5
Visualizzazione dettagliata del singolo allarme, con informazioni
riguardo:
RFO5.1
Data e ora attivazione allarme
RFO5.2
Provider di provenienza
RFO5.3
Area di provenienza
RFO5.4
Tipologia allarme
RFO5.5
Descrizione allarme
RFO5.6
Indicazione numerica priorità
RFO5.7
Valore allarme
RFO5.8
Eventuale commento dell'utente che ha effettuato l'ack
RFO5.9
Nome completo allarme
RFO6
Visualizzazione statistiche riguardanti gli allarmi
RFO6.1
Distribuzione occorrenze allarmi per area visualizzata con tre
differenti grafici:
RFO6.1.1 Pie-Chart
RFO6.1.2 Bar-Graph
RFO6.1.3 Radar-plot
RFO6.2
Distribuzione occorrenze allarmi per descrizione visualizzata con
tre differenti grafici:
RFO6.2.1 Pie-Chart
RFO6.2.2 Bar-Graph
RFO6.2.3 Radar-plot
RFO6.3
Distribuzione occorrenze allarmi ultima settimana
RFO6.4
Distribuzione occorrenze allarmi ultime 7 ore
Alberto Baggio
Tesi – iWWAlarms
51
RFO7
Impostazione parametri di connessione
RFO7.1
Indirizzo ip Oggetto server
RFO7.2
Porta a cui connettersi
RFO7.3
Nome utente per la login al server
RFO7.4
Password per la login al server
RFO8
Possibilità di salvare i filtri personalizzati
RFD1
Ulteriore statistiche riguardanti gli allarmi
RFD1.1
Gaussiana tempi riconoscimento degli allarmi salvati nello storico
remoto
RFQO1
E' garantito il funzionamento su iPhone iOS 3.1 o superiore
RFQO2
Il codice sorgente è corredato di documentazione
RFQO3
Saranno effettuate fasi di test corredate di documentazione
Tracciamento dei requisiti
Tracciamento: requisiti funzionali - Use Case
Requisito
Use Case
RF01
UC1, UC2
RF02
UC1, UC4
RFO2.1
UC4
RFO2.2
UC4
RFO2.3
UC4
RFO3
UC5
RFO4
UC1, UC7
RFO4.1
UC7.1
RFO4.2
UC7.2
RFO4.3
UC7.3
RFO4.4
UC7.4
RFO5
UC1, UC4, UC4.1
RFO5.1
UC4.1.5
RFO5.2
UC4.1.4
RFO5.3
UC4.1.3
RFO5.4
UC4.1.1
RFO5.5
UC4.1.1
RFO5.6
UC4.1.2
RFO5.7
UC4.1.7
Alberto Baggio
Tesi – iWWAlarms
52
Requisito
Use Case
RFO5.8
UC4.1
RFO5.9
UC4.1.6
RFO6
UC1, UC6
RFO6.1
UC6.1
RFO6.1.1
UC6.1
RFO6.1.2
UC6.1
RFO6.1.3
UC6.1
RFO6.2
UC6.2
RFO6.2.1
UC6.2
RFO6.2.2
UC6.2
RFO6.2.3
UC6.2
RFO6.3
UC6.3
RFO6.4
UC6.4
RFO7
UC1, UC3
RFO7.1
UC3.1
RFO7.2
UC3.2
RFO7.3
UC3.3
RFO7.4
UC3.4
RFO8
//
Tracciamento: Use Case – requisiti funzionali
Use Case
Requisito funzionale
UC1
RFO7, RFO1, RFO2, RFO4, RFO5, RFO6
UC3
RFO7, RFO7.1, RFO7.2, RFO7.3, RFO7.4
UC4
RFO2, RFO2.1, RFO2.2, RFO2.3, RFO5,
UC4.1
RFO5, RFO5.1, RFO5.2, RFO5.3, RFO5.4,
RFO5.5, RFO5.6, RFO5.7, RFO5.8, RFO5.9
UC6
RFO6, RFO6.1, RFO6.1.1, RFO6.1.2, RFO6.1.3,
RFO6.2,
RFO6.2.1,
RFO6.2.2,
RFO6.2.3,
RFO6.3, RFO6.4
UC7
RFO4, RFO4.1, RFO4.2, RFO4.3, RFO4.4
Tracciamento Classi – requisiti soddisfatti
CLASSE
Requisiti Soddisfatti
MODEL
RandomColor
RFO6, RFO6.1, RFO6.1.1, RFO6.1.2, RFO6.1.3
DataBase
RF08
Alberto Baggio
Tesi – iWWAlarms
53
CLASSE
Requisiti Soddisfatti
Filters
RFO4, RFO4.1, RFO4.2, RFO4.3, RFO4.4
Json-RPC
(sviluppata Ing. Andrea Piccolo)
RFO2, RFO5
StoreAllarmiAttivi
RFO2, RFO4, RFO5, RFO6
DownloadAllaAttivi
RFO2, RFO5
ServerConnection
(Sviluppata da Ing Andrea Piccolo)
RFO2, RFO5
RequestResponder
(Sviluppata da Ing Andrea Piccolo)
RFO2, RFO5
AsyncSocket
(sviluppo
Dustion
code.google/p/cocoaasyncsocket)
RFO2, RFO5
Voss
VIEW
PieChart
RFO6, RFO6.1, RFO6.1.1, RFO6.2, RFO6.2.1
Effetto3d
RFO6.1.1
Effetto3dDesc
RFO6.2.1
Radar
RFO6, RFO6.1, RFO6.1.2, RFO6.2, RFO6.2.2
RadarArea
RFO6.1.2
RadarDesc
RFO6.2.2
PieTouch
RFO6, RFO6.1, RFO6.2
GestoreTouch
RFO6, RFO6.1,
DescTouch
RFO6, RFO6.2
BarGraph
RFO6, RFO6.1, RFO6.1.3, RFO6.2, RFO6.2.3
BarGraphArea
RFO6.1.3
BarGraphDesc
RFO6.2.3
Distribuition
RFO6, RFO6.3, RFP6.4
WeekOcc
RFO6.3
LastiSixHoursOcc
RFO6.4
CONTROL
Grafici
RFO6, RFO6.1, RFO6.2, RFO6.3, RFO6.4
ControllerBarArea
RFO6.1.3
ControllerBarDesc
RFO6.2.3
ControllerWeekOcc
RFO6.3
ControllerLastSixHours
RFO6.4
ControllerSecondaVista
RFO6.1.1
ControllerPieChartDesc
RFO6.2.1
ControllerRadarAree
RFO6.1.2
Alberto Baggio
Tesi – iWWAlarms
54
CLASSE
Requisiti Soddisfatti
ControllerRadarDesc
RFO6.2.2
RootController
RFO2, RFO4, RFO5, RFO6, RFO7, RO8
Page
RFO2, RFO2.1, RFO2.2, RFO2.3
ControllerQuartaVista
RFO4, RFO4.1, RFO4.2, RFO4.3, RFO4.4
ControllerStats
RFO6
ControllerSettings
RF07, RF07.1, RF07.2, RF07.3, RF07.4
ContPage
RFO2, RFO2.1, RFO2.2, RFO2.3
DettaglioAllarmi
RF05, RFO5.1, RFO5.2, RFO5.3,
RFO5.6, RFO5.7, RFO5.8, RFO5.9
SaveFilter
RFO8
ViewFilterResult
RFO4
MyFilterDisplay
RF08
SetDateFilterMax
RFO4.4
DateSetFilter
RFO4.4
MyFilterDisplayAdd
RF08
RFO5.4,
Requisito – classi che partecipano al soddisfacimento
REQUISITO
CLASSI
RFO1
TODO, già predisposto
RFO2
DownloadAllaAttivi, StoreAllarmiAttivi, Json-RPC, RequestResponder,
ServerConnection, Page, ContPage, AsyncSocket
RFO2.1
Page, ContPage
RFO2.2
Page, ContPage
RFO2.3
Page, ContPage
RFO3
TODO
RFO4
Filters, StoreAllarmiAttivi, ControllerQuartaVista
RFO4.1
Filters, ControllerQuartaVista
RFO4.2
Filters, ControllerQuartaVista
RFO4.3
Filters, ControllerQuartaVista
RFO4.4
Filters, ControllerQuartaVista, SetDateFilterMax. DateSetFilter
RFO5
DownloadAllaAttivi, StoreAllarmiAttivi, Json-RPC, RequestResponder,
ServerConnection, AsyncSocket, DettaglioAllarme
RFO5.1
DettaglioAllarme
RFO5.2
DettaglioAllarme
RFO5.3
DettaglioAllarme
RFO5.4
DettaglioAllarme
RFO5.5
DettaglioAllarme
Alberto Baggio
Tesi – iWWAlarms
55
RFO5.6
DettaglioAllarme
RFO5.7
DettaglioAllarme
RFO5.8
DettaglioAllarme
RFO5.9
DettaglioAllarme
RFO6
ControllerStats
RFO6.1
RandomColor, StoreAllarmiAttivi
RFO6.1.1
PieChart, Effetto3d, ControllerSecondaVista
RFO6.1.2
Radar, RadarArea, ControllerRadarAree
RFO6.1.3
ControllerBarArea, BarGraph, BarGraphArea
RFO6.2
RandomColor, StoreAllarmiAttivi
RFO6.2.1
PieChart, Effetto3dDesc, ControllerPieChartDesc
RFO6.2.2
RandomColor, StoreAllarmiAttivi, ControllerStats
RFO6.2.3
ControllerBarDesc, BarGraph, BarGraphArea
RFO6.3
ControllerWeekOcc, Grafici, WeekOcc
RFO6.4
ControllerLastSixHours, Grafici, LastSixHourOcc
RFO7
ControllerSettings, options.plist
RFO7.1
ControllerSettings, options.plist
RFO7.2
ControllerSettings, options.plist
RFO7.3
ControllerSettings, options.plist
RFO7.4
ControllerSettings, options.plist
RFO8
MyFilterDisplay, MyFilterDisplayAdd, SaveFilter, DataBase, filtri.db
RFD1
TODO (vi è una possibile implementazione in Gauss.m)
RFD1.1
TODO
RFQO1
TODO
RFQO2
Definizione di prodotto v1.0
RFQO3
TODO
Alberto Baggio
Tesi – iWWAlarms
56
Glossario
•
Archestra IDE: ambiente di sviluppo integrato, creato per facilitare il design, la
creazione, lo sviluppo ed il mantenimento di applicazioni scalabili, sicure e
standardizzate atte a controllare le funzioni produttive di un'azienda (MES, Industriali
Automatation).
•
APNs: servizio messo a disposizione da Apple in grado di propagare informazione ad
iPhone, iPod, iPod Touch ed iPad. Questi dispositivi si registrano al servizio, stabilendo
una connessione IP protetta e ricevono le notifiche. Se una notifica arriva mentre
l'applicazione non è in esecuzione, il dispositivo avverte l'utente dei dati in attesa.
•
Cocoa: insieme di framework orientati agli oggetti che permettono lo sviluppo di
applicazioni eseguibili in MAC OS X e iPhone OS.
•
ERP: Enterprise Resource Planning, (pianificazione delle risorse di impresa) sistema
informatico che integra tutti i processi di business rilevanti di un'azienda.
•
Industrial Automatation: è l'utilizzo di sistemi di controllo automatizzati per il
monitoraggio di macchinari e processi industriali, senza l'ausilio dell'operatore umano.
•
Instrument: tool integrato in Xcode che permette il monitoraggio e l'analisi delle
prestazioni di un'applicazione eseguita su iPhone. In particolare è in grado di
visualizzare aspetti fondamentali quali: allocazione e rilascio della memoria, sequenza
degli eventi, attività della CPU, threads in esecuzione e risorse impiegate da questi,
traffico network e altro ancora.
•
Interface Builder: software che permette di disegnare interfacce grafiche per i
framework Cocoa e Carbon. Le interfacce vengono salvate in directory contenenti gli
oggetti grafici e le loro relazioni; il tutto è raggruppato in file XML o NeXT con estensione
.nib. Al lancio dell'applicazione i corrispondenti oggetti NIB vengono scompattati e
collegati al codice binario.
•
InTouch: software che permette la visualizzazione grafica dei dati monitorati, in tempo
reale, dagli oggetti eseguiti dall'ambiente runtime fornito da Archestra IDE.
•
Iphone SDK: kit di sviluppo che permette la creazione di applicazioni per ipPhone, iPod
Touch ed iPad.
•
Iphone Simulator: tool che permette di emulare l'iPhone su pc Mac.
•
Machine Vision Solutions:
informazioni da un'immagine.
•
MES: Manifacturing Execution System, di indica un sistema informatizzato che ha lo
principale funzione di gestire e controllare la funzione produttiva di un'azienda. La
gestione coinvolge il dispaccio degli ordini, gli avanzamenti in quantità e tempo, il
versamento a magazzino, nonché il collegamento diretto ai macchinari per dedurre
informazioni utili ad integrare l'esecuzione della produzione come a produrre
informazioni per il controllo della produzione stessa.
•
Objective-C: linguaggio orientato agli oggetti con a base il C.
•
SSL: protocollo crittografato che permette una comunicazione sicura e una integrità dei
dati su reti TCP/IP. SSL ed il suo predecessore TSL cifrano la comunicazione dalla
soluzioni
software-hardware
in
grado
di
estrarre
Alberto Baggio
Tesi – iWWAlarms
57
sorgente alla destinazione sul livello di trasporto. Il protocollo SSL consente alle
applicazioni client/server di comunicare attraverso una rete in modo tale da prevenire il
'tampering' (manomissione) dei dati, la falsificazione e l'intercettazione.
•
Token: blocco di testo categorizzato.
•
Xcode: ambiente di sviluppo integrato, sviluppato da Apple Inc. per agevolare la
creazione di software per Mac OSx e iOS.
Alberto Baggio
Tesi – iWWAlarms
58
Bibliografia
•
Cocoa Touch for iPhone OS3,
Java De Voe, Wiley
•
The iPhone Developer's Cookbook, building applications with the iPhone 3.0 SDK,
Second Edition
Erica Sadun, Addison Wesley
•
iPhone Advance Projects,
Appress
•
http://developer.apple.com/iphone
•
http://www.json.org
•
http://www.autoware.it
•
http://www.wonderware.com