Sviluppo di un’applicazione mobile per la
gestione degli interventi tecnici tramite
geolocalizzazione
UNIVERSITA’ DEGLI STUDI DI FERRARA
Corso di Laurea in informatica
Anno Accademico 2011 - 2012
Relatore:
Prof. Tomassetti Luca
Correlatore:
Dott. Giacomelli Valerio
Laureando:
Andrighetti Filippo
Introduzione
Molte aziende offrono servizi di assistenza e manutenzione continuativa o “spot” ad aziende o
privati con lo scopo di risolvere determinati problemi.
Molte aziende ancora utilizzano il cartaceo per la
gestione di questi interventi.
Syncrogest, l’applicazione sviluppata
dall’azienda Syncronika, vuole offrire
un metodo migliore per la gestione
utilizzando un semplice smartphone o
un tablet.
Tramite l’applicazione si possono tenere aggiornati gli interventi in tempo reale e segnare tutte le
informazioni in ogni momento.
Questo può portare a meno
errori dovuti a mancate
registrazioni di interventi,
omissioni di informazioni
ritenute superflue o altro.
Syncrogest
Syncrogest è un’applicazione atta a fornire supporto alle aziende per la gestione di interventi tecnici
previsti o in corso, è infatti possibile gestire tutte le fasi dell’assistenza tecnica, dall’intervento alla
fatturazione web.
Aspetti principali:
• Interventi: permette la gestione degli interventi tecnici, suddivisibili per commesse, consentendo il
monitoraggio delle attività svolte, includendo tempistiche di lavori, costi e trasferte.
• Commesse: permette la gestione delle commesse attribuite ai clienti, dando la possibilità di
suddividere e aggregare le varie attività, definendo tariffe e tempistiche.
• Clienti: permette la gestione delle anagrafiche dei clienti o dei fornitori e dei contatti ad essi
correlati, dando la possibilità di inserire sedi con la geolocalizzazione su Google Maps.
• Prodotti: permette la gestione semplice del catalogo dei prodotti con suddivisione per marca, questo
modulo si interfaccia agli interventi.
• Fatture: permette la fatturazione ordinaria o la fatturazione automatica da interventi e la gestione
delle spese aziendali con scadenzario, grafici e statistiche.
• Configurazione: permette la gestione dell’account aziendale, la possibilità di creare utenti e gruppi
con livelli personalizzati di accesso ai moduli.
• Bacheca: modulo completo per la visualizzazione dello scadenzario di fatture e spese.
• Mobile ready: consente l’interfacciamento da parte delle applicazioni esterne a Syncrogest
mediante un layer webservice.
Sviluppo di applicazioni mobile: web, native o ibride?
Gli sviluppatori possono scegliere diversi approcci applicativi, ognuno con una propria serie di
vantaggi e svantaggi.
Applicazioni native: questo si riferisce alle applicazioni costruite e installate su una piattaforma
specifica, come ad esempio iOS o Android, utilizzando uno specifico kit di sviluppo software (SDK).
Applicazioni native offrono prestazioni veloci e l’accesso a servizi nativi del dispositivo, ma
richiedono competenze aggiuntive per svilupparle e mantenere ogni piattaforma, questo può risultare
costoso e richiedere molto tempo.
Applicazioni web mobile: a
differenza delle applicazioni native, le
applicazioni web mobile non sono
installate sul dispositivo, ma vi si
accede tramite un browser web.
Queste sono applicazioni lato server
che visualizzano una pagina HTML,
tipicamente regolando il design a
seconda del tipo di dispositivo che
effettua la richiesta.
Sviluppo di applicazioni mobile: web, native o ibride?
Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da
applicazioni native e web mobile per ottenere i benefici di ciascuno. Questa UI viene eseguita in locale
all’interno del contenitore nativo, il quale di solito sfrutta il motore del browser del dispositivo. Il
vantaggio di utilizzare HTML5 è un’interfaccia utente che funziona bene sulla maggior parte dei
dispositivi, combinando questo con il contenitore nativo installato sul dispositivo consente agli utenti
di accedere ai servizi locali del dispositivo, come la fotocamera, il GPS e la memoria locale del
dispositivo stesso.
Qual è l’approccio migliore? La scelta migliore dipende dal tipo di applicazione che si sta sviluppando, i seguenti aspetti sono un
punto di partenza per la scelta del metodo di sviluppo:
• Complessità dell’applicazione;
• Interattività con l’utente;
• Prestazioni;
• Connettività e disponibilità;
• Requisiti di multi-piattaforma;
• Accesso ai servizi del dispositivo;
• Frammentazione;
Android
I passi base per sviluppare un’applicazione Android
sono mostrati in figura.
Fondamenti dell’applicazione Le applicazioni Android sono scritte in Java e gli
strumenti dell’Android SDK compilano il codice in
un Android package con estensione .apk.
Una volta installato su un dispositivo, ogni
applicazione vive nella sua stessa area di sicurezza:
• Il sistema operativo Android è un sistema Linux
multi-utente, dove ogni applicazione è un diverso
utente.
• Di default il sistema assegna ad ogni
applicazione un unico user ID, inoltre vengono
impostati i permessi per tutti i file di
un’applicazione in modo che solo l’user ID
assegnato possa accedervi.
• Ogni processo ha una sua propria macchina
virtuale, in modo che il codice di un’applicazione
sia isolato dalle altre.
• Di default ogni applicazione gira nel suo proprio
processo.
Android
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<uses-sdk />
<uses-permission />
<application>
<activity>
<intent-filter>
<action />
<category />
</intent-filter>
<meta-data />
</activity>
<uses-library />
</application>
</manifest>
Il file Manifest Prima che il sistema Android possa far partire un componente
dell’applicazione, il sistema deve sapere della sua esistenza
leggendolo dal file dell’applicazione AndroidManifest.xml.
Il manifest serve anche per altre cose in aggiunta a dichiarare
i componenti dell’applicazione, come:
• Identificare i permessi che sono richiesti
dall’applicazione, come l’accesso ad internet o permessi
di lettura per la rubrica.
• Dichiarare il livello minimo delle API richieste
dall’applicazione.
• Dichiarare le caratteristiche hardware e software usate o
richieste dall’applicazione, come fotocamera, servizi
Bluetooth, schermo multitouch.
• Librerie esterne che l’applicazione necessita, come le API
di Google Maps.
• E altro.
Una struttura semplificata del manifest è riportata a fianco.
Android
Attività Un’attività è un componente dell’applicazione che
fornisce una schermata con cui l’utente può
interagire per svolgere particolari azioni, come
comporre un numero di telefono, scattare una foto,
inviare un email, guardare una mappa.
Un’applicazione solitamente è formata da più
attività legate tra loro, ogni volta che una nuova
attività parte quella precedente viene fermata, ma il
sistema preserva l’attività in uno stack (il “back
stack”).
Quando un’attività viene fermata perché ne si avvia
un’altra, essa viene informata di questo
cambiamento di stato attraverso i metodi di callback
del ciclo di vita dell’attività.
Android
Interfaccia utente Tutti gli elementi dell’interfaccia utente in un’Android app sono costruiti usando oggetti View e
ViewGroup. Una View è un oggetto che disegna qualcosa sullo schermo con cui l’utente può interagire,
invece una ViewGroup è un oggetto che contiene altri oggetti View o ViewGroup in modo da definire il
layout dell’interfaccia.
L’interfaccia utente di ogni componente dell’applicazione è definita usando una gerarchia di oggetti
View e ViewGroup, dove ogni ViewGroup è un contenitore invisibile che organizza i View figli, mentre
le View possono essere dei controlli di input o altri widget che disegnano parte della UI.
Web Service
Secondo la definizione data dal W3C un Web Service è un sistema software progettato per supportare
l’interoperabilità tra diversi elaboratori su di una medesima rete.
REST (Representational State Transfer) definisce un insieme di principi architetturali per la
progettazione di un sistema. La sua definizione è apparsa per la prima volta nella tesi di Roy Fielding,
in cui venivano analizzati alcuni principi alla base di diverse architetture software, tra cui appunto i
principi di un’architettura software che consentisse di vedere il web come una piattaforma per
l’elaborazione distribuita.
I principi REST non sono necessariamente legati al web, ma si può appoggiare tranquillamente ad un
qualsiasi altro protocollo che fornisca un vocabolario altrettanto ricco. A differenza di altre specifiche
per Web Service, REST sfrutta appieno la semantica e la ricchezza dei comandi HTTP e le sue
funzionalità.
Metodo HTTP Operazione CRUD Descrizione
POST Create Crea una nuova risorsa
GET Read Ottiene una risorsa esistente
PUT Update Aggiorna una risorsa o ne modifica lo stato
DELETE Delete Elimina una risorsa
Web Service
Lo stile architetturale REST descrive i seguenti
vincoli applicati all’architettura:
• Client – Server;
• Stateless;
• Chaceable;
• Sistema a livelli;
• Code on demand (opzionale);
• Interfaccia uniforme.
L’interfaccia uniforme che qualsiasi interfaccia
REST deve fornire è considerata fondamentale per la
progettazione di un servizio REST, i principi guida
sono i seguenti:
Plugin per test Per testare le funzioni del Web Service si può utilizzare un estensione di Google Chrome, chiamata
Postman REST client, il quale permette di effettuare le richieste al Web Service e ottenere le risorse
correlate.
• Identificazione delle risorse;
• Manipolazione delle risorse attraverso queste rappresentazioni;
• Messaggi autodescrittivi;
• Hypermedia as the engine of application state (HATEOAS).
Syncrogest mobile
Syncrogest, oltre ad essere un’applicazione web, è un prodotto mobile per Android e iOS. Questa scelta
è stata fatta per dare maggiore controllo e flessibilità alle aziende per quanto riguarda la gestione dei
loro interventi, permettendo di registrare in tempo reale gli interventi richiesti o aggiornare quelli che si
stanno svolgendo in mobilità.
Gli strumenti di sviluppo utilizzati a questo scopo sono:
• SVN;
• Eclipse;
• Android Developer Tool (ADT): plugin per Eclipse;
• ObjectAid UML Explorer: plugin per Eclipse.
Features in Syncrogest 1.0:
• Lista interventi con una gestione base;
• Lista commesse;
• Lista clienti;
Features nell’ultima versione (2.2.1):
• Lista interventi con una gestione completa;
• Lista commesse con relativa gestione;
• Lista clienti con relativa gestione;
• Lista prodotti;
• Mappa intervento e clienti;
• Firma digitale;
• Invio rapporto in PDF;
Syncrogest mobile
Lo sviluppo dell’applicazione è stato effettuato seguendo la metodologia Agile, questo termine fu
coniato nel 2001 quando il Manifesto Agile è stato formulato. La gran parte dei metodi agili tentano di
ridurre il rischio di fallimento sviluppando il software in finestre di tempo limitate chiamate iterazioni
che, in genere, durano qualche settimana.
• Le persone e le interazioni sono più importanti
dei processi e degli strumenti;
• E’ più importante avere software funzionante
che documentazione;
• Bisogna collaborare con i clienti al di là del
contratto;
• Bisogna essere pronti a rispondere ai
cambiamenti più che aderire al progetto.
L'obiettivo è la piena soddisfazione del cliente e non solo l'adempimento di un contratto, inoltre l'uso di
queste metodologie serve ad abbattere i costi di sviluppo del software.
I principi su cui si basa una metodologia leggera che segua i punti indicati dall'Agile Manifesto, sono
solo quattro:
Syncrogest mobile
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<activity
android:name="app.syncronika.syncrogest.ListaClienti"
android:configChanges="orientation|keyboardHidden"
android:launchMode="singleTop"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
<uses-library android:name="com.google.android.maps" />
<activity
android:name="app.syncronika.syncrogest.ShowMaps"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" >
</activity>
Sono qua sotto riportate le parti più importanti del file Manifest dell’applicazione.
Syncrogest mobile
Di seguito alcuni screenshot dell’applicazione con le parti più rilevanti degne di nota.
Top Related