Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
  
Linguaggi e piattaforme per lo
sviluppo di applicazioni mobile.
 
 
 
Università Politecnica delle Marche 
Tesina corso...
Indice 
 
 
1. Introduzione​ ​e​ ​Stato dell’arte ………………………………… pag.2 
 
2. Obiettivi ………………………………………………….……….. pag.5 
 
3...
1. Introduzione e Stato dell’arte 
 
In questa tesina ci si addentrerà nel mondo dei dispositivi mobili, una delle        ...
 
Fig.1 ­ IDC Worldwide Quarterly Mobile Phone Tracker, February 24​th​
, 2015 
 
 
Risulta quindi importante a questo pun...
scegliere per implementare i loro lavori. Verrà effettuata anche una “prova                     
sul campo” con l’implemen...
2. Obiettivi 
 
Analizzare le caratteristiche delle principali opzioni di sviluppo ad oggi                   
presenti sul...
3. Analisi delle metodologie di 
programmazione 
 
3.1 Introduzione 
Come anticipato nell’introduzione, la scelta della me...
Come è possibile notare, la seconda categoria è a sua volta scomponibile                       
in due sotto categorie, le...
 
 
Fig.2 ­ Schema visuale delle metodologie di sviluppo 
 
 
 
3.3 Cosa ne pensano gli sviluppatori? 
 
Prima di proceder...
 
Fig.3 ­ Linguaggi Device­side maggiormente utilizzati​[ ]
 4
 
 
