Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica tesi di laurea specialistica Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo Enterprise Anno Accademico 2012/2013 Relatore Ch.mo prof. Marcello Cinque correlatore Ch.mo ing. Dennis Alessio Guidotti candidato Francesco Godino matr. 885/000481 [Dedica] Indice Introduzione 6 Capitolo 1. titolo capitolo 1 1.1 1.2 1.2.1 1.2.2 1.2.3 1.3 1.3.1 12 titolo paragrafo titolo paragrafo titolo paragrafo titolo paragrafo titolo paragrafo titolo paragrafo titolo paragrafo 15 23 25 32 35 36 38 Capitolo 2. titolo capitolo 2 2.1 2.1.1 2.2 2.2.1 2.2.2 2.2.3 2.3 2.3.1 Conclusioni Sviluppi futuri Bibliografia 42 titolo paragrafo titolo paragrafo titolo paragrafo titolo paragrafo titolo paragrafo titolo paragrafo titolo paragrafo titolo paragrafo 42 44 46 49 53 62 70 72 196 198 199 III Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Introduzione La continua evoluzione ed innovazione delle tecnologie connesse al web sta trasformando profondamente il modo con cui gli utenti condividono le informazioni. I dati che vengono scambiati vengono acceduti in misura sempre maggiore in mobilità indipendentemente dal tempo e dal luogo; la mole di dati che viene prodotta e che viaggia nel web sta aumentando, sia a livello di quantità che di complessità. Nuove tecnologie innovative vengono lanciate sul mercato con cadenza sempre maggiore, andando ad ampliare i modi con cui le informazioni vengono scambiate. Il volano delle recenti e delle future innovazioni legate al web è rappresentato dal mobile computing, attraverso l'utilizzo in costante aumento di smarphone e tablet. Queste 2 tipologie di dispositivi hanno creato, o in alcuni contesti ampliato, servizi e tecniche a supporto degli utenti per la condivisione di informazioni su scala globale. Grazie all'utilizzo di sensori sempre più complessi ma di facile utilizzo e attraverso il paradigma orientato alle applicazioni, gli utenti riescono a comunicare informazioni in tempo reale di diverso tipo. Ad esempio, utilizzando un'applicazione di messaggistica istantanea, un utente può condividere su un social network la sua posizione attraverso il sensore gps, collegandola a dati strutturati aggiuntivi prodotti dall'applicazione, aumentando la semantica dell’informazione prodotta. L'insieme di queste innovazioni che permettono un ruolo sempre più attivo degli utenti all'interno del web sta portando al passaggio dal web 2.0 al 3.0. Il primo è un termine utilizzato per indicare uno stato dell' evoluzione del World Wide Web, rispetto alla condizione 4 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise precedente in cui le pagine web erano statiche, cioè senza possibilità di interagire con esse in maniera interattiva. Si indica come Web 2.0 l'insieme di tutte quelle applicazioni online che permettono uno elevato livello di interazione tra il sito web e l'utente come i blog, i forum, le chat, i wiki, le piattaforme di condivisione di media come Flickr, Youtube, Vimeo, i social network come Facebook, Myspace, Twitter, Google+, Linkedin, Foursquare, ecc. (Wikipedia). Questo livello di interazione tra utente e pagine web è ottenuto attraverso l’utilizzo di tecnologie come AJAX, il cui acronimo è asynchronous JAVASCRIPT and XML, HTML, CSS, e plugin creati ad hoc per aumentare il livello di user experience delle applicazioni web, ad esempio JavaFX, Microsoft Silverlight o Adobe Flex. Il Web 3.0 non ha una definizione univoca, perché con questo termine si tende ad inglobare una serie di tecnologie, linguaggi, strumenti volti ad estendere il modo di accedere e di ricercare informazioni e risorse del web. Principalmente la visione di questo tipo di web è incentrata sulla strutturazione e semantica delle informazioni accessibili, sia dagli utenti che dalle macchine. Attraverso una serie di linguaggi e tecnologie, come XML, RDF, OWL, SPARQL si consente di utilizzare il web come archivio di dati strutturati ai quali poter accedere da remoto. Avviene il passaggio da pagina web a risorsa del web, con cui si intende qualsiasi dato strutturato accessibile, sia da utente che da macchina. Il maggiore impatto di questa evoluzione consiste nell’ottenere un nuovo livello di integrazione e di interoperabilità delle applicazioni, rendendo i dati disponibili attraverso “link”, o attraverso API ( Application programming interface ) standardizzate; inoltre attraverso questa ristrutturazione dell’accesso al web è possibile interrogare ed accedere alle informazioni attraverso applicativi gestiti da intelligenza artificiale, al fine di poter ottenere informazioni nascoste dalla elaborazione dei dati, attraverso algoritmi di data mining. Queste trasformazioni del web e delle tecnologie ad esso connesse, è stato in parte assimilato dalle realtà enterprise, ma può essere ampliato il loro utilizzo per favorire la crescita di valore dell'azienda o aumentare l'efficienza dei processi interni. Il web e le sue innovazioni può essere utilizzato in tutti i settori aziendali, principalmente per relazionarsi a clienti, partner e propri dipendenti. Le tecnologie che sono in relazione diretta con l’evoluzione del web che consentono grandi benefici se introdotte nelle attività 5 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise aziendali sono diverse; questa tesi è focalizzata sulle tecnologie mobile e lo sviluppo di applicativi con un approccio multipiattaforma e multidevice. Le aziende che stanno introducendo il mobile nel business aziendale devono relazionarsi con un contesto in continua evoluzione, sia come tipologie di device, sia come sistemi operativi. Questa condizione comporta un aumento dei costi di sviluppo e di manutenzione se si intendono sviluppare applicazioni che devono essere eseguite su diversi sistemi operativi. Nel capitolo 1 vengono presentate le tecnologie che possono apportare grossi benefici qualora introdotte in azienda, soffermando l’attenzione sul contesto e le tecnologie mobile. All’interno dell’insieme dei dispositivi mobile viene condotta un’analisi di mercato incentrata sul tablet, il quale secondo le previsioni diverrà il punto di riferimento del mercato mobile del futuro, sia in ottica consumer che business. Nel capitolo 2 vengono analizzati i sistemi operativi mobile IOS, Android e Windows 8 (Windows RT), i 3 sistemi operativi che secondo le previsioni si divideranno il mercato mobile in futuro. Nel capitolo 3 vengono analizzati i diversi approcci e tecnologie per perseguire uno sviluppo multipiattaforma e multidevice. Al fine di individuare la tecnologia da utilizzare in base ad un contesto di utilizzo di riferimento, viene utilizzata una metodologia di scelta multicriterio a supporto della decisione denominata Analytic Hierarchy Process. Nel capitolo 4 viene mostrato il processo di sviluppo di un’applicazione commissionata da Poste Italiane realizzata con la tecnologia di sviluppo ibrida. Vengono trattare le fasi di analisi dei requisiti e di progettazione. Nel capitolo 5 è trattata la fase di sviluppo del codice dell’applicativo per la piattaforma Windows 8, scelta da Poste Italiane come piattaforma di riferimento da cui partire per lo sviluppo. Al termine della realizzazione dell’applicazione viene analizzato quantitativamente il beneficio apportato dalla tecnologia ibrida per un successivo porting su piattaforma Android. Infine vengono presentate le conclusioni del lavoro svolto e gli sviluppi futuri, riguardanti lo sviluppo multipiattaforma di applicazioni mobile di tipo Enterprise. 6 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Capitolo 1 Web,mobile e lʼutilizzo in azienda In questo capitolo verranno presentate le principali tecnologie connesse al web che potenzialmente possono portare maggiori benefici se utilizzate in azienda, sia quelle già introdotte sul mercato sia quelle che verranno lanciate a breve. Verrà focalizzata l'attenzione sui device mobili, in particolare il tablet. Attraverso un'analisi del mercato attuale e delle previsioni future di questo tipo di dispositivo verrà mostrato che il tablet diventerà il dispositivo principale nel contesto del mobile computing, sia a livello customer che business. 1.1. Le tecnologie del web: opportunità per le aziende Il web è diventato uno dei mezzi di comunicazione preferito dalle aziende, inoltre costituisce la prima scelta per clienti, business partners, investitori, e altri parti interessate. Esso è diventato pervasivo nelle vite di tutte le persone, sia a livello professionale che personale. Vengono proposte alcune interessanti caratteristiche del web odierno: • L’accesso ai contenuti da parte degli utenti viene realizzato in maniera contestuale, utilizzando regole e meccanismi per ottenere informazioni sul comportamento e gusti, selezionando dinamicamente quali dati presentare e come presentarli; esempi d’uso di questa caratteristica sono portali come Youtube o Amazon, che in base all’interazione nel tempo del singolo utente con il sistema riescono a fornire delle proposte che rispecchiano i suoi gusti 7 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise • Utilizzo crescente delle tecnologie mobile per accesso al web, attraverso l’utilizzo di smartphone e tablet e delle relative applicazioni, le quali sono sviluppate con diversi approcci. Alle tecnologie native si stanno affiancando HTML5 e ibride( html incapsulato in un involucro nativo ) • Esperienza utente avanzata offerta dalle applicazioni web, attraverso l’utilizzo di HTML5, Cascading Style Sheets 3 (CSS3). L’evoluzione di questi standard permette di non dover ricorrere a plug-in creati ad hoc per i web browser , come Flash o JavaFx, per ottenere un’esperienza utente ricca, cioè con elementi grafici complessi ed avanzati e l’interazione vicina a quella offerta dagli applicativi desktop • Sviluppo di un’ottica Cloud-centric per la fornitura di diversi tipi di servizi ICT, in cui attraverso il web viene realizzato l’interfacciamento tra utenti e servizi, sia per la fruizione che per la gestione • Sviluppo del social computing, cioè l’interazione tra utenti e condivisione di informazioni avviene attraverso piattaforme social, creando la possibilità di generare comunità su diversi tipi di tematiche • Introduzione di nuove features in tutti i web browser, che sta generando una frammentazione del mercato, fin’ora dominato da Internet Explorer.(Dati 2012 frammentazione browser) • Aumento degli investimenti nel web delle aziende in termini di digital marketing • In molte regioni del mondo il web sta creando forti cambiamenti a governi, economie e norme sociali; alcuni esempi sono la diffusione delle informazioni attraverso i social network nelle guerre civili dei paesi arabi e l’utilizzo del web come uno dei principali canali per la propaganda politica nelle elezioni presidenziali negli Stati Uniti d’America L’espansione e le continue innovazioni delle tecnologie connesse al web offrono alle aziende nuove opportunità per introdurlo nelle attività connesse a tutti i livelli della piramide di Antony (http://it.wikipedia.org/wiki/Piramide_di_Anthony). L’utilizzo del web è inoltre orizzontale rispetto alle diverse categorie dei processi di business delle 8 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise aziende; può essere introdotto all’interno di processi legati al Custom Relationship Management ( CRM ), ai processi produttivi e ai processi manageriali. Il web risulta già essere perno delle strategie di molte aziende nei rapporti con i clienti. Le caratteristiche di ubiquità e di incremento delle possibilità offerte grazie alle tecnologie innovative, accrescono l’utilità del web e lo rendono lo strumento più appropriato per l’interazione dell’azienda con i clienti, partners e dipendenti. Nonostante il web sia stato introdotto da tempo nelle aziende per adempiere a specifici scopi, ad esempio il marketing, ci sono diverse opportunità di utilizzo delle diverse tecnologie connesse ad esso; il loro utilizzo può apportare un impatto considerevole in termini di miglioramento dei Key performance indicator (KPI) di molti processi aziendali, fino a essere un attore importante nel cambiamento strutturale dell’azienda, ad esempio attraverso l’estrazione e l’analisi dei dati provenienti dal web un’azienda può decidere di modificare il proprio business o di espanderlo verso nuovi mercati e nuovi prodotti. Particolarmente efficace può essere l’utilizzo del web attraverso i dispositivi mobili, come smartphone e tablet, grazie alle innovazioni apportate in termini di user experience e features fornite. Questi tipi di dispositivi offrono l’accesso a una serie di servizi innovativi peculiari dei diversi sistemi operativi mobile attraverso un’interazione con l’utente intuitiva; l’uso del paradigma orientato alle applicazioni mobile, che consiste di avere a disposizione una serie di applicazioni che forniscono pochi servizi verticali per rispondere a specifici requisiti, connesso all’interazione con molti sensori specifici dei dispositivi mobili( GPS, compasso, camera, accelerometro, altimetro), incrementa la loro importanza e utilità all’interno delle attività aziendali. L’incremento nell’uso del paradigma orientato alle applicazioni mobile deve portare le aziende a prendere in considerazione nelle proprie strategie di sviluppare applicazioni da distribuire attraverso i market ufficiali delle diverse piattaforme e attraverso altri meccanismi. L’insieme delle tecnologie connesse al web è ampio ed eterogeneo, e grazie agli sforzi degli organismi che si occupano di standardizzarne l’uso e l’accesso alla rete globale,( esempio W3C, world wide web consortium ), è possibile costruire sistemi distribuiti complessi che riescono ad interoperare ed essere integrati. Grazie alla standardizzazione e alla crescita costante dell’interesse da parte di utenti ed 9 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise aziende, sul mercato vengono proposte tecnologie innovative ogni giorno. Vengono descritte alcune delle tecnologie connesse al web che possono offrire importanti benefici se introdotte nelle aziende. Tra quelle proposte sono presenti alcune emergenti, altre mature e altre che verranno lanciate sul mercato in futuro: • Social analitics: Con questo termine vengono individuate un insieme di applicazioni che hanno lo scopo di misurare, analizzare e interpretare i dati provenienti dall’acquisizione di informazioni relative alle interazioni delle persone con i social networks, esempio Facebook e Google+. Queste attività si sono sviluppate come specializzazione delle applicazioni relative al web analitics. Quest’ultimo consiste nell’analisi dei dati che vengono trasmessi attraverso il web finalizzata a ottenere informazioni per migliorare l’esperienza utente dei canali online delle aziende e ottimizzare gli investimenti in digital marketing. Le applicazioni di social analitics sono meno mature di quelle del web analitics. I vendors di queste tecnologie forniscono la possiblità alle aziende di analizzare e carpire il significato nascosto connesso ai dati che transitano sui social networks. Dati di interesse possono essere informazioni personali delle persone, gusti e comportamenti inerenti ai prodotti e al brand interessato. Il loro volume e l’eterogeneità dei tipi di dati prodotti attraverso diversi meccanismi, ad esempio cliccando su un “mi piace” o su un “+1”, unità alla rapida evoluzione di queste piattaforme, rendono le analisi complesse da realizzare. Le opportunità per le aziende nell’utilizzo di queste tecnologie consistono nella capacità di monitorare, scovare e predire. Attraverso il monitoraggio dei dati che transitano sui social networks è possibile ad esempio riuscire a capire la reputazione di un’azienda e dei suoi prodotti, oppure capire le necessità delle persone per anticipare il mercato lanciando nuovi prodotti. Queste applicazioni possono essere integrate con applicazioni di Business Intelligence o di Marketing Automation. • Web Real-time Communications: questa tecnologia, il cui acronimo è WebRTC, è in stato di draft nel processo di standardizzazione delle tecnologie web connesse ad HTML5 realizzato dal W3C. Essa è un framework open-source che permetterà di effettuare comunicazioni real-time attraverso i web browser. Questa tecnologia è stata 10 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise rilasciata nel Giugno 2011 dall’Ericsson Labs, ed è supportata da Google, Mozilla, Firefox, Opera e Microsoft. Il gruppo di lavoro che sta continuando lo sviluppo di questa tecnologia vuole definire un set di protocolli per facilitare le comunicazioni attraverso i web browser. Le aziende possono utilizzare questa tecnologia, una volta matura, per realizzare applicazioni web real-time scalabili e con poca latenza. Attraverso questa tecnologia possono essere realizzate pagine web che vengono utilizzate come oggetti di comunicazioni all’interno di processi di workflow, e-commerce e altri processi aziendali. Altro utilizzo utile all’interno delle aziende legato al contesto delle videoconferenze è la possibilità di creare nel browser una connessione video real-time con un altro device che supporta WebRTC o un server WebRTC attraverso il procotollo RTP(acronimo e piccola definizione ). • Public Web Apis: attraverso l’uso di queste semplici interfacce software si possono esporre dati, interi processi di business e funzionalità applicative, basandosi sui principi dell’architettura Web-oriented( WOA ). Le aziende fornendo queste Api possono espandere la loro offerta di servizi attraverso siti web di terze parti o applicazioni mobile, e ottenere una connessione B2B facilitata, migliorando l’integrazione con i propri partners. È possibile raggiungere un elevato numero di clienti grazie alla diffusione delle Api attraverso il web, il mobile e le piattaforme social. I benefici per le aziende nell’ esporre servizi attraverso queste interfacce sono la possibilità di aumentare l’interoperabilità e l’integrazione dei processi e i servizi esposti con partner B2B attraverso il web. • Big data: I big data sono un insieme di dati di grandi dimensioni, che vengono creati con frequenza elevata e sono eterogenei. Essi necessitano di essere gestiti in modo efficiente, e attraverso forme innovative di elaborazione sfruttarne le informazioni che sono contenute il cui accesso deve essere quanto più possibile disponibile in breve tempo. La necessità di gestire grossi volumi di dati eterogenei ha fatto emergere un insieme di soluzioni hardware e software innovative per l’accesso,la lettura, la presentazione e l’analisi. Esempi di sorgenti di big data sono le tecnologie utilizzate dalle aziende a livello operativo, il logging in internet, social media e sorgenti streaming. In termini di volume 11 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise invece, la crescita delle tecnologie mobile sta generando l’incremento della mole dei dati, dovuta al fatto che l’accesso alla rete è consentito sempre più in mobilità, rispetto al recente passato basato sull’accesso tramite desktop e laptop. L’approccio innovativo che si sta cercando di perseguire è la gestione integrata di tutte le tipologie di dati, a differenza della visione odierna che prevede l’integrazione solo di alcuni tipi di dati,a causa delle limitazioni tecnologiche. Le tipologie dei dati da dover integrare ed analizzare vanno da dati completamente destrutturati fino a documenti interamente strutturati. Si intende sviluppare tecniche innovative che effettuino l’elaborazione dei big data in stream e non solo attraverso processi batch, e che permettano di accedere ai dati in diverse maniere, ed esempio non solo in modo tabulare o testuale. Le aziende che producono grossi volumi di dati nei loro processi di business e hanno difficoltà nel gestire la memorizzazione e l’accesso alle informazioni contenute, possono sfruttare le soluzioni proposte dai vendors al fine di migliorare la qualità delle analisi di tutti i dati prodotti sia azienda che attraverso il web, come ad esempio i dati provenienti dai social media e portali commerciali. • Mobile web application: Questo tipo di applicazioni client server possono essere accedute da qualsiasi dispositivo mobile con un web browser. Attraverso l’uso di HTML e AJAX ( Asinchrous javascript and xml ) , e sfruttando le features introdotte nel processo di standardizzazione di HTML5, offrono un’usabilità ed una user experience molto vicine a quelle ottenute attraverso l’uso di plug-in ad hoc creati per le RIA (rich internet application), come Flex, Silverlight e JavaFx. Le aziende possono offrirle in parallelo o in maniera esclusiva alle applicazioni mobile native, per essere accessibili da tutti i dispositivi mobile. La necessità delle aziende di utilizzare le applicazioni web mobile è il voler raggiungere il maggior numero possibile di clienti, indipendentemente dal sistema mobile che essi adottano. L’uso delle mobile web application permette di gestire la frammentazione del mercato mobile, composto da diversi sistemi operativi, che è in continua evoluzione. L’unica problematica da gestire nello sviluppo di questo tipo di applicazioni consiste nel diverso supporto fornito alle features di HTML5 da parte dei browser. La diffusione del rendering engine web kit nei browser mobile permetterà di minimizzare questa criticità nella portabilità completa delle mobile web application. 12 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise • HTML5: è la nuova versione dello standard HTML in corso di standardizzazione da parte del consorzio W3C. Attraverso questa nuova versione, insieme a javascript e CSS3, si vuole fornire un insieme di caratteristiche innovative ai siti web. In questo modo si possono ottenere usabilità e user experience avanzate senza dover ricorrere a software di terze parti da installare nel browser, come nel caso delle RIA (Rich Internet Application). HTML5 è un insieme di features, ognuna delle quali può essere utilizzata isolata o connessa ad altre per ottenere dei benefici specifici nelle applicazioni web. Esempi di utilizzo sono inserimento di audio e video tramite tag, uso di web sockets, web workers, ecc… Essendo il processo di standardizzazione ancora in corso, le specifiche definite possono subire cambiamenti, ma aspettare la maturazione completa dello standard potrebbe essere un errore per le aziende che vogliono utilizzare HTML5 nelle proprie web application. I browser stanno fornendo un supporto crescente allo standard, guidato dai dispositivi mobile e a seguire le piattaforme desktop. I benefici dell’uso di HTML5 da parte delle aziende consistono nel fornire applicazioni web, sia mobile che desktop, per clienti partners o dipendenti che possono valersi delle nuove specifiche per incrementare le caratteristiche da fornire, in termini di usabilità e user experience. • Semantic web: Il web semantico è una definizione creata per indicare l’accesso alle risorse del web in maniera leggibile dalle macchine. Attraverso l’uso di diverse tecnologie a supporto si vuole passare ad un web basato su documenti a un web basato su dati, che possono essere ricercati ed acceduti tramite l’aggiunta di metadati che ne descrivono la struttura e il contenuto. Le tecnologie utilizzate per aggiungere informazioni semantiche ai dati del web permettono di definire proprietà e relazioni tra le informazioni prodotte. Anche se standardizzare il processo e le tecnologie per creare il web semantico non è facile, la diffusione dei social networks e dei social tagging utilizzati in face book, Youtube, Twitter, e altri può portare ad una facilitazione e una velocizzazione della creazione di questa nuova visione del web. Gli utenti del web aggiungono tags semantici sia in maniera diretta che indiretta, aggiungendo links ad altre risorse e siti per qualsiasi cosa vogliono comunicare, o aggiungendo commenti a topics o discussioni sui social networks . I benefici per le aziende che il web semantico può portare sono diverse. Poter 13 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise condividere informazioni attraverso il web in maniera leggibile ed interpretabile dalle macchine permette di aumentare l’interoperabilità della applicazioni e dei siti web, potenziare la ricerca automatizzata di informazioni nella rete globale, effettuare ricerche efficaci basate su contenuto. Attraverso l’uso del tagging dei dati basato su vocabolari, le ontologie del web semantico permettono di creare concetti sofisticati, creare relazioni tra sistemi sulla base di insiemi di dati che non sono esplicitamente definiti, migliorando la qualità della gestione dei contenuti, l’accesso alle informazioni, l’interoperabilità tra i sistemi e l’integrazione dei database. • Cloud computing: Esso consiste nel fornire come servizio l’accesso e l’utilizzo di risorse IT scalabili e configurabili, che vengono distribuite attraverso tecnologie web. Le aziende attraverso il modello di servizio del cloud possono aumentare “on the fly” capacità e possibilità di utilizzo delle risorse IT, sia software che hardware in base al servizio acquistato. Esistono diverse configurazioni di servizi basati sul cloud a cui le aziende possono accedere in base alle esigenze del proprio business: software as a service, infrastracture as a service e platform as a service. • Software as a service: con questo termine di indica un modello di distribuzione di software applicativo basato sul cloud il cui vendor permette l’accesso tramite il web a un numero elevato di clienti attraverso infrastrutture e tecnologie di back-end multiutente e scalabili. Questo approccio permette ai clienti, che possono essere sia clienti customer che aziende esterne, di poter usufruire dell’applicazione senza costi iniziali di acquisto di hardware e licenze software; per i Vendor delle applicazioni gestite in cloud questa struttura permette una gestione centralizzata dell’applicazione, diminuendo i costi di manutenzione e supporto ai clienti. • Infrastructure as a service: con questo termine si indica l’accesso on-demand a capacità di calcolo offerte come servizio da un service provider. Può essere utilizzato dalle aziende per sostituire l’acquisto di server e data center propri con l’accesso in remoto attraverso le tecnologie web o reti private alle risorse richieste. Le risorse risiedono in remoto e sono accedute in maniera configurabile e condivisa. Alcuni scenari d’uso di questo tipo di servizio sono: Web hosting, utilizzo di grosse risorse di calcolo necessari in 14 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise determinati software, utilizzo dell’infrastruttura per sviluppo e test. Gli scenari più maturi in cui viene utilizzato questo tipo di servizio sono l’hosting di siti web o di applicazioni web-based, e l’utilizzo dell’infrastruttura come back-end di applicazioni mobile. I maggiori benefici nell’adozione di questo tipo di servizio sono la riduzione dei costi nell’accesso a risorse IT, soprattutto per le piccole e medie aziende, sia per l’acquisto che viene gestito in dipendenza con le proprie esigenze che per la manutenzione dei sistemi che viene gestita dal service provider. • Platform as a service: Con questa definizione di servizio si intende l’offerta alle aziende di capacità di calcolo e di un ampio range di applicazioni che forniscono alle aziende servizi di infrastruttura per sviluppare, testare, implementare e gestire le applicazioni aziendali senza i costi e la complessità associati all'acquisto, la configurazione, l'ottimizzazione e la gestione dell'hardware e del software di base. La piattaforma viene distribuita tramite un approccio cloud-centric. I benefici per le aziende nell’uso di questo servizio sono una maggiore interoperabilità e integrazione dei processi e dei dati all’interno dell’azienda che vengono gestiti da applicazioni sviluppate sulla piattaforma con l’ausilio di meccanismi di interazione e cooperazione; inoltre vengono diminuiti i costi di manutenzione e gestione di hardware e software. • WOA: L’architettura orientata al web è un sottotipo dell’architettura orientata ai servizi (SOA) che sfrutta ampiamente le tecnologie web. Essa enfatizza il concetto della generalità delle interfacce attraverso l’uso di cinque costrutti: l’identificazione delle risorse (ad esempio utilizzando uniform resource identifier [URI]), manipolazione delle risorse attraverso una loro rappresentazione (esempio utilizzando metodi HTTP), uso di messaggi auto-descrittivi (esempio uso dei tipi Multipurpose Internet Messaging Extensions [MIME] ), hypermedia come motore per gestire lo stato delle applicazioni (esempio links) e la neutralità dell’applicazione. Questo tipo di architettura viene spesso riferita come rapresentational state transfer (REST). L’architettura WOA ha dominato le implementazioni user-to-application (U2A) per anni. Essa è usata di frequente per comunicazioni internet di tipo B2B, ed è stata utilizzata con successo in alcuni casi per comunicazioni intraenterprise application-to-application (A2A). Alcune aziende hanno 15 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise scelto questo tipo di architettura in aggiunta o in sostituzione dei Web Services. I maggiori benefici che le aziende possono ottenere dall’utilizzo di questo tipo di architettura sono un significativo incremento della condivisione ed estendibilità dei servizi offerti dalle aziende attraverso il web enfatizzando la neutralità rispetto alle applicazioni delle interfacce e l’accesso orientato agli hypermedia; inoltre questo approccio permette di velocizzare maggiormente l’integrazione tra le applicazioni, diminuire i costi e sforzi nelle modifiche di applicazioni e sistemi ed aumenta la riusabilità dei servizi. • MADP: Mobile application development platforms sono delle piattaforme che forniscono una serie di servizi integrati per gli sviluppatori di applicazioni mobile. Esse forniscono servizi per progettazione, codifica, integrazione, testing, pubblicazione, e la gestione delle applicazioni mobile di tipo business-to-consumer ( B2C ), business-tobusiness ( B2B ) e business-to-employee ( B2E ). I vendors di queste piattaforme rilasciano di solito toolkit nativi, web e cross-platform. Questo tipo di piattaforme rappresentano l’evoluzione e la convergenza di mobile consumer application platforms ( MCAP ) e mobile enterprise application platforms ( MEAP ). I benefici per le aziende nello sviluppo di applicazioni con queste piattaforme sono la possibilità di incrementare la produttività in caso di applicazioni per i dipendenti aziendali, o aprire l’azienda a nuove opportunità di business sul canale mobile, sia in via di applicazioni web che applicazioni native o ibride. In entrambi i casi il fattore determinante nella convenienza di utilizzare queste piattaforme è legato alla rapida diffusione di smatphone e tablet nei prossimi anni. All’interno di questo insieme di tecnologie che le aziende possono acquisire e inserire nelle proprie attività e infrastrutture, si nota che molte di queste tecnologie sono strettamente connesse al contesto mobile. Il suo sviluppo, in termini di dispositivi acquistati e di innovazioni che vengono introdotte con elevata frequenza, lo rende uno tra i maggiori settori su cui le aziende possono investire al fine di incrementare guadagni, aumentare l’efficienza dei processi e far evolvere e sviluppare l’insieme di attività che possono migliorare con l’approccio mobile. Il mobile odierno è incentrato sul paradigma app-oriented, ossia sullo sviluppo di applicativi mobile per poter fornire servizi e 16 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise funzionalità in qualsiasi settore aziendale e in tutti i tipi di interazioni: B2B, B2C e B2E. Un’azienda che vuole in questo momento investire nel mobile e nello sviluppo di applicativi a supporto delle proprie attività , deve gestire la frammentazione del mercato sia dei dispositivi che dei sistemi operativi. Questa duplice frammentazione comporta un aumento dei costi di sviluppo e di manutenzione nel tempo delle applicazioni mobile multipiattaforma, cioè se l’azienda vuole fornire applicativi che siano eseguibili su un vasto numero di piattaforme, sia hardware che software. Un’azienda che intende realizzare applicativi multipiattaforma deve quindi identificare i dispositivi hardware da utilizzare come punto di riferimento nello sviluppo delle applicazioni , e identificare i sistemi operativi che intende supportare. Di seguito viene proposta un’analisi di mercato incentrata sul tablet, che secondo stime di settore diventerà in futuro il dispositivo più utilizzato in ambito mobile, e un’analisi delle caratteristiche dei sistemi operativi mobile IOS e ANDROID che attualmente detengono le fette più grandi del mercato dei sistemi operativi mobile; in questa analisi viene descritto anche Windows 8, sistema operativo della Microsoft che con un approccio innovativo cerca di integrare il contesto mobile e quello desktop, fattore importante che permette un’integrazione del lavoro in mobilità e da ufficio. 1.2. Il tablet Il tablet è, in ordine cronologico, l’ultimo tipo di device introdotto nel mercato mobile dopo il laptop, il netbook e lo smartphone. Esso è stato prodotto inizialmente dalla Apple con sistema operativo IOS, ma in poco tempo questo dispositivo è stato proposto da diversi vendors su diversi sistemi operativi. Le sue caratteristiche peculiari sono uno schermo che varia tra i 7 e i 10 pollici di tipo touchscreen, attualmente quasi sempre capacitivo, e una potenza di calcolo mediamente superiore a quella degli smartphone (ad eccezione di smartphone di ultima generazione di fascia alta del mercato ); ulteriori caratteristiche hardware che vengono aggiunte, come il gps o la fotocamera, variano in base al modello e alla fascia di mercato. Secondo Gartner lo schermo di un tablet, per essere definito tale,deve essere di almeno 7 pollici. Rispetto ai PC portatili i tablet presentano migliori caratteristiche di portabilità anche grazie ad una maggiore durata della 17 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise batteria, d’altro canto,però, possono risultarne meno performanti in alcune specifiche attività e mancare di qualche caratteristica. Per quanto riguarda la connettività si trovano in commercio tablet dotati di sola connessione WiFi ed altri dotati di sim telefonica, che ne consente la connessione 3G e, in taluni casi, anche la possibilità di effettuare/ricevere telefonate ed SMS. La caratteristica principale del tablet è abbinare quindi una elevata mobilità l’utilizzo del display e della esperienza touch nelle applicazioni, che usufruendo delle dimensioni dello schermo sufficientemente grandi e dei sensori, permettono di ottenere scenari di utilizzo innovativi. Il tablet quindi può essere utilizzato sia come dispositivo multimediale e di consumo, sia come strumento di lavoro. In quest’ultimo contesto si stanno introducendo delle features aggiuntive, come la docking station, che permettono una migliore adattabilità del tablet in ambito Figura lavorativo. 2: Tablet Audrey 1.2.1. Storia Nonostante il tablet sia stato lanciato sul mercato con risultati vincenti nel 2010, la sua concezione risale alla fine degli anni ottanta, quando la penna e lo schermo tattile, già presenti nei calcolatori e pc fissi, riescono ad essere inseriti in dispositivi portatili grazie all’evoluzione dei microprocessori e soprattutto delle batterie. Nel 1968, il ricercatore Alan Kay dal centro Xerox PARC stava lavorando su un progetto che assomigliava molto al tablet odierno: il Dynabook. Inizialmente questo era pensato come dispositivo per bambini, ma non riuscì a conquistare il mercato. Nel 1994, 30 anni dopo il Dynabook, la Fujitsu lancia il tablet Stylistic, il primo ad offrire Windows 95 come sistema operativo. Figura 1: iPad Verrà utilizzato dai presidenti del G7 all’incontro di Halifax nel 1995.Negli stessi anni l’azienda DEC creò il tablet Lectrice, dedicato a leggere i file di testo. Nel 2000 viene presentato il tablet dell’azienda 3Com con il nome di Audrey (Figura 1). Questo dispositivo era pensato per la navigazione su internet con antenna e 18 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise tastiera wireless. Il 7 novembre 2002 la Microsoft presenta ufficialmente i tablet pc e il nuovo sistema operativo Windows XP Tablet Pc Edition, versione potenziata di Windows XP Professional, che consente l’inserimento dei dati non solo da manoscritto ma anche tramite voce. Nel 2003 Arrivano i tablet Intel Centrino; tutti i principali produttori di pc hanno almeno un tablet a listino, mancano solo Dell e Sony; il prezzo medio è superiore ai 2000 euro, non sono esposti o in vendita in nessun negozio fisico, è quasi impossibile vederli e testarli prima dell’acquisto. Il destino dei tablet è destinato a cambiare quando nel 2010 Apple lancia l’iPad, il primo tablet ad aver ricevuto un successo incredibile, superando tutte le previsioni, vendendo decine di milioni di pezzi (Figura 2). Il device di Apple ha dato l’avvio alla moderna scalata al successo mondiale dei tablet. 1.3. Analisi di mercato Il quadro generale del mercato , sia dektop che mobile, dal 2007 (data di produzione dell’IPhone) ad oggi si è evoluto in maniera radicale. Nel periodo in cui venivano prodotti i primi tipi di smartphone i Pc avevano la posizione di leader come device nell’information tecnology, con Microsoft quasi monopolista nei sistemi operativi, Intel leader nel mercato dei microprocessori e HP aveva acquisito da poco il ruolo di leader nella vendita dei Pc sostituendo la Dell, venendo insidiato solo dai vendors asiatici nella fascia bassa di mercato. L’apparizione dei primi tablet non aveva destato alcun interesse. Apple, dopo il rischio di fallimento negli anni 90, stava crescendo, praticamente senza concorrenti, con l’iPod e con il sistema software e commerciale iTunes costruito attorno ad esso; stava inoltre recuperando terreno con il Mac nella fascia alta dei PC. Nokia regnava incontrastata (con circa il 40% su scala mondiale) nel mercato dei cellulari e in quello in fase di sviluppo degli Smartphone, ove RIM, con il suo Blackberry, si era ritagliata una nicchia nel settore business. I social network erano apparsi da qualche anno all’orizzonte, ma la loro popolarità non era ancora esplosa. Il cloud computing esisteva ma, tranne poche eccezioni, si era ancora a livello di progetti di ricerca (ICT4Executive). 19 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 1.3.1. Analisi device mobili Smartphone e tablet sono i protagonisti dell’attuale successo del mercato mobile: secondo i dati forniti da Gartner, società multinazionale leader mondiale nella ricerca e analisi nel campo dell’information tecnology, nel secondo trimestre del 2012 sono stati 153.9 milioni gli smartphone venduti, in crescita del 42.1% rispetto ai 108.3 milioni di unità dello scorso anno; per quanto riguarda i tablet, invece, sono state 388.950 le unità vendute, in crescita del 90.5% rispetto alle 204.150 unità nello stesso trimestre dello scorso anno. Questi ultimi dati sono stati resi noti da SIRMI, società di Consulenza, Ricerche e Analisi di Mercato, specializzata nel settore della digital technology, che ha da poco pubblicato i risultati sul monitoraggio dei dati relativi all’andamento del secondo trimestre del 2012: come rappresentato nella Tabella 2, il mercato dei Client evidenzia, rispetto al corrispondente trimestre del 2011, un incremento complessivo del 4% circa (corrispondenti a circa 1.485.000 unità vendute) nonostante quasi tutte le tipologie di prodotto registrino un trend negativo, con la peggiore performance a carico dei Netbook (68,3%). Registrano un incremento solo le vendite di tablet (+90%) e NoteBook professionali (+6%) Unità consegnate Q2.11 DT Consumer 109.000 DT professional 255.900 NB consumer 392.200 NB professional 287.000 Netbook 164.300 Tablet 204.150 Thin client 5.400 Totale PC Client 1.427.350 Unità consegnate Q2.12 92.550 242.810 390.250 304.100 52.100 388.950 5.290 1.485.120 Variazione % Quote % Quote % -15,10% -5,10% -0,50% 6,00% -68,30% 90,50% -2,00% 4,00% Q2.11 7,60% 17,90% 27,50% 20,10% 11,50% 14,30% 0,40% 100,00% Q2.12 6,20% 16,30% 26,30% 20,50% 3,50% 26,20% 0,40% 100,00% Tabella 1: Analisi di mercato PC Client Q2.12 (SIRMI) Stando alle previsioni Gartner (Figura 4), i tablet continueranno ad avere un ruolo dominante, in termini di unità vendute e tassi di crescita, nel mercato client anche nel futuro. Si stima infatti che nel 2016 questi device raggiungeranno a livello mondiale oltre le 300 milioni di unità vendute, di poco inferiore a quelle dei mobile pc (327 milioni). 20 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 4: Gartner. Previsioni mercato client europeo Mercato client 2016 (W.E.) 12% 50% 24% Desk-‐based PC Mobile PC Ultramobile Notebook Tablet 14% Figura 5: Gartner. Quote di mercato dei dispositivi nel mercato europeo 2016 Lo sviluppo del mercato mobile, con la diffusione di smartphone e tablet, congiuntamente allo sviluppo della banda larga e del wifi, contribuiranno alla crescita del traffico internet mobile, che, stando alle previsione fornite da Cisco, crescerà entro il 2016 di ben 18 volte, raggiungendo un volume dati annuale di 130 exabyte (1018 byte). Nel 2011, il 22% del traffico IP è stato originato da dispositivi diversi da pc, ma entro il 2016 tale quota crescerà fino al 31%. Nel 2011 solo il 6% del traffico internet consumer è stato originato da dispositivi diversi da pc, ma entro il 2016 tale quota crescerà al 19% (con un CAGR del 21 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 26%). Il traffico proveniente da dispositivi wireless supererà il traffico proveniente da dispositivi cablati entro il 2016, raggiungendo il 61% del traffico IP, in aumento rispetto al 45% del 2011. 2011 2016 MBs per month MBs per month Non Smartphone M2M Smartphone E-‐Book Reader Tablet Laptop 4,3 108 71 266 150 2576 750 2880 517 4223 2131 6942 Figura 6: Global mobile data traffic (CISCO) Exabytes per month 12 10,8 10 8 6,9 6 4,2 4 2 0,6 2,4 1,3 0 2011 2012 2013 2014 2015 2016 Exabytes per month Figura 7: Previsioni traffico IP 2016 (CISCO) 1.3.2. Sistemi operativi mobile Stando ai dati pubblicati da IDC, Tabella 3, sul monitoraggio del mercato Mobile1,, Android e iOS dominano il mercato dei sistemi operativi mobile, detenendo congiuntamente oltre l’80% del mercato. Leader di mercato è Android che detiene il 59% del mercato con un venduto complessivo di 89.9 milioni di device, registrando una crescita del 145% rispetto al primo trimestre di un anno fa. Segue iOS, con 35.1 milioni di unità 1 Worldwide Quarterly Mobile Phone Tracker di IDC 22 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise vendute, e in termini di share il sistema operativo di Apple cresce da 18.3% al 23%. Symbian è il sistema operativo che ha marcato il declino più forte nell’ultimo anno (risultato generato soprattutto dalla decisione di Nokia di passare da Symbian a Windows phone); in calo anche la domanda dei dispositivi Blackberry. Linux continua a mantenere in modo stabile la sua presenza limitata sul mercato, grazie soprattutto al supporto di Samsung per Bada. Windows phone/Windows mobile non ha ancora trovato la sua strada per emergere, ma il 2012 potrebbe essere l’anno della svolta, soprattutto grazie alla collaborazione Nokia-Windows e al lancio di Windows 8. Sistema Operativo Variazione Unità consegnate Unità consegnate % Quote % Quote % Q1.11 Q1.12 Q1.11 Q1.12 Android 36,70 89,9 145,0% 36,1% 59,0% iOS 18,60 35,1 88,7% 18,3% 23,0% Symbian 26,40 10,4 -60,6% 26,0% 6,8% BlackBerry OS 13,80 9,7 -29,7% 13,6% 6,4% Linux 3,20 Windowd phone7/ windows mobile 2,60 3,5 9,4% 3,1% 2,3% 3,3 26,9% 2,6% 2,2% Other 0,30 0,4 33,3% 0,3% 0,3% TOTAL 101,6 152,3 49,9% 100,0% 100,0% Tabella 2: IDC.Analisi di mercato sistemi operativi mobile 2012 1.3.3. Mercato tablet Il mercato dei tablet è caratterizzato da un tasso di crescita della domanda molto elevato, e da una cadenza in termini di innovazione, modelli e specifiche hardware che vengono prodotti altrettanto elevata. Dall’ultimo rapporto fornito dalla Gartner, emergono dati interessanti sul mercato dei tablet e sulle prospettive di vendita negli anni a venire. Dal grafico sottostante (Figura 8) si può notare come nel corso del 2011 il mercato abbia subito un incremento del 341% rispetto all’anno precedente raggiungendo le 59.870 unità vendute, dato quest’ultimo destinato quasi a raddoppiarsi nel 2012, stando alle previsioni, 23 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise con un’ulteriore incremento del 233%. Un mercato in continua espansione, con elevati tassi di crescita, che si stima raggiunga le 306.584 unità di device venduti nel 2016. Figura 8: Gartner. Previsioni di vendita dei tablet 4% 2% 0% 41% 2012 Android iOS Windows QNX 53% other Figura9: Gartner. Quote di mercato sistemi operativi mobili 2012 Stando alle previsioni di Gartner il mercato è destinato a cambiare nel prossimo futuro: com’è graficamente rappresentato in Figura 10, si stima che nel 2016 iOS sia destinato a perdere la sua posizione dominante, leader di mercato diverrà Android, con il 51% dei dispositivi venduti, in crescita le quote del sistema operativo Windows. 24 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 10: Gartner. previsioni quote di mercato sistemi operativi mobili 2016 Figura 3: Confronto quote di mercato sistemi operativi mobile 2012/2016 1.4. I tablet in azienda In Italia cresce sempre di più il numero dei lavoratori che, esercitando la loro attività lavorativa in mobilità, necessità di accedere/produrre informazioni aggiornate attraverso l’utilizzo di dispositivi mobili; le diverse categorie possono essere supportate da soluzioni specifiche di mobile business. Le soluzioni mobile hanno un impatto pervasivo su tutta la catena del valore di un’impresa, potenzialmente molte sono le attività migliorabili attraverso l’utilizzo di una 25 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise soluzione mobile. I benefici che queste soluzioni possono portare sono spesso incredibilmente rilevanti; ne sono una significativa dimostrazione i valori degli indicatori di redditività di questi investimenti: i tempi di ritorno molto brevi (spesso inferiori all’anno) e indicatori di profittabilità molto alti. Tra i motivi per cui le aziende stanno transitando verso il mobile ci sono la possibilità di ridurre i costi, il maggior controllo del business, la riduzione dell’uso della documentazione cartacea nelle attività aziendali e un aumento dell’efficacia e dell’efficienza delle forze lavoro sul campo. Cresce sempre più il numero delle aziende che decide di introdurre dispositivi tablet all’interno dell’organizzazione. A confronto con i “tradizionali” device mobili (Notebook, Netbook, e Smartphone) i tablet coniugano diverse caratteristiche fondamentali della mobility applicata al business: elevata portabilità, buona capacità di visualizzazione e potenza di calcolo. I tablet, inoltre, si differenziano dagli altri device mobili anche per alcune peculiarità innovative in grado di influenzare la user experience: introducono una modalità di fruizione radicalmente diversa, abilitata all’utilizzo di schermi moultitouch, che stravolge le tradizionali interfacce uomo-macchina (basate su tastiere e mouse); sono “always on”, sempre disponibili e con tempi di accensione pressoché istantanei. Anche in Italia, come testimoniato dal più recente studio della School of Management del Politecnico di Milano sul tema della mobility, i professionisti dell’Information Technology sembrano apprezzare queste caratteristiche del tablet, scommettendo sempre di più sul loro futuro in azienda. Questi i risultati dello studio condotto su 230 CIO delle principali aziende italiane: come rappresentato dal grafico in Figura , ad oggi oltre la metà dei CIO italiani ha già introdotto in azienda dispositivi tablet (56%) e se ne ritiene soddisfatto, mentre tra i CIO che ancora non li hanno adottati la maggioranza si dimostra intenzionata a farlo; tra le motivazioni che hanno portato i pochi CIO (7%) ad essere reticenti all’introduzione dei dispositivi vi sono l’assenza di personale in mobilità da supportare o la mancata necessità nel proprio business, o la recente conclusione di progetti che prevedano l’introduzione di altri device. 26 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise I dispositivi tablet sono già stati introdotti nella sua azienda? 12% 56% No, nessuna intenzione per ora Verranno adottati nel medio lungo/periodo Verranno adottati nel breve periodo 25% Già introdotto 7% Figura 12: Tablet in azienda (School of Management del Politecnico di Milano) Confrontando i risultati con quelli ottenuti dall’edizione 2011della ricerca (Figura 13) si rileva che il numero dei CIO che ha introdotto in azienda un dispositivo tablet è cresciuto dal 47% al 56%, e soprattutto che la dimensione di chi non ha intensione di adottarne si è ridotta drasticamente. Se nel 2011 un CIO su quattro si era dichiarato “disinteressato all’adozione”, a poco più di 6 mesi di distanza i disinteressati sono scesi a meno di 1 su 10. Tra coloro che lo scorso anno si dicevano intenzionati a introdurre “a breve” o “nel medio periodo” un tablet in azienda, oltre la metà è già passata dalle parole ai fatti dotando il personale aziendale di tali dispositivi. 27 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 47% 56% 10% 12% 15% 25% 28% 7% 2011 No, nessuna intenzione per ora Verranno adottati nel breve periodo 2012 Verranno adottati nel medio/lungo periodo Già introdotto Figura 13: Confronto risultati indagine 2011/2012 (School of Management del Politecnico di Milano) E’ interessante notare, al fine di sottolineare la rapidità evolutiva di tale mercato, come le esigenze, le opinioni, le scelte siano notevolmente cambiate: infatti, analizzando le nuove risposte delle aziende che solo un anno fa si dichiaravano disinteressate all’acquisto dei tablet, il 23% ha dichiarato di aver cambiato idea e di aver già adottato un dispositivo tablet, il 45% ha rivisto le proprie scelte e si dichiara intenzionato all’acquisto , solo il 32% resta sulla sua posizione di scarsa utilità di tali dispositivi nella propria azienda ( Figura 14). Figura 14: Risposte 2012 dei CIO che nel 2011 si erano mostrati disinteressati all'adozione di tablet in azienda 28 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Il settore enterprise sta affrontando la transizione verso il mobile business in un intervallo di tempo inferiore a qualsiasi altra recente tecnologia comparsa sul mercato. Questa rapida transizione comporta rischi dovuti all’acquisizione di tecnologia che può non essere matura rispetto a problematiche come gestione tempi e costi di sviluppo, formazione del personale IT, esigenze e caratteristiche dei dipendenti, regole per la gestione della privacy, rischi sulla sicurezza dei dati aziendali. Nonostante queste incertezze gli investimenti fatti dalle aziende nelle tecnologie mobile sono cresciuti e continueranno a crescere nei prossimi anni. Come emerso nel report del 2011 dell’Osservatorio del Politecnico di Milano le figure professionali in azienda maggiormente coinvolte in questo cambiamento si confermano gli executive e i C-level, dal momento che il 65% già utilizza questi dispositivi, mentre il 33% li utilizzerà in futuro. Percentuali più basse interessano le altre tipologie professionali: il personale di vendita è in parte già equipaggiato (29% dei casi), ma soprattutto è destinato a ricevere un pc/tablet in futuro (65%); ancora più basse le percentuali dei manutentori, infatti un 13% è già fornito e un 40% in attesa di diventarlo nel breve-medio periodo. Lo stesso studio ha cercato di rilevare eventuali fenomeni in atto di sostituzione/cannibalizzazione tra i dispositivi mobili utilizzati in azienda. Quasi 9 CIO su 10 (88%) ritengono che i tablet andranno ad affiancarsi a gli Smartphone, riducendo il ruolo di questi ultimi a specifiche applicazioni mobili (2 CIO su 10 ritengono addirittura che per l’accesso a queste specifiche applicazioni mobili i tablet ridurranno in modo significativo il ruolo degli Smartphone). 29 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 15: Tablet vs Smartphone (School of Management del Politecnico di Milano) Se nel caso degli Smartphone i CIO si aspettano un affiancamento con i tablet, nel caso di Notebook emerge la previsione di un’effetto sostituzione; quasi il 90% dei CIO intervistati ritiene che i tablet, con riferimento ad alcune tipologie di dipendenti, prenderanno il posto dei pc portatili. Figura 14: Tablet vs pc portatili (School of Management del Politecnico di Milano) 30 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 1.5. Bring your own device La crescita del mercato mobile e la diffusione dei dispositivi mobile nel settore enterprise, sta portando negli ultimi anni a device mobili dalla doppia veste: personali da una parte e professionali dall’altra; un unico dispositivo, di proprietà del personale aziendale o concesso loro in dotazione dalle aziende stesse, utilizzato sia per attività lavorative sia per esigenze personali. Tale fenomeno, noto come BYOD (acronimo di Bring Your Own Device) ha una notevole incidenza sulla sicurezza dei servizi informatici aziendali con il rischio di mettere a repentaglio informazioni riservate. Il BYOD cambierà lo scenario dell'enterprise mobility e i CIO sono chiamati a strutturare strategicamente le policy di gestione di questi dispositivi per minimizzare i rischi legati ai problemi di sicurezza derivanti dall'uso improprio degli stessi sulle reti e all'interno dei sistemi aziendali. Il BYOD spinge quindi i responsabili IT a ricercare una possibilità di equilibro tra abilitazione e flessibilità da un lato e necessità di controllo e sicurezza dall'altro. La Symantec, azienda californiana nota per la produzione di software destinati alla protezione dei pc da attacchi informatici, ha commissionato uno studio ad Astraricerche per cercare di capire abitudini e intenzioni di oltre mille dipendenti e collaboratori di aziende italiane di medie e grandi dimensioni (da 100 ad oltre 2500 addetti). E’ emerso come molte delle aziende in esame non abbiano stilato delle policy per regolare l’utilizzo dei dispositivi mobili da parte dei dipendenti; in alcuni casi, inoltre, si tenta di estendere le regole relative ai dispositivi desktop anche a quelli mobili, senza tener conto delle necessità specifiche di questo secondo ambito. Questi i punti più significativi della ricerca(Figura 19): • Tra i 1.062 intervistati poco più della metà, il 54,2% ha ricevuto richiesta di installare un software antivirus sul proprio dispositivo personale o su quello concesso in dotazione, e solo nel 37,1% dei casi con l’obbligo di tenerlo aggiornato. Una parte di coloro che sono lasciati liberi di decidere, sceglie di sua iniziativa di affidarsi ad un antivirus, ma il 28,1% evita di scaricarlo o, se lo fa, dimentica di eseguire gli aggiornamenti. • A poco più di un quarto dei lavoratori (25,9%) viene richiesta l’impostazione di una 31 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise password a salvaguardia dei dati in caso di furto o smarrimento, e il 15,2% del campione è stato invitato a non consentire l’uso dei dispositivi ad altre persone • Nel 56,7% dei casi l’istallazione di app mobili è consentita senza alcun limite; solo il 18.1% delle aziende vieta l’aggiunta di applicazioni al sistema rispetto a quelle eventualmente preinstallate, mentre il 15% dei dispositivi viene configurato in modo da impedirlo (Figura 21). • Per quanto riguarda l’istallazione di app circa un terzo degli intervistati (38% in relazione a device di proprietà e 30,9% per quelli concessi in utilizzo dall’azienda) è solito scaricare applicazioni anche dagli store non ufficiali e, rispettivamente nel 9% e 16% dei casi, è disposto ad eseguire il jailbreak per rimuovere eventuali limitazioni del sistema e installare l’elemento desiderato. Figura 19: Regole e sistemi di protezione imposti dall'azienda nell'uso di dispositivi personali e aziendali 32 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 5: Le applicazioni sui dispositive personali e aziendali utilizzati per accedere al sistema informative aziendale Symantec sottolinea come app store non ufficiali e il jailbreak sono tra le principali cause di minacce e malware sui dispositivi mobili. Dalla stessa analisi emergono anche dati relativi ai comportamenti del personale aziendale al manifestarsi di un guasto, di una violazione, di furto o smarrimento del dispositivo (Figura 21); anche in questo caso le reazioni dei singoli risentono dell’insufficienza di indicazioni precise da parte delle aziende. Figura 21: I comportamenti in caso di gravi rischi per la sicurezza dei dispositivi personali e aziendali utilizzati per accedere al sistema informativo aziendale 33 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Al manifestarsi di un problema che metta a rischio la sicurezza dei dati aziendali il 38.6% degli intervistati cercherebbe supporto rivolgendosi al responsabile IT della propria azienda. Dietro la tendenza a non chiedere aiuto al personale specializzato aziendale si celano diversi motivi: il 32,7% dei lavoratori dichiara di non volersi sentire in difetto, il 20% pensa invece che al manifestarsi del danno potrebbe esser troppo tardi per poter riparare; il 19,4% ammette di temere sanzioni disciplinari; seguono il 13,3% di coloro che temono sanzioni economiche e la stessa percentuale di chi ritiene che la propria azienda non abbia le competenze per risolvere il problema, infine si registra un 11,2% che si dichiara preoccupato di un’invasione della privacy. Le aziende che praticano BYOD devono disporre di policy per la sicurezza dinamiche e flessibili. Le policy per il mobile devono essere costantemente aggiornate, in modo da poter affrontare e gestire nuove problematiche emergenti e nuovi trend dovuti alla costante innovazione. Riportando quanto dichiarato da Symantec, elemento fondamentale nell’elaborazione di policy aziendali è la comunicazione ai dipendenti con aggiornamenti continui. 34 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Capitolo 2 Analisi sistemi operativi mobile Il mercato offre attualmente diverse alternative per quanto riguarda i sistemi operativi, dall’analisi condotta su 162 CIO italiani risulta che meno di un CIO su 4 dichiara di aver identificato un unico sistema operativo di riferimento per il futuro (Figura ) lasciando quindi la porta aperta anche ad altri sistemi (e relativi dispositivi). Il 70% dei CIO afferma di aver già identificato due (29%) o più (41%) sistemi operativi di riferimento, mentre solo il 7% di non aver ancora scelto. Figura 17: La scelta dei sistemi operativi mobile nel settore enterprise 35 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 6: I sistemi operativi mobile nel settore mobile Anche nel mercato enterprise dei sistemi operativi mobili Apple iOS rappresenta, ad oggi, la scelta decisamente più diffusa; tuttavia nel prossimo futuro questa situazione sembra destinata a modificarsi. La natura evolutiva del mercato dei tablet, in cui sono entrati ulteriori players, non potrà che portare a un’offerta sempre più diversificata, che consentirà e richiederà di valutare con maggiore consapevolezza quale sia il tablet e il sistema operativo più adatto per le specifiche esigenze dell’utente business da supportare e per quelle dell’organizzazione. Inoltre i fenomeno del BYOD ( Bring Your Own Device) potrebbe avere trend di crescita significativi, non compatibili con un approccio “chiuso” al mondo dei sistemi operativi per tablet. In questo mercato oltre Google (con Android) e ad Apple (con iOS), soprattutto in ambito business, nel futuro potranno giocare un ruolo primario anche player come RIM (con QNX) e Microsoft (con Windows 8): il primo facendo leva sulla penetrazione raggiunta nel mondo enterprise con altri dispositivi, e il secondo perché vuole realizzare una crescente convergenza tra i dispositivi tradizionali (notebook, e in generale desktop) e nuovi device mobili, in modo da poter, da una parte, potenzialmente facilitare il porting di software tradizionali in ambiente mobile e, dall’altra, incentivare la diffusione sul mercato facendo leva sulla user experience degli utenti. Un tema sicuramente importante legato all’introduzione dei tablet in azienda è quello della sicurezza dei dati presenti in questi device mobili. Infatti, l’elevata portabilità 36 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise dei tablet li espone al rischio di furti e/o smarrimenti più frequenti, rispetto a quanto poteva accadere con i notebook. Per affrontare questo problema, più della meta dei CIO intervistati intende orientarsi verso architetture web-based per applicazioni mobili, evitando così di memorizzare in locale, sul dispositivo, dati aziendali sensibili che restano così accessibili solo da remoto e tramite autenticazione. E’ essenziale per le aziende dotarsi di una strategia di sicurezza solida, affiancata da un programma di sensibilizzazione e informazione degli utenti. Uno studio2 condotto da Trend Micro in collaborazione con Altimeter Group, Enterprise Mobility Foundation e Bloor Research evidenzia i livelli di adeguatezza delle piattaforme mobili in fatto di utilizzo delle stesse in ambito enterprise; valutandole sulla base di più fattori, fra cui la sicurezza integrativa, sicurezza applicativa, autenticazione, cancellazione sicura dei dati, firewall del dispositivo, virtualizzazione e altri ancora. Il sistema operatvo mobile più sicuro è risultato essere Blackberry, seguono iOS e infine Windows phone e Android. Dalle analisi effettuate emerge che il mercato dei tablet è in continua evoluzione e che nelle aziende c’è incertezza se scegliere un unico sistema operativo di riferimento sul quale sviluppare ed utilizzare le applicazioni aziendali o optare per un approccio multipiattaforma. I tre sistemi operativi mobile per tablet sui quali verrà effettuata un’analisi comparativa sono Android, Windows 8 e IOS, i quali nelle previsioni effettuate da Gartner saranno in futuro i 3 sistemi operativi che si divideranno il mercato. Mentre IOS e Android sono stati sviluppati principalmente per un uso in mobilità, Windows 8 vuole creare una rottura sulla divisione tra user experience e lavoro in mobilità e in ufficio, fornendo un sistema operativo che permetta un utilizzo integrato e uniformato dei due approcci. Questa caratteristica innovativa può permettere alla Microsoft di acquisire fette consistenti di mercato nel settore business, di cui Apple è attualmente il leader di mercato. 2 “Enterprise Readiness of Consumer Mobile Platforms” 37 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 2.1. Android Il sistema operativo Android è stato ufficialmente presentato il 5 novembre 2007 dall’Open Handset Alliance, associazione istituita ufficialmente lo stesso anno. Quest’ultima, capeggiata da Google, è formata da 35 membri (tra i quali operatori telefonici, produttori di device, produttori di semiconduttori, compagnie di sviluppo software e di commercializzazione) con lo scopo di creare standard open source per dispositivi mobili. La piattaforma fa il suo ingresso nel mercato degli smarthphone nell’ottobre del 2008, l’anno successivo del lancio dell’ Iphone, ma al contrario del suo principale competitor lo scopo di Android è di abbracciare una gamma quanto più vasta di terminali. Grazie alla sua natura open source e alla versatilità, oggi questo sistema operativo è il più diffuso in ambito mobile, coprendo tutte le fasce di mercato di device con caratteristiche eterogenee. 2.1.1. Caratteristiche tecniche Android viene rilasciato con licenza Apache, una licenza di software libero scritta dalla Apache Software Foundation (ASF) che ne consente l’utilizzo per ogni finalità. La distribuzione, modifica e vendita sono consentite purché si specifichi con un’informativa che si è utilizzato del software sotto questa licenza, preservando il diritto d'autore e l’esclusione di responsabilità nelle versioni modificate. Il sistema operativo oltre alle funzioni di base come la creazione e schedulazione dei processi, provvede a fornire tutte le risorse del dispositivo, come la fotocamera, i dati GPS, le funzioni Bluetooth, funzioni di telefonia e le connessioni di rete. L’architettura a livelli di Android permette di espandere facilmente le funzionalità del sistema, in questo modo si riescono a supportare tecnologie innovative come ad esempio l’NFC (Near Field Comunication), il riconoscimento facciale, dell’impronta digitale e la firma biometrica. Le applicazioni che girano sul sistema Android sono di diversi tipi; esistono una serie di applicazioni preinstallate tra cui telefono, email, agenda, browser web, e contatti, accessibili sia direttamente come applicazioni utente che indirettamente se richiamate dalle altre applicazioni. Le applicazioni create dagli sviluppatori possono essere vendute tramite il market ufficiale, il Google Play Store o distribuite attraverso siti di terze parti. Gli sviluppatori possono 38 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise contare su strumenti di sviluppo compatibili con la maggior parte dei sistemi operativi desktop, comprendenti un framework SDK scritto in linguaggio Java, un simulatore di dispositivo virtuale (ADT) e un editor visuale che utilizza XML per la creazione delle interfacce grafiche. Grazie a questi tool in pochi anni il market ufficiale di Android si è popolato di tantissime applicazioni e ad oggi è arrivato a contarne più di 600.000. 2.1.2. Versioni e compatibilità Il 28 Giugno 2012 è stato presentato il dispositivo che supporta l’ultima versione del sistema operativo Android 4.1, denominata Jelly Bean. Quest’ultima versione prosegue il cammino intrapreso il 19 ottobre 2011, data in cui è stata presentato Android 4.0 Ice Cream Sandwich, con il quale si è deciso di adottare un’unica versione di sistema operativo sia per tablet che per smartphone. La versione di Android utilizzata per i tablet era la 3.0 Honeycomb, tuttavia nel mercato sono presenti maggiormente dispositivi, sia smartphone che tablet, che montano la versione precedente 2.3 Gingerbread. Il sito ufficiale di Android riporta come sono distribuite le versioni di Android fra i dispositivi in commercio e mostra che la versione 2.3 Gingerbread è diffusa con una percentuale che sfiora il 60%, segue Ice Cream Sandwich, uscita nell’ottobre del 2011, con una percentuale inferiore al 24%, mentre Jelly Bean conta appena l’1,8% dei dispositivi che lo supportano (Dati raccolti durante la prima metà di ottobre 2012). Figura 22: Distribuzione percentuale delle versioni della piattaforma Android 39 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Uno dei fattori che porta le versioni più recenti a penetrare lentamente nel mercato è dovuto al fatto che ciascun produttore di hardware deve aderire a delle specifiche di compatibilità per rilasciare firmware corrispondenti a una versione specifica. Ogni versione di Android e delle relative API viene corredata da un documento dove vengono definite le specifiche di compatibilità, non opzionali, alle quali bisogna aderire. Questa condizione garantisce il funzionamento del sistema operativo su dispositivi con caratteristiche hardware molto diverse. Per effettuare un aggiornamento a una versione successiva è necessario attendere il rilascio del firmware che supporti tutte le API aggiornate e molto spesso succede che gli aggiornamenti Android avvengano in maniera più rapida rispetto allo sviluppo dei firmware da parte delle case produttrici. Per quanto riguarda le applicazioni, per esse è prevista una compatibilità definita “in avanti”, cioè saranno compatibili con il 100% dei dispositivi che montano il sistema operativo target dell’applicazione, e con tutte le versioni future; mentre la compatibilità con i dispositivi che montano versioni precedenti di Android non è garantita. Quindi una volta aggiornato il sistema, tutte le applicazioni installate continuano a funzionare, mentre non è detto che un’ applicazione sviluppata per versioni più recenti sia supportata da tutti i terminali in circolazione. 2.1.3. Sicurezza Mettere al sicuro da codice o utilizzo malevolo una piattaforma aperta richiede un robusto impianto di sicurezza; esso è stato progettato su più strati per garantire un elevato livello di flessibilità. La sicurezza del sistema operativo si basa sull’affidabilità fornita dal kernel Linux, nucleo della piattaforma Android. Questo tipo di kernel è utilizzato principalmente in contesti sensibili alla sicurezza, diventando riferimento di molte aziende e professionisti che operano su questa tematica. Android ne estende le caratteristiche, implementando un sistema operativo che disciplina in maniera stringente le comunicazioni tra le applicazioni; le risorse associate ad ogni applicazione sono isolate, come ad esempio i file, la memoria, il tempo di CPU e i dispositivi utilizzati, come fotocamera o bluetooth. Per realizzare questo, la piattaforma si basa su un sistema di autorizzazioni, un meccanismo di isolamento dei processi e l’abilità di rimuovere durante l’esecuzione i programmi 40 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise potenzialmente insicuri. Di default, le applicazioni non possono interagire tra loro e hanno accesso limitato al sistema operativo. Oltre agli strumenti di protezione offerti dal kernel, che identifica e isola le risorse di un’applicazione, esiste un ulteriore livello di sicurezza: tutte le applicazioni, incluse quelle native, cioè quelle sviluppate con il sistema operativo, girano in una Sandbox. Ciò vuol dire che vengono eseguite in un contesto protetto, con una parte dedicata del filesystem, in cui possono scrivere i dati privati. Poiché la Sandbox è gestita dal sistema operativo, tutti gli strati software oltre il kernel, vengono eseguiti all'interno di questo contesto. Questo meccanismo rende il sistema intrinsecamente sicuro, ma la filosofia di Google, che consiste nel dare massima autonomia all’utente rispetto alle personalizzazioni sul dispositivo, impatta sulla sicurezza. Infatti il sistema espone all’utente in maniera esplicita quali sono gli intenti delle applicazioni al momento dell’installazione e l’utente ha la possibilità di accettare o meno le richieste relative alle risorse che verranno utilizzate a tempo di esecuzione. In questo modo si presuppone che l’utente sia perfettamente consapevole delle operazioni autorizzate, cosa non sempre vera per tutte le tipologie di utilizzatori. Oltre a questa criticità ci sono fattori legati alla distrazione e alla non sufficiente esperienza. Molte applicazioni possono provenire anche da canali non ufficiali solitamente terreno fertile di software malevoli. Una delle cause dei problemi di sicurezza di Android consiste proprio nell’esistenza di questi market non controllati, anche se molti malware provengono proprio dal Google Play Store; infatti si è manifestata la difficoltà nell’automatizzare i processi di verifica delle applicazioni. A queste motivazioni si affianca anche il fatto che Android è open-source, ciò permette di conoscere nel dettaglio la struttura interna del sistema operativo e delle eventuali falle e ciò rende più semplice per gli aggressori mascherare le applicazioni. Altri fattori sono la facilità con cui si può accedere al developer account del Market, per il basso costo di iscrizione e i pochi controlli. Infine l’assenza di meccanismi pre-installati per la sicurezza rende opportuna l’istallazione di software antivirus, ma ciò è completamente a discrezione dell’utente. 2.1.3.1. Problemi legati alla sicurezza Nonostante la robustezza della piattaforma, nel corso del 2011 Android è risultato uno tra i 41 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise sistemi operativi mobile meno sicuri, sollevando diverse critiche sulle sue difese e sui sistemi di prevenzione attuati. Il report trimestrale della Intel McAfee relativo al primo trimestre 2012 mostra che l'interesse criminale nella piattaforma mobile ha subito un significativo incremento e che circa l’87% sulla totalità dei malware mobile registrati nei database erano relativi al sistema operativo Android. In particolare per questa piattaforma si è assistito a un incremento del 1.650% di software nocivi presenti nei database, passando da 400 malware memorizzati nel quarto trimestre 2011 a circa 7.000 nel primo del 2012. Nel secondo trimestre del 2012 la piattaforma Android ha coperto la quasi la totalità dei malware mobile rilevati e continua a registrare una forte crescita come si può vedere in Figura 23. Figura 23: Malware Android rilevati (andamento 2011/2012) Tra i malware maggiormente diffusi troviamo quelli provenienti da mercati terzi, anche se non mancano quelli provenienti dal mercato Android ufficiale. MacAfee tra le tipologie di malware più diffuse menziona principalmente quelle legate all'adware mobile, che consiste in finestre pubblicitarie che appaiono durante l’esecuzione di un programma. Questo tipo di pubblicità, usata legalmente per sostenere i costi di giochi o applicazioni, viene utilizzata in false versioni di applicazioni popolari normalmente a pagamento, che vengono offerte gratuitamente con lo scopo di ingannare l’utente. Queste applicazioni, spesso illegali, contengono questo tipo di advertising al loro interno al fine di dirottare gli utenti su link a pagamento o pubblicitari. In questo modo non si riduce necessariamente la 42 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise sicurezza degli utenti, ma li si espone a messaggi aggressivi che possono essere veicolo di ulteriori problemi. Un’altra tipologia di malware segnalati dalla società McAfee sono i trojan backdoor, cioè applicazioni che utilizzano una escalation di privilegi per installare ulteriori applicazioni dannose sul dispositivo o inviare messaggi a tariffa maggiorata. Tra i trojan più pericolosi vengono menzionati quelli che riescono a ottenere i privilegi per manipolare il sistema, alcuni esempi sono malware che saturano la memoria ROM del dispositivo, che inviano informazioni personali ad un server centrale e che addirittura istaurano delle vere e proprie botnet, cioè fanno si che il terminale sia controllato da remoto da un’altra entità attraverso la rete. Nel secondo trimestre del 2012 sono stati individuati dei pacchetti che hanno l’apparenza di aggiornamenti di sistema per i dispositivi Android, scaricabili da siti di terze parti, ma che contengono software nocivo e nuovi malware che sfruttano account di social network fittizi per controllare il dispositivo infettato. Durante il rilascio di una nuova versione del proprio antivirus, anche la società Sophos Mobile Security ha effettuato uno studio sui malware più diffusi sulla piattaforma Android confermando la tendenza che vede tra i primi quelli che imitano applicazioni a pagamento, con il 63,4% di presenze nel totale dei campioni rilevati, seguiti dai vari tipi di trojan più o meno pericolosi. TrendMicro, azienda giapponese impegnata nello sviluppo di software anti malware, segnala che sono sempre di più le applicazioni presenti nel Play Store contenenti codice malevolo che potrebbe danneggiare la sicurezza del dispositivo e quindi degli utenti che lo utilizzano. Secondo la casa del noto antivirus lo store di Google sarebbe passato in soli sei mesi ad ospitare dalle 5.000 applicazioni potenzialmente pericolose nel primo trimestre del 2012 alle 20.000 nel secondo trimestre del 2012. In particolare sono stati individuati 17 software malevoli scaricati oltre 700.000 volte prima di essere rimossi dal market ufficiale. Attualmente Google sta cercando di arginare il fenomeno, incrementando i controlli e istituendo regolamentazioni più rigide per chi pubblica la propria applicazione nel Google Play Store. Inoltre nel febbraio 2012 è stato annunciata l'introduzione di Bouncer, un nuovo strumento per rendere più sicuro il market. Il tool effettua una scansione dettagliata delle applicazioni per rilevarne malware, spyware o trojan nascosti. Questo ulteriore livello di sicurezza è stato oggetto di analisi da parte 43 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise della Trustwave's SpiderLabs che ha presentato lo studio alla Black Hat information security conference di Las Vegas. La società ha rilevato che la soglia tolleranza di Bouncer è molto alta, costatando come il sistema sia facilmente aggirabile e come sia possibile superare la barriera di controlli facendo penetrare comunque software malevolo. Android 4.1 Jelly Bean, l’ultima versione di Android, presenta passi avanti sulla sicurezza migliorando il sistema di crittografia. Si è introdotto il supporto per la tecnologia ASLR (Address Space Layout Randomization), che rende casuale la memorizzazione delle strutture dati in Android. Questa casualità elimina delle vulnerabilità, rendendo più difficile l’accesso agli hackers, in quanto risulta più ostico insediare codici malevoli, visto che non si può prevedere dove verranno memorizzati i dati. Tuttavia risulta indispensabile per gli utenti prestare particolare attenzione alle misure di sicurezza consigliate, come l’istallazione e l’aggiornamento di software di protezione antivirus, l’effettuare le security patch e il consentire i download solo da fonti attendibili. 2.2. Windows 8 Windows 8, il nuovo sistema operativo di Microsoft è stato presentato al pubblico il 26 Ottobre 2012. Tale sistema supporta sia pc desktop che tablet; esso inoltre si integra con la versione sviluppata per smartphone, in modo da abbracciare in un unico ecosistema tre diverse piattaforme. Esso è disponibile in quattro edizioni: Windows 8, Windows 8 Pro, Windows 8 Enterprise e Windows RT,quest’ultimo sviluppato per supportare i processori ARM (Advanced RISC Machine). L’edizione di Windows Phone 8, nome in codice Apollo, sarà riservata unicamente agli smartphone. Microsoft con questo nuovo sistema operativo vuole intraprende la sfida di unificare l’esperienza utente per ogni tipologia di dispositivo. Infatti, una delle novità più rilevanti è l’adozione dell’interfaccia Metro, prerogativa fino a questo momento solo degli smarthphone con Windows Phone. che viene adesso estesa agli altri dispostivi L’interfaccia è composta di live tiles, icone simili a mattonelle che, oltre a eseguire un'applicazione con un clic o un tocco su di esse, visualizzano al loro interno dati aggiornati in tempo reale, senza dover necessariamente avviare l'applicazione. Le tiles possono essere personalizzate e ridimensionate per caratterizzare la schermata rispetto alle esigenze dell’utente. Oltre alla grafica, Windows 8 44 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise e Windows Phone condividono lo Store, negozio virtuale per l’acquisto/download di software compatibili, una piattaforma per lo scambio di messaggi tra utenti Windows, il servizio SkyDrive, per memorizzare e sincronizzare file su cloud e altre features introdotte che permettono una maggiore integrazione ed interoperabilità tra piattaforma desktop e mobile. 2.2.1. Caratteristiche tecniche Windows è stato sviluppato per essere utilizzato su diversi tipi di architetture hardware; diffuso su processori Intel e AMD (Advanced Micro Devices), tramite la versione 8 verranno supportati anche processori ARM, microprocessori diffusi nei dispositivi portatili come tablet e smartphone, che permettono di ottimizzare l’uso della batteria consentendone il risparmio energetico. Della nuova versione Windows 8, l’interfaccia Metro costituisce l’aspetto più innovativo, perché cambia il modo con cui gli utenti possono interagire col sistema, indipendentemente dal dispositivo. Viene supportata sia l’interazione touchscreen che quella desktop con mouse e tastiera, mentre il classico menù Start viene eliminato e sostituito dalla schermata Start. Quest’ultima è accessibile tramite la nuova barra dei menù detta Charms che appare negli angoli dello schermo da qualunque applicazione aperta in Windows. La barra Charms contiene una griglia scorrevole di tiles che consentono di accedere alle applicazioni in stile Metro o ritornare al desktop tradizionale dove vengono eseguite le applicazioni legacy, cioè sviluppate secondo l’approccio già esistente su Windows. Nella schermata Start, inoltre, si possono visualizzare tutte le applicazioni installate, sia Metro che classiche. Il passaggio tra ambiente desktop e mobile è consentito solamente nei dispositivi che non dispongono dei processori ARM, cioè i processori X86. Questa differenza è dovuta al fatto che con lo sviluppo di Windows 8, si è creato un nuovo sistema operativo, Windows RT, più snello e capace di supportare i device arm-based. Nei dispositivi in cui è presente Windows RT, l’ambiente desktop non è presente e le applicazioni che vengono eseguite sono create appositamente per l’architettura sottostante. Nei dispositivi con processore X86 come desktop, laptop e tablet ibridi, ossia tablet con processore X86 che montano il sistema operativo Windows 8 che permettono un utilizzo sia in mobilità che da desktop, per 45 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise ottenere l’integrazione tra i 2 ambienti, sia nell’interfaccia utente che nel tipo di applicazioni che possono essere eseguite, si ricorre a un runtime denominato WinRT, da non confondere con il sistema operativo Windows Rt. Questo strato software di interfacciamento permette di eseguire applicazioni Metro su dispositivi X86. In Figura 24 è mostrata l’architettura software del sistema operativo Windows 8 per device X86: Figura 24: Architettura software Windows 8 su device X86 Microsoft ha voluto creare questo nuovo sistema operativo per supportare i tablet e inserirsi nel mercato in competizione con Google e Apple. Anche se ci sono tablet con processori X86, come ad esempio il Samsung Slate 7, l’obiettivo di Microsoft con Windows RT è supportare i device ARM con un sistema operativo mobile, come Android e IOS, che riesca però a supportare l’utente con strumenti di lavoro peculiari di Windows, come Office. Per questo pacchetto di software è stata rilasciata una versione per Windows RT. Le applicazioni Metro che vengono eseguite sia su Windows RT che Windows 8 grazie alle api del runtime WinRT, a differenza delle applicazioni classiche eseguite nell’ambiente desktop hanno per default un'unica finestra senza riquadri e barre degli strumenti che riempiono lo schermo. Questo stile di user experience, detto immersive, supporta diverse origini di input, come tocco, penna e mouse e tastiera; esso usa riquadri al posto delle icone e include nuovi tipi di barre degli strumenti e di opzioni delle applicazioni. Questa scelta grafica viene riprodotta in tutte le applicazioni Metro e nella 46 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise stessa interfaccia utente del sistema operativo. Le applicazioni Metro possono inoltre condividere in maniera semplice i dati attraverso un nuovo protocollo di comunicazione basato su un modello di contratti fra applicazioni che, oltre a facilitare lo scambio di informazioni, inserisce un ulteriore livello di sicurezza da rispettare. I contratti fra le applicazioni sono un nuovo strumento introdotto da Microsoft che semplifica e rende più efficace la comunicazione fra le applicazioni in stile Metro. Esistono diversi tipi di contratti per realizzare scenari di condivisione anche ampi e complessi fra due applicazioni che abbiano implementato lo stesso contratto. Ad esempio i contratti di condivisione consentono di scambiare dati e file in formati diversi e personalizzabili senza conoscere nulla dell’applicazione di destinazione, i contratti di tipo ricerca consentono agli utenti di eseguire ricerche nei contenuti di un'applicazione da qualsiasi posizione in Windows e di visualizzarli all’interno dell’applicazione stessa. I contratti “selettore file” permettono agli utenti di accedere al contenuto di un'applicazione da un'altra in esecuzione, ciò consente ad esempio di sfogliare la galleria dei media all’interno di un’altra applicazione. Le applicazioni Metro sono implementabili scegliendo tra più tipi di linguaggi di programmazione supportati fra cui HTML5 e javascript, linguaggi ampiamente utilizzati non solo nel mondo Microsoft ma anche in quello web e mobile. In questo modo si incoraggiano gli sviluppatori a creare nuove applicazioni grazie all’utilizzo di linguaggi web-based, permettendo a programmatori esperti in tecnologie web di poter sviluppare applicazioni Metro riutilizzando quindi le loro conoscenze in un ambito diverso. 2.2.2. Versioni e compatibilità Come riportato il sito dedicato a Windows 8 Release Preview, il sistema funziona con lo stesso hardware su cui è possibile eseguire Windows 7, cioè necessita di un processore di almeno un gigahertz (GHz), ram di 1 GB (32 bit) o 2 GB (64 bit),disco rigido di 16 GB (32 bit) o 20 GB (64 bit) e scheda grafica Microsoft DirectX 9 con driver WDDM (Windows Display Driver Model). Inoltre bisogna avere un tablet o un monitor che supporta il multitouch per poter utilizzare le funzionalità touchscreen, una risoluzione dello schermo di almeno 1024 x 768 pixel per eseguire le applicazione in stile metro e 47 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise accedere al Windows Store e per utilizzare la funzione di ancoraggio fra le app occorre una risoluzione dello schermo di almeno 1366 x 768 pixel. Il sito riporta anche che la compatibilità con le applicazioni istallate nelle precedenti versioni desktop di windows dovrebbe essere garantita mentre le applicazioni Metro non sono retrocompatibili, cioè possono essere eseguite solo da Windows 8. Sui processori ARM, l'edizione RT di Windows 8 non supporta l'esecuzione, l'emulazione o la portabilità delle esistenti applicazioni desktop x86/x64. 2.2.3. Sicurezza Per quanto riguarda la sicurezza, con Windows 8 si introducono importanti novità. Ad esempio con la nuova versione di Windows Defender, che era stato inizialmente creato per proteggere il sistema Windows dagli spyware, si aggiungeranno anche funzionalità antivirus. Gli spyware a differenza dei virus, che comprendono tutti i malware installabili su un dispositivo, sono programmi creati esclusivamente per monitorare l’attività on-line degli utenti e trasmettere le informazioni a una organizzazione che le utilizzerà per trarne profitto senza consenso. Il programma, quindi, oltre a rilevare gli spyware, verificherà anche la presenza di virus, monitorando lo stato dei software di protezione esistente e intervenendo in caso di pericolo di sicurezza. Un'altra novità importante è Windows To Go, una nuova funzionalità esclusiva dell'edizione Enterprise di Windows 8 che consente di effettuare l'avvio del sistema operativo da dispositivi di memorizzazione di massa USB, come unità flash e dischi fissi esterni, contenenti Windows 8, i programmi, le impostazioni e i file dell'utente. Windows To Go è rivolto alle imprese: è infatti stato progettato per consentire agli amministratori di fornire agli utenti una versione di Windows 8 su immagine che rifletta il desktop aziendale, permettendo al personale contingente di accedere all'infrastruttura informatica solo attraverso le impostazioni presenti nel dispositivo di memorizzazione di massa e quindi diminuendo l’esposizione del sistema a rischi di sicurezza. Secure Boot è una nuova funzione che i produttori di schede madri dovranno integrare nei propri prodotti che montano Windows 8. Il suo funzionamento consiste nell’impedire l’avvio di software non autorizzato, sia esso un malware che un sistema operativo non certificato. Lo SmartScreen Filter è una ulteriore protezione per gli 48 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise utenti che consiste in un filtro per applicazioni non certificate, programmi malevoli o link che portano a siti di phishing. Il filtro lavora con dei valori hash che il programma crea nel filesystem locale per identificare le applicazioni. Questi valori vengono inviati a Microsoft per controllare tramite un database che siano sicuri. E’ stato introdotto, inoltre, anche un sistema di sandboxing, che permette di isolate tra di loro e dallo stesso Windows 8 tutte le applicazioni Metro incrementandone la sicurezza. Le applicazioni Metro si possono reperire dallo Store di Windows, concepito per contenere nel futuro tutte le applicazioni ufficiali targate Microsoft. La procedura di pubblicazione di una applicazione per Windows 8 consiste in una serie di passaggi per ottenere l’account da sviluppatore e la certificazione da parte di Microsoft, ciò per garantire massima sicurezza e standard qualitativi elevati. La compatibilità con le applicazioni desktop tradizionli però non garantisce che i dispositivi non vengano infettati da malware progettati per le versioni precedenti di Windows. Non esiste portabilità dei virus, invece, sui dispositivi ARM che non consentono l’esecuzione delle applicazioni tradizionali su Windows 8. 2.3. IOS IOS è un sistema operativo che supporta principalmente dispositivi mobile come tablet,smartphone e lettori multimediali; è sviluppato e distribuito dalla Apple. La sua prima versione è stata rilasciata sul mercato nel 2007. Il sistema operativo è progettato e realizzato per supportare solo dispositivi prodotti dalla Apple, a differenza di altri sistemi operativi come Windows 8, Windows RT e Android, quindi non è possibile l’installazione su altri dispositivi mobile realizzati da altri vendors. IOS è stato sviluppato a partire dall’ OS X, sistema operativo Unix-based prodotto sempre dalla Apple per i propri sistemi desktop. Con esso IOS condivide alla base il core sviluppato dalla Apple nel 2000, denominato Darwin, un sistema operativo open source costruito a partire dal kernel XNU. Grazie allo sviluppo di questo sistema operativo, prima sugli smartphone e poi sui tablet, e del modello di business e di sviluppo delle applicazioni native, che il mobile si è evoluto nello stato in cui si trova attualmente. Il paradigma app-oriented, ossia sviluppare un’applicazione che deve soddisfare pochi requisiti specifici ma che sia interattiva e con una avanzata user experience, è stato lanciato sul mercato dalla Apple con l’ecosistema 49 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise costituito dal sistema operativo, Itunes, software di gestione e riproduzione di contenuti multimediali, e lo store dal quale scaricare le applicazioni. A settembre 2012 lo store ufficiale di IOS conta più di 700000 applicazioni. L’utente interagisce con le applicazioni e il sistema operativo attraverso gesti delle dita come swiping, tapping, e pinching, i quali grazie allo schermo capacitivo multitouch e l’utilizzo di sensori come accelerometro e giroscopio permettono un’interazione con la piattaforma interattiva,dinamica e adattabile a diversi scenari di utilizzo, sia in ambito consumer che enterprise. 2.3.1. Caratteristiche tecniche L’architettura software di IOS costruita sopra il core Darwin è strutturata in 4 abstraction layer: 1- Core OS Layer: contiene le caratteristiche di basso livello sulle quali si poggiano le altre tecnologie; attraverso l’utilizzo di una serie di frameworks, come ad esempio Accelerate, Core Bluetooth, External Accessory, Generic Security Services, Security e System, vengono offerti agli strati superiori una serie di servizi, che di rado però vengono acceduti direttamente dagli sviluppatori di applicazioni. 2- Core Services Layer: contiene i servizi fondamentali di sistema che vengono utilizzati da tutte le applicazioni. Le tecnologie principali consistono in: • Icloud Storage: introdotto in IOS 5, è un servizio che permette alle applicazioni di creare dati e documenti in maniera ubiqua, cioè vengono salvati su una struttura centralizzata e il loro accesso è consentito in maniera uniforme da tutti i dispositivi Apple, sia desktop che mobile. Ciò permette agli utenti di poter vedere ed editare dati senza utilizzare funzionalità di sincronizzazione o di trasferimento espliciti, e di ottenere una copia remota dei dati in caso di perdita del dispositivo. • Automatic Reference Counting: introdotto in IOS 5, è una features a livello di compilazione che semplifica il processo della gestione del ciclo di vita degli oggetti del linguaggio nativo Objective-C. • Data Protection: introdotto in IOS 4, è un servizio che permette alle applicazioni di lavorare con dati sensibili degli utenti sfruttando tecnologie di criptazione presenti di determinati dispostivi. Una volta che un file è definito protetto viene salvato dal 50 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise sistema in un formato criptato. Se il dispositivo è bloccato il contenuto del file è inaccessibile sia all’applicazione che lo ha creato sia ad eventuali intrusi. Viene rilasciata una chiave per decriptare il file all’applicazione quando il dispositivo viene sbloccato dall’utente. • Grand Central Dispatch: introdotto in IOS 4, è una tecnologia a livello di sistema operativo che permette di eseguire task all’interno di un’applicazione. Esso utilizza una combinazione di features core con un modello di programmazione asincrono per ottenere un’alternativa conveniente ed efficiente all’utilizzo dei thread. • SQLite: è una libreria che permette l’utilizzo di un database leggero ed incluso all’interno delle applicazioni senza dover ricorrere ad un processo server esterno. 3- Media Layer: questo livello contiene tecnologie per manipolare grafica, audio e video. Il loro scopo è fornire servizi per permettere di sviluppare applicazioni ricche dal punto di vista multimediale in maniera semplice. 4- Coca Touch Layer: questo livello contiene i frameworks fondamentali per costruire le applicazioni IOS. Esso definisce l’infrastruttura base e fornisce il supporto per le tecnologie chiave come multitasking, touch-based input, push notification, gesture recognizers, peer-to-peer services,ed altri servizi di alto livello Una delle features più importanti introdotte dalla versione 4 del sistema operativo è il multitasking. Esso prima della versione 4 era limitato a un ristretto numero di applicazioni già incluse al rilascio del sistema operativo. Il suo utilizzo è permesso tramite 7 API che vengono utilizzate in backgound: 1 Background Audio: Un’applicazione che sta eseguendo contenuti audio o video può continuare l’esecuzione dei contenuti multimediali in background 2 Voice over IP: Un’applicazione Voip può essere sospesa e viene associata ad un servizio che monitora la socket, in modo che quando arriva una chiamata l’applicazione viene ripristinata come attiva. 3 Background location: attraverso servizi che vengono eseguiti in background viene monitorata la posizione dell’utente, utilizzata dalle applicazioni attive. 4 Push notifications: tecnologia che utilizza una connessione IP costantemente aperta per 51 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise inviare notifiche dal server al client in modo asincrono, senza utilizzare il polling dal client 5 Local notifications: le applicazioni possono programmare notifiche locali in momenti predeterminati 6 Task completion: l’applicazione può richiedere al sistema tempo extra per completare un determinato task 7 Fast app switching: Un’applicazione che non esegue codice può essere rimossa dalla memoria centrale in qualsiasi momento Nella versione 5 di IOS sono state introdotte altre 3 API aggiuntive: 8 Newsstand: Le applicazioni possono scaricare dati dalla rete in background 9 External Accessory: ad intervalli regolari le applicazioni possono comunicare con accessori esterni per scambiare dati 10 Bluetooth Accessory: ad intervalli regolari le applicazioni possono comunicare con accessori Bluetooth per scambiare dati 2.3.2. Versioni e compatibilità La versione attuale di IOS è la sesta, lanciata sul mercato il 12 settembre 2012. Non tutti i dispositivi hardware possono essere aggiornati da una versione alla successiva del sistema operativo. IOS supporta diversi tipi di dispositivi i quali sono denominati IDevices. Essi includono l’IPhone, unico dispositivo smartphone che viene supportato da IOS, IPod Touch, simile all’IPhone ma senza modulo hardware per effettuare le chiamate, ed infine l’IPAD tablet. Gli aggiornamenti alle versioni successive del sistema operativo avvengono tramite ITunes, ed a partire dalla versione 5 attraverso firmware-over-the-air, cioè attraverso la rete cellulare oppure Wifi. I passaggi da una versione alla successiva del sistema operativo tendono ad essere rilasciate una volta l’anno. Gli aggiornamenti dei device hardware avvengono periodicamente, lanciando sul mercato una nuova versione del dispositivo con migliorie hardware, sia a livello di componentistica che di features. Esistono 6 generazioni di IPhone, 5 di IPod Touch e 4 di IPad; a quest’ultimo recentemente è stata affiancata una versione ridotta da 8 pollici. L’ultima versione di IOS supporta diversi tipi di device, come IPhone 3GS, IPhone 4, 4s, IPad 2, 3 e IPod Touch 4. 52 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Il livello di features supportate però non è omogeneo, e per poter utilizzare le ultime caratteristiche introdotte da IOS 6, come Siri, FaceTime over 3g ed altre occorre avere le ultime versioni hardware dei dispositivi. Questo continuo aggiornamento nella caratteristiche sia hardware che software delle piattaforme Apple, porta ad avere problemi di retro compatibilità delle applicazioni, le quali non garantiscono che se un’applicazione viene sviluppata su una versione del sistema operativo possa essere eseguita su una versione precedente. Gli sviluppatori quando sviluppano un’applicazioni possono scegliere il sistema operativo target, ed utilizzare le api di quella versione. 2.3.3. Sicurezza Come riportato dall’articolo prodotto dalla Symantec del 2011 A Window into mobile device security, IOS basa la sua sicurezza su 5 livelli distinti: 1- Traditional Access Control: controllo dell’accesso basato su password per accedere al sistema. 2- Application Provenance: è un approccio in cui un’applicazione viene associata all’identità dell’autore attraverso una firma digitale. Gli sviluppatori di applicazioni per device Apple, sia consumer che enterprise, devono registrarsi e pagare un abbonamento annuale. In seguito alle applicazioni viene applicata la firma, e prima di venir distribuita sullo store ufficiale o attraverso canali interni per le applicazioni enterprise, viene effettuato un processo di certificazione. Per le applicazioni aziendali orientate alla forza lavoro delle aziende, viene aggiunta una ulteriore misura di sicurezza, un certificato specifico che viene installato sul dispositivo e senza il quale l’applicazione non può funzionare. Se il certificato viene rimosso o scade l’applicazione non può più funzionare. 3- Encryption: salvataggio dei dati in maniera criptata in modo da prevenire perdita di dati dovuti a smarrimenti o furti del device. È utilizzato un sistema ibrido di criptazione; viene prima utilizzata un sistema hardware AES-256 per criptare tutti i dati salvati sulla memoria flash del device. Poi i dati più sensibili come email e dati personali vengono criptati da un livello aggiuntivo. 4- Isolation: le applicazioni vengono limitate nell’accesso a dati sensibili o funzionalità di 53 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise sistema sul dispositivo. Le applicazioni sono isolate, non possono modificare dati,logica,ecc… di altre applicazioni. Un’applicazione non può avere accesso al kernel del sistema operativo e non può ottenere il root-level del dispositivo. 5- Permissions-based access control: Ogni applicazione deve esplicitamente dichiarare le funzionalità e le risorse del sistema a cui vuole accedere e viene impossibilitata ad allargare il proprio scope. Ogni volta che un’applicazione intende accedere a determinate risorse di sistema viene richiesta l’esplicita approvazione dell’utente. Altre invece vengono definite una volta e vengono accedute sempre. 54 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Capitolo 3 Tecnologie a supporto per lo sviluppo multipiattaforma su sistemi mobile tablet Lo sviluppo multipiattaforma in ambito mobile consiste nella produzione di software progettato per supportare dispositivi diversi sia per caratteristiche hardware che sistemi operativi. Questo processo si avvale di tecnologie e strumenti specifici e consente di scrivere programmi che si adattano automaticamente o con sforzo minimo al contesto in cui vengono eseguiti. L’esigenza di riuscire a sviluppare un applicativo di questo tipo è sentita particolarmente in ambito enterprise grazie ai potenziali vantaggi che si possono avere in termini di riduzione dei tempi e costi per realizzare e mantenere il prodotto. Infatti negli ultimi anni la rapida evoluzione dei dispositivi mobili e la frammentazione del mercato mobile, sia per quanto riguarda sistemi operativi che tipologie di terminali con caratteristiche differenti, ha portato alla crescita dei costi di sviluppo e di mantenimento delle applicazioni mobile che devono supportare diverse piattaforme. 3.1. Caratteristiche dei framework di sviluppo ed esigenze aziendali Le aziende che vogliono produrre un’applicazione di tipo business che possa supportare diversi tipi di terminali mobili devono gestire la frammentazione del mercato mobile, sia per dispositivi che per sistemi operativi. In questo momento le principali piattaforme sul mercato sul quale è possibile sviluppare applicazioni mobile enterprise sono iOS, Android, RIM, Windows Phone, Windows 8, Windows RT, Nokia. Questo comporta il dover creare 55 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise una strategia per poter pianificare il modo con cui approcciarsi al multipiattaforma, in base alle esigenze aziendali, relative ai dispositivi da supportare e ai requisiti dell’applicazione, in modo tale da contenere i costi di sviluppo e manutenzione . Infatti sviluppare e mantenere codice multiplo per diverse piattaforme è diventato complicato e costoso. I possibili approcci che possono essere adottati sono numerosi ed eterogenei,ognuno con proprie peculiarità, e nessuno è finora diventato lo standard de facto nello sviluppo multipiattaforma in ambito mobile. La maturazione della standardizzazione di HTML5 nei prossimi anni permetterà di utilizzare questo insieme di tecnologie open source per lo sviluppo web come punto di riferimento nella realizzazione di siti web e web application avanzate. Con il termine HTML5 si indica un’evoluzione dello standard che fa parte della famiglia delle tecnologie web aperte. Esso tramite un insieme di API (application programming interface ) innovative ed un markup potenziato permette di creare applicazioni sul web avanzate senza ricorrere a software di terze parti, usati tramite plugin nei browser (esempio Flash o JavaFx). L’innovazione che verrà portata riguarderà l’aspetto grafico e l’ interazione con l’utente, al fine di ottenere una user experience ricca, simile a quella fornita dalle applicazioni native. HTML5 potrà essere utilizzato anche nello sviluppo multipiattaforma di applicazioni che risiedono interamente sui dispositivi mobile e desktop. Questa possibilità è fornita dallo sviluppo di diverse specifiche innovative, che permetteranno di utilizzare nuove features, come audio e video in maniera nativa, oppure l’accesso ai sensori dei dispositivi mobile tramite Javascript. Nel mercato attuale dello sviluppo multipiattaforma nel settore mobile sono stati realizzati vari tool di supporto allo sviluppo, ognuno dei quali offre features adatte a determinati contesti ma non a tutti, e che quindi devono essere analizzati per poter scegliere il framework che fornisce le performance migliori, in base all’ esigenza dell’applicazione da realizzare e le specifiche richieste aziendali. Le caratteristiche che i diversi tool possono fornire sono: 56 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 1- Ambiente di sviluppo intergrato: poter seguire tutto il ciclo di sviluppo all’interno dello stesso ambiente di sviluppo, dalla scrittura del codice fino alla distribuzione 2- Componenti grafici per creazione dell’interfaccia utente: vengono messi a diposizione una serie di widget e aiuti per costruire l’interfaccia dell’applicazione e la logica di business connessa 3- Librerie aggiuntive: vengono messe a disposizione librerie aggiuntive tramite le quali facilitare lo sviluppo di alcune funzionalità (esempio librerie per invio dati a web service tramite chiamate AJAX) Nello sviluppo di applicazioni multipiattaforma, è necessario analizzare i vari benefici offerti dai determinati framework di sviluppo, per permettere all’azienda di indirizzarsi verso uno in particolare che maggiormente si allinea con le indicazioni dei requisiti dell’ applicativo e le esigenze aziendali: 1- Numero di piattaforme da supportare: se un’azienda non avesse bisogno di raggiungere il maggior numero di utenti e quindi si volesse focalizzare nello sviluppo di un numero ristretto di piattaforme, potrebbe scegliere di sviluppare l’applicazione in maniera nativa effettuando un successivo porting. In alternativa, qualora vi fosse l’esigenza di rendere disponibile il software su più sistemi operativi si potrebbe sviluppare un sito web mobile raggiungibile da tutte le piattaforme 2- Ciclo di vita del software: se un’azienda volesse sviluppare un software con un ciclo di vita lungo, dovrà scegliere se gestire i costi di manutenzione in base al cambiamento dei device e dei sistemi operativi, o voler creare un ambiente che permetta l’adattabilità del software con poco effort 3- Costi di sviluppo: sviluppare codice nativo è più costoso di sviluppare codice in ambiente web, e gli sviluppatori su tecnologie web sono più reperibili con un minor costo degli sviluppatori specializzati su una piattaforma specifica, esempio Android; ciò è dovuto al fatto che le tecnologie web sono mature e conosciute da diversi anni e meno verticali rispetto alle tecnologie native utilizzate su un determinato sistema 57 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise operativo mobile. Queste ultime sono specializzate sul particolare ambiente di sviluppo e sono state create soltanto nell’ arco degli ultimi 5 anni quindi persone specializzate sono minori in numero. 4- User experience: rendere un’applicazione uguale per ogni piattaforma può essere difficoltoso se si vogliono ottenere determinati scenari di interazione 5- Qualità dell’interfaccia utente: in base alla tecnologia di sviluppo si possono ottenere interfacce utente più o meno avanzate con elementi grafici complessi, bisogna quindi capire quanto l’interfaccia utente sia importante nell’applicazione 6- Accesso alle risorse dei device: l’accesso ai sensori dei dispositivi mobili e alle relative interfacce per il loro utilizzo è dipendente dalla tecnologia che viene utilizzata nello sviluppo delle applicazioni; ci sono casi in cui l’ accesso è bloccato, altri in cui è parzialmente concesso e altri in cui si può accedere senza limitazioni alle features offerte dai sensori e dal sistema operativo. 7- Performance: l’accesso alla capacità elaborativa del processore del dispositivo mobile può essere più o meno efficiente in base alla tecnologia scelta; infatti ci sono tecnologie che accedendo alle risorse del device in maniera nativa sono più performanti in scenari complessi rispetto alle altre, ad esempio casi in cui le interfacce grafiche son ricche di elementi. Ciò è dovuto al fatto che nelle tecnologie non native si utilizzano strati software intermedi, ad esempio per creare gli elementi grafici avanzati, o in fase di esecuzione devono interpretare il codice prodotto convertendolo in codice nativo, e ciò fa calare sensibilmente le prestazioni dell’ applicazione. Molte di queste esigenze sono in contrasto tra loro, e quindi non esiste al momento una tecnologia che permetta una soluzione ottima che massimizzi i benefici di tutte le componenti, ma esistono diverse soluzioni “sub-ottime” tra cui poter scegliere. 3.2. Approcci allo sviluppo multipiattaforma Attualmente gli approcci che permettono di sviluppare un software multipiattaforma sono 58 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise diversi, ognuno con determinate caratteristiche a livello architetturale, prestazionale, tipologia di processo di sviluppo adottato, strumenti a disposizione per la realizzazione e livello di usabilità raggiungibile. I tipi di applicazione attualmente esistenti nello sviluppo mobile possono essere categorizzati in 5 insiemi: Applicazioni native: sono realizzate per una specifica piattaforma con un SDK, software development kit, ossia un framework di sviluppo con un IDE (ambiente di sviluppo ) integrato e strumenti per debugging ed emulazione. Applicazioni web mobile: sono applicazioni server-side, costruite con una qualsiasi tecnologia lato server per la logica di business (PHP, ASP.NET, ecc..) e per creare la pagina di cui viene eseguito il rendering lato client sul browser. Queste applicazioni possono fornire un aspetto più vicino a quello nativo tramite tool aggiuntivi (esempio Jquery Mobile) che si fondono con le tecnologie web (HTML5, CSS, e JAVASCRIPT), per visualizzare i contenuti e gestire la logica applicativa lato client. In questo tipo di applicazioni possono esserci più contesti di utilizzo, in base alle tecnologie che possono essere integrate nello sviluppo. Applicazioni ibride: come le applicazioni native, vengono installate sul device e vengono lanciate dal menu del sistema operativo, ma sono sviluppate con le tecnologie web in aggiunta al codice nativo. Le applicazioni ibride girano in un contenitore nativo e vengono eseguite come applicazioni native dal sistema operativo. Le pagine web che ne costituiscono l’ interfaccia grafica sono renderizzate da un componente software, denominato webkit, rendering engine che fornisce all’interfaccia anche i controlli del browser, ma a differenza di quello fornito come applicazione nativa, questo viene eseguito all’interno dell’applicazione ibrida. Lo scopo del web kit è interpretare e visualizzare a video le pagine html e processare localmente il codice javascript. Uno strato software intermedio che fa da bridge software permette di accedere tramite invocazioni di funzioni javascript ai sensori del device, come ad esempio l’accelerometro o il giroscopio, e alle funzionalità del sistema operativo altrimenti inaccessibili; questo accesso infatti al momento è molto limitato per motivi di sicurezza nelle applicazioni web mobile che 59 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise utilizzano solo HTML5 e javascript, che possono accedere solo a un limitato numero di sensori, ad esempio il GPS. Tramite l’ utilizzo del web kit e delle tecnologie html5 e javascript è possibile eseguire lo stesso codice creato durante lo sviluppo su diversi sistemi operativi, dovendo modificare solo il contenitore. Ciò consiste nel produrre l’applicazione nativa eseguibile che conterrà le pagine html e il codice javascript, e sviluppare ad-hoc il software intermedio tra javascript e le funzioni native del sistema operativo o adottarne uno già sviluppato da terze parti. Custom Container: con queste tecnologie si possono creare applicazioni tramite un linguaggio proprietario e inserirle in un contenitore customizzato che viene eseguito nel dispositivo. Il codice prodotto deve essere interpretato a tempo di esecuzione, e l’interprete che si occupa di farlo può essere inserito nel contenitore o essere installato a parte sul dispositivo. Nel secondo caso per far funzionare l’applicazione è richiesta l’installazione dell’interprete. In entrambe le casistiche l’interprete a tempo di esecuzione si occupa di convertire il linguaggio dell’applicazione in quello della piattaforma sottostante Cross-Compilation: con queste tecnologie si producono applicazioni trasformando il codice scritto con un linguaggio di programmazione di origine proprietario in codice nativo per le piattaforme di riferimento che sono supportate. Attraverso l’uso di funzioni sviluppate ad-hoc da richiamare viene mappato il linguaggio di origine nel linguaggio di destinazione per la specifica piattaforma per la quale creare il codice nativo equivalente che fornisce le funzionalità richieste. Oltre a questo insieme di tecnologie di sviluppo sono presenti sul mercato diverse soluzioni che permettono lo sviluppo e la gestione di applicazioni mobile di tipo business attraverso una piattaforma integrata, che fornisce una serie di servizi aggiuntivi a pagamento. Questo tipo di soluzioni vengono denominate MEAP (mobile enterprise application platform ). Alcune delle caratteristiche più importanti sono: 1- Prevedono la presenza nella piattaforma di un server che fornisce funzionalità di 60 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise aggiornamenti OTA (over the air) e di memorizzazione dei dati privati delle applicazioni mobile ad esso connesse 2- Forniscono funzionalità di gestione e monitoraggio dei dispositivi 3- Forniscono funzionalità di connessione con sistemi di back-end, per facilitare l’accesso ai dati di CRM, ERP e altri tipi 4- I vendors forniscono spesso applicazioni preconfezionate che si interfacciano con soluzioni software enterprise note, esempio SAP ERP o Oracle Financials 5- Forniscono meccanismi di sincronizzazione tra i dispositivi mobile e i sistemi di backend Il motivo principale della presenza di tante tecnologie e della frammentazione del mercato per lo sviluppo multipiattaforma è rappresentato dall’attesa da parte delle aziende della standardizzazione di HTML 5. Infatti, esso ha lo scopo principale di unificare e di standardizzare tutte le tecnologie web-oriented, permettendo inoltre l’utilizzo delle risorse hardware dei device attraverso invocazioni dirette, non passando attraverso bridge o soluzioni alternative create ad-hoc. Il processo di standardizzazione è ancora in corso e la data definita per la fine dei lavori dal W3C (World Wide Web Consortium), consorzio a cui compete la standardizzazione di tecnologie in ambito web, è genericamente fissata per il 2014. Le aziende leader del mercato web, come ad esempio Google, Facebook ed Adobe, nell’attesa hanno virato verso lo sviluppo multipiattaforma acquisendo aziende (ad esempio Adobe ha acquisito Nitobi) oppure utilizzando tool esistenti (ad esempio Facebook ha utilizzato per una release della propria applicazione mobile una versione modificata di Apache Cordova, engine per costruire applicazioni multipiattaforma). 3.3. Analisi tecnologie per lo sviluppo multipiattaforma Per sviluppare applicazioni multipiattaforma è possibile percorrere più strade, ognuna con caratteristiche e strumenti peculiari, che permettono di massimizzare determinati fattori a 61 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise discapito di altri, e che quindi devono essere analizzate per poter scegliere l’approccio da utilizzare in base alle caratteristiche richieste dall’applicativo e dalle esigenze aziendali. 3.3.1. Tecnologie di sviluppo native Lo sviluppo di un’applicazione con tecnologia nativa produce un’applicazione per dispositivi mobili che fornisce una o più funzionalità per uno specifico sistema operativo e uno specifico firmware del dispositivo, quindi non può essere eseguita su un altro sistema operativo. Per poter eseguire l’applicazione sviluppata per una piattaforma su un altro sistema operativo è necessario effettuare un porting, ossia un nuovo sviluppo completo dell’applicazione, partendo dai requisiti. Un’applicazione nativa è un’immagine binaria eseguibile che viene installata sul dispositivo attraverso 2 modi: tramite l’accesso allo store ufficiale o piattaforme proprietarie in ambiente enterprise, oppure attraverso le tecnologie dei device, mobili o cablate, per trasferire dati (wifi, internet, usb, bluetooth, IRDA). Il processo di sviluppo di un’applicazione nativa è molto simile per tutte le piattaforme, come viene mostrato in Figura 25: Figura 25: Processo di sviluppo con tecnologia nativa Il processo di produzione dell’ applicativo parte scrivendo il codice sorgente, al quale vengono aggiunti i riferimenti alle risorse da utilizzare (es. immagini). Il codice prodotto tramite un ambiente di sviluppo integrato viene compilato e collegato alle librerie 62 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise utilizzate già esistenti, producendo in uscita il codice binario eseguibile, che viene inserito in un package insieme alle risorse che devono essere accedute in locale dall’applicazione. Il package viene distribuito in un formato installabile su una delle piattaforme di distribuzione esistenti per il sistema operativo di riferimento. Tutti i sistemi operativi principali utilizzano strumenti integrati di sviluppo, con i quali vengono realizzate, testate, e distribuite le applicazioni: IOS: sviluppo tramite Objective-C; il codice viene prodotto attraverso l’ ambiente di sviluppo Xcode; in uscita dal packager viene creato un file “.app” da distribuire sull’apple store. Android: sviluppo codice tramite Java, C, C++,C# (gli ultimi tre linguaggi sono però sconsigliati perché hanno bisogno di strumenti a pagamento);il codice viene prodotto tramite l’ android sdk, intergrato interamente nell’ IDE eclipse tramite plug-in ad-hoc; in uscita dal packager viene creato un file “.apk” che viene distribuito nel market android. Blackberry: sviluppo codice tramite Java, il codice è prodotto tramite sdk blackberry, integrato interamente in eclipse tramite pluging ad-hoc; in uscita dal packager viene prodotto un file “.cod” distribuito nell’ application store. Windows Phone: sviluppo codice tramite c#,c++, vb.net; il codice viene prodotto tramite sdk integrato in visual studio; in uscita dal packager viene prodotto un file “.xap” da distribuire nello windows phone market. Windows 8: sviluppo codice tramite 2 approcci distinti: Html5,Css3, e Javascript per creare applicazioni Metro Style, particolari tipi di applicazioni che differiscono da quelle desktop principalmente per aspetto grafico (esempio ampio utilizzo delle Tiles , widget grafici introdotti da Windows Phone ) e tipo d’interazione con l’ utente (perché sono indirizzate verso il mondo mobile dei tablet); seconda possibilità tramite C#, Visual Basic 63 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise e XAML, o C++ e XAML (XAML è un linguaggio di markup basato su XML) per sviluppo di applicativi Metro, o tramite gli stessi linguaggi senza l’ utilizzo di XAML per applicativi desktop. In entrambi gli approcci si utilizza come ambiente di sviluppo Visual Studio. Una volta lanciato sul mercato il nuovo sistema operativo windows e la controparte mobile, lo store verrà unificato, in modo tale che ogni device Microsoft possa accederci senza differenze. Nonostante il processo di sviluppo sia uguale, i framework utilizzati nello sviluppo producono codice ed eseguibili differenti, richiedendo conoscenze da parte degli sviluppatori molto specializzate e verticali dell’ sdk di riferimento col quale sviluppano il codice. Questo fattore comporta un aumento dei costi per effettuare porting dell’applicazione e per gestire la manutenzione delle diverse versioni sui diversi sistemi operativi. I principali benefici dati dalla scelta di sviluppare l’applicazione in maniera nativa e supportare il multipiattaforma tramite porting sono: 1- l’applicazione viene sviluppata utilizzando librerie proprietarie fornite dal sistema operativo producendo un file eseguibile che non utilizza strati software intermedi per l’ esecuzione ottenendo prestazioni migliori in scenari complessi, soprattutto quando l’ interfaccia grafica è ricca di elementi interattivi. 2- l’utilizzo delle librerie proprietarie per avere l’accesso completo a tutti i sensori offerti dal dispositivo, permette di creare applicazioni molto complesse e che si adattano a scenari d’uso particolari ed avanzati, un esempio l’autenticazione tramite riconoscimento della retina di un essere umano tramite la fotocamera del dispositivo. 3- accesso ai servizi offerti dalle applicazioni built-in, che vengono prodotte e fornite insieme al sistema operativo, che possono fare da tramite con le API di basso livello per un utilizzo più immediato di gruppi di funzionalità di base , esempio l’ accesso alla lista dei contatti memorizzati sul dispositivo. 4- usabilità e user experience peculiari in base al sistema operativo di riferimento, cioè l’ interazione con l’ applicazione viene progettata anche in base alle scelte del sistema 64 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise operativo e del dispositivo, esempio il numero di tasti fisici presenti, unico per IOS e variabili per dispositivi Android. Un aspetto importante tra quelli citati è l’interazione dell’ applicazione con le risorse hardware del device, cioè l’ insieme dei sensori messi a disposizione dello sviluppatore , che permettono di creare applicazioni smart, complesse e creative. L’ interazione con le API del sistema operativo avviene direttamente, come mostrato in Figura 26: Figura 26: Accesso ai sensori applicazioni native L’ insieme della API offerti da ogni sistema operativo mobile sono schematizzabili a strati (Figura 27): 65 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 27: Integrazione sistema operativo applicazioni native Le applicazioni native possono quindi accedere alle risorse del sistema operativo e hardware del device attraverso l’ invocazione di 2 tipologie di API: API di basso livello per accedere a funzionalità base del sistema operativo , come l’accesso e il controllo dei sensori, che permettono di realizzare funzionalità più specifiche e che richiedono una maggiore scrittura di codice applicativo da parte degli sviluppatori API di alto livello che permettono l’ accesso più immediato a funzionalità di maggiore livello di astrazione, invocabili anche tramite richiesta ad applicazioni Built-in 3.3.2. Applicazioni Web mobile Le applicazioni web mobile, sono una categoria di applicazioni client server che vengono accedute tramite utilizzo di un applicativo browser. Vengono sviluppate principalmente tramite tecnologie web, utilizzando quindi lato client html, css, javascript, mentre lato server possono essere utilizzati diversi tipi di linguaggi di programmazione per fornire la logica di business e accesso ai servizi e ai dati di back-end aziendali. Le combinazioni che si possono ottenere tra tecnologie web e l’accesso alle risorse dei dispositivi mobile hanno generato una serie di scenari di utilizzo: • Websites: sono portali web raggiungibili da tutti i tipi di device, sia mobile che 66 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise desktop; permettono l’ identificazione del tipo di dispositivo mediante informazioni reperibili dal browser, e che adattano l’ interfaccia utente per migliorare la fruibilità in base alle caratteristiche del device. Per permettere questo i portali hanno una versione desktop e una mobile raggiungibili attraverso la medesima URL, o attraverso URL diverse tramite reindirizzamento alla versione mobile del sito. • Web apps che interagiscono con applicazioni built-in: questi tipi di applicazioni permettono di accedere a informazioni del device tramite l’ interazione con le applicazioni Built-in per permettere una migliore interattività ; un esempio di scenario d’ uso è l’ utilizzo dell’ applicazione Qrcode per poter essere indirizzati alla pagina web di descrizione di un prodotto • Web apps con interfaccia grafica avanzata: sono applicazioni web mobile che tendono ad avere un aspetto grafico e un’ interazione con l’ utente abbastanza vicina a quella fornita dalle applicazioni native, permettendo di installare sul device il collegamento al server in modo da sembrare come un’applicazione installata sul device; un esempio di applicazione web è quella realizzata per YouTube • Web apps interamente scritte con html 5 e javascript: esse permettono l’ accesso ad alcune features del sistema operativo tramite API, esempio uso di librerie grafiche per disegnare o l’accesso a informazioni del gps per la geolocalizzazione, e possono essere eseguite in modalità offline, cioè possono essere utilizzabili anche senza essere connessi al server tramite la rete, attraverso l’uso di nuovi strumenti di caching e di memorizzazione persistente forniti dalle nuove specifiche di HTML5. 3.3.2.1. Uso di HTML5 nelle Enterprise web application Il settore enterprise può beneficiare dell’evoluzione di HMTL e delle altre tecnologie web per creare web application di tipo business che possano supportare diversi tipi di dispositivi e sistemi operativi. In ambito enterprise le applicazioni che vengono accedute in mobilità devono poter supportare sia dispositivi desktop che mobile. Questo comporta un problema di portabilità del software dovuto al differente supporto di HTML5 dei diversi tipi di browser che vengono utilizzati in ambito aziendale, che tra desktop e mobile sono numerosi. Il principale collo di bottiglia fino al primo quadrimestre del 2009 è stato 67 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Internet Explorer 6, leader del mercato in ambito desktop per il settore enterprise, che forniva un supporto quasi nullo a HTML5 (http://netmarketshare.com). Nei successivi anni grazie allo sviluppo di HTML5 guidato dalla forte ascesa dai dispositivi mobile, smartphone e tablet, il supporto dei diversi tipi di browser desktop è migliorato e allo stato attuale il gap tra quelli più compatibili con lo standard e quelli meno si è assottigliato. In Figura 28 è mostrato il supporto dei browser a HTML5 relativo al periodo precedente al lancio di Internet Explorer 9 redatto da Gartner. Figura 28: Compatibilità browser HTML5 4Q2009 Per poter essere sicuri che la propria applicazione sia eseguita allo stesso modo sui diversi tipi di browser è consigliabile scegliere prima i target di riferimento e verificare che le funzionalità che si vogliono utilizzare siano supportate. Per reperire dati aggiornati sul supporto dei vari tipi di browser, sia desktop che mobile, ad HTML5 ci sono diversi siti in 68 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise rete che riportano statistiche aggiornate, esempio: • http://www.html5test.com/ • http://html5accessibility.com/ • http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(HTML5) • http://findmebyip.com/litmus Nonostante al momento il mondo desktop e mobile possano essere visti come un unico insieme di applicativi che accedono alle web application enterprise, considerazioni riportate nelle le analisi di mercato e sul BYOD svolte nei capitoli precedenti permettono di vederli separati e scegliere di dare maggiore attenzione ai dispositivi come smatphone e tablet come target degli applicativi. In questo modo è possibile ottenere comportamenti maggiormente uniformi dalle web application grazie al maggiore supporto dei device mobili ad HTML5. La scelta di sviluppare applicativi tramite HTML5 deve essere fatta conoscendo i punti di forza e le limitazioni che al momento lo standard possiede. Tutte le caratteristiche che HTML5 fornisce e che verranno aggiunte durante il processo di standardizzazione, hanno lo scopo di aggiungere features al web; questo significa offrire nuovi elementi e API che permettano agli sviluppatori di creare applicazioni con un’ esperienza interattiva e avanzata indipendentemente dalla piattaforma su cui vengono eseguite. Nel contesto desktop RIA ( Rich Internet Application ) plug-in per browser permettono di creare applicazioni web avanzate, ma che non possono raggiungere il mondo mobile, perché non installabili. Le maggiori features di HMTL5 che possono essere usate dagli sviluppatori sono: • Messaggi cross-document: possibilità di far comunicare pagine tra loro attraverso domini diversi • Canvas: possibilità di generare elementi grafici 2D e 3D attraverso Javascript (possibile uso disegnare la propria firma in una pagina web) • Audio: possibilità di effettuare lo streaming di contenuti audio dalle web application • Video: possibilità di effettuare lo streaming di contenuti video dalle web application 69 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise • Drag and drop: possibilità di spostare graficamente elementi all’ interno di una pagina (funziona ampiamente usata nelle applicazioni desktop) • Applicazioni web offline: consente di effettuare la memorizzazione tramite caching dell’ applicazione, potendo continuare ad utilizzare l’applicazione anche se la connessione non è disponibile • Eventi Server-Sent: possibilità di ricevere notifiche di tipo push dal server, evitando di effettuare il polling lato client tramite javascript; questo permette un minore ritardo all’arrivo di aggiornamenti e minore traffico scambiato in rete • Web Storage: definisce il modo di salvare in modo persistente dati strutturati in locale lato client • Forms Avanzate: definizione di nuovi tipi di input per le form e meccanismi per facilitare la validazione dei campi • Web Workers: possibilità di eseguire script in background che vengono eseguiti in isolamento dalla schermata principale • Geolocalizzazione: definisce come ottenere informazioni sulla geolocalizzazione dell’utente nella pagina web, attraverso diverse fonti come ad esempio indirizzo IP, connessione alla rete wireless, cella a cui il dispositivo è connesso o attraverso il sensore GPS del dispositivo • Web Sockets: defisce il modo con cui creare un meccanismo di comunicazione bidirezionale tra client e server • CSS3: definisce nuove features a supporto del Cascading Style Sheet, tecnica utilizzata per aggiungere stili alle pagine web Il sito http://html5demos.com/ fornisce un insieme di showcase sulle potenzialità di HTML5, che in base al browser utilizzato possono essere supportate o meno. Le limitazioni di HTML5 con cui le aziende devono al momento confrontarsi nello sviluppo di applicazioni web di tipo business per dispositivi mobile sono: 1- Performance: Molte delle funzionalità innovative introdotte da HTML5 possono creare problemi di performance nelle web application, soprattutto quando vengono utilizzati 70 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise elementi grafici avanzati e streaming video 2- Tempi lunghi per completare la standardizzazione: Il W3C ( World Wide Web Consortium) impiegherà ancora diversi anni per completare la standardizzazione (al momento sul sito viene indicato 2014 come data di completamento) e durante questo lasso di tempo HTML5 potrebbe subire modifiche nelle sue specifiche. Questo fattore può portare i vendors dei browser a non adottare HTML5 totalmente come standard, creando possibili problemi allo sviluppo multipiattaforma da gestire in fase di sviluppo delle web application enterprise 3- Accesso ai sensori dei dispositivi mobile: nonostante HTML5 permetta una migliore user experience delle applicazioni web attraverso le sue features innovative, al momento attuale della standardizzazione esso non può accedere alla maggior parte delle caratteristiche hardware dei dispositivi mobili, mentre le applicazioni mobile di tipo nativo hanno un accesso totale a queste risorse Ron Perry, CIO di Worklight, progetto della IBM per lo sviluppo di applicazioni enterprise mobile, riporta su un articolo in rete che le tecnologie ibride sono un passaggio fondamentale nel processo che porterà HTML5 a poter accedere alle risorse dei dispositivi mobili. In Figura 29 è mostrato come avviene l’ interazione di un’applicazione web mobile basata su HTML5 con il sistema operativo: 71 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 29: Accesso ai sensori HTML5 web application Questo tipo di applicazioni sono eseguite all’ interno di un rendering engine, denominato webkit, che costruisce la pagina web sullo schermo del device, e si occupa di comunicare col sistema operativo attraverso delle chiamate API. Come si vede in figura molte delle caratteristiche hardware del device sono inaccessibili , di colore rosso, altre sono parzialmente accessibili, di colore rosa, e quelle verdi sono totalmente accessibili. Grazie al lavoro del W3C in futuro HTML completerà la sua standardizzazione, e potrà accedere attraverso le API alle risorse del device mobile, qualunque esso sia, diminuendo ulteriormente il gap con le applicazioni mobile di tipo nativo. 3.3.3. Applicazioni ibride Definire ibrido un oggetto, vuol dire crearlo attraverso la fusione di risorse eterogenee o di diverso tipo. Nel caso di applicazioni mobile ibride avviene la fusione tra tecnologie web e tecnologie native del sistema operativo. Un’applicazione ibrida è realizzata attraverso lo sviluppo di codice tramite tecnologie web, usate nei siti web e nelle loro implementazioni mobile, che viene incapsulato all’interno di un container nativo sul device mobile. Quindi è una fusione di tecnologie web e ambiente di esecuzione nativo. Le applicazioni ibride 72 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise sfruttano la capacità da parte dei dispositivi mobile di poter renderizzare a video contenuti prodotti con le tecnologie Web. Attraverso una webview control (componente software supportato dalla maggior parte dei dispositivi mobili) vengono integrati contenuti Web all’interno delle applicazioni native. L’interfaccia utente costruita con HTML viene mostrata a pieno schermo, usando per la sua visualizzazione un rendering engine browser denominato WEBKIT. Esso è utilizzato in tutti i sistemi operativi mobile, eccetto Windows phone 7 e la futura versione di Windows che continuerà ad utilizzare l’engine Trident. Il codice HTML e javascript vengono eseguiti all’interno di un involucro nativo. La caratteristica principale delle applicazioni ibride è l’accesso alle risorse hardware del device mobile attraverso uno strato software che si occupa di fare da bridge software tra le API javascript e le API native che governano i vari sensori. Questa caratteristica non è consentita alle applicazioni web mobile a causa di limitazioni basate sulla sicurezza che possono essere superate solo grazie alla standardizzazione di HTML5. Lo strato software può essere realizzato ad-hoc per ogni sistema operativo,ma esistono attualmente tool che realizzano lo strato per diversi sistemi operativi, permettendo di sviluppare l’applicazione in html ed eseguirla come applicazione nativa per diverse piattaforme. In Figura 30 viene mostrato come avviene l’interazione tra applicazione ibrida e le risorse del device sfruttando lo strato software che fa da ponte, che permette l’accesso ad un insieme di features messe a disposizione dal sistema operativo: 73 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 30: Accesso ai sensori applicazioni ibride Il funzionamento di un’applicazione ibrida avviene tramite l’interazione di 2 parti: Parte nativa dell’applicazione, che ha libero accesso a tutte le API di basso livello del sistema operativo e quelle di alto livello, potendo comunicare con le app built-in Parte Web dell’ applicazione, eseguita dal rendering engine, incapsulata nella parte nativa e non nel browser del device, che può accedere alle funzionalità offerte da html 5 e javascript. Il collegamento tra le 2 parti viene realizzato attraverso lo strato bridge software. I principali benefici di questo approccio sono: • Accesso alle risorse del device • Scrittura di codice con tecnologie web • Scrittura del codice una volta e riutilizzarlo per sviluppare applicazioni multipiattaforma che supportano gran parte delle piattaforme mobile • Possibilità di utilizzo in modalità completamente offline, senza uso di caching di HTML5 • Distribuzione attraverso i vari Stores delle piattaforme mobile Le applicazioni ibride possono essere sviluppate in 3 modi: 1- Mettere i contenuti su un server e caricarli in base alle richieste dell’applicazione, 74 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise perdendo quindi la possibilità di avere l’applicazione offline e incrementando la latenza per reperire i dati dal server 2- Inserire i contenuti all’interno dell’applicazione impacchettandoli insieme al codice compilato e quindi accessibili in modalità offline, anche senza l’utilizzo del caching HMTL5. 3- Un mix dei 2 modi, reperendo i dati dal server tramite chiamate AJAX , tecnologia che riduce il traffico dati sulla rete nella comunicazione col server, andando a recuperare solo il payload generato dall’ interazione dell’ utente con l’interfaccia grafica e non i dati per generare le pagine 3.3.3.1. Phonegap Phonegap è una tecnologia applicativa che permette di creare un contenitore nativo nel quale eseguire un’applicazione mobile sviluppata attraverso linguaggi web come HTML, Javascript, CSS. Il core della tecnologia è open source. Esso è utilizzato come strumento di sviluppo di client mobile da diverse piattaforme mobile di sviluppo come ViziApps, Worklight, Convertigo e appMobi. Nel 2011 Adobe acquisisce Nitobi Software, sviluppatore di Phonegap, e rende disponibile l’accesso al software dal suo ambiente di sviluppo Dreamweaver. Attraverso l’utilizzo del componente software web view, utilizzato anche dal sistema operativo per il browser built-in, è possibile creare l’interfaccia grafica dell’applicazione e le interazioni con essa basandosi sulle tecnologie web per renderizzare i contenuti html ed elaborare le richieste utente di tipo navigazione, interazione, manipolazione dell’interfaccia utente attraverso javascript. Phonegap fornisce un set di api javascript che permettono l’accesso a funzionalità del sistema operativo sottostante e l’accesso ai sensori del dispositivo attraverso invocazione da codice javascript. Le api fornite supportano un ampio numero di sistemi operativi (http://phonegap.com/about/feature). Il funzionamento delle api consiste in 2 parti: una parte javascript da invocare e una nativa che si occupa di eseguire la funzionalità richiesta. Phonegap si occupa di gestire la comunicazione tra le 2 parti dell’invocazione. Una volta prodotto il codice dell’applicazione, esso viene distribuito come un archivio applicativo binario in base al sistema operativo target. Ad esempio per IOS viene creato un file .IPA, 75 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise per Android un .APK, per Windows phone un .XAP. Attraverso l’utilizzo di phonegap è possibile riutilizzare il codice dell’applicativo per le piattaforme supportate, dovendo solo sviluppare il contenitore nativo. 3.3.4. Custom Container Sviluppare un’applicazione tramite le tecnologie denominate Custom Container permette di creare applicazioni mobile native potendo usare sia tecnologie web che un linguaggio di programmazione e strumenti proprietari; il codice prodotto viene inserito in un container nativo customizzato. Questo container svolge la funzione di virtual machine, cioè mappa il codice prodotto in fase di sviluppo sulla piattaforma del dispositivo sul quale viene eseguito. Il custom container che fa da interprete è richiesto per ogni piattaforma mobile supportata. Viene data la possibilità di creare un’applicazione sia con il runtime incluso nel package dell’applicazione nativa, sia senza ed usare il runtime in maniera separata; in questo caso esso deve essere già installato sulla piattaforma sulla quale eseguire l’applicativo. In Figura 31 è presentato lo stack applicativo della tecnologia: Figura 31: Stack applicativo custom container I vantaggi offerti dallo sviluppo di applicazioni attraverso questo tipo di tecnologia consistono in: 1- Accesso ai sensori del device e ai servizi del sistema operativo attraverso le api fornite dal framework ed estensioni native 76 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 2- Il numero di piattaforme nelle quali un’applicazione può essere eseguita, dipende solo da quante vengono supportate dal runtime 3- Qualità dell’ambiente di sviluppo e del container, che permettono in maniera integrata di sviluppare e testare l’applicazione senza l’uso degli SDK (Software Development Kit ) nativi 4- Il contenitore customizzato risiede sul dispositivo e può accettare aggiornamenti OTA che bypassano il controllo degli stores, diminuendo i tempi di aggiornamento 5- Riuso di codice e strumenti per produrre applicazioni per diverse piattaforme 6- L’elevata qualità dei tool a supporto rendono la manutenzione meno onerosa 7- Possibilità di essere distribuite attraverso i vari Stores delle piattaforme mobile 3.3.4.1. Adobe AIR Adobe Air è un runtime che permette lo sviluppo di Rich Internet Application, attraverso linguaggi web standard (HTML,Javascript,CSS ) e proprietari (actionscript), il cui codice può essere riutilizzato incapsulandolo in applicazioni native per diverse piattaforme, sia mobile che desktop. Le piattaforme mobile supportate sono: IOS, Android, RIM su device tablet. Il runtime di Air fornisce una piattaforma e un framework per supportare diversi sistemi operativi. Attraverso l’utilizzo del runtime è possibile sviluppare le applicazioni multipiattaforma senza dover interessarsi del sistema operativo sottostante, visto che il target del codice è il runtime che fa da interprete, ossia converte a tempo di esecuzione il linguaggio prodotto nel processo di sviluppo in quello utilizzabile dal processore del sistema operativo di riferimento. Attraverso l’uso di tecnologie web, sia open che proprietarie (Flash o Flex), è possibile sviluppare applicazioni web come native senza dover utilizzare il codice specifico per ogni sistema operativo mobile. In figura 32 è riportato lo stack applicativo di Air: 77 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 32: Stack applicativo di Adobe Air Per lo sviluppo di applicativi mobile, viene creato un file .air che contiene il codice dell’applicazione, il quale viene eseguito dal componente runtime. Il runtime fornisce meccanismi di bridging tra HTML/JS e Flash, inoltre permette di invocare servizi del sistema operativo sottostante in maniera trasparente attraverso le api fornite. Le api builtin fornite permettono di utilizzare determinati servizi del sistema operativo e consentono l’accesso a un subset di features di basso livello del dispositivo, come gps e accelerometro. Qualora gli sviluppatori necessitino di ulteriori features e servizi è possibile sviluppare delle api aggiuntive denominate native extensions. Queste sono librerie che contengono codice nativo creato ad-hoc che viene wrappato in API actionscript. Un esempio di utilizzo è quello di inserire la vibrazione del dispositivo. In figura 33 sono riportate le interazioni tra le native extensions, l’Air runtime e il dispositivo. 78 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 33: architettura native extension 3.3.5. Cross-compilation Attraverso l’uso delle tecnologie denominate Cross-compilation si può sviluppare un’applicazione nativa scrivendo il codice in un linguaggio proprietario, che viene convertito in fase di compilazione nel linguaggio nativo per la piattaforma target. È richiesta una Cross-compilation per ogni piattaforma che si vuole supportare. Questo tipo di tecnologie forniscono una serie di API indipendenti dalla piattaforma che invocano le API native dello specifico sistema operativo. Le API fornite da queste tecnologie si integrano in maniera profonda con le caratteristiche e le capacità native delle piattaforme supportate. Questo comporta un accesso maggiore alle features del dispositivo ma una espansione del framework su diverse piattaforme onerosa, perché devono essere sviluppate un nuovo set di API per ogni piattaforma che si intende supportare. I maggiori benefici dati dallo sviluppo con queste tecnologie sono: 1- Sviluppo del codice dell’applicativo con linguaggi familiari agli sviluppatori (esempio Javascript, C#, Java) 2- Le API fornite permettono un maggiore accesso alle caratteristiche e ai sensori del dispositivo, potendo fornire quindi una esperienza utente vicina alle applicazioni native 79 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 3- Creazione e interazione con le interfacce utente attraverso controlli nativi migliorano l’esperienza utente 4- Gli sviluppatori possono usare un unico linguaggio di programmazione nello sviluppo e poter distribuire l’applicazione per più piattaforme 5- Le applicazioni sviluppate possono essere distribuite attraverso i vari Stores delle piattaforme mobile 3.3.5.1. Titanium appcelerator Titanium è un framework open source utilizzato per poter sviluppare applicazioni native per desktop e mobile usando tecnologie web come javascript, html, e css. Questo framework utilizza in maniera combinata API javascript e codice nativo specifico della piattaforma sulla quale viene eseguita l’applicazione. Esso permette un riutilizzo del codice per la parte core dell’applicativo, e attraverso l’uso di codice specifico per una piattaforma (attraverso invocazione delle API proprietarie) permette di ottenere performance e user experience vicine a quelle native. Quindi esso non utilizza un approccio “write once, run everywhere” ma uno del tipo “write once, adapt everywhere”, soprattutto per la parte legata all’interfaccia utente che deve essere adattata in base alla piattaforma target. Il funzionamento del framework è basato sulla combinazione del codice javascript prodotto con le API proprietarie fornite che sfruttano il codice nativo per ogni piattaforma supportata; durante la compilazione viene settata la piattaforma di destinazione, viene analizzato e preprocessato il codice javascript e precompilato in un set di simboli risolti in base all’utilizzo delle API di titanium. La mappatura dipende dalla piattaforma target; ad esempio su IPhone avviene una mappatura tra le API titanium e un file .o che è stato compilato per l’architettura ARM. Una volta eseguito il mapping viene invocato il compilatore nativo fornito dall’SDK della piattaforma target che produce il codice binario. Il codice javascript che si occupa dell’application logic e del codice dinamico (esempio la modifica real time dell’interfaccia utente a seguito di un evento ) viene inserito all’interno del file binario dell’applicazione nativa e viene interpretato a runtime dall’interprete basato sull’engine Webkit che viene invocato durante l’avvio dell’applicazione. L’interprete si occupa di agganciare il codice javascript che viene 80 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise caricato come un oggetto inline con gli oggetti nativi della piattaforma sottostante. Il mapping viene effettuato in maniera stringente uno ad uno. In questo modo le API titanium permettono di fare da bridge per l’accesso diretto alle features native, tra cui gli elementi nativi della UI, senza l’utilizzo del componente web view, e i sensori del dispositivo. La comunicazione con le features native viene effettuata direttamente senza conversione del codice javascript in codice proprietario della piattaforma, ad esempio Object-C o Java. In figura 34 viene mostrata l’architettura del framework. Figura 34: Stack applicativo di Titanium Le Api titanium coprono molte delle features dei sistemi operativi supportati; ci sono però altri servizi e caratteristiche che non sono direttamente supportate. Il framework offre la possibilità di estendere le funzionalità attraverso moduli opzionali nativi ove ci sia la necessità di supportare una specifica feature o ad esempio per riutilizzare una libreria nativa già esistente. Il processo per sviluppare un modulo nativo su titanium prevede 4 passaggi: 1- Definizione della funzionalità da esporre e come essa viene invocata dal codice javascript, quindi si definisce l’API del modulo 81 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 2- Creazione del progetto con gli strumenti dell’SDK nativo per realizzare il modulo 3- Implementazione dell’API 4- Build, test, debug 3.4. Confronto tecnologie di sviluppo multipiattaforma Tutti i tipi di approcci allo sviluppo e le tecnologie utilizzabili per realizzare applicazioni mobile multipiattaforma in ambiente enterprise hanno punti di forza e di debolezza. La scelta della tecnologia da adottare può dipendere da diversi fattori, come le esigenze aziendali e i requisiti dell’applicativo da realizzare. Possono essere applicati diversi criteri e metodologie, ma la loro applicazione deve adattarsi al contesto di riferimento che può richiedere una valutazione diversa o aggiuntiva. Viene presentata una metodologia di supporto alla decisione denominata Analytic Hierarchy Process (AHP), utilizzata per confrontare sotto diversi driver le tecnologie di riferimento scelte. 3.4.1. Analytic Hierarchy Process (AHP) Per determinare quale tra le diverse tecnologie di sviluppo è più opportuno utilizzare viene di seguito illustrato e applicato un modello di scelta multi criterio, non essendo possibile utilizzare un metodo di ottimizzazione a causa della numerosità e diversità dei fattori che influenzano la decisione. L’analisi multi criterio per scopo decisionale (MCDA multi criteria decision analysis) è una disciplina orientata a supportare il decisore qualora si trovi a operare con valutazioni numerose e conflittuali,consentendo di ottenere una soluzione di compromesso in modo trasparente. I metodi di analisi multi criterio supportano il decisore nella fase di organizzazione e sintesi di informazioni complesse e spesso di natura eterogenea. Tali metodi, elaborando informazioni note e giudizi espressi dal decisore, consentono di determinare una decisione di compromesso ( best compromise solution/decision), permettendo dunque al decisore di selezionare l’alternativa più coerente con la propria struttura di preferenza. In particolare, tra le diverse metodologie MCDA, viene applicata l’ Analytic Hirarchy Process AHP. L’AHP consente di assegnare una priorità ad una serie di alternative decisionali, mettendo in relazione valutazioni di tipo qualitativo e quantitativo, altrimenti non direttamente confrontabili , e combinando scale multidimensionali di misure in una singola scala di 82 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise priorità.(Saaty,1980:Figueira,2005) L’AHP affronta il processo di valutazione attraverso tre fasi: 1- Scomposizione gerarchica del problema 2- Giudizi comparati attraverso confronti a coppie delle alternative ad ogni livello della gerarchia 3- Ricomposizione gerarchica, sintesi delle priorità e verifica di consistenza Nella prima fase, definito l’obiettivo generale, si individuano i driver (e possibili sottocriteri che vanno a formare l’albero decisionale) che lo influenzano e le alternative tra le quali scegliere quella che ottiene il miglior punteggio globale. Si struttura il problema in una gerarchia. Figura 33: Gerarchia piramidale dell'AHP, applicato per individuare la tecnologia di sviluppo di un’applicazione di riferimento L’albero decisionale mostra graficamente la struttura dell’applicazione del metodo che consiste nel valutare l’importanza di ogni driver in relazione all’obiettivo e ogni alternativa in relazione ai diversi driver. Il passo successivo è quello di comparare i vari elementi di ogni livello della gerarchia partendo dalle foglie dell’albero. Per stabilire le priorità tra i vari elementi di ciascun livello della gerarchia rispetto al nodo superiore si utilizza la tecnica del confronto a 83 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise coppie. Da questo confronto si può stabilire il grado di importanza di un elemento rispetto ad un altro, entrambi appartenenti allo stesso livello. I risultati dei confronti a coppie vengono aggregati in forma matriciale. Si definisce quindi la matrice dei confronti a coppie, in cui il generico elemento aij è una stima della dominanza del primo elemento (i) rispetto al secondo (j). Le valutazioni possono essere sia di tipo qualitativo che quantitativo. Per determinare i valori dei coefficienti aij occorre utilizzare la scala semantica di Saaty (Tabella 5), che mette in relazione i primi nove numeri interi con altrettanti giudizi che esprimono, in termini qualitativi, i possibili risultati del confronto. In caso di misure quantitative vengono utilizzati i dati ricavati di ogni elemento per la fase successiva di sintesi e ranking. 1 3 5 7 9 2,4,6,8 i ugualmente importante rispetto a j i leggermente più importante del criterio j i più importante rispetto a j i molto più importante rispetto a j i estremamente più importante di j giudizi intermedi o di compromesso Tab.5: Scala semantica di Saaty I dati contenuti nelle matrici dei confronti a coppie sono utilizzati per derivare l’ordine delle priorità tra gli elementi di ciascuna matrice, ovvero una scala di valori che esprime la preferenza finale delle alternative confrontate rispetto al criterio di riferimento. Per ottenere il ranking locale relativo allo i-esimo livello della gerarchia viene calcolato l’autovettore della matrice effettuando l’elevamento a potenza della matrice e sommando gli elementi di ogni riga. Il vettore risultante viene normalizzato in base alla somma di tutti gli elementi dello stesso vettore. Ognuno di questi vettori delle priorità esprime le priorità locali degli elementi rispetto all’elemento posto a livello superiore; per ottenere le priorità globali, cioè per ottenere un ordinamento globale delle alternative rispetto all’obiettivo finale, si procede per aggregazione e confronto dei criteri posti a livello superiore. L’ordinamento globale si ottiene mediante la somma pesata dei vettori delle priorità locali delle diverse alternative, in cui i pesi sono rappresentati dai pesi attribuiti a ciascun driver. 84 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise I pesi globali rappresentano il risultato finale della valutazione in quanto consentono di effettuare un ranking di preferenza: un’alternativa sarà tanto più preferibile quanto maggiore è il suo peso globale. 3.4.2. Applicazione del metodo Le tecnologie che vengono messe a confronto su diversi criteri legati allo sviluppo di applicazioni enterprise sono: nativa , web application, cross-compiled, custom container e ibrida. I confronti che vengono effettuati tra le diverse tecnologie sono realizzati sui seguenti driver: • Portabilità: il numero di piattaforme supportate da una determinata tecnologia. Tecnologie con elevata portabilità favoriscono politiche aziendali di tipo BYOD e impattano maggiormente sulla diminuzione dei costi di sviluppo quando il numero di piattaforme aumenta. • Accesso ai sensori: la capacità di una tecnologia di accedere ai sensori del dispositivo Le tecnologie che forniscono un alto livello di integrazione con le risorse hardware delle diverse piattaforme supportate permettono di sviluppare applicazioni utilizzabili in un vasto range di scenari di utilizzo, risultando maggiormente flessibili. • Integrazione Applicazioni: è la possibilità di un’applicazione sviluppata con una determinata tecnologia di interagire con le altre eseguite sul sistema operativo, attraverso l’uso di protocolli di comunicazione e servizi del sistema operativo. Le tecnologie con un alto livello di integrazione si adattano meglio a scenari in cui sono presenti diverse applicazioni che devono cooperare per realizzare una macro attività o necessitano di particolari servizi del sistema operativo • Aggiornamento funzionalità: Le risorse necessarie in termini di tempi e costi per aggiungere o modificare le funzionalità di un’applicazione multipiattaforma sviluppata con una determinata tecnologia. Un’applicazione facile da aggiornare permette di lavorare su un unico codice per le diverse versioni del software in un unico ambiente di sviluppo integrato. • Performance: il comportamento dell’applicazione realizzata con una determinata tecnologia a fronte di un uso intenso delle risorse di calcolo del dispositivo. Le 85 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise situazioni più critiche sono rappresentate dalla presenza nell’interfaccia utente di elementi grafici avanzati o elaborazione di grafica 3D o algoritmi complessi; altro fattore da considerare è come le prestazioni degradano rispetto ad eventi come tocco o zoom. Dopo aver definito i driver sui quali effettuare i confronti delle diverse tecnologie, in base alle specifiche del contesto in cui deve essere sviluppata l’applicazione è necessario definire le priorità. Viene presentato uno scenario sul quale applicare il metodo AHP: un’azienda vuole realizzare un’applicazione a supporto di una figura professionale che opera in mobilità con mansioni principalmente di sales force, coprendo diverse attività nell’orario di lavoro. L’applicazione deve poter essere eseguita sul dispositivo dell’addetto in maniera indipendente dalla piattaforma sottostante e deve poter eseguita sia se il dispositivo è aziendale che privato. Il numero di piattaforme da supportare deve essere elevato per permettere di perseguire una politica di BYOD. L’azienda ha comunque individuato un sottoinsieme di piattaforme di riferimento per le fasi di sperimentazione del progetto. Le diverse versioni delle applicazioni dovranno avere un elevato grado di integrazione con il sistema operativo su cui vengono eseguite, dovendo interagire con le altre applicazioni già risiedenti sul sistema. È richiesto inoltre la possibilità dell’accesso a determinati servizi e sensori del sistema operativo, in particolare Gps, local storage, e il funzionamento offline. L’azienda intende utilizzare in futuro caratteristiche specifiche di determinati tipi di dispositivi, come la possibilità di sfruttare la firma biometrica nel processo di dematerializzazione dei contratti. Sulla base dello scenario descritto le priorità attribuite ai diversi driver sono state: 1°.Portabilità: la portabilità è il driver più importante per le esigenze del progetto, le piattaforme da supportare devono essere numerose ed è richiesto la facilità di adattare l’applicazione all’evoluzione delle piattaforme. 2°.Integrazione applicazioni: l’integrazione e la collaborazione tra le diverse applicazioni,i servizi offerti dal sistema operativo e le applicazioni built-in è richiesta per poter eseguire le macroattività in maniera agevole. 3°.Aggiornamento: L’applicazione deve essere facilmente aggiornabile e modificabile in 86 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise tutte le versioni per le diverse piattaforme supportate. 4°.Accesso ai sensori: L’accesso ai sensori e ai servizi del sistema operativo è richiesto principalmente per l’accesso al gps, lettura di codice a barre e la memorizzazione locale per il funzionamento offline. In futuro è richiesta la possibilità di supportare la firma biometrica. 5°.Performance: L’interfaccia utente non deve essere particolarmente complessa, in modo da aumentarne l’usabilità, garantendo una esperienza utente accettabile. In base alle considerazioni fatte è possibile compilare la tabella sottostante come previsto dal metodo AHP Portabilità Accesso ai sensori Costi di Integrazione Performance aggiornamento applicazioni Portabilità 1,00 7,00 2,50 1,67 9,00 Accesso ai sensori 0,14 1,00 0,33 0,20 2,00 Costi di aggiornamento Integrazione applicazioni Performance 0,40 3,00 1,00 0,50 4,00 0,60 5,00 2,00 1,00 7,00 0,11 0,50 0,25 0,14 1,00 Tabella 6: Confronto a coppie dei driver Per ogni driver scelto è necessario dare una valutazione qualitativa rispetto alle tecnologie di sviluppo. In seguito viene presentata una valutazione dei pesi assegnati ad ogni tecnologia rispetto ai driver individuati. Per far questo sono state utilizzate informazioni provenienti da documenti prodotti dalla Gartner, una società di analisi specializzata in assessment tecnologico e di mercato del settore IT, articoli ricercati in rete e prove effettuate su prototipi realizzati ad-hoc per testare i diversi driver. I diversi test sono stati svolti realizzando come demo una rubrica che sia capace di interfacciarsi con i sensori del dispositivo, in particolare vibrazione e gps, focalizzando le prove su aspetti legati alla portabilità e facilità di aggiornamento. Per ogni famiglia di tecnologie si è scelta una soluzione di riferimento che rappresentasse meglio gli aspetti rilevati dalla letteratura. Le tecnologie scelte sono HTML5 per la web application, Phonegap e un bridge realizzato ad 87 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise hoc per l’ibrido, Adobe Air per il custom container e Titanium per il cross compiled. Le piattaforme sulle quali sono state testate le diverse versioni della demo sono Windows 8 e android 4.0; i dispositivi utilizzati sono stati tablet per il sistema android e un pc desktop per windows 8, sul quale è stata sviluppata la demo come applicazione win32. Di seguito vengono riportate le valutazioni finali emerse per ogni driver. 3.4.2.1. • Portabilità Nativa: le applicazioni native non sono portabili, per ogni piattaforma che si vuole supportare bisogna sviluppare un porting. Esso viene effettuato utilizzando strumenti di sviluppo, tecnologie, e linguaggi specifici forniti dall’SDK della piattaforma target • Cross-compiled: La portabilità delle applicazioni cross-compiled dipende dal supporto dei framework alle diverse piattaforme. Estendere la portabilità è oneroso a causa dello sviluppo delle numerose api da realizzare. Lo sviluppo del software con questa tecnologia permette il riuso quasi totale del codice per le varie piattaforme, dovendo adattarlo nei casi in cui bisogna accedere a caratteristiche specifiche di una piattaforma (esempio uso della firma biometrica). Oltre al riuso del codice si possono usare gli stessi strumenti, tecnologie e linguaggi per le diverse piattaforme da supportare, ma potrebbe essere necessario l’uso degli SDK nativi per le fasi di packaging, testing e deploying dell’applicativo • Custom Container: le applicazioni Custom Container sono portabili in maniera simile alle Cross-compiled, dipendono dal numero di piattaforme supportate dall’interprete del custom container. Viene utilizzato lo stesso codice e gli stessi strumenti per lo sviluppo dell’applicazione per le diverse piattaforme. Per supportare specifiche features di una piattaforma in particolare è necessario adattare il codice, potendo però contare su strumenti a supporto efficaci. • Ibrida: le applicazioni ibride offrono una buona portabilità. Può essere usato lo stesso codice e strumenti per sviluppare le applicazioni multipiattaforma. In pratica vengono supportate tutte le piattaforme che possono gestire i controlli e la presentazione con le tecnologie web embedded, cioè integrate nell’applicazione nativa, attraverso i vari SDK. Strumenti nativi possono essere necessari per le fasi di packaging, testing, e 88 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise distribuzione dell’applicazione. • Applicazioni web mobile: le applicazioni web mobile offrono la portabilità migliore di tutte le tecnologie. Un’applicazione può supportare qualsiasi piattaforma che ha un Web browser. Bisogna però in fase di sviluppo pensare a gestire la frammentazione dei browser e il loro supporto alle tecnologie web, soprattutto HTML5 e CSS3. Non sono necessarie le tecnologie native nello sviluppo, anche se strumenti nativi possono essere necessari per la fase di testing (esempio uso di simulatori). La sperimentazione ha permesso di costatare che il codice sviluppato tramite html, css e javascript sia supportato da tutte le piattaforme utilizzate. L’applicazione realizzata con questa tecnica ha però mostrato limitazioni per quanto riguarda la vibrazione che non è realizzabile e l’utilizzo del GPS non supportato da tutti i browser. Per quanto riguarda le tecnologie ibride è immediato riutilizzare il codice web prodotto e integrare la vibrazione e il gps attraverso il bridge, sia creato ad-hoc che tramite Phonegap. Per quanto riguarda Adobe air è stato possibile importare il codice web all’interno del un pacchetto air da far eseguire dal contenitore ma questo approccio non permette l’accesso ai sensori per la vibrazione e il GPS. Si è effettuato un porting verso la tecnologia Actionscript che supporta il flex framework, nel quale è possibile utilizzare librerie aggiuntive per accedere ai sensori del dispositivo. In questo modo è stato possibile realizzare l’applicazione completa delle sue funzionalità. Il framework inoltre consente di esportare il pacchetto nativo per i sistemi operativi mobile come Ios, Android e blackberry senza la necessità di istallare il contenitore separatamente. Su piattaforme desktop come windows è necessario installare l’air runtime separatamente. In base a queste considerazioni è stata fatta la seguente valutazione. 89 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Nativo Cross compiled Custom Container Ibrido Web application Nativo 1,00 0,17 0,17 0,13 0,11 Cross compiled 6,00 1,00 1,00 0,50 0,20 Custom Container 6,00 1,00 1,00 0,50 0,20 Ibrido 7,50 2,00 2,00 1,00 0,67 Web application 9,00 5,00 5,00 1,50 1,00 Tabella 77: Confronto a coppie delle diverse alternative in relazione al driver "Portabilità" 3.4.2.2. • Integrazione applicazioni Web-application: le web application non hanno possibilità di interagire con le applicazioni sviluppate con tecnologia nativa e non possono utilizzare servizi di storage offerti dal sistema operativo. • Ibrido: le applicazioni ibride supportano parzialmente l’integrazione con le altre applicazioni, ad esempio sono supportate alcune applicazioni built-in come il calendario. • Cross-compiled: Attraverso le api offerte da questa tecnologia è permesso l’uso di molte funzionalità del sistema operativo di riferimento. E’ consentito l’accesso e la comunicazione con tutte le applicazioni built-in, ma la comunicazione fra applicazioni non è supportata completamente. È possibile estendere le funzionalità attraverso i moduli nativi. • Custom-container: le features accessibili sono quelle più comuni e condivise da tutti i sistemi operativi quindi l’integrazione con le altre applicazioni non è offerto dalla tecnologia se si utilizzano tecnologie web aperte. Attraverso l’uso del framework Flex e il linguaggio actionscript è possibile utilizzare diverse api ed estensioni native per accedere ai servizi del sistema operativo. • Nativo: l’integrazione con le altre applicazioni è supportata completamente attraverso l’uso delle API fornite dalle diverse piattaforme. Oltre a queste considerazioni sono emerse dai test effettuati le limitazioni delle tecnologie di riferimento rispetto al nativo. Mentre la web application attraverso l’html 5 consente di 90 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise accedere solo al GPS, l’ibrido sia con phone gap che con un bridge customizzato permettono sia la geolocalizzazione che l’accesso ai sensori come la vibrazione. Preclusa è invece la possibilità di utilizzare il protocollo di comunicazione tra le applicazioni offerto sia da Android che da Windows implementato dal sistema operativo. Per il bridge customizzato è necessario scrivere del codice nativo che integri queste funzionalità mancanti. Per adobe air valgono le stesse cosiderazioni, il toolset non offre la possibilità di utilizzare questa caratteristica specifica del sistema operativo ma mette a disposizione degli strumenti che consentono di implementare delle librerie aggiuntive utilizzando codice nativo che si integrano con il flex framework. Anche Titanium preclude questa possibilità ma consente di integrare in codice nativo all’interno dell’applicazione. In base a queste considerazioni sono stati dai i seguenti pesi: Nativo Cross compiled Custom Container Ibrido Web application Nativo 1,00 1,43 2,00 2,00 9,00 Cross compiled 0,70 1,00 1,67 1,67 7,00 Custom Container 0,50 0,60 1,00 1,00 5,00 Ibrido 0,50 0,60 1,00 1,00 5,00 Web application 0,11 0,14 0,20 0,20 1,00 Tabella 88: Confronto a coppie delle diverse alternative in relazione al driver "Portabilità" 3.4.2.3. • Aggiornamento funzionalità Nativa: Le applicazioni multipiattaforma sviluppate con tecnologia nativa forniscono le peggiori prestazioni in termini di aggiornamento delle funzionalità. Supportare diverse piattaforme comporta lo sviluppo di codice nativo unico per ognuna, utilizzando quindi linguaggi, strumenti e tecnologie peculiari, il che comporta il riuso di codice e strumenti poco attuabile. Aggiungere nuove funzionalità ad una applicazione comporta lavorare a diverse versioni del codice. • Cross-compiled: sviluppare applicazioni multipiattaforma con le tecnologie crosscompiled permette il riuso del codice e degli strumenti di sviluppo, dovendo adattare 91 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise ed estendere il codice relativo all’interfaccia grafica e alle funzionalità del sistema operativo che non vengono supportate dalle api built-in fornite dal framework. • Custom-container: sviluppare applicazioni multipiattaforma con le tecnologie custom container comporta un buon risparmio in termini di costi e tempi di aggiornamento e modifiche, potendo riutilizzare lo stesso codice e gli stessi strumenti per le diverse versioni dell’applicazione. Per funzionalità del sistema operativo e sull’uso dei sensori che non sono coperte dalle api fornite dal framework, è necessario sviluppare l’estensioni native per ogni piattaforma da supportare. • Ibrida: Queste tecnologie permettono un buon risparmio in termini di costi di aggiornamento, grazie al significativo riuso del codice e l’utilizzo di tecnologie conosciute e mature, che permettono di abbassare i costi. Un fattore da tenere in considerazione risulta essere l’utilizzo delle tecnologie native per le fasi di packaging, testing e distribuzione. • Applicazioni web mobile: le applicazioni che vengono sviluppate tramite le tecnologie web hanno il maggiore impatto sui costi di aggiornamento in ambito multipiattaforma. Infatti avendo la maggiore portabilità e l’utilizzo di una singola versione del codice per tutte le piattaforme, riescono ad abbassare i costi e i tempi per effettuare modifiche e nuove funzionalità. Per le tecnologie sperimentate è stato costatato come la web application e l’ibrido si possono aggiornare ed estendere in maniera simile in quanto entrambe utilizzano tecnologie web per la logica di business dell’applicativo e lo strato di presentazione. Tecnologie come Adobe Air consentono di scrivere codice una volta per tutte le piattaforme ed eventualmente importare librerie già sviluppate se si intende supportare diversi sistemi operativi con una determinata funzionalità, come ad esempio la vibrazione. Con il framework Titanium l’aggiornamento deve tenere conto delle specifiche api del sistema operativo da supportare. Titanium offre una serie di api comuni a tutte le piataforme supportate che coprono le funzionalità comuni, se è necessario accedere a una libreria specifica bisogna riscrivere la porzione di codice che implementa tale funzione per 92 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise il sistema operativo scelto. Le valutazioni effettuate sono le seguenti: Nativo Cross compiled Custom Container Ibrido Web application Nativo 1,00 0,20 0,14 0,14 0,11 Cross compiled 5,00 1,00 0,33 0,33 0,20 Custom Container 7,00 3,00 1,00 1,00 0,33 Ibrido 7,00 3,00 1,00 1,00 1,00 Web application 9,00 5,00 3,00 1,00 1,00 Tabella 9: Confronti a coppie delle diverse alternative in riferimento al driver “integrazione applicazioni” 3.4.2.4. • Accesso ai sensori Nativo: con questo approccio si ha la massima integrazione con le caratteristiche specifiche sia del sistema operativo che del device. Si ha l’accesso a tutti i sensori e/o alle API di basso livello che ne consentono l’accesso. • Cross-compiled: questa tecnologia permette di sfruttare la maggior parte delle funzionalità caratteristiche delle piattaforme supportate. Essendo l’integrazione nativa molto profonda e specifica il supporto è limitato a due o tre piattaforme di riferimento. Poiché la tecnologia sfrutta una serie di API per accedere alla piattaforma di destinazione non tutte le funzionalità sono esposte, ad esempio se si vuole includere l’utilizzo della firma biometrica. Il codice che accede ad una caratteristica specifica di una piattaforma deve essere scritto per tutte le piattaforme da supportare, non potendo riutilizzare il codice prodotto. • Custom-container: l’applicazione ha bisogno di un contenitore nativo per ogni piattaforma supportata, i tool di sviluppo offrono degli strumenti che consentono di accedere a determinate features, coprendo solo un sottoinsieme di capacità native, quelle comuni fra le diverse piattaforme, ad esempio il gps. Per accedere ai sensori non forniti dalle api built-in è necessario sviluppare le estensioni native per ogni 93 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise piattaforma supportata. • Ibrido: in questa tipologia di applicazioni il bridge fornisce ha un accesso limitato alle specifiche funzionalità della piattaforma sottostante. Sono supportate le funzionalità più comuni del dispositivo come il GPS o la fotocamera. Per aumentare il supporto ai sensori è possibile creare estensioni native per il bridge di terze parti come quello fornito da Phonegap, o sviluppare il codice per il bridge creato ad-hoc. • Web-Application: L’accesso ai sensori tramite HTML5 e javascript ai sensori e ad alcune applicazioni built-in è limitato, soprattutto per ragioni di sicurezza. La sperimentazione ha evidenziato come l’accesso ai sensori sia maggiormente supportato dalla tecnologia cross compiled che implementa di default caratteristiche specifiche dei device che montano i sistemi operativi di cui si forniscono le api. L’ibrido espone tutti i sensori comuni ai vari device come mostra la documentazione di Phonegap; creando il bridge ad-hoc è possibile accedere a tutti i sensori del dispositivo attraverso invocazioni del codice nativo. Adobe air supporta quasi tutte le caratteristiche più comuni come il GPS e la camera, mentre per la vibrazione è stato necessario importare una libreria esterna fornita da Adobe specifica per il sistema Android. Le valutazioni effettuate sono le seguenti: Nativo Cross compiled Custom Container Ibrido Web application Nativo 1,00 1,25 2,00 1,67 9,00 Cross compiled 0,80 1,00 1,67 2,50 3,33 Custom Container 0,50 0,60 1,00 0,50 3,00 Ibrido 0,60 0,40 2,00 1,00 5,25 Web application 0,11 0,30 0,33 0,19 1,00 Tabella 10: Confronto a coppie tra le diverse alternative in relazione al driver "Accesso ai sensori" 94 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 3.4.2.5. • Performance Nativo: questo approccio fornisce le performance migliori in quanto consente sia di utilizzare i controlli nativi dell’SDK per ogni piattaforma che di creare interfacce molto complesse sfruttando le librerie grafiche native. • Cross-compiled: grazie alla profonda integrazione offerta dalle API dedicate ad ogni specifica piattaforma si riescono a ottenere delle interfacce simili a quelle native e buone performance. • Custom-container: i tool offerti dalle tecnologie custom permettono di creare interfacce anche elaborate ma spesso lontane da quella che è la user experience che l’utente si aspetta da una determinata piattaforma. L’interpretazione del codice a runtime del contenitore può ridurre le performance dell’applicazione soprattutto quando sono richieste interfacce grafiche avanzate. • Ibrido: In questa modalità l’interazione con l’utente è quella offerta dalle tecnologie web che grazie a strumenti e framework integrabili riescono a dare un’esperienza utente gradevole e vicina al nativo. L’overhead dovuto al motore grafico che renderizza le pagine html all’interno dell’applicazione non garantisce buone prestazioni quando si richiedono interfacce complesse. • Web-application: l’interazione è quella offerta dalle possibilità dell’html5 e delle tecnologie web ed eventualmente dall’utilizzo di framework come jquery mobile per una user experience più accattivante. Le prestazioni , come per l’ibrido, sono legate alla complessità dell’interfaccia e alla velocità del browser. In fase di sperimentazione l’interfaccia sviluppata con le tecnologie web è stata riutilizzata nella versione ibrida e custom container. La stessa interfaccia è stata riportata nell’applicazione Adobe Air ed è stata renderizzata dal contenitore. Per realizzare la stessa interfaccia con il flex framework è stato necessario effettuare un porting dell’html nel linguaggio di markup di Adobe, con prestazioni dell’interfaccia grafica identiche. I pesi dati alle varie tecnologie sono i seguenti: 95 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Nativo Cross compiled Custom Container Ibrido Web application Nativo 1,00 1,43 2,50 2,50 3,33 Cross compiled 0,70 1,00 1,43 2,50 3,33 Custom Container 0,40 0,70 1,00 2,00 2,50 Ibrido 0,40 0,40 0,50 1,00 1,00 Web application 0,30 0,30 0,40 1,00 1,00 Tabella 11: Confronto a coppie tra le diverse alternative in relazione al drive "Performance" Dopo aver effettuato tutti i confronti tra le diverse alternative per ogni driver e confrontato i driver rispetto all’obiettivo, sono stati prodotti gli autovettori per ogni matrice. Effettuando la sintesi dei dati locali attraverso somme pesate è stato possibile ottenere un autovettore totale, il quale normalizzato permette di ricavare un ranking globale delle diverse alternative in base ai pesi ottenuti dalle valutazioni locali. La tabella 12 mostra i risultati complessivi: Portabilità Peso Nativo Cross compiled Custom Container Ibrido Web application Accesso ai sensori Costi di Integrazione Performance Risultato della aggiornamento applicazioni somma pesata 42,9% 3% 13% 6,5% 33% 27% 16,8% 3% 10% 29,7% 35% 27% 4,1% 35% 27% 15,88% 13% 14% 22% 17% 19% 16,04% 25% 45% 20% 5% 27% 39% 17% 4% 11% 9% 22,28% 18,06% 27,74% Tabella 12: Rankig globale delle alternative Osservando la colonna dei risultati della somma pesata è possibile ottenere il ranking globale in cui in ordine decrescente è consigliato l’utilizzo di web application, ibrido, custom container, cross-compiled, nativo. Conclusioni Le alternative nello sviluppo di applicazioni mobile multipiattaforma di tipo enterprise 96 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise sono numerose, ognuna offre servizi e strumenti per poter perseguire una politica di sviluppo di applicazioni che possano supportare più piattaforme e più dispositivi; nessuna di quelle individuate permette di massimizzare i benefici di tutti i driver individuati, dovendo quindi ricorrere a valutazioni complessive che tengano conto dei diversi comportamenti dei framework e delle tecnologie di sviluppo. È stato scelto l’AHP come metodo di supporto alla decisione per individuare la tecnologia con cui realizzare un’applicazione enterprise perché permette di utilizzare nel calcolo dei ranking locali grandezze quantitative e qualitative e di poterle sintetizzare insieme; inoltre permette di poter velocemente cambiare i valori assegnati nei confronti, in caso di modifiche fatte da valutazioni aggiuntive o cambiamenti settati da attori esterni come committenti del progetto software. Analizzando il ranking finale della tabella 12, la tecnologia di sviluppo consigliata dalla metodologia è la web application. Nel capitolo successivo verranno presentate considerazioni aggiuntive che non sono state incluse nella elaborazione dei dati dell’AHP, che porteranno alla selezione della tecnologia per la realizzazione di un applicativo software per un progetto reale commissionato da Poste Italiane. 97 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Capitolo 4 Implementazione di unʼapplicazione con la tecnologia individuata: Analisi e progettazione Introduzione Nel capitolo 3 sono state analizzate e confrontate le diverse tecnologie individuate per supportare lo sviluppo multipiattaforma di applicazioni mobile enterprise. Tutte le tecnologie scelte forniscono servizi peculiari che tendono a massimizzare determinati benefici, non fornendo prestazioni ottimali in altri. Per poter effettuare un’analisi comparativa che tenga conto delle prestazioni globali delle diverse alternative proposte è stato utilizzato il metodo AHP. Questo metodo, utilizzando confronti a coppie di tipo qualitativo e analisi quantitative, permette di produrre un ranking globale delle alternative, rispetto al problema di selezione della tecnologia da adottare per la realizzazione di un software, le cui caratteristiche sono riportate nel capitolo 3. L’applicazione del metodo ha prodotto un ranking in cui la tecnologia che fornisce le migliori prestazioni complessive risulta essere la web application. Una volta determinata la scelta consigliata, verrà analizzata sulla base di un progetto reale di consulenza commissionato da Poste Italiane; questo progetto aggiunge determinati vincoli che non sono stati inseriti nelle valutazioni del metodo AHP, per mantenere una maggiore astrazione sulle caratteristiche dell’applicazione target. Una volta scelta la tecnologia di sviluppo che possa supportare tutti i vincoli del progetto, verrà presentato lo sviluppo dell’applicazione. In questo capitolo sono trattati l’analisi dei requisiti software e la progettazione. 98 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 4.1. Requisiti dell’applicazione Per poter effettuare la scelta della tecnologia di sviluppo, viene contestualizzato il ranking fornito dal metodo AHP con le richieste dell’applicazione denominata AGENDA ASI. I requisiti di alto livello dell’applicazione sono i seguenti: L’applicazione da realizzare fa parte del progetto del postino telematico. Attraverso questa nuova figura denominata ASI (articolazione servizi innovativi) Poste Italiane intende recapitare in itinere servizi già offerti e nuovi a valore aggiunto, presso il domicilio dei clienti, sia customer che business. L’applicazione AGENDA ASI si colloca come applicazione di tipo sales force automation; essa deve permettere all’asi di poter prendere appuntamenti o di riceverli dal centro distribuzione a cui è assegnato; l’asi tramite l’applicazione può accedere ai dati dell’appuntamento, del cliente, tra cui anagrafica e storico degli incontri precedenti. Al termine dell’appuntamento l’asi effettua la chiusura inviando i dati al server centrale del centro distribuzione per la memorizzazione. Il valore aggiunto di questa applicazione consiste nel poter tenere traccia dei servizi offerti e venduti al cliente utili per la loro analisi da parte di applicazioni di business intelligence e analitiche lato back-end. Inoltre attraverso lo storico l’asi può tenere traccia degli incontri passati col cliente al fine di prepararsi meglio per l’appuntamento successivo, in modo tale da aumentare l’efficacia nella vendita e nella proposizione dei servizi offerti da Poste Italiane. L’applicazione deve poter essere eseguita su sistemi Windows 8 ed Android 4.0, rispettivamente su tablet Samsung Slate 7 business ed Olipad Graphos. Il suo utilizzo in mobilità è garantito dall’utilizzo di una sim Poste Mobile per il traffico dati da rete 3G. Per l’accesso al server di back-end per invio e ricezione dei dati dell’applicazione deve essere utilizzato un componente software che verrà fornito per funzionalità di Gateway per l’accesso alla VPN di Poste Italiane, al fine di accedere al server di back-end. Al momento il componente è sviluppato per Windows 8 per applicazioni Win32. L’applicazione deve poter funzionare anche in casi di assenza di rete, memorizzando i dati in locale, che verranno trasmessi una volta che il segnale viene ripristinato, sia in modo sincrono che asincrono. 99 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 4.2. Scelta della tecnologia di sviluppo Analizzando i requisiti di alto livello e i vincoli a cui sottostare nello sviluppo dell’applicazione, è stato verificato se la web application, tecnologia consigliata dall’applicazione del metodo AHP, soddisfi tutte le richieste del software. È emerso dall’analisi che la web application non risulta aderente a tute le richieste e vincoli imposti dai requisiti dell’applicazione. In particolare lo sviluppo di una web application non è fattibile per i seguenti motivi: 1- Poste Italiane non fornisce un server web dal quale caricare al primo avvio i contenuti web per la parte di presentazione e di logica dell’applicazione che vengono poi memorizzati in cache; inoltre non potendo utilizzare il protocollo http per le richieste delle pagine web non è possibile utilizzare feature di HTML5 per la memorizzazione in locale come indexed DB e local storage. 2- È necessario utilizzare il componente nativo per effettuare l’accesso alla VPN di poste italiane; da javascript non è possibile effettuare la comunicazione con essa senza bridge software. 3- In ottica di BYOD l’applicazione da sviluppare deve essere fornita di meccanismi di controllo dell’accesso dell’utente e dell’applicazione; Poste Italiane per ottenere questo controllo non intende utilizzare web services per l’autenticazione, ma fornisce attraverso una piattaforma enterprise di gestione delle applicazioni meccanismi per installare le applicazioni e controllarne l’accesso, sia in termini di utenti che di dispositivi. Per questo motivo la web application non può essere utilizzata perché non installabile sul dispositivo. Avendo riscontrato che la web application non può essere sviluppata è stata scelta come tecnologia di sviluppo l’approccio ibrido, il quale risulta nel ranking globale al secondo posto e riesce a soddisfare tutti i vincoli dell’applicazione. In particolare è stato scelto di sviluppare un bridge ad hoc che comunichi con il sistema operativo sottostante, utilizzando per la parte di presentazione e logica applicativa HTML5 e javascript, e 100 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise implementare nativamente le funzionalità per la comunicazione con il componente nativo e la memorizzazione in locale dei dati dell’applicazione. Con questo approccio il codice di presentazione e logica verrà riutilizzato per le 2 piattaforme, dovendo sviluppare per ogni piattaforma il codice per creare il contenitore nativo e le funzionalità native. 4.3. Analisi dei requisiti funzionali e non funzionali del software Partendo dalla specifica del progetto sono state realizzate una serie interviste e riunioni presso la sede di Poste Italiane con i committenti e diversi stakeholders connessi al progetto, al fine di poter ricavare i casi d’uso dell’applicazione. In figura 34 è riportato il diagramma dei casi d’uso dell’applicazione: Figura 34: Casi d’uso Dall’analisi dei casi d’uso e attraverso feedback del committente, è stata prodotta la lista dei requisiti funzionali e non funzionali dell’applicativo. Una volta raccolti i requisiti è stato realizzato un documento di SRS (software requirements specification) del progetto software Viene di seguito riportata la lista dei titoli dei requisiti funzionali: 1- Login 101 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 2- Visualizza appuntamenti in agenda 3- Creazione appuntamento 4- Creazione nuovo cliente con appuntamento 5- Mostra dettagli appuntamento 6- Visualizza storico cliente 7- Mostra dati cliente 8- Mostra anagrafica completa cliente 9- Sposta appuntamento 10- Chiusura appuntamento 11- Aggiorna agenda 12- Annulla appuntamento Per ogni caso d’uso è stato utilizzato il modello proposto da Martin Fowler per modellare le interazioni dell’utente con il sistema software. Di seguito sono riportati 2 casi d’uso realizzati: Visualizza agenda Contesto: Il postino accede all’agenda odierna e visualizza tutti gli appuntamenti divisi per fascia oraria. Qualora volesse, può visualizzare gli appuntamenti relativi ad un altro giorno Attore primario: Postino ASI Precondizioni: L’ASI ha effettuato il login in maniera corretta 1. Il sistema presenta l’agenda con gli appuntamenti per la data attuale suddivisi per fascia oraria. Gli appuntamenti da effettuare sono contrassegnati con il colore verde, quelli conclusi con il colore grigio, mentre gli appuntamenti che devono essere approvati dalla centrale operative sono di colore giallo Se al passo 2 il postino vuole visualizzare un altro giorno: 1.a. Il postino seleziona un giorno diverso da quello attuale 1.b. Il sistema presenta l’agenda con gli appuntamenti del giorno scelto Postcondizioni: nessuna Visualizza appuntamento Contesto: Il postino visualizza le informazioni relative a un appuntamento selezionandolo 102 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise dall’agenda Attore primario: Postino ASI Precondizioni: E’ stato eseguito il caso d’uso Visualizza agenda 1. Il postino seleziona l’appuntamento da visualizzare 2. Il sistema presenta i dati relativi all’appuntamento: nome del cliente, luogo dell’appuntamento, tipo di servizio, categoria di servizio, tipologia di cliente e le per eventuali note Postcondizioni: nessuna Terminata la stesura dell’SRS è stato confrontato ed integrato con quello realizzato dai committenti, al fine di validare la fase di analisi e raccogliere i requisiti del software. 4.4. Progettazione del software Dopo aver ottenuto la validazione dell’SRS dal committente è stata effettuata la progettazione del software attraverso diagrammi UML ( Unified Modeling Language ), utilizzati per realizzare il diagramma delle classi e i diagrammi di sequenza. Il primo viene utilizzato per creare un modello di alto livello di astrazione del dominio, al fine di analizzare le entità logiche coinvolte all’interno dell’applicazione; il terzo per modellare il comportamento dinamico delle entità ottenute dal diagramma delle classi. Nel diagramma della classi il dominio è stato analizzato ed astratto in maniera statica attraverso una sere di entità logiche; esse sono state modellate con il paradigma ad oggetti attraverso la creazione di classi e relazioni tra esse. Di seguito è riportato il class diagram realizzato: 103 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 35: Diagramma delle classi Le classi individuate sono: Agenda Asi: si occupa di gestire le richieste dell’utente andando a creare o modificare gli oggetti Appuntamento, Cliente, Storico e Servizio. Interagisce con la classe comunicatore per inviare le richieste al server e al database Appuntamento: gestisce le informazioni del modello sugli appuntamenti che il postino segna e riceve in agenda Cliente: gestisce le informazioni del modello sui clienti con cui il postino prende gli appuntamenti Storico: gestisce le informazioni del modello sullo storico relativo agli incontri passati del postino con i clienti 104 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Servizio: gestisce le informazioni del modello sui servizi che il postino offre ai clienti durante gli appuntamenti Comunicatore: gestisce le comunicazioni tra l’agenda e il server e tra l’agenda e il database. Per modellare le interazioni dinamiche tra gli oggetti nell’esecuzione dei diversi requisiti funzionali sono stati realizzati i diagrammi di sequenza. In seguito vengono riportati alcuni di quelli realizzati per l’applicazione: 105 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 36: Diagramma di sequenza: Visualizza agenda 106 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 37: Diagramma di sequenza: Aggiorna Agenda 107 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 38: Diagramma di sequenza: Nuovo Appuntamento Conclusioni In questo capitolo è stato analizzato il contesto e i requisiti software di un’applicazione mobile multipiattaforma commissionata da Poste Italiane. Sulla base dei vincoli dell’applicativo è stata scelta la tecnologia ibrida per realizzare l’applicazione, posta al secondo posto nel ranking AHP ma che permette di soddisfare tutti i vincoli imposti dal progetto. Sono stati presentati alcuni dei modelli realizzati in fase di progettazione del software che verranno utilizzati in fase di realizzazione dell’applicazione, che verrà trattata nel capitolo successivo. 108 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Capitolo 5 Implementazione di unʼapplicazione con la tecnologia individuata: Sviluppo codice e analisi a posteriori della tecnologia utilizzata Introduzione In questo capitolo verrà analizzato il processo di realizzazione del codice partendo dalla progettazione del software. Il progetto da realizzare fa parte di uno più grande, che Poste Italiane sta costruendo intorno alla figura del Postino Telematico. Esso consiste in una serie di applicazioni da realizzare principalmente per piattaforma Windows 8, le quali saranno sperimentate sul campo al fine di validarne l’efficacia e l’efficienza prima della messa in esercizio a regime. Questo contesto va a particolarizzare il processo di codifica dell’applicazione, collegandolo con le fasi di analisi dei requisiti e di progettazione. Infatti le due fasi precedenti, riportate nel capitolo 4, non sono state effettuate con un processo di sviluppo Waterfall; ciò significa che non sono state chiuse completamente prima di passare alla fase di codifica e testing dell’applicazione, ma è stato adottato un approccio agile allo sviluppo. Questo approccio di sviluppo è stato necessario in quanto essendo in un progetto innovativo di sperimentazione, i requisiti non sono ben delineati fin dalla partenza del progetto; ciò significa che partendo dall’SRS validato sono state apportate modifiche minori ad esso, comportando un adeguamento del modello di progetto e della struttura del codice in maniera dinamica. 5.1. Processo agile adottato 109 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Essendo l’applicazione una parte di un progetto innovativo composto da numerosi elementi, con requisiti che hanno subito modifiche nel corso dello sviluppo, il processo di sviluppo adottato è stato di tipo agile. Questo processo consiste principalmente in una serie di iterazioni complete da realizzare su un sottoinsieme di requisiti dell’applicazione, al fine di realizzare l’applicativo software in maniera incrementale e iterativa. Ogni iterazione prevede fasi di analisi dei requisiti, progettazione, codifica, testing e validazione. Esistono diverse metodologie che fanno parte della famiglia dei processi agili, ognuna con una implementazione propria dei principi su cui si fonda questo tipo di processo di sviluppo. Per la realizzazione dell’applicazione AGENDA ASI non è stato adottato in maniera ferrea nessuno dei processi definiti all’interno dell’insieme delle metodologie agili. Le caratteristiche principali dello sviluppo adottato dell’applicazione sono state: 1- Condivisione e collaborazione: il team che si è occupato dello sviluppo del codice è composto da 2 persone, le quali si sono divise il lavoro per proseguire in parallelo lo sviluppo, ma allo stesso tempo si sono confrontate ed supportate nello sviluppo dell’intera applicazione. In questo modo tutto il team era a conoscenza del codice prodotto, in modo da poter apportare all’occorrenza cambiamenti in maniera efficace 2- Feedback del committente: partendo dalle fasi e documenti prodotti di analisi e progettazione, sono stati implementati in diverse iterazioni piccoli subset di requisiti, ordinati temporalmente per importanza, i quali sono stati validati oppure modificati con il committente , attraverso una serie di riunioni e contatti tramite mail, al fine di massimizzare la sua soddisfazione 3- Iterazioni brevi: Per poter validare l’evoluzione dello sviluppo e rispondere in maniera tempestiva a modifiche dei requisiti da parte del committente sono state realizzate iterazioni brevi, fatte validare dal cliente, attraverso l’uso di mock-up per la parte di interfaccia utente e test a livello utente, realizzati dal vivo presso il cliente. Nelle figura seguenti vengono mostrati alcuni dei mock-up realizzati: 110 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 39:Mock-up: schermata Visualizza Agenda Figura 40:Mock-up: schermata Anagrafica Completa 5.2. Implementazione codice dell’applicativo 111 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Sulla base delle richieste del committente l’applicazione è stata realizzata prima per piattaforma Windows 8, dalla quale fare il porting verso il sistema Android sfruttando il riutilizzo del codice già implementato. L’involucro nativo nel quale inserire il codice HTML5 e javascript è costituito da un’applicazione del tipo Windows forms realizzata con linguaggio di programmazione C#. Attraverso questo tipo di applicazione è possibile accedere alle api grafiche per la costruzione dell’interfaccia utente; queste api sono poste sopra il framework .NET e hanno accesso alle api Win32 del sistema operativo. Per “embeddare” il codice HTML con cui è stata realizzata l’interfaccia grafica si è utilizzato un componente denominato WebBrowser, che permette di utilizzare il rendering engine utilizzato da Internet Explorer; attraverso il suo utilizzo viene caricato il codice HTML e Javascript salvato in locale e sono abilitati i controlli web che permettono di navigare attraverso le pagine, elaborare il codice javascript per rendere dinamica l’interfaccia grafica ed effettuare le richieste AJAX al server. Per poter implementare la progettazione orientata agli oggetti sono stati utilizzati pattern architetturali per poter utilizzare il codice Javascript con il modello orientato agli oggetti. Per poter gestire la complessità dell’applicazione e favorire la parallelizzazione dello sviluppo del codice è stato implementato un pattern Model-View-Controller. Questo tipo di pattern architetturale è molto diffuso nello sviluppo in applicazioni event-driven con interfacce utente grafiche. Esso si basa sulla separazione dei compiti delle diverse classi, che si dividono in: 1- Classi Model: permettono l’accesso ai dati utili dell’applicazione 2- Classi View: visualizzano i dati del model e si occupano dell’interazione con l’utente, inviando richieste al controller 3- Classi Controller: si occupano di ricevere le richieste dell’utente provenienti dalle View, invocare il model per accedere e modificare i dati dell’applicazione e invocare le class View per modificare l’interfaccia utente a seguito di aggiornamenti ricevuti dalle richieste fatte al model. Per poter realizzare questo pattern è stata realizzata una struttura dei contenuti web chiamata single-page application. Essa consiste nel realizzare tutta l’interfaccia grafica in 112 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise una singola pagina html caricata all’avvio dell’applicazione; questa pagina viene modificata nel contenuto in seguito ad aventi generati dall’utente, attraverso metodi Javascript che vanno dinamicamente a modificare il DOM della pagina html per poter creare le diverse schermate dell’applicazione. I contenuti html e javascript che vengono caricati dinamicamente sono recuperati attraverso chiamate ajax su risorse salvate in locale sul dispositivo. Tutte le funzionalità di interazione con l’utente e di modifica degli elementi html delle schermate sono state realizzate con l’ausilio della libreria Jquery e di diversi plug-in gratuiti reperibili in rete. Per effettuare l’autenticazione dell’ASI ed il collegamento alla VPN di Poste Italiane attraverso rete 3G, è stata utilizzata una dll (Dynamic-link library) rilasciata da PosteMobile che viene invocata durante il login nell’applicazione; la comunicazione tra codice Javascript e C# viene realizzata attraverso un oggetto javascript denominato window.external che si occupa di effettuare l’invocazione dei metodi C# dal javascript, di passare i parametri ai metodi invocati e di memorizzare gli eventuali dati di ritorno negli oggetti javascript. Questo meccanismo è stato utilizzato anche per le invocazioni a funzionalità di memorizzazione permanente dei nel database locale dell’applicazione client. Il database utilizzato è Sqlite. Esso permette di utilizzare un database di tipo ACID che può essere incorporato in applicazioni senza necessità di configurazioni, installazioni e processi in background da attivare. Esso ha diverse caratteristiche interessanti; nonostante presenti anche diversi limiti le caratteristiche richieste dall’applicazione nella memorizzazione in locale dei dati ben si prestano all’utilizzo di questo tipo di database. Per la comunicazione col il server di backend sono state realizzate delle invocazioni a web services remoti invocati attraverso il protocollo http utilizzando l’architettura REST (Representational state transfer) del server. Questo tipo di architettura permette di invocare funzionalità remote e servizi offerti da server attraverso il protocollo http e i suoi metodi GET,POST,PUT,DELETE. Attraverso le URL (Uniform Resource Locator) alle risorse sul server, utilizzando un determinato metodo nell’header http è possibile accedere e modificare lo stato di tali risorse. Le convenzioni dell’architettura REST indicano che i metodi connessi ad una risorsa da utilizzare sono: 113 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise GET: per recuperare i dati della risorsa sul server POST: per creare una risorsa sul server PUT: modificare una risorsa sul server DELETE: cancellare una risorsa sul server Durante la fase di sviluppo del codice il server su cui invocare i servizi non era stato implementato; attraverso una serie di riunioni è stato possibile strutturare insieme alla società a cui è stato commissionato la realizzazione dei servizi un ICD (interface contract definition ); attraverso la stesura di questo documento, che fornisce i dettagli sulla composizione delle richieste e delle risposte REST, è stato possibile realizzare il server per i test della comunicazione in locale, in attesa dello sviluppo del server da utilizzare in esercizio. Il formato di interscambio dei dati scelto è stato Json (JavaScript Object Notation). 5.3. Analisi a posteriori della tecnologia ibrida Per quantificare il beneficio apportato dall’uso della tecnologia ibrida nella realizzazione dell’applicazione AGENDA ASI in ottica multipiattaforma, si è analizzato il codice realizzato, attraverso la metrica delle LOC (line of code), al fine di determinare l’effort richiesto per effettuare l’adattamento su piattaforma Android; per il conteggio è stato scelto di selezionare le EXLOC (istruzioni eseguibili) e le DDLOC (istruzioni dichiarative). Il codice dell’applicazione è stato suddiviso in 2 parti, codice realizzato con tecnologie web e codice nativo realizzato in C#. Il primo è stato utilizzato per creare l’interfaccia grafica e la logica di business dell’applicazione, il secondo è stato utilizzato per costruire l’involucro nativo e per realizzare le funzionalità native utilizzate dal codice Javascript. In tabella XXX sono riportati i dati sulle linee di codice dei 2 insiemi: N° di righe di codice HTML - JAVASCRIPT 3287 N° di righe di codice C# 568 Tabella 13: numero di righe di codice dell’applicazione Windows 8 Attraverso l’analisi di questi dati è possibile effettuare una previsione dell’effort necessario per adattare l’applicazione realizzata per piattaforma Windows 8 su Android. Il codice da riscrivere è la parte nativa dell’applicazione. Quindi per questa applicazione è 114 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise possibile riutilizzare l’85% del codice prodotto, costituito dalla parte realizzata con le tecnologie web. Il numero di righe di codice da realizzare attraverso il linguaggio Java su piattaforma Android è molto simile a quello del C#. Il codice da realizzare sulla piattaforma Android consiste nel creare l’involucro, configurare il componente webview che si occupa di renderizzare le pagine HTML, abilitare l’eleborazione del linguaggio Javascript per poter modificare l’interfaccia grafica dinamicamente ed invocare le funzionalità native. Per le funzionalità native di accesso al database e di gateway verso la VPN di Poste Italiane, verranno utilizzati rispettivamente Sqlite, disponibile nativamente sulla piattaforma Android, e un componente sviluppato ad-hoc. Allo stato attuale può essere richiesto un effort aggiuntivo dovuto alla non completa compatibilità delle specifiche HTML5 e alle librerie Jquery sui diversi rendering engine utilizzati dai sistemi operativi mobile. Questo lavoro tenderà in futuro a diminuire con il crescere del supporto ad HTML5 e con la possibile convergenza dei rendering engine verso il Webkit. Di seguito sono mostrate 2 screenshot a scopo dimostrativo dell’interfaccia grafica dell’applicazione su 2 diversi dispositivi e sistemi operativi, uno con Windows 8 e l’altro con Android 4.2: Figura 41: Interfaccia grafica applicazione su Samsung Slate 7 (Windows 8) 115 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Figura 42: Interfaccia grafica applicazione su Nexus 7 (Android 4.2) Per realizzare l’applicazione demo eseguibile su piattaforma Android è stato riutilizzato interamente il codice HTML5 e Javascript, creando il contenitore nativo, al quale è stato aggiunto un modulo fake per simulare le richieste sul database, al fine di testare la compatibilità del codice web prodotto con il rendering engine Webkit. Conclusioni In questo capitolo è stato mostrato la realizzazione del codice applicativo per l’applicazione AGENDA ASI su piattaforma Windows 8. Terminato il lavoro sono stati raccolti i dati per poter quantificare il beneficio ottenuto dalla scelta della tecnologia ibrida, che consente il riutilizzo del codice intorno all’85%. In questo modo per poter eseguire il porting su diverse piattaforme, ad esempio Android, IOS, Windows RT, RIM, è necessario produrre il codice con il linguaggio di sviluppo nativo che copre il 15% del codice complessivo, al quale aggiungere eventuale codice nella parte web per gestire la non uniformità al supporto dello standard HTML5 e alle librerie Jquery utilizzate. 116 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Conclusioni e sviluppi futuri Il lavoro svolto in questa tesi si è focalizzato sulle tecnologie e le metodologie a supporto nello sviluppo di applicazioni mobile multipiattaforma di tipo Enterprise. Nel mercato mobile sia i customer che le aziende si stanno muovendo sempre più verso un ottica mobile, guidata dalla continua innovazione di questo contesto. Inoltre la disponibilità dei dati, delle comunicazioni, attraverso social network e applicazioni dedicate, delle applicazioni in mobilità, sta trasformando il modo con cui vengono utilizzate le risorse IT in azienda. All’interno di questa evoluzione i dispositivi che porteranno i maggiori benefici del lavoro in mobilità saranno secondo le previsioni i tablet. Le aziende li stanno introducendo in diversi settori e business process interni. Analizzando le previsioni di mercato dei sistemi operativi mobile e le strategie aziendali sull’adozione di un determinato sistema operativo di riferimento, è emerso che in futuro ci sarà frammentazione e incertezza sul numero dei sistemi operativi da utilizzare per eseguire le applicazioni da sviluppare a supporto delle attività aziendali; inoltre in grandi aziende politiche di BYOD favoriscono la proliferazione di dispositivi e sistemi operativi diversi. In questo contesto identificare una tecnologia a supporto dello sviluppo multipiattaforma e multidevice permette di contenere i costi di produzione e di manutenzione delle applicazioni mobile. Sono state identificate diverse soluzioni e tecnologie, ognuna con determinati servizi che massimizzano i benefici su determinati driver, a discapito di altri. Per poter selezionare la tecnologia da utilizzare bisogna analizzare il contesto di utilizzo, basandosi sui requisiti dell’applicazione e sulle richieste dell’azienda committente. Per la fase di selezione è stata utilizzata una metodologia di scelta multicriterio a supporto della decisione. Sulla base dei risultati ottenuti e delle richieste aziendali relative ad 117 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise un’applicazione da sviluppare, è stata scelta la tecnologia ibrida. È stata quindi sviluppata un’applicazione per Windows 8 con la tecnologia individuata. Sono stati analizzati i benefici della scelta effettuata andando a quantificare il codice prodotto che può essere riutilizzato per successive versioni dell’applicazione per altri sistemi operativi; l’85% del codice prodotto può essere riutilizzato, andando a riscrivere il restante 15% con i linguaggi nativi per ogni sistema operativo si intende supportare. A questo codice si deve aggiungere un eventuale porzione di codice da adattare dovuta al non uniforme supporto verso HTML5 e le librerie Jquery, fornito dai rendering engine delle diverse piattaforme software. Questo intervento adattativo nel tempo si prevede tendi a diminuire grazie alla standardizzazione delle specifiche di HTML5 e alla convergenza dei diversi sistemi operativi verso il rendering engine Webkit. Gli sviluppi futuri prevedono la realizzazione del porting su piattaforma Android dell’applicazione utilizzando la tecnologia ibrida. Al termine dello sviluppo verranno analizzati a posteriori i dati sul reale riutilizzo del codice e dell’effort richiesto per effettuare l’adattamento dell’applicazione. Verranno inoltre monitorate le evoluzioni delle diverse tecnologie a supporto dello sviluppo multipiattaforma al fine di ottenere dati aggiornati per il confronto delle prestazioni offerte sui driver individuati. Ad esempio per inizio 2013 sono previsti da parte dei framework Titanium Appcelerator e Adobe Air il supporto alle piattaforme RIM e Windows 8, andando ad incrementare notevolmente la portabilità di un’applicazione realizzata con queste tecnologie. 118 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise 119 Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo enterprise Bibliografia [1] [Autore] [anno] “[titolo]” [2] [Autore] [anno] “[titolo]” [3] [Autore] [anno] “[titolo]” 120