15
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

Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

  • Upload
    voxuyen

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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

Page 2: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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.

Page 3: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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.

Page 4: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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.

Page 5: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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;

Page 6: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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.

Page 7: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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.

Page 8: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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à.

Page 9: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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.

Page 10: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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

Page 11: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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).

Page 12: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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;

Page 13: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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:

Page 14: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

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.

Page 15: Sviluppo di un’applicazione mobile per la · Applicazioni ibride: come suggerisce il nome, le applicazioni ibride combinano tecnologie da applicazioni

Syncrogest mobile

Di seguito alcuni screenshot dell’applicazione con le parti più rilevanti degne di nota.