Fig.4 ­ Linguaggi Server­side maggiormente utilizzati​[...
sistema Android e nel grande numero di sviluppatori con un background di                       
conoscenze in ambito di sv...
 
 
Fig.5 ­ Tools di sviluppo maggiormente utilizzati​[ ]
 5
 
 
 
3.4 Caratteristiche metodologie 
 
Si procede con un co...
Native 
Pro  Contro 
● Pieno accesso e totale 
controllo del dispositivo 
 
● Pieno accesso alla 
piattaforma di sviluppo ...
 
CPT ­ Cross Platform Tools 
Pro  Contro 
● Codice riutilizzabile fra le 
piattaforme, multipiattaforma 
 
● Diffusione t...
Una buona conoscenza delle caratteristiche e delle differenze delle varie                   
metodologie possono però aiut...
4. Analisi delle piattaforme prescelte 
 
4.1 Criteri di analisi 
 
Nel proseguire con lo studio ed il test delle varie pi...
● utilizzo di un sensore del dispositivo 
● utilizzo di una libreria interna del dispositivo 
● interfacciamento con una A...
 
   
Fig.7 ­ Schermata “Map” dell’applicazione 
 
Come si può notare si tratta di una applicazione dall’interfaccia utent...
4.2 Elenco delle piattaforme prese in esame 
 
In riferimento alle caratteristiche presentate nel capitolo 3.2 di questo  ...
4.2.1 Piattaforme CPT prese in esame 
 
Il mondo CPT risulta sicuramente quello più esteso ed al suo interno più          ...
 
4.3 Analisi delle piattaforme prescelte 
 
4.3.1 Qt 
 
Introduzione Qt (da leggere “​cute​”) è un framework             ...
Accesso al dispositivo ­ sensoristica 
L’ambiente Qt è in continuo sviluppo, soprattutto nel campo mobile. Le             ...
Tabella riassuntiva ­ Qt 
 
Qt 
Ide ­ OS supportati  QtCreator ­ Completo 
Linguaggi di programmazione  QML, C++ 
Accesso ...
4.3.2 Xamarin 
 
Introduzione 
Xamarin è sviluppato sulle basi del framework open               
source Monodevelop, al qu...
Deployment targets 
Xamarin offre il supporto per un deployment sia in ambito mobile che                       
desktop. N...
Gestione distribuzione 
Non sono presenti strumenti per gestire la distribuzione dell’applicazione                 
svilup...
 
4.3.3 Appcelerator 
 
Introduzione 
Appcelerator è un framework molto ampio che             
offre molte strade per lo s...
 
Accesso al dispositivo ­ sensoristica 
Nella fase di accesso al dispositivo si sono evidenziate tutte le difficoltà e   ...
Gestione distribuzione 
Sono presenti strumenti di Hosting e versioning dell’applicazione sui server                   
di...
4.3.4 Cordova 
 
Introduzione 
Cordova è un progetto open­source della fondazione             
Apache, nato dal progetto P...
e la loro installazione tramite la CLI risulta agevole con un minimo di                         
familiarità con l’ambient...
Tabella riassuntiva ­ Cordova 
Cordova 
Ide ­ OS supportati  / ­ Completo 
Linguaggi di programmazione  Tecnologie Web 
Ac...
Facendo una semplice ricerca si possono trovate numerosissimi               
frameworks adatti a questo scopo, la scelta f...
4.4 Tabella comparativa 
 
  Qt  Xamarin  Appcelerator  Cordova 
Ide ­ OS 
supportati 
QtCreator ­ 
Completo 
XamarinStudi...
5. ​Conclusioni 
 
La prima conclusione doverosa da osservare è che tutte e 4 le piattaforme                         
si s...
Ancora una volta inoltre c’è da aggiungere che la grande dinamicità del                       
mondo dello sviluppo mobile...
Upcoming SlideShare
Loading in …5
×

Linguaggi e piattaforme per lo sviluppo di applicazioni mobile michele agostini

Analisi e confronto delle principali metodologie di programmazione e piattaforme per lo sviluppo di applicazioni per dispositivi mobili.

  • Login to see the comments

Linguaggi e piattaforme per lo sviluppo di applicazioni mobile michele agostini

  1. 1.    Linguaggi e piattaforme per lo sviluppo di applicazioni mobile.       Università Politecnica delle Marche  Tesina corso Tecnologie per i Sistemi informativi   Michele Agostini                              Abstract​: ​Analisi e confronto delle principali metodologie di programmazione e                    piattaforme per lo sviluppo di applicazioni per dispositivi mobili.                     
  2. 2. Indice      1. Introduzione​ ​e​ ​Stato dell’arte ………………………………… pag.2    2. Obiettivi ………………………………………………….……….. pag.5    3. Analisi delle metodologie di programmazione …….……… pag.6    3.1. Introduzione  3.2. Definizione  3.3. Cosa ne pensano gli sviluppatori?  3.4. Caratteristiche metodologiche  3.5. Conclusioni    4. Analisi delle piattaforme CPT prescelte …………….…….. pag.15    4.1. Criteri di analisi   4.2. Elenco delle piattaforme prese in esame  4.3. Analisi delle piattaforme prescelte  4.4. Tabella comparativa    5. Conclusioni …………………………………………………….. pag.34                            1 
  3. 3. 1. Introduzione e Stato dell’arte    In questa tesina ci si addentrerà nel mondo dei dispositivi mobili, una delle                          maggiori rivoluzioni tecnologiche che la società moderna ha affrontato negli                    ultimi anni.    Dal primo cellulare venduto nel 1983 sono passati più di 30 anni e di strada                              ne è stata fatta a livello tecnologico ed a livello di diffusione. Basti pensare                            che solo nel 2014 sono stati venduti circa 1,3 Miliardi​[ ] di dispositivi. Le                          1 tecnologie mobili sono dunque diventate parte della realtà quotidiana e                    stanno continuando a trasformare la società moderna radicalmente in ogni                    settore. Ben comprensibile è dunque l’attenzione e gli sforzi che questi                      sistemi stanno attraendo.    In questa tesina ci si interesserà dal punto di vista tecnologico dello                        sviluppo di applicazioni per dispositivi mobili, uno dei principali motivi di                      interesse e diffusione. Si andranno ad analizzare i principali sistemi                    disponibili sul mercato, con un focus particolare sulle metodologie di                    sviluppo e su alcune specifiche piattaforme per gli sviluppatori, selezionate                    in base a specifici criteri, fra le tantissime disponibili ad oggi.    Il mercato dei cosiddetti smartphone risulta sì eterogeneo come opzioni,                    ma sono facilmente individuabili dei competitors che stanno dominando la                    scena, fra questi verranno presi in considerazione in questo elaborato i                      primi tre: Android, IOS e Windows Phone, che insieme detengono circa il                        99%​[1]​  del mercato.    1 ​ Fonte:  IDC Worldwide Quarterly Mobile Phone Tracker, February 24, 2015  2 
  4. 4.   Fig.1 ­ IDC Worldwide Quarterly Mobile Phone Tracker, February 24​th​ , 2015      Risulta quindi importante a questo punto introdurre le tre principali                    metodologie di programmazione identificate:    1. Metodologie di sviluppo Native  2. Metodologie di sviluppo Cross­Platform/Hybrid  3. Metodologie di sviluppo Web    La scelta della metodologia è, ad oggi, una delle prime e più importanti                          questioni che si pongono dinanzi ad uno sviluppatore, dalla quale                    dipendono molte successive implicazioni.    Si procederà quindi ad un’analisi delle caratteristiche di queste                  metodologie, individuandone pregi e difetti in modo da poter effettuare una                      scelta ponderata. Si passerà poi allo studio approfondito di alcune                    specifiche piattaforme di sviluppo fra le quali i developers possono                    3 
  5. 5. scegliere per implementare i loro lavori. Verrà effettuata anche una “prova                      sul campo” con l’implementazione di una semplice applicazione attraverso                  le varie piattaforme per “stressarle” e conoscere al meglio il loro                      comportamento.    Si può anticipare che la scelta della metodologia di sviluppo e della singola                          piattaforma risulta una delle questioni di principale interesse e dalla                    risposta più incerta fra gli sviluppatori ad oggi. Non a caso vi si riferisce                            spesso come uno “​stalemate in the platform wars​” ​[ ]​ : lo stallo nella guerra                          2 fra piattaforme.    Nonostante ciò, è scopo di questo elaborato studiare le varie opzioni                      possibili e le loro caratteristiche per dare criteri di analisi e capire quale                          soluzione possa essere più adatta ad ogni situazione.                          2 ​Source: VisionMobile, “Developer Economics Q1 2015: State of the Developer Nation”  4 
  6. 6. 2. Obiettivi    Analizzare le caratteristiche delle principali opzioni di sviluppo ad oggi                    presenti sul mercato, individuarne pregi, difetti e definirne i principali ambiti                      di utilizzo.     Si procederà per prima cosa all’analisi delle caratteristiche delle tre                    metodologie di sviluppo introdotte: Native, CPT e Web App. Queste                    verranno approfondite accuratamente in quanto molte delle differenze dei                  vari approcci allo sviluppo dipendono proprio da questa prima distinzione.  Successivamente verranno definiti dei criteri di giudizio utili a classificare e                      distinguere le piattaforme di sviluppo che nell’ultima parte dell’elaborato                  verranno studiate e testate, attraverso indagini e l’implementazione sul                  campo di un’applicazione di riferimento.                                        5 
  7. 7. 3. Analisi delle metodologie di  programmazione    3.1 Introduzione  Come anticipato nell’introduzione, la scelta della metodologia di sviluppo è                    la prima scelta che un developer si trova di fronte. Probabilmente anche la                          più importante in quanto questa opzione porta con se notevoli implicazioni                      per il resto della fase di progettazione e sviluppo dell’applicazione.  Ad aggiungere delicatezza alla scelta si aggiunge che ad oggi questa è una                          delle discussioni che più divide la comunità degli sviluppatori, senza aver                      ancora trovato opinioni concordi. Non a caso vi si riferisce spesso come                        “​the​ ​stalemate in the platform wars​” ​[ ]​ : lo stallo nella guerra fra piattaforme. 3 Questo fatto non impedisce, però, di individuare ambiti di utilizzo                    preferenziali e buone pratiche di programmazione per ogni metodologia                  attraverso un’approfondita analisi delle loro caratteristiche e delle loro                  differenze. Scopo di questa prima parte del capitolo corrente è proprio                      quello di definire e studiare tali metodologie.    3.2 Definizione  Si procede ora alla classificazione, nella quale è possibile riconoscere tre                      principali categorie:    ● Native  ● Cross Platform Tools (CPT)  ❏ Cross­Compiled  ❏ Hybrid  ● Web App    3 Source: VisionMobile, “Developer Economics Q1 2015: State of the Developer Nation”    6 
  8. 8. Come è possibile notare, la seconda categoria è a sua volta scomponibile                        in due sotto categorie, le quali hanno qualche sfumatura di                    differenziazione.    Native  Metodologia di sviluppo specifica per una determinata piattaforma mobile                  (iOS, Android...) utilizzando gli strumenti di sviluppo e il linguaggio che                      delle rispettive piattaforme (Xcode e Objective­C/Swift con iOS,                Eclipse/AndroidStudio e Java con Android). Danno la migliore esperienza                  utente e le migliori performance.    Cross Platform Tools  I CPT possono essere utilizzati per sviluppare, applicazioni cross­compiled                  e web. Sono disponibili in varie sfumature tecnologiche, riferite soprattutto                    alle famiglie di linguaggi utilizzati:    ● nel caso di applicazioni ​ibride​, l'applicazione è in effetti una web app,                        ma ​wrappata all'interno di un container­applicazione nativo della                singola piattaforma. È installato, avviato e utilizzato come qualsiasi                  applicazione nativa, è scritto in HTML, JavaScript e CSS.   ● nel caso di applicazioni ​cross­compiled ci si allontana dal mondo                    Web, si tratta di una app scritta con un linguaggio dipendente dal                        framework prescelto (C++ o C# ad esempio). Successivamente sarà                  compito del framework occuparsi della compilazione per le varie                  piattaforme di deployment.    Web App  Metodologia di sviluppo basata sul mondo delle tecnologie tipiche del web:                      generalmente viene fruito attraverso un browser web, ciò permette un                    approccio ​write­once­run­everywhere. ​Tecnicamente si tratta della fruizione              di un sito web ottimizzato attraverso il browser mobile, è comunque                      possibile avere una icona dell’applicazione che tecnicamente corrisponde                ad un bookmark stabile del browser.    7 
  9. 9.     Fig.2 ­ Schema visuale delle metodologie di sviluppo        3.3 Cosa ne pensano gli sviluppatori?    Prima di procedere con un confronto fra le varie metodologie si ritiene utile                          portare all’attenzione del lettore alcuni dati sullo stato attuale dello sviluppo                      di applicazioni nel mondo. I dati presentati provengono dal report ​“State of                        the Developer Nation Q1 2015” redatto da ​Visual Mobile su un campione di                          oltre diecimila developers fra 143 paesi nel mondo.    Si analizzano per prima cosa i ​linguaggi maggiormente utilizzati, vengono                    presi in considerazione sia i linguaggi “primari” che quelli utilizzati                    secondariamente, lato device e lato server:   8 
  10. 10.   Fig.3 ­ Linguaggi Device­side maggiormente utilizzati​[ ]  4     Fig.4 ­ Linguaggi Server­side maggiormente utilizzati​[​4​]     Concentrandosi sul lato Device­side è possibile notare come Java                  (sinonimo di Android) la faccia da padrone sia come linguaggio primario                      che secondario. Tale indicazione è da ricercare nella grande diffusione del                      4 Source: Visual Mobile, State of the Developer Nation Q1 2015, February 2015.  9 
  11. 11. sistema Android e nel grande numero di sviluppatori con un background di                        conoscenze in ambito di sviluppo desktop.    Altri dati significativi provengono dal dato sulla diffusione dell’HTML5,                  seppure come linguaggio secondario. Ciò conferma il crescente interesse                  degli sviluppatori nelle applicazioni Web e Hybrid, considerando anche il                    fatto che molti sviluppatori sono interessati a poter riutilizzare le loro                      precedenti esperienze in ambito Web. Seppure non sembrano ancora del                    tutto convinti ad utilizzarlo come linguaggio primario per il mobile.    Di interesse anche il dato di Swift che nonostante la sua recente                        introduzione ha attratto su di se molte ambizioni, fra cui molte non                        direttamente provenienti da sviluppatori precedentemente legati            all’Objective­C, linguaggio notoriamente legato allo sviluppo in ambito IOS.    Utile anche uno sguardo ai principali ​tools utilizzati dagli sviluppatori,                    proveniente sempre dal report ​“State of the Developer Nation Q1 2015”.  Nel grafico proposto di seguito è possibile notare come i tools                      maggiormente utilizzati siano gli “user analytics”, strumento considerato                sempre più fondamentale nella comprensione dei comportamenti utente e                  nel miglioramento delle proprie applicazioni. Seguono i tools di Advertising,                    in effetti i differenti sistemi di monetizzazione sono sempre di più al centro                          degli studi di settore.  Al terzo posto troviamo i ​Cross Platform Tools​, quelli di maggiore                      interesse per lo scopo di questo elaborato, con una percentuale del 30%                        degli sviluppatori che utilizzano tali tools. Importante notare che tale                    percentuale è passata dal 23% al 30% solamente nell’arco degli ultimi 6                        mesi (considerando il precedente rilevamento da parte di Visual Mobile),                    confermando il forte trend positivo che suscitano queste tecnologie. A                    riguardo, un altro dato risulta interessante: circa un terzo degli sviluppatori                      che utilizzano tools cross­platform stanno sviluppando in realtà applicazioni                  per un’unica piattaforma, dato che fà riflettere sulla piena comprensione                    delle caratteristiche di questi tools.  10 
  12. 12.     Fig.5 ­ Tools di sviluppo maggiormente utilizzati​[ ]  5       3.4 Caratteristiche metodologie    Si procede con un confronto di “alto livello” fra le varie metodologie di                          sviluppo, cercando di metterne in luce le principali caratteristiche attraverso                    delle tabelle “pro e contro”.        5 Source: Visual Mobile, State of the Developer Nation Q1 2015, February 2015.  11 
  13. 13. Native  Pro  Contro  ● Pieno accesso e totale  controllo del dispositivo    ● Pieno accesso alla  piattaforma di sviluppo ed alle  APIs del sistema    ● Migliori prestazioni    ● User experience ottimizzata e  congruente all’OS mobile    ● Diffusione tramite App Stores    ● Differenti skills necessarie per  lo sviluppo in ogni piattaforma    ● Codice difficilmente  riutilizzabile fra le varie  piattaforme    ● Sviluppo cross­platform  dispendioso per costi e tempi     ● Vincoli App Stores      Web App  Pro  Contro  ● Codice riutilizzabile,  multipiattaforma    ● Aggiornamento istantaneo    ● Tempi/Costi di sviluppo    ● Possibilità di riutilizzo di siti  web adeguatamente  progettati    ● Conoscenze tecnologie Web  molto diffuse    ● Accesso al dispositivo ed alle  APIs limitato    ● Diffusione tramite App Stores  assente    ● User experience differente dal  OS del dispositivo    ● Difficoltà utilizzo app offline    12 
  14. 14.   CPT ­ Cross Platform Tools  Pro  Contro  ● Codice riutilizzabile fra le  piattaforme, multipiattaforma    ● Diffusione tramite App Store    ● User experience differente dal  OS del dispositivo     ● Vincoli App Stores    ● Debugging cross­platform  Hybrid  ● Vista dal dispositivo come  app nativa e utilizzo di  tecnologie web    ● Accesso al dispositivo  estendibile tramite plugins  ● Diversa implementazione  delle WebView fra i vari  sistemi  Cross­Compiled  ● Vista dal dispositivo come  app nativa e utilizzo di  linguaggi molto conosciuti    ● Ampio accesso al dispositivo   ● Possono non essere  supportate tutte le piattaforme  necessarie      3.5 Conclusioni    Come si è visto ogni metodologia porta con se pregi e difetti, considerando                          anche l’elevato tasso di dinamicità di cui è caratterizzato il mondo dello                        sviluppo mobile è facile intuire come non vi sia una strada maestra                        unanime a cui fare riferimento.    13 
  15. 15. Una buona conoscenza delle caratteristiche e delle differenze delle varie                    metodologie possono però aiutare lo sviluppatore nella scelta. I criteri da                      tenere presenti sono molteplici ed ogni situazione potrebbe avere una                    storia a sè, ma sicuramente ce ne sono alcuni sempre validi, che vengono                          quì riassunti.    Il primo fra tutti risulta sicuramente la ​tipologia dell’applicazione. ​In                    generale l'utilizzo degli strumenti di sviluppo nativi permette da sempre di                      ottenere dei risultati migliori, la maggiore libertà espressiva, garanzia del                    risultato in termini di performance e user experience, totale e libero                      sfruttamento delle potenzialità del device. Di conseguenza queste                caratteristiche lo rendono adatto per le applicazioni più complesse in cui                      non è interesse scendere a compromessi nei costi e tempi di sviluppo.  Se invece la necessità è quella di realizzare un’applicazione con elementi e                        funzionalità standard, gli approcci Web o CPT potrebbero risultare un                    compromesso vincente.  È quindi essenziale conoscere bene sia le caratteristiche dell’applicazione                  che si andrà a sviluppare sia le peculiarità di ogni metodologia.  In questo scenario un altro criterio particolarmente importante è il                    background conoscenze personali dello sviluppatore: la possibilità di                riutilizzare sistemi e linguaggi di sviluppo già conosciuti, a parità di risultati,                        può essere un fattore di non secondaria importanza.  Tutto ciò, sempre tenendo conto naturalmente di eventuali ​vincoli                  presentati dagli stakeholders in riferimento a tempi e costi di sviluppo o                        funzionalità specifiche.    Anche il ​target ​a cui fà riferimento l’applicazione è di notevole importanza:                        risulta infatti inefficiente un utilizzo di strumenti CPT nel caso in cui si stia                            sviluppando un’applicazione il cui deployment è previsto per una sola                    piattaforma mobile. Studi​[ ] ​ dimostrano che questo aspetto non è ancora del                     6 tutto chiaro a molti sviluppatori.    6 Source: Visual Mobile, State of the Developer Nation Q1 2015, February 2015.  14 
  16. 16. 4. Analisi delle piattaforme prescelte    4.1 Criteri di analisi    Nel proseguire con lo studio ed il test delle varie piattaforme di sviluppo si è                              ritenuto necessario fissare alcuni criteri di analisi principali tramite i quali                      valutare e poter quindi meglio comprendere le varie opzioni.    4.1.1 Criteri individuati  ● Ide, licenza e sistemi operativi supportati  ● Linguaggi di programmazione principali  ● Accesso al dispositivo ­ sensoristica  ● Deployment targets  ● Strumenti di sviluppo  ● Funzionalità specifiche  ● Gestione distribuzione    È importante sottolineare come questi criteri siano siano indici qualitativi                    utilizzati in modo indicativo e come lo studio delle piattaforme avverrà in                        maniera approfondita caso per caso avvalendosi soprattutto della prova sul                    campo.    4.1.2 Applicazione di riferimento  Risulta utile definire inoltre la struttura di una applicazione standard che                      verrà realizzata attraverso le varie piattaforme.  Una struttura ritenuta sufficientemente esplicativa, utile a capire le                  potenzialità della piattaforma ed al tempo stesso non troppo onerosa in                      termini implementativi e stata pensata con le seguenti caratteristiche:    ● semplice interfaccia grafica  ● semplici interazioni con l’utente  15 
  17. 17. ● utilizzo di un sensore del dispositivo  ● utilizzo di una libreria interna del dispositivo  ● interfacciamento con una API di terze parti    Per rispondere a queste caratteristiche si è pensato ad un’applicazione che                      proponga all’utente una semplice interfaccia grafica, con la possibilità di                    relazionarcisi attraverso un pulsante che attivi una funzione per prelevare                    la posizione dal sensore di posizione, aprire una mappa (Google Maps                      API) in cui si riporta la rilevazione tradotta in un indirizzo ​human­readable e                          salvi ogni check­in in un database interno all’applicazione (es. SQLite)    A seguire due screenshots per dare un’idea più percisa al lettore di ciò che                            è stato sviluppato.      Fig.6 ­ Schermata “Home” dell’applicazione  16 
  18. 18.       Fig.7 ­ Schermata “Map” dell’applicazione    Come si può notare si tratta di una applicazione dall’interfaccia utente                      molto semplice: i comndi principali si accedono attraverso due bottoni                    sempre visibili nella parte superiore della finestra.  Nella sezione ​“Home” è presente il bottone di ​“CheckIn” tramite il quale si                          attiva una funzione che preleva la posizione dal sensore di posizionamento                      del dispositivo ed effettua un inserimento nel database ​SQLite​.  Passando alla sezione ​“Map” ​viene effettuata una lettura sul database per                      recuperare l’ultima posizione inserita, la quale attraverso una chiamata alle                    API di ​Google Maps viene tradotta in indirizzo ​“human readable” e mostrata                        nella mappa.    17 
  19. 19. 4.2 Elenco delle piattaforme prese in esame    In riferimento alle caratteristiche presentate nel capitolo 3.2 di questo                    elaborato risulta chiaro al lettore come gli approcci Native e Web risultino di                          più immediata comprensione nelle conseguenze della loro scelta,                delineando degli approcci ben definiti nelle modalità e negli strumenti.  Al contrario la galassia delle piattaforme Cross Platform Tools merita di                      essere approfondita ulteriormente, data la vastità delle opzioni offerte e le                      caratteristiche peculiari che ognuna di queste scelte può offrire.    Di conseguenza nel prosieguo di questo elaborato, cioè nella prova sul                      campo delle varie piattaforme, ci si concentrerà esclusivamente sulla                  metodologia CPT.    Per fini di approfondimento risulta comunque utile riportare alcune                  informazioni principali per le tre piattaforme di sviluppo Native principali:      ● Android  ❏ Linguaggio di programmazione: Java  ❏ Piattaforma di sviluppo: Adroid Studio o plugin Eclipse  ● IOS  ❏ Linguiaggio di programmazione: Objective C e Swift  ❏ Piattaforma di sviluppo: Xcode  ● Windows Phone  ❏ Linguaggio di programmazione: .NET  ❏ Piattaforma di sviluppo: Visual Studio            18 
  20. 20. 4.2.1 Piattaforme CPT prese in esame    Il mondo CPT risulta sicuramente quello più esteso ed al suo interno più                          diversificato, prendere in esame tutte le piattaforme disponibili risulta                  impossibile, oltre 900 quelle censite da ​Visual Mobile​.  È di conseguenza necessario procedere ad una scelta attraverso criteri di                      diffusione, potenzialità tecnologiche e peculiarità specifiche.    In base a questi criteri le piattaforme scelte, appartenenti sia alla categoria                        Hybrid che Cross­compiled, risultano le seguenti:    ● Qt  ● Xamarin  ● Appcelerator Titanium  ● Cordova­PhoneGap  ❏ JQueryMobile  ❏ Telerik   ❏ Sencha Touch    Il prossimo capitolo è dedicato all’analisi ed alla messa in opera di ciascuna                          di queste piattaforme, non si procede pertanto in questo momento a fornire                        ulteriori dettagli.                    19 
  21. 21.   4.3 Analisi delle piattaforme prescelte    4.3.1 Qt    Introduzione Qt (da leggere “​cute​”) è un framework                inizialmente sviluppato da ​Nokia​, acquisito negli ultimi              anni da ​Digia Plc​. Dopo alcuni anni di “difficoltà” con il                      distaccamento da Nokia, la scelta della strada              CrossPlatform ed il grande sviluppo del mercato mobile, è                  ora una delle scelte principali a cui si possono affidare i                      developers per dispositivi mobili.    Ide, licenza di utilizzo e sistemi operativi supportati  QtCreator è l’ide di riferimento per questo framework: completo, leggero ed                      intuitivo. È disponibile per Linux, Mac OS e Windows.  Sono disponibili vari livelli di licenze, 3 per la precisione, che comprendono                        una versione base ​free ​fino ad arrivare ad una versione premium che                        prevede servizi ulteriori. Tramite la versione free ​sono comunque                    accessibili le funzionalità offerte dalle librerie Qt.    Linguaggi di programmazione principali  I linguaggi di programmazione principali sono due: QML e C++.  Il QML è un linguaggio dichiarativo basato su JavaScript per la definizione                        delle interfacce. Tramite il QML si definiscono quindi i componenti                    dell’interfaccia, le loro relazioni e anche alcune funzionalità.  Nonostante non sia sempre necessario, non lo è stato in questo caso ad                          esempio, è comunque possibile utilizzare componenti aggiuntivi sviluppati                in C++ tramite la JNI (Java Native Interface). Questo permette di accedere                        ad una enorme mole di codice già sviluppato in rete, comprendendo                      comunque un piccolo incremento della complessita del progetto.  20 
  22. 22. Accesso al dispositivo ­ sensoristica  L’ambiente Qt è in continuo sviluppo, soprattutto nel campo mobile. Le                      librerie sono attualmente alla versione 5.4, fino alla precedente versione                    5.3 erano presenti alcune lacune serie per il supporto mobile. Con l’ultima                        versione disponibile non sono emerse particolari limitazioni nello sviluppo                  dell’applicazione di riferimento. Si ha quindi un accesso ai servizi principali                      con i relativi moduli, ma non si ha possibilità di un accesso totale                          (es.notifiche, battery level ecc.) a meno di un utilizzo di JNI (Java Native                          Inferface) e la realizzazione/sfruttamento di moduli appositi.    Deployment targets  La grande varietà dei deployment targets è uno dei punti di forza di questo                            framework. Oltre a supportare tutti i sistemi operativi mobile presi in                      considerazione c’è anche la possibilità di sviluppare applicazioni per                  l’ambiente desktop ed embedded.    Strumenti di sviluppo  Nella versione ​free ​l’unico strumento di sviluppo da segnalare è “Design”, il                        quale permette la realizzazione dell’interfaccia utente tramite strumenti                visuali tradotti successivamente in QML in maniera automatica. Non risulta                    però particolarmente intuitivo e versatile, è quindi risultato preferibile uno                    sviluppo di QML diretto.    Funzionalità specifiche  Nella versione ​free ​testata non sono emerse funzionalità specifiche degne                    di nota.    Gestione distribuzione  Non sono presenti strumenti per gestire la distribuzione dell’applicazione                  sviluppata nella versione ​free​, esiste invece la possibilità di hosting nei                      server dei produttori con la versione ​premium​.      21 
  23. 23. Tabella riassuntiva ­ Qt    Qt  Ide ­ OS supportati  QtCreator ­ Completo  Linguaggi di programmazione  QML, C++  Accesso al dispositivo  Servizi Principali  Deployment Targets  *Completo  Strumenti di sviluppo  “Design”  Funzionalità specifiche   /  Gestione Distribuzione  Hosting servers (premium)    *Utilizzando Qt l’accesso completo al dispositivo è possibile unicamente con l’utilizzo                      della JNI e di moduli C++.    Considerazioni dello sviluppatore  Lo sviluppo dell’applicazione tramite questo framework è stato nel                  complesso agevole, grazie soprattutto ad un ide semplice ed il linguaggio                      QML intuitivo nonostante ci si trovi alla prima esperienza. Da segnalare                      anche la presenza di una documentazione molto ampia e completa ed una                        comunità di sviluppatori molto attiva.    Nel caso di applicazioni relativamente semplici è quindi sicuramente                  un’opzione da tenere bene in considerazione. Nel momento in cui si ha                        necessità di utilizzare servizi non ancora supportati la situazione potrebbe                    compromettersi.  Necessita di attenzione la fase di installazione e setup del framework.        22 
  24. 24. 4.3.2 Xamarin    Introduzione  Xamarin è sviluppato sulle basi del framework open                source Monodevelop, al quale sono stati aggiunti              numerosissimi servizi e moduli per lo sviluppo mobile.        Ide, licenza di utilizzo e sistemi operativi supportati  Xamarin ha un suo ide di riferimento che è XamarinStudio, può altresì                        essere facilmente utilizzato tramite altri ide, specialmente VisualStudio di                  Microsoft per gli sviluppatori già familiari con questo strumento.   Xamarin propone 3 livelli di licenze, ma sfortunatamente nessuna di queste                      prevede una opzione ​free​, escluso il periodo di prova di 30 giorni. Inoltre                          non è previsto il supporto per gli ambienti di sviluppo Linux, aspetto che                          potrebbe disincentivare clienti appartenenti a questa categoria.     Linguaggi di programmazione principali  Xamarin si basa sull’utilizzo del linguaggio C# per definire la logica delle                        applicazioni, appoggiandosi al linguaggio AXML (Active XML) per                descrivere le interfacce.    Accesso al dispositivo ­ sensoristica  L’accesso a tutti gli elementi del dispositivo risulta davvero efficace con                      questo framework, in quanto vengono sfruttate le interfacce native dei vari                      OS. Questo permette di accedere praticamente ad ogni servizio, di ogni                      livello, offerto dal dispositivo. Questo è un grande vantaggio di questa                      piattaforma, anche se ciò implica che in un deploy crossplatform ci sia una                          (piccola) parte di codice che è necessario riscrivere o aggiuntive. Oltre alle                        interfacce native sono a disposizione dello sviluppatore anche molti moduli                    sviluppati da Xamarin.    23 
  25. 25. Deployment targets  Xamarin offre il supporto per un deployment sia in ambito mobile che                        desktop. Nel caso specifico da segnalare la possibilità di sviluppare anche                      per dispositivi ​wearable​ come gli smartwatch.    Strumenti di sviluppo  Numerosi sono gli strumenti di sviluppo disponibili per il developer, questo                      è un grande vantaggio di questa piattaforma.   Oltre ad una efficiente interfaccia visuale per costruire la UI                    dell’applicazione, dinamicamente tradotta in AXML, sono molti i moduli                  aggiuntivi messi a disposizione dal framework o disponibili nel Market                    Place. Alcuni di questi moduli ulteriori sono a pagamento, ma potrebbero                      risultare davvero molto utili nello sviluppo di applicazioni in ambito                    enterprise. Fra questi moduli se ne possono citare alcuni come PayPal,                      Facebook o Amazon, senza considerarne tantissimi altri non specifici, ma                    utili nello sviluppo di qualsiasi applicazione.    Funzionalità specifiche  Da segnalare due funzionalità notevoli di questa piattaforma: Xamarin                  TestCloud e Xamarin Insights.   TestCloud permette di ampliare le proprie possibilità nella fase di testing                      tramite il caricamento dell’applicazione in un server ed il deploy virtuale in                        oltre 1000 dispositivi dalle più svariate caratteristiche hardware e software.                    Cosa che chiaramente non sarebbe possibile effettuare con la stessa                    efficacia se la fase di testing fosse fatta dallo sviluppatore con i dispositivi                          hardware a disposizione. Con la possibilità di ricevere reports, screenshots                    e analisi delle performance.  Insights è un sistema di monitoring real­time delle attività degli utenti,                      tramite reports sull’utilizzo dell’applicazione, eventuali crash o warnings.  Risulta di immediata comprensione la grande utilità di questa funzionalità, è                      da segnalare però che tali funzioni sono disponibili tramite la stipulazione di                        abbonamenti aggiuntivi oltre alla licenza d’uso del framework stesso.    24 
  26. 26. Gestione distribuzione  Non sono presenti strumenti per gestire la distribuzione dell’applicazione                  sviluppata.    Tabella riassuntiva ­ Xamarin  Xamarin  Ide ­ OS supportati  XamarinStudio ­ NO Linux  Linguaggi di programmazione  C#, AXML  Accesso al dispositivo  Completo  Deployment Targets  Mobile, Desktop  Strumenti di sviluppo  Numerosi Moduli aggiuntivi  Funzionalità specifiche   TestCloud, Insights  Gestione Distribuzione  /      Considerazioni dello sviluppatore  Tramite Xamarin si è riusciti agevolmente a raggiungere le specifiche                    dell’applicazione di riferimento. L’interfaccia nativa con i componenti del                  dispositivo ed i numerosi moduli aggiuntivi a disposizione rendono molto                    efficiente lo sviluppo. È probabilmente la piattaforma più completa di quelle                      testate in questo elaborato.  Da tenere bene in considerazione però il fatto che si tratta di un framework                            utilizzabile nella pratica unicamente tramite pagamento ed anche le                  funzionalità specifiche e molti moduli prevedono un pagamento ulteriore.                  Nota negativa anche il mancato supporto per gli ambienti di sviluppo Linux,                        per un servizio così efficiente e completo equivale a perdersi in un bicchier                          d’acqua.      25 
  27. 27.   4.3.3 Appcelerator    Introduzione  Appcelerator è un framework molto ampio che              offre molte strade per lo sviluppo delle applicazioni                mobile. Opzioni che si adattano a diverse strade di                  progettazione, ma fra le quali non è sempre facile                  orientarsi.    Nota:  Le due strade principali che Appcelerator prevede attualmente per lo sviluppo sono                        quella Classic o tramite l’SDK Titanium. Inizialmente è sembrata più congeniale a                        questo progetto la scelta Classic, basata sulle tecnologie Web, ma tale scelta si è poi                              rivelata fallimentare. Di conseguenza ulteriori prove, senza produrre un’applicazione                  completa, ma verificando unicamente la possibilità di implementare le specifiche, sono                      state fatte tramite l’SDK Titanium. Titanium è caratterizzato a sua volta dall’utilizzo di                          Alloy, un framework MVC basato su Javascript.  Caratteristiche delle due possibilità ed ulteriori spiegazioni seguono nell’analisi della                    piattaforma.    Ide, licenza di utilizzo e sistemi operativi supportati  Appcelerator ha un suo ide di riferimento che è AppceleratorStudio, può                      altresì essere facilmente utilizzato tramite altri ide come Eclipse.  Appcelerator prevede vari livelli di licenza, ma nessuno ​free​, escluso il                      periodo di prova di 90 giorni. È disponibile per tutti gli ambienti di sviluppo:                            Linux, Mac e Windows.    Linguaggi di programmazione principali  Il linguaggio principale di Appcelerator è sicuramente il JavaScript con cui                      si definisce gran parte dell’applicazione, dopodiche i due sviluppi ​Classic e                       con la SDK ​Titanium (o ​Alloy​) ​si differenziano per per l’utilizzo dell’HTML il                          primo e dell’XML il secondo.    26 
  28. 28.   Accesso al dispositivo ­ sensoristica  Nella fase di accesso al dispositivo si sono evidenziate tutte le difficoltà e                          mancanze dello sviluppo tramite il metodo ​Classic. ​Complice anche una                    documentazione vetusta e una community scarsamente attiva, trovare i                  relativi moduli, risolvere le ambiguità fra le varie versioni dei moduli                      disponibili è stato un ostacolo serio. Si è deciso di conseguenza di                        abbandonare questa strada, come fra l’altro gran parte degli sviluppatori di                      Appcelerator sembra aver scelto da tempo.  Discorso diverso invece con l’utilizzo dell’SDK ​Titanium ed il framework                    Alloy​: la documentazione ampia ed aggiornata, una community vivace e la                      grande disponibilità di moduli ha permesso di verificare agevolmente la                    soddisfazione delle specifiche tramite diversi singoli esempi. L’applicazione                completa non è stata completamente sviluppata di nuovo per soddisfare la                      struttura MVC di ​Alloy​.    Deployment targets  Appcelerator offre il supporto per un deployment sia in ambito mobile che                        desktop.     Strumenti di sviluppo  Con riferimento all’utilizzo di ​Titanium​, da segnalare un MarketPlace con                    numerosissimi moduli, gratis o a pagamento.    Funzionalità specifiche  Si hanno inoltre servizi aggiuntivi a pagamento come il test su una larga                          serie di dispositivi virtuali, un efficiente sistema di insights con reporting                      real­time e un cloud con cui gestire le varie versioni della propria                        applicazione ed anche le sue notifiche all’utente.  Funzionalità simili a quelle offerte dalla piattaforma Xamarin.        27 
  29. 29. Gestione distribuzione  Sono presenti strumenti di Hosting e versioning dell’applicazione sui server                    di Appcelerator, ma non c’è la possibilità di gestione diretta della                      distribuzione dell’applicazione.    Tabella riassuntiva ­ Appcelerator  Appcelerator  Ide ­ OS supportati  AppceleratorStudio ­Completo  Linguaggi di programmazione  JavaScritp, HTML (o XML)  Accesso al dispositivo  Completo ­ ​Titanium    Scarso ­ ​Classic  Deployment Targets  Mobile, Desktop  Strumenti di sviluppo  Numerosi Moduli aggiuntivi  Funzionalità specifiche   Test nel Cloud, Insights, notifiche.  Gestione Distribuzione  Hosting e Versioning.      Considerazioni dello sviluppatore  Considerato lo scarso supporto e lo scarso aggiornamento per lo sviluppo                      con il metodo ​Classic potrebbe essere forse il caso di eliminare                      direttamente questa opzione dalla piattaforma. Dato che per applicazione                  che vanno al di là di una semplice interfaccia in stile web tale approccio                            risulterebbe probabilmente fallimentare.  Con lo sviluppo in ​Titanium invece si ha uno strumento molto potente e                          completo. A patto di essere familiari e/o disponibili ad uno sviluppo con la                          struttura MVC.    Anche per questa piattaforma, come per Xamarin, nella pratica è                    utilizzabileunicamente dietro pagamento del servizio.  28 
  30. 30. 4.3.4 Cordova    Introduzione  Cordova è un progetto open­source della fondazione              Apache, nato dal progetto Phonegap di cui ora è                  proprietaria Adobe. I due progetti vengono spesso              usati come sinonimi, allo stato attuale Phonegap può                essere considerato come una distribuzione di            Cordova con dei servizi aggiuntivi. Essendo            comunque Cordova il progetto alla base e per la sua                    natura open­source è stato scelto come candidato per questo progetto.    Ide, licenza di utilizzo e sistemi operativi supportati  Cordova non ha un suo ide di riferimento, per la sua gestione si fa                            riferimento alla CLI (Command Line Interface) con la quale è possibile                      installare Cordova e gestire i suoi plugins. È facilmente integrabile con                      molti ide, di conseguenza lo sviluppatore può scegliere quello a lui più                        consono. Come anticipato si tratta di un progetto open­source, disponibile                    con licenza Apache 2.0 ed è disponibile per tutti i sistemi operativi, anche                          per quelli attualmente meno in voga.     Linguaggi di programmazione principali  Cordova rispetta in pieno quelle che sono le classiche pratiche del mondo                        Web, il progetto risiede addirittura nella cartella ​www ​della rispettiva                    piattaforma rispettando anche la struttura interna delle cartelle. Da ciò                    deriva che i linguaggi di programmazione sono in tutto e per tutto quelli                          usati per lo sviluppo Web: Html, Css, Javascript ecc .    Accesso al dispositivo ­ sensoristica  Nello sviluppo dell’applicazione tramite Cordova non sono emerse                particolari limitazioni nell’accesso al dispositivo. I plugins a disposizione                  sono numerosissimi, alcuni ufficiali, molti sviluppati anche dalla community                  29 
  31. 31. e la loro installazione tramite la CLI risulta agevole con un minimo di                          familiarità con l’ambiente a riga di comando.    Deployment targets  Cordova offre ampio supporto per il deployment sia in ambito mobile che                        desktop.    Strumenti di sviluppo  Oltre ai plugins, già citati, Cordova non fornisce altri strumenti di sviluppo,                        considerando anche il fatto che non ha un suo ide di riferimento. Da                          segnalare però che l’attinenza dei progetti Cordova con la struttura classica                      di un progetto Web permette l’utilizzo di una grandissima mole di altri                        strumenti per lo sviluppo della propria applicazione. Di particolare                  attenzione sono gli UI Frameworks che si abbinano benissimo ad un                      utilizzo con Cordova, permettendo uno sviluppo di interfacce utente molto                    efficaci. Nel caso specifico di questo progetto la semplicità dell’interfaccia                    da realizzare non ha reso conveniente l’utilizzo di questi strumenti, ma ne                        sono stati comunque analizzati alcuni che verranno riportati in seguito in un                        apposita sezione del documento.    Funzionalità specifiche  Non ci sono funzionalità specifiche da segnalare, se non voler rimarcare la                        facilità di integrazione con strumenti del mondo Web che apre alla                      possibilità di incrementare esponenzialmente le opzioni di sviluppo.    Gestione distribuzione  Non sono presenti strumenti per la gestione della distribuzione                  dell’applicazione.            30 
  32. 32. Tabella riassuntiva ­ Cordova  Cordova  Ide ­ OS supportati  / ­ Completo  Linguaggi di programmazione  Tecnologie Web  Accesso al dispositivo  Completo   Deployment Targets  Mobile, Desktop  Strumenti di sviluppo  Plugins ­ UI Frameworks  Funzionalità specifiche   /  Gestione Distribuzione   /    Considerazioni dello sviluppatore  Cordova può spiazzare inizialmente lo sviluppatore che si potrebbe                  aspettare di trovarsi a disposizione un ide, mentre deve destreggiarsi con                      la linea di comando. Una volta entrati nell’ottica giusta però risulta di una                          agilità di utilizzo disarmante. Merito di ciò va riservato anche alla familiarità                        che molti sviluppatori possono avere con lo sviluppo tramite Tecnologie                    Web, alla possibilità di riutilizzare ide a loro familiari ed alla grande quantità                          di ulteriori strumenti facilmente integrabili grazie alla struttura dei progetti.  Altro aspetto sottolineare la natura open­source del progetto.    4.3.4.1 UI Frameworks  L’utilizzo di UI Framework è direttamente consigliato da Cordova stessa                    nella propria homepage. Come accennato questi strumenti permettono,                attraverso l’utilizzo di opzioni diverse da candidato a candidato, una                    realizzazione efficiente delle interfacce utente.  Nel caso specifico non è sembrato utile adottare alcuno di questi strumenti,                        data la semplicità dell’esempio in questione, ma la facilità di integrazione e                        la potenza di questi framework rendono altamente consigliabile il loro                    utilizzo in contingenze diverse.  31 
  33. 33. Facendo una semplice ricerca si possono trovate numerosissimi                frameworks adatti a questo scopo, la scelta fra le varie opzioni meriterebbe                        una trattazione ben più ampia, quasi una “tesina dentro la tesina”. Per                        questo motivo ci si limiterà in questa sede ad elencarne alcuni (fra quelli                          consigliati da Cordova stessa ed altri particolarmente famosi) e relative                    caratteristiche principali.    JQueryMobile  JQueryMobile è un UI Framework della famiglia JQuery basato su HTML5.                      Il suo utilizzo risulta particolarmente immediato in quanto consiste nel                    download di alcune librerie, l’importazione nel progetto e nel documento                    index.html​: da quel momento in avanti i suoi metodi e le sue funzioni                          saranno richiamabili facilmente nell’interfaccia. Fornisce, fra gli altri,                numerosi templates, animazioni, transazioni e la gestione della navigazione                  fra le pagine. Leggero, completo e potente è forse la prima opzione da                          analizzare da parte dello sviluppatore.  Sencha Touch  Sencha Touch è un framework MVC basato sull’utilizzo del Javascript. Non                      è solo un UI Framework, ma una piattaforma di sviluppo mobile vera e                          propria che ufficialmente si appoggia a Cordova per l’accesso al                    dispositivo. Fornisce numerosi widgets, layouts e animazioni.  Telerik  Anche Telerik, come Sencha Touch, si presenta come una piattaforma di                      sviluppo a se stante, la quale ancora una volta utilizza Cordova come                        strumento per accedere al dispositivo. Oltre a fornire numerosi componenti                    come le altre opzioni, merita una menzione speciale in quanto rappresenta                      un ide fruibile completamente dal browser. Questo aspetto può lasciare                    quantomeno perplessi in un primo momento gli sviluppatori, ma andandolo                    a testare sorprende per strumenti a disposizione e performance. Tramite il                      download della applicazione AppBuilder (disponibile nei maggiori store di                  applicazioni mobile) è anche possibile effettuare il deploy diretto da                    browser a dispositivo fisico, offrendo anche la possibilità di modificare il                      codice e vederne apportate le modifiche in real­time sul dispositivo.  32 
  34. 34. 4.4 Tabella comparativa      Qt  Xamarin  Appcelerator  Cordova  Ide ­ OS  supportati  QtCreator ­  Completo  XamarinStudio ­    NO Linux  Appcelerator  Studio  ­Completo  / ­ Completo  Linguaggi di  programmazi one  QML, C++  C#, AXML  JavaScritp,  HTML (o XML)  Tecnologie Web  Accesso al  dispositivo  Completo*  Completo  Completo ­   Titanium  Scarso ­    Classic  Completo   Deployment  Targets  Mobile,  Desktop,  Embedded  Mobile, Desktop  Mobile,  Desktop  Mobile, Desktop  Strumenti di  sviluppo  “Design”  Numerosi  Moduli  aggiuntivi  Numerosi  Moduli  aggiuntivi  Plugins,  UI Frameworks  Funzionalità  specifiche   /  TestCloud,  Insights  Test nel Cloud,      Insights,  notifiche   /  Gestione  Distribuzione  Hosting  servers  (premium)  /  Hosting e    Versioning   /    *Utilizzando Qt l’accesso completo al dispositivo è possibile unicamente con l’utilizzo                      della JNI e di moduli C++.        33 
  35. 35. 5. ​Conclusioni    La prima conclusione doverosa da osservare è che tutte e 4 le piattaforme                          si sono comportate complessivamente bene ed hanno permesso di                  raggiungere l’obiettivo di rispettare le specifiche dell’applicazione di                riferimento presentata. Quindi rimane la domanda, come scegliere?    Probabilmente non esiste una risposta univoca a tale domanda. Soprattutto                    tramite la ricerca effettuata viene alla luce come per ogni situazione                      potrebbe essere più adatta una scelta diversa di volta in volta.    Questa coscienza ci può però aiutare a definire un primo ragionamento da                        considerare nella scelta: trovare il miglior ​“​matching” fra la tipologia                    della nostra applicazione e le caratteristiche della piattaforma​.  Per esempio in presenza di applicazioni orientate al mondo Web,                    risulterebbe sensato ipotizzare Cordova come scelta. Mentre per                applicazioni da una struttura particolarmente complessa il pattern MVC di                    Appcelerator potrebbe risultare molto utile.    Questo criterio non è però sufficiente, perchè anche il ​background delle                      conoscenze di uno sviluppatore può fare una differenza enorme nel                    processo di sviluppo di un’applicazione. Indipendentemente            dall’accoppiamento applicazione­framework infatti, per uno sviluppatore            che conosce bene un ide o un linguaggio di programmazione continuare                      con i propri strumenti potrebbe comunque risultare comunque ben più                    efficiente.     Rileggendo l’elaborato si noterà come, fra l’altro, questi due criteri sono                      emersi anche nell’analisi della scelta fra le varie metodologie di sviluppo:                      Native, CPT, Web.    34 
  36. 36. Ancora una volta inoltre c’è da aggiungere che la grande dinamicità del                        mondo dello sviluppo mobile non consente di fossilizzarsi troppo su di una                        scelta. Scelte diverse possono risultare vincenti in contingeze differente.    Si è invece fortemente spinti a rimanere aggiornati su ciò che offre lo                          scenario per saper cogliere tutte le nuove ozpioni disponibili.  Sapersi adattare per utilizzare i migliori strumenti per i propri scopi è la                          condizione fondamentele per non venir tagliati fuori dall’evoluzione.     Il modello Darwin ha forse trovato dopo circa 150 anni un nuovo, ulteriore,                          campo di applicazione.          35 

×