7.2.1 Analisi dinamica
L’analisi dinamica si basa sull’esecuzione per più volte di parti del codice per verificare che da input conosciuti si ottengano ri-sultati prevedibili in test facilmente ripetibili. Questo è rispettato se dagli stessi valori iniziali immessi nello stesso stato iniziale, l’esecuzione del programma porta agli stessi risultati.
L’analisi dinamica ha permesso inoltre di rilevare incompatibi-lità sui tipi impostati per gli attributi sia degli eventi che degli allarmi; infatti, per i campi Price o Time presenti rispettivamente all’interno della View di Events e Alarms, inizialmente venivano
41
42 PIANO DI QUALIFICA
impostatati al tipo Integer, tipo uguale a quello utilizzato nel da-tabase SQLite. Questi campi però risultavano essere sempre “0”
e quindi non venivano visualizzati a video, anche se, in moda-lità Debug le variabili avevano valori. Per questo si è dovuto impostare il tipo degli attributi a String.
7.2.2 Test di unità
Successivamente è stato possibile effettuare i test di unità su cia-scun file, ovvero su ogni singola View che permette all’utente di interagire con l’applicazione. È stato verificato che tutti gli ogget-ti dell’interfaccia rispondessero in modo corretto alle interazioni con l’utente, e che i dati visualizzati fossero effettivamente quelli aspettati dalla query eseguita.
Le prove sono state effettuate, sia attraverso white-box che black-box; in questo caso, per i test funzionali (black-box) è risultato di particolare aiuto il debugger, che ha permesso di evidenziare inconsistenze dovute ad una errata gestione del database all’in-terno dei file dell’applicazione.
7.2.3 Test di sistema
L’ultimo test effettuato è quello di sistema che verifica il corretto comportamento di tutta l’applicazione. Sia per quanto riguarda gli allarmi che per quanto riguarda gli eventi, è stato creato un database fittizio e, nel caso degli allarmi, delle personalizzazioni per verificare che i risultati visualizzati fossero idonei.
8 C O N C L U S I O N I
L’applicazione ottenuta sfrutta a pieno le potenzialità offerte dal-l’ambiente di sviluppo dell’iPhone e le implementazioni con pro-grammi gestionali, quali SQLite. iCEM porta sull’iPhone dell’u-tente uno strumento efficace quanto facile nel suo utilizzo grazie all’immediatezza del tocco offerto dal touchscreen del telefono e dalla semplicità dell’interfaccia grafica.
L’obiettivo dello stage era quello di continuare l’implementazio-ne dell’applicaziol’implementazio-ne e di portarla a termil’implementazio-ne il prima possibile in quanto l’azienda, già durante il periodo di sviluppo, aveva avuto richieste di fornitura del prodotto sia in Europa che in America.
Quando ho concluso il mio periodo in azienda, il primo step di sviluppo era stato completato con successo e l’iCEM era stato inviato all’Apple per essere poi immesso nel loro store. Le aspet-tative iniziali riguardo le funzionalità dell’applicazione sono sta-te quindi pienamensta-te soddisfatsta-te, grazie anche al dialogo con il relatore aziendale che ha permesso di evidenziare al meglio i re-quisiti necessari per lo sviluppo del software. L’applicazione che fra poco si potrà scaricare, è solo alla versione 1.0 e sarà sogget-ta a miglioramenti ed upgrade; difatti tra le migliorie successive troveremo:
– storico sugli eventi
– introduzione di un radar grafico per la questione allarmi – vari miglioramenti grafici
Il passo successivo sarà quello di portare l’applicazione funzio-nante sia sull’iPad che sull’iOS4, il nuovo firmware di Apple che permette il multitasking delle applicazioni, quindi sull’iPhone4.
Le tempistiche e la suddivisione delle attività riportate nel mo-dello di Gantt sono state rispettate; grazie all’interessamento per-sonale precedente all’esperienza aziendale, il primo periodo de-dicato allo studio dell’ambiente di sviluppo è stato dimezzato, così il tempo risparmiato è stato investito maggiormente nel te-sting alla fine di ogni sezione sviluppata. Con l’aiuto di testi acquistati dall’azienda, dalle interazioni con l’altro stagista ed internet, lo studio ed apprendimento degli strumenti principali, quali soprattutto SQLite, è stato rapido così da non rallentare il lavoro e rispettare quindi i tempi stabiliti. Grazie all’Interface Builder, già spiegato nel capitolo 5.3, creare l’interfaccia utente e sfruttare tutti i widgets che l’SDK offre è stato molto sempli-ce: senza scrivere alcuna riga di codice ed usando solo il mouse, ho potuto creare relazioni tra tasti e schermate, cosa che diven-ta complicadiven-ta in altri ambienti di sviluppo. La valudiven-tazione dello
43
44 CONCLUSIONI
stage è più che positiva; nei mesi di lavoro ho potuto vivere con-cretamente giornate di lavoro da 8 ore, interagire con un team di colleghi, provare esperienze che non avrei mai avuto se avessi deciso di intraprendere uno stage interno. La cosa che più mi dà soddisfazione è quella di vedere un programma, che ho aiutato a sviluppare, proprio nell’AppStore, uno degli store più grandi ed importanti del Mondo, a disposizione di milioni di clienti e che funziona sul dispositivo che ha cambiato la vita quotidiana di molte persone negli ultimi anni: l’iPhone.
Come disse Steve Jobs sulla sua meraviglia tecnologica, It’s magi-cal.
9 G L O S S A R I O
CCC
Cocoa
Ambiente di programmazione orientato agli oggetti svilup-pato da Apple Inc. per il sistema operativo Mac OS X uti-lizzando il programma XCode. I linguaggi supportati da Xcode sono L’Objective C, l’AppleScript, il C++, l’Objective C++ e Java. Ma l’ambiente Cocoa è utilizzabile anche con altri programmi di sviluppo e utilizzando anche linguaggi come il Perl, il Python (grazie al bridge PyObjC) e Ruby (grazie a RubyCocoa).
Compilatore GCC
GCC (GNU Compiler Collection, in origine GNU C Compi-ler) è un Compilatore multi-target; nato inizialmente come un compilatore per il linguaggio C, dispone oggi di vari front end per altri linguaggi, tra cui Java, C++, Objective C.
FFF
Firmware
Il firmware è un programma, inteso come sequenza di istru-zioni, integrato direttamente in un componente elettronico.
Lo scopo del programma è quello di avviare il componen-te scomponen-tesso e consentirgli di incomponen-teragire con altri componenti tramite l’implementazione di protocolli di comunicazione o interfacce di programmazione.
III
iSOA
Architettura software adatta a supportare l’uso di servizi Web per garantire l’interoperabilità tra diversi sistemi così da consentire l’utilizzo delle singole applicazioni come com-ponenti del processo di business e soddisfare le richieste degli utenti in modo integrato e trasparente.
JJJ
JavaScript
JavaScript è un linguaggio che consente alle pagine HTML di fare alcune cose a seguito di azioni del lettore. Può essere usato per spedire una form quando l’utente fa un click, per illuminare un bottone (o cambiargli forma) quando il mouse ci passa sopra.
JSON-RPC
JSON-RPC è l’unione di JSON, formato adatto per lo scam-bio dei dati in applicazioni client-server, e RPC, costituendo
45
46 GLOSSARIO
un protocollo di chiamate a procedure remote codificate in JSON. JSON è basato sul linguaggio JavaScript e viene usa-to in AJAX come alternativa a XML/XSLT. Il suo uso trami-te JavaScript, è semplice, infatti è in grado di eseguirne il parsing tramite una semplice chiamata alla funzione eval().
MMM
Microsoft.NET
un progetto all’interno del quale Microsoft ha creato una piattaforma di sviluppo software, .NET, la quale è una ver-satile tecnologia di programmazione ad oggetti.
Multitasking
Un sistema operativo con supporto per il multitasking (mul-tiprocessualità) permette di eseguire più programmi con-temporaneamente. Per quanto riguarda l’iPhone, premendo il pulsante Home è possibile passare da un’applicazione ad un’altra.
Multitouch
Tecnologia a schermo tattile, evoluzione di quella touch-screen, che differisce da quest’ultima per la rilevazione di interazioni con l’utente in più punti dello schermo.
PPP
Parsing (Parser)
In generale un parser è un software in grado di effettuare l’analisi sintattica di un testo rispetto ad un determinato lin-guaggio. Nello specifico, un parser XML è un software in grado di effettuare l’analisi sintattica di un documento XML.
Come minimo, un parser XML è in grado di verificare se un documento XML è ben formato.
SSS
SDK
Software Development Kit (SDK) è un termine che si può tradurre come pacchetto di sviluppo per applicazioni, e sta a indicare un insieme di strumenti per lo sviluppo e la documentazione di software.
Smartphone
E’ un dispositivo portatile che abbina funzionalità di gestio-ne di dati personal e di telefono. La caratteristica più interes-sante degli smartphone è la possibilità di installarvi ulteriori programmi applicativi, che aggiungono nuove funzionalità.
Questi programmi possono essere sviluppati dal produttore dello smartphone, dallo stesso utilizzatore, o da terze parti.
SQL
SQL (Structured Query Language) è un linguaggio di inter-rogazione per database progettato per leggere, modificare e gestire dati memorizzati in un sistema basato sul modello relazionale, per creare e modificare schemi di database, per creare e gestire strumenti di controllo ed accesso ai dati.
GLOSSARIO 47
TTT
Tab Bar
oggetto grafico che permette di navigare all’interno di un’ap-plicazione tramite l’apertura di schede indicate da un segna-libro. Nel nostro caso sta ad indicare una barra posizionata in basso nello schermo che ci permette di visitare le diverse funzionalità dell’applicazione.
TCP-IP
Suite di protocolli TCP/IP, o suite di protocolli Internet, è un insieme di protocolli di rete che implementa la pila di pro-tocolli su cui funziona Internet. TCP/IP contengono i due più importanti protocolli: il Transmission Control Protocol (TCP) e l’Internet Protocol (IP).
Touchscreen
Un touchscreen, o schermo tattile, è un particolare dispositi-vo, frutto dell’unione di uno schermo e di un digitalizzato-re, che permette all’utente di interagire con una interfaccia grafica mediante le dita o particolari oggetti. Uno scher-mo tattile è allo stesso tempo un dispositivo di output e di input.
VVV
View
oggetto grafico di Interface Builder che agisce da struttura base per l’applicazione e sul quale è possibile costruire gli altri oggetti grafici dell’applicazione.
B I B L I O G R A F I A
[1] MacWorld San Francisco 2010, Keynote Address, 2010 [online] (Citato a pagina1.)
. Video, Apple Inc;
[2] Apple Inc., iPhone OS Reference Library 2009. Your First iPhone Application [online]. Disponibile su:
http://developer.apple.com/IPhone/library/documentation/iPhone/Conceptual/iPho ne101/Articles/00Introduction.html;
[3] WIKIPEDIA, 2010. iPhone – Successo commerciale [online].
Disponibile su: http://it.wikipedia.org/wiki/IPhone [Data di accesso 2/08/2010];
[4] Sviluppare applicazioni con iPhone SDK, Bill Dudney, Chris Adamson, ed 2009.
49
E L E N C O D E L L E F I G U R E
Figura 1 Il nuovo iPhone4 presentato a Giugno 2010 1 Figura 2 Il logo dell’SDK di Apple 2
Figura 3 Schermata di avvio di iCEM 3 Figura 4 Use case area Filter 9
Figura 5 Use case area Risultati Allarmi 10 Figura 6 Use case area Eventi 11
Figura 7 Use case area dettagli Eventi 12
Figura 8 Piano di lavoro dal 22 Aprile 2010 al 19 Maggio 2010 13
Figura 9 Piano di lavoro dal 19 Maggio 2010 al 14 Giu-gno 2010 14
Figura 10 Esempio di file header (.h) 15 Figura 11 Esempio di file .m 16 Figura 12 Esempio di file main 16
Figura 13 XCode: organizzazione della finestra principale 19
Figura 14 Finestre principali di Interface Builder 21 Figura 15 Risultato finale dell’esempio Hello World 22 Figura 16 Schermata di SQLite Database Browser 23 Figura 17 Schermata per effettuare il login 25 Figura 18 Database dell’ iCEM 26
Figura 19 Particolare della tabella Allarmi 26 Figura 20 Particolare della tabella Eventi 27 Figura 21 Tab Bar nativa di Interface Builder 27 Figura 22 Tab Bar 28
Figura 23 Schermata principale sezione Events; schermata dettagli evento 29
Figura 24 Costruzione mediante Interface Builder di una cella Events 30
Figura 25 Particolare di eventi in fase di caricamento con l’utilizzo di Activity Indicator 30
Figura 26 Particolare del codice
didSelectRowAtIndexPa-th 31
Figura 27 Schermata dettagli dell’evento 31
Figura 28 Schermata dettagli consumi dell’evento 33 Figura 29 Schermata principale di Alarms: Time, Type,
Priority 34
Figura 30 Schermata principale di Alarms: Area 35 Figura 31 Esempio di utilizzo dello Switch 35 Figura 32 Query di default 36
Figura 33 Schermata di ordine di raggruppamento dei ri-sultati; modalità di modifica 37
Figura 34 Elenco dei risultati 38
Figura 35 Dettagli dell’allarme selezionato 39
51