ALMA MATER STUDIORUM                    `           UNIVERSITA DI BOLOGNA               Seconda Facolt` di Ingegneria     ...
PAROLE CHIAVE          contest-awareness          mobile computing                smartphone agent-oriented programming   ...
Alla mia famiglia.
IndiceIntroduzione                                                                         11 Evoluzione dei dispositivi e...
2.5   Ulteriori scenari applicativi . . . . . . . . . . . . . . . . . . .                        54         2.5.1 Realt` a...
IntroduzioneNegli ultimi anni l’avanzamento della ricerca e della tecnologia in ambitomobile ha portato allo sviluppo di d...
2necessit` di schematizzare ed ingegnerizzare lo sviluppo di tale categoria        adi applicazioni, porta inesorabilmente...
3si ` deciso di sfruttare le potenzialit` del framework JaCa-Android per lo   e                                   asvilupp...
4    4
Capitolo 1Evoluzione dei dispositivi edelle applicazioni mobileI dispositivi mobile di oggi sono strumenti multi-funzional...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE6                                    APPLICAZIONI MOBILE1.1      Tipologie d...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE                                                         ...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE8                                     APPLICAZIONI MOBILE      Esempi di sma...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE                                                         ...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE10                                   APPLICAZIONI MOBILEnel giugno 2010 Appl...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE                                                         ...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE12                                     APPLICAZIONI MOBILE     3. Core Servi...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE                                                        1...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE14                                     APPLICAZIONI MOBILEStoriaLa piattafor...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE                                                       15...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE16                                   APPLICAZIONI MOBILE                    ...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE                                                      17 ...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE18                                   APPLICAZIONI MOBILE1.2.3     Windows Ph...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE                                                         ...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE20                                     APPLICAZIONI MOBILE     1. Componenti...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE                                                        2...
CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE22                                   APPLICAZIONI MOBILEsull’attuale contest...
Capitolo 2Ubiquitous computing econtext-awarenessNegli ultimi anni, uno dei principali filoni di ricerca relativi all’inter...
CAPITOLO 2. UBIQUITOUS COMPUTING E24                                        CONTEXT-AWARENESSla tradizionale forma di inte...
CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS                                                         25ogni nostra ...
CAPITOLO 2. UBIQUITOUS COMPUTING E26                                           CONTEXT-AWARENESS     • Cattura automatica ...
CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS                                               27      Figura 2.2: Ere ...
CAPITOLO 2. UBIQUITOUS COMPUTING E28                                           CONTEXT-AWARENESS    Un contributo significa...
CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS                                                           29pato abbia...
CAPITOLO 2. UBIQUITOUS COMPUTING E30                                        CONTEXT-AWARENESSe quali risorse sono nelle vi...
CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS                                                            31o modelli...
CAPITOLO 2. UBIQUITOUS COMPUTING E32                                         CONTEXT-AWARENESSuna parte, gli approcci posi...
CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS                                                           33caratteriz...
CAPITOLO 2. UBIQUITOUS COMPUTING E34                                        CONTEXT-AWARENESSutente si avvicina ad un dete...
CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS                                                           35sono neces...
CAPITOLO 2. UBIQUITOUS COMPUTING E36                                        CONTEXT-AWARENESS2.3.1     I primi approcci al...
CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS                                                            37dell’uten...
CAPITOLO 2. UBIQUITOUS COMPUTING E38                                         CONTEXT-AWARENESSrichiedendo che l’applicazio...
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Montalti - "Context aware applications" (2011, master thesys ITA)
Upcoming SlideShare
Loading in...5
×

Montalti - "Context aware applications" (2011, master thesys ITA)

829

Published on

Master thesys.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
829
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Montalti - "Context aware applications" (2011, master thesys ITA)"

  1. 1. ALMA MATER STUDIORUM ` UNIVERSITA DI BOLOGNA Seconda Facolt` di Ingegneria a Corso di Laurea Specialistica in Ingegneria InformaticaSVILUPPO DI APPLICAZIONI CONTEXT-AWARESU SMARTPHONE: UN APPROCCIO AD AGENTIBASATO SULLA PIATTAFORMA JACA-ANDROID Elaborata nel corso di: Sistemi Concorrenti e di Rete LSTesi di Laurea di: Relatore:ALESSANDRO MONTALTI Prof. ALESSANDRO RICCI Co-relatori: ANDREA SANTI ANNO ACCADEMICO 2010–2011 SESSIONE II
  2. 2. PAROLE CHIAVE contest-awareness mobile computing smartphone agent-oriented programming JaCa-Android
  3. 3. Alla mia famiglia.
  4. 4. IndiceIntroduzione 11 Evoluzione dei dispositivi e delle applicazioni mobile 5 1.1 Tipologie di dispositivi mobile . . . . . . . . . . . . . . . . . 6 1.2 Sistemi operativi mobile . . . . . . . . . . . . . . . . . . . . 8 1.2.1 Apple Mac iOS . . . . . . . . . . . . . . . . . . . . . 9 1.2.2 Google Android . . . . . . . . . . . . . . . . . . . . . 13 1.2.3 Windows Phone . . . . . . . . . . . . . . . . . . . . . 18 1.3 Smart Mobile Applications . . . . . . . . . . . . . . . . . . . 212 Ubiquitous computing e context-awareness 23 2.1 Ubiquitous computing model . . . . . . . . . . . . . . . . . . 24 2.1.1 Storia del modello . . . . . . . . . . . . . . . . . . . . 26 2.2 Il “contesto” . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.2.1 I primi approcci al contesto . . . . . . . . . . . . . . 29 2.2.2 Una duplice visione del contesto . . . . . . . . . . . . 30 2.2.3 Definizione operativa . . . . . . . . . . . . . . . . . . 32 2.2.4 Categorie di contesto . . . . . . . . . . . . . . . . . . 33 2.3 Mobile context-awareness . . . . . . . . . . . . . . . . . . . . 35 2.3.1 I primi approcci alla context-awareness . . . . . . . . 36 2.3.2 Definizione operativa . . . . . . . . . . . . . . . . . . 37 2.3.3 Caratteristiche delle applicazioni context-aware . . . 38 2.3.4 Applicazione agli smartphone . . . . . . . . . . . . . 42 2.3.5 Sicurezza e privacy in ambito mobile . . . . . . . . . 43 2.4 Alcuni esempi di applicazioni . . . . . . . . . . . . . . . . . 45 2.4.1 ContextPhone . . . . . . . . . . . . . . . . . . . . . . 45 2.4.2 UbiPhone . . . . . . . . . . . . . . . . . . . . . . . . 50 vii
  5. 5. 2.5 Ulteriori scenari applicativi . . . . . . . . . . . . . . . . . . . 54 2.5.1 Realt` aumentata . . . . . . . . . . . . . . . . . . . . a 54 2.5.2 Context-aware gaming . . . . . . . . . . . . . . . . . 553 Progettazione di applicazioni context-aware mobile 57 3.1 Un approccio agent-oriented . . . . . . . . . . . . . . . . . . 58 3.1.1 Agenti intelligenti . . . . . . . . . . . . . . . . . . . . 59 3.2 Middleware support . . . . . . . . . . . . . . . . . . . . . . . 62 3.2.1 Architetture mobile ad agenti . . . . . . . . . . . . . 63 3.2.2 La scelta di JaCa-Android . . . . . . . . . . . . . . . 654 La piattaforma JaCa-Android 67 4.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.2 La piattaforma JaCa-Android . . . . . . . . . . . . . . . . . 68 4.3 Il modello di programmazione JaCa-Android . . . . . . . . . 72 4.3.1 Programmare gli agenti in Jason . . . . . . . . . . . . 73 4.3.2 Programmare gli artefatti in CArtAgO . . . . . . . . 76 4.3.3 Gestione dei workspaces . . . . . . . . . . . . . . . . 78 4.4 Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . 785 Un caso di studio: LaggerCalendar 81 5.1 Descrizione dello scenario . . . . . . . . . . . . . . . . . . . . 82 5.1.1 Informazioni contestuali richieste . . . . . . . . . . . 83 5.2 Principali scenari applicativi e casi d’uso . . . . . . . . . . . 84 5.3 Architettura dell’applicazione . . . . . . . . . . . . . . . . . 86 5.3.1 Progettazione degli artefatti . . . . . . . . . . . . . . 86 5.3.2 Progettazione degli agenti . . . . . . . . . . . . . . . 88 5.4 Alcuni dettagli implementativi . . . . . . . . . . . . . . . . . 89 5.4.1 Implementazione degli artefatti . . . . . . . . . . . . 89 5.4.2 Implementazione degli agenti . . . . . . . . . . . . . 91 5.5 Scenari reali di funzionamento . . . . . . . . . . . . . . . . . 95 5.6 Considerazioni conclusive . . . . . . . . . . . . . . . . . . . . 98Conclusioni 99A Acronimi 101Ringraziamenti 111 viii
  6. 6. IntroduzioneNegli ultimi anni l’avanzamento della ricerca e della tecnologia in ambitomobile ha portato allo sviluppo di dispositivi sempre pi` potenti dal punto di uvista computazionale, equipaggiati con una vasta gamma di sensori (camera,accelerometro, giroscopio, GPS, ecc...) e capaci di connettersi alla retetramite il supporto di tecnologie di ultima generazione (Bluetooth, 2G, 3G,4G, WiFi). Questo trend, in continua e costante crescita, ha aperto pianpiano la porta a molti nuovi scenari applicativi, abbattendo le barriere legatealla scarsit` di risorse disponibili sui dispositivi mobile ed aprendo le porte aallo sviluppo delle moderne smart mobile application. Questi apparecchi, eredi dell’ormai obsoleto telefono cellulare, ne man-tengono per` la caratteristica principale: la portabilit`. Gli smartphones so- o ano, infatti, dispositivi molto personali, concepiti per accompagnare l’utentedovunque egli vada; per questo motivo appaiono particolarmente interes-santi per la ricerca nell’ambito del pervasive computing, in quanto possonoaccedere, grazie ai sensori con i quali sono equipaggiati, ad una miriade diinformazioni riguardanti le attivit` del proprio possessore. a Le informazioni contestuali, che vanno dalla posizione attuale dell’uten-te alla lista degli appuntamenti o dei contatti in rubrica, hanno pian pianocominciato a giocare un ruolo importante per le applicazioni e per i servizi,rendendoli sempre pi` personalizzati e “smart”. La context-awareness urappresenta gi` parte integrante delle abituali applicazioni business, ma ail trend attuale l’ha ormai battezzata aspetto critico in ambito mobile enell’ubiquitous computing, dove i dispositivi hanno il compito di adattareil proprio comportamento in base ai servizi disponibili nell’ambientecorrente. Nonostante il fatto che il contesto si stia quindi affermandocome una nozione centrale per questo ambito emergente di applicazioni, ilsupporto esplicito alla context-awareness nei linguaggi di programmazionee negli ambienti di sviluppo mainstream ` ancora decisamente scarso. La e 1
  7. 7. 2necessit` di schematizzare ed ingegnerizzare lo sviluppo di tale categoria adi applicazioni, porta inesorabilmente a cercare astrazioni che riducanola complessit` di questi sistemi e che ne modellino ad alto livello le acaratteristiche, permettendo agli sviluppatori di focalizzare l’attenzioneunicamente sul comportamento specifico dell’applicazione stessa. L’obiettivo di questa tesi ` quello di investigare un livello di astrazione eagent-oriented, considerando in particolare il modello BDI come architet-tura di riferimento per lo sviluppo di agenti intelligenti al fine di modellareapplicazioni context-aware, dimostrando come le caratteristiche di reatti-vit`, pro-attivit` e adattamento richieste da questi sistemi possano essere a afacilmente soddisfatte tramite l’utilizzo di tali entit` computazionali. No- anostante non sia l’unica soluzione progettuale adottabile, verr` dimostrato, acon l’ausilio della letteratura disponibile in materia, come questo approcciorappresenti un livello di partenza efficace per semplificare e sistematizzarelo sviluppo di questa categoria di applicazioni. Nel capitolo 1 viene descritta l’evoluzione dei moderni smartphone, for-nendo una panoramica generale dei dispositivi e delle piattaforme di svi-luppo (sistemi operativi mobile) attualmente in commercio; questa breveintroduzione aiuta ad inquadrare le nuove tecnologie a disposizione e leinnovative potenzialit` di cui dispongono, come base di partenza per la aprogettazione di applicazioni realmente “smart”. Nel capitolo successivo viene invece posta particolare attenzione alla no-zione di contesto, introdotta inizialmente nell’ambito dell’ubiquitous compu-ting e poi arricchita di un nuovo significato con l’introduzione delle tecno-logie mobile: con l’aiuto della letteratura sono state fornite numerose defi-nizioni di contesto e di context-awareness, identificando le caratteristiche diquesta tipologia di applicazioni. Inoltre, per comprendere meglio gli aspettitrattati, sono state presentate due piattaforme di esempio context-aware,ContextPhone e UbiPhone, che forniscono servizi dipendenti dal contesto. Nel capitolo 3 ` stata analizzata la programmazione di tale categoria edi applicazioni, proponendo un approccio ad agenti intelligenti, secondo ilmodello BDI, per catturare ad alto livello le caratteristiche chiave presenta-te nel capitolo precedente. Particolare fondamentale per poter affrontare epresentare in pratica lo sviluppo di una applicazione context-aware, ` la ri- ecerca di un middleware software che fornisca il giusto supporto per l’utilizzoquesta astrazione concettuale. Tra le piattaforme analizzate in letteratura, 2
  8. 8. 3si ` deciso di sfruttare le potenzialit` del framework JaCa-Android per lo e asviluppo di un’applicazione reale: l’architettura della piattaforma ed il mo-dello di programmazione ad agenti e artefatti ` stato descritto in dettaglio enel capitolo 4. A supporto di questa analisi, sono stati forniti brevi stralcidi codice relativi ad un semplice esempio di applicazione. Infine, il capitolo 5 presenta la progettazione e lo sviluppo di unaapplicazione context-aware portata come caso di studio per esemplificarel’approccio finora descritto e per dimostrarne gli effettivi vantaggi. 3
  9. 9. 4 4
  10. 10. Capitolo 1Evoluzione dei dispositivi edelle applicazioni mobileI dispositivi mobile di oggi sono strumenti multi-funzionali con la capacit` adi supportare un vastissimo range di applicazioni sia per il business cheper l’utilizzo privato. I PDA e qualsiasi nuova categoria di smart-phonespermettono agli utenti di accedere a numerosissimi servizi, dalle email al-l’instant messaging, ed hanno una potenza computazionale che permetteloro di svolgere molti compiti spesso demandati all’utilizzo di un computer,come la modifica di documenti o la navigazione internet. Anzi, i dispositivimobile sono spesso visti come un’“estensione” del proprio computer: difatti,il lavoro svolto fuori dall’ufficio o in viaggio pu` essere sincronizzato in un osecondo momento, tramite procedure sempre pi` trasparenti all’utente, con ul’ordinario flusso di lavoro nella propria postazione, riflettendo le modifichealle nuove informazioni. L’evoluzione e lo sviluppo di questi dispositivi ha concentrato l’attenzio-ne su un nuovo paradigma di interazione uomo-macchina, il mobile compu-ting: questo approccio concettuale assume che i dispositivi computazionalisiano trasportati durante il loro utilizzo standard, seguendo l’utente du-rante lo svolgimento delle sue normali attivit`. Lo sforzo per superare i avincoli fisici (alimentazione, portabilit`, usabilit`, ecc...) insieme alle nuove a aprospettive di utilizzo, ne hanno fatto un settore tecnologico di primariaimportanza sia nell’ambito commerciale che di ricerca negli ultimi anni. Itre aspetti principali di questo settore, approfonditi nelle sezioni successive,sono l’hardware, il software e la comunicazione mobile. 5
  11. 11. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE6 APPLICAZIONI MOBILE1.1 Tipologie di dispositivi mobileIl termine “dispositivo mobile” sta ad indicare un’ampia gamma di stru-menti elettronici di consumo. Generalmente, ` utilizzato per descrivere edispositivi che si connettono al web, ma risulta comunque una definizionedecisamente ristretta delle reali potenzialit` di questi strumenti. In gene- arale, i dispositivi mobile sono progettati specificatamente per favorire por-tabilit` ed usabilit` durante gli spostamenti dell’utente, sono tipicamente a asoggetti ad un utilizzo intermittente in ambienti inusuali (in contrapposi-zione al classico desktop), supportando varie tipologie di comunicazione escambio di dati. Fanno parte di questa categoria una crescente gamma distrumenti che vanno dai personal digital assistant agli wearable computers(letteralmente, computer indossabili), passando per i pi` diffusi notebook e usmartphones. Inoltre, viste le crescenti capacit` computazionali e le nuove afeatures offerte da lettori MP3 e fotocamere digitali, spesso anche questi `dispositivi vengono annoverati all’interno di questa classe. E necessario co-munque sottolineare che l’evoluzione tecnologica sta portando lentamentead un’integrazione delle funzioni di comunicazione con quelle di computa-zione, rendendo meno netta la divisione tra queste tipologie di dispositivi.Le principali categorie di mobile devices dal punto di vista commercialesono le seguenti (vedi anche figura 1.1): • Personal Digital Assistance (PDA): chiamati anche palmari o pocket computers, sono dispositivi che uniscono elementi di com- putazione, telefonici/fax, internet e di networking all’interno di un singolo strumento. Un tipico PDA pu` funzionare da cellulare, fax, o browser internet ed agenda personale. A differenza di molti computer portatili, la maggior parte dei PDA sono provvisti di una particolare “penna”, in quanto utilizzano la scrittura come input al posto della consueta tastiera; questo implica quindi che forniscano funzionalit`a incorporate per il riconoscimento calligrafico. La categoria dei PDA annovera comunque anche dispositivi che utilizzano la classica tastiera come tipologia di input, chiamati in questo caso datapad. Inoltre, molti PDA possiedono funzioni di riconoscimento vocale che permette loro di reagire a comandi espressi a voce dagli utenti. Esempi di PDA: Palm Pilot, Revo, Sony Clie, Hewlett-Packard Jornado, Casio Cassiopedia, Compaq iPaq, Toshiba Pocket PC e altri. 6
  12. 12. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE 7 (a) PDA (PalmTX ) (b) Smartphone (iPhone) (c) TabletPC (LE1700 ) Figura 1.1: Principali tipologie di smart devices • Smartphones: sono telefoni di fascia alta che combinano le funzioni di un personal digital assistant (PDA) con quelle di un telefono cel- lulare. I modelli attuali generalmente possono essere utilizzati come media player portatili o fotocamere con touchscreen ad alta risoluzio- ne. Vengono di solito equipaggiati con una molteplicit` di sensori e a possibilit` di connessione web, dal GPS all’accelerometro, dalla con- a nettivit` wi-fi all’accesso mobile a banda larga. Il termine “smartpho- a ne” ` utilizzato in generale per descrivere telefoni che incapsulano una e capacit` computazionale e funzioni di connettivit` molto maggiori di a a un telefono standard, nonostante non sia presente una definizione uf- ficiale delle caratteristiche che distinguono i due apparecchi. Inoltre, dato il rapido sviluppo tecnologico, spesso telefoni attuali considerati “standard” possono avere capacit` che superano telefoni considera- a ti “smart” qualche anno fa, facendo s` che le definizioni cambino col ı tempo. Attualmente, mentre un telefono standard ` tipicamente basato su e un firmware proprietario, uno smartphone solitamente installa un sistema operativo pi` aperto e completo. I principali esempi di sistemi u operativi mobile presenti sul mercato verranno forniti al paragrafo 1.2. Questi sistemi possono essere installati su differenti modelli di telefoni, che durante il loro utilizzo riceveranno vari aggiornamenti software, per poter risolvere problematiche di sistema o rimanere al passo con lo sviluppo software attuale. Inoltre uno smartphone pu` o lanciare applicazioni sviluppate da terzi, grazie all’utilizzo delle API messe a disposizione. 7
  13. 13. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE8 APPLICAZIONI MOBILE Esempi di smartphones: Apple iPhone, Samsung Galaxy, HTC Desire, LG Optimus, Acer Liquid, Sony Ericsson Xperia e altri. • Tablet PC: un tablet computer, o semplicemente tablet, ` un compu- e ter mobile, pi` grande di un telefono cellulare o un PDA, integrato in u un touch-screen a schermo piatto. Tipicamente, la forma primaria di input di questo dispositivo ` il tocco dello schermo, per questo privile- e gia l’utilizzo di tastiere virtuali o digital pen piuttosto che una tastiera fisica. Il termine “tablet personal computer” si deve alla Microsoft, che intorno agli anni 2000 ha cercato di definire ed introdurre questo dispositivo, anche se la reale percezione del tablet come nuova classe di dispositivi di consumo ` stata raggiunta con la release di iPad da e parte di Apple nel 2010. Negli ultimi anni, il tablet sta conquistando una fascia di mercato sempre maggiore, attirando l’attenzione di molti produttori e sviluppatori, configurandosi come l’anello di congiunzio- ne tra i pi` attuali smartphone ed i personal computers: sempre pi` u u spesso vengono equipaggiati di sistemi operativi all’avanguardia, con caratteristiche molto simili ai relativi OS dell’una o dell’altra fascia di dispositivi. Esempi di tablet PC: Apple iPad, Samsung Galaxy Tab, Toshiba Portege, Fujitsu Lifebook, Motion Computing, IBM Thinkpad.1.2 Sistemi operativi mobileUn sistema operativo mobile, chiamato anche mobile OS, ` un sistema ope- erativo che comanda un dispositivo mobile, con caratteristiche simili ai si-stemi operativi standard installati su un personal computer. Essendo per` oinstallati su dispositivi con caratteristiche e vincoli sostanzialmente diver-si, presentano alcune differenze: sono generalmente pi` leggeri dal punto udi vista della computazione, in quanto installati su apparecchi con capa-cit` ed autonomia relativamente limitate, e devono supportare differenti aforme di input (touch-screen, digital pen, ecc..) e funzioni di connettivit` a(collegamento a reti mobili, Wi-Fi, GPS, ecc...). 8
  14. 14. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE 91.2.1 Apple Mac iOSiOS (conosciuto anche come iPhoneOS prima di giugno 2010) ` il sistema eoperativo mobile progettato da Apple.Sviluppato originariamente per iPho-ne, ` stato poi esteso per supportare ei principali dispositivi mobili Apple,come iPod Touch, iPad e Apple TV.Apple non permette attualmente la li-cenza per l’installazione di iOS su di-spositivi hardware realizzati da terzi;allo stesso modo le applicazioni posso-no essere realizzate su questa piatta-forma unicamente utilizzando le mo-dalit` e le API messe a disposizione ada Apple; per questi motivi, iOS vie-ne considerato, di fatto, un sistema Figura 1.2: Schermata e logoclosed, in contrapposizione al nuovo di Apple iOSsistema operativo Android.StoriaIl sistema operativo fu svelato, insieme all’iPhone, alla MacWorld Confe-rence & Expo 1 il 9 gennaio 2007, e lanciato commercialmente nel giugnodello stesso anno. All’inizio, la strategia di marketing di Apple non avevapresupposto un nome per questo sistema, limitandosi a riferirsi a questocome una versione particolare di OS X. Inoltre, in questa prima versione,non erano supportate applicazioni sviluppate da terzi. Solo nel febbraio2008 Apple mise a disposizione degli sviluppatori un apposito Software De-velopment Kit (SDK) per lo sviluppo di applicazioni su iPhone, rilasciandoil mese successivo una nuova versione del sistema chiamato “iPhone OS ”.Solo dopo il suo utilizzo anche su altri dispositivi come iPod Touch e iPad, 1 il MacWorld Conference & Expo ` una fiera che si svolge annualmente nelle prime esettimane di gennaio negli Stati Uniti, con conferenze dedicate alla piattaforma AppleMacintosh. 9
  15. 15. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE10 APPLICAZIONI MOBILEnel giugno 2010 Apple ha rinominato iPhone OS solamente “iOS ”, licen-ziando il brand da Cisco che da oltre dieci anni utilizzava lo stesso nomeper il sistema operativo installato sui suoi router.Interfaccia utenteL’interfaccia utente di iOS ` basata sul concetto di manipolazione diretta, eutilizzando gesture multi-touch: in questo modo ` possibile controllare ealcuni elementi grafici, come bottoni, slider ed interruttori, che veicolanol’interazione con il dispositivo. La risposta immediata agli input dell’utentefornisce un’interfaccia fluida per l’interazione, che pu` avvenire tramite il osemplice tocco o con l’utilizzo di varie gesture supportate (come swipe, tap,pinch e reverse pinch), che in base al contesto in cui sono eseguite assumonoun differente significato. Inoltre, gli accelerometri interni sono utilizzati daalcune applicazioni per rispondere allo shaking (letteralmente, scuotimento)del dispositivo o alla rotazione in tre dimensioni, che assumono la funzionedi input alternativo. Figura 1.3: Architettura di iOS 10
  16. 16. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE 11La piattaforma iOSCome sistema operativo, iOS ` derivato da Mac OS X, con cui condivide ela fondazione sul sistema Darwin2 , per cui ` di fatto un sistema basato su earchitettura Unix per natura. Dal punto di vista architetturale, iOS presenta quattro livelli di astra-zione, mostrati in figura 1.3: il livello Core OS, il livello Core Services, ilMedia Layer e il livello Cocoa Touch [2]. Ai livelli pi` bassi ci sono i servizi ufondamentali e le tecnologie su cui si basano tutte le applicazioni; pi` inualto, i livelli contengono tecnologie e servizi pi` sofisticati. u 1. Cocoa Touch layer: contiene i framework chiave per lo sviluppo di applicazioni su iOS. Questo livello definisce le infrastrutture base delle applicazioni ed il supporto per tecnologie chiave come il multi-tasking ed il multi-touch, insieme ad altri servizi di alto livello. Tra i servizi implementati citiamo: il multitasking, il supporto per la stampa, la protezione dei dati, l’Apple push notification, il supporto per il riconoscimento delle gestures, il file sharing ed il peer-to-peer. Tra i framework a disposizione, invece: l’Address Book UI, l’Event Kit UI, il Game Kit, il Map Kit ed il Message UI. 2. Media layer: contiene le tecnologie grafiche, audio e video orientate allo sviluppo di applicazioni che focalizzano l’attenzione sulla espe- rienza multimediale dell’utente su dispositivo mobile. Le primitive all’interno di questo livello, infatti, aiutano lo sviluppatore a proget- tare applicazioni con alti standard audio e visivi, oltre che fornire il supporto per lo streaming del segnale su Apple TV o altri ricevitori non proprietari (tramite la tecnologia AirPlay). Tra i framework contenuti in questo livello, citiamo: l’Assets Library, il Core Audio, il Core Graphics, il Core MIDI, il Core Video, il Media Player, l’OpenAL e l’OpenGL. 2 Darwin ` un sistema operativo POSIX-compliant e open-source, rilasciato da Apple enei primi anni 2000. Sviluppato in C e C++, ` costituito principalmente da Apple, ma econ contributi fondamentali da altri progetti software open-source (come NeXTSTEP, `BSD e altri). E compatibile con le Single Unix Specification e le applicazioni Unix POSIX. 11
  17. 17. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE12 APPLICAZIONI MOBILE 3. Core Services layer: contiene i servizi fondamentali del sistema, che tutte le applicazioni utilizzano. Anche se uno sviluppatore non utilizza direttamente queste primitive, molti dei servizi principali del sistema sono realizzati basandosi sulle tecnologie contenute in questo livello. Tra le funzioni di alto livello, sono implementati: i Block Objects, SQlite ed il supporto XML. Tra i framework a disposizione, abbiamo invece: l’AddressBook, il Core Data, il Core Foundation, il Core Location, il Core Media, il Core Telephony, l’Event Kit, il Foundation, il Mobile Core Services, il System Configuration, il Quick Look e lo Store Kit. 4. Core OS layer: contiene tutte le feature di basso livello su cui sono basate tutte le altre tecnologie ed i framework citati in precedenza. Nel caso si debba gestire la sicurezza o l’interfacciamento con dispo- sitivi hardware esterni, ` necessario utilizzare i framework definiti in e questo livello. I framework principali che costituiscono il Core OS sono: l’Accelerate, l’External Accessory, il Security ed infine il System. Ovviamente, un progettista pu` decidere, in base alle proprie necessit`, o adi utilizzare servizi e framework di alto livello, piuttosto che viceversa: iframework di alto livello introducono astrazioni che rendono la scritturadel codice pi` agile in quanto incapsulano funzioni molto complesse; in uogni caso i livelli a pi` bassa astrazione rimangono comunque disponibili a uquegli sviluppatori che volessero gestire in completa autonomia ogni aspettodi interfacciamento con il sistema.Development e deployment in iOSApple fornisce per gli sviluppatori iOS SDK che fornisce tutte le inter-facce, gli strumenti e le risorse per sviluppare applicazioni iOS sul propriocomputer Macintosh Intel-based. 12
  18. 18. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE 13 Le librerie condivise e le risorse sono organizzate in pacchetti denomi-nati frameworks, organizzati a loro volta in livelli gerarchici di astrazione,come descritto nella sezione precedente. Visto che iOS ` basato su piatta- eforma Unix, molte delle tecnologie che compongono il livello Core OS sonodirettamente derivate da tecnologie open-source. Altri componenti importanti dell’SDK sono: • Strumenti XCode: contengono gli strumenti necessari per sviluppare un’applicazione su iOS, incluse alcune principali applicazioni: l’am- biente di sviluppo XCode, l’editor visuale Interface Builder ed il tool di debugging Instruments. • iOS Simulator: un’applicazione che simula lo stack di iOS su sistema operativo Mac OS X, permettendo il test in locale delle applicazioni. • iOS Developer Library: la documentazione concettuale di tutte le tecnologie utilizzate.1.2.2 Google AndroidAndroid ` un sistema operativo per edispositivi mobile come smartphone etablet, sviluppato dalla Open HandsetAlliance guidata da Google Inc. Lamaggior parte del codice scritto perla piattaforma Android ` stato reso edisponibile sotto Apache licence, unalicenza software ad utilizzo gratuito:per questo motivo, il sistema ` di fat- eto open e, nonostante sia stato lan-ciato sul mercato da minor tempo ri-spetto ad altri sistemi operativi, van-ta gi` una forte presenza di sviluppa- atori che hanno esteso le funzionalit` adel sistema tramite la progettazione Figura 1.4: Schermata e logodi apps. di Google Android 13
  19. 19. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE14 APPLICAZIONI MOBILEStoriaLa piattaforma Android ` un prodotto della Open Handset Alliance, un egruppo di organizzazioni che collaborano con lo scopo di sviluppare un siste-ma mobile per un telefono all’avanguardia. Questa organizzazione, guidatada Google, include pi` di 80 compagnie tra cui operatori mobili, produttori udi dispositivi portatili, produttori di componenti, sviluppatori software ecompagnie di marketing. Il primo dispositivo mobile sul mercato equipaggiato con Android ` sta- eto il G1 realizzato da HTC e fornito da T-Mobile nel 2007. Questo telefono` stato disponibile solo dopo un anno di speculazioni, in cui sono state reseedisponibili solo alcune versioni incrementali di un SDK, come strumentoprincipale di sviluppo. Quando la data di lancio del G1 si avvicin`, il team odi Android distribu` una versione 1.0 dell’SDK e le applicazioni per questa ıpiattaforma cominciarono realmente ad emergere. Per incentivare l’inno-vazione, Google ha sponsorizzato due contest chiamati “Android DeveloperChallenge”, dove sono stati messi a disposizione milioni di dollari per in-crementare lo sviluppo di applicazioni innovative su piattaforma Android.Qualche mese dopo il G1, fu lanciato anche l’Android Market, permettendoagli utenti di visionare e scegliere le applicazioni direttamente dai propritelefoni.La piattaforma AndroidAndroid consiste in un kernel basato su Linux, con un middleware, libreriee API scritti in C; inoltre sono fornite applicazioni software lanciateall’interno di un framework applicativo che include librerie compatibili conJava e basate su Apache Harmony. Android utilizza una macchina virtualechiamata Dalvik virtual machine con compilazione just-in-time per lanciareapplicazioni compilate in linguaggio Java. I layer software che costituisconola piattaforma sono presentati in figura 1.5 [9]. 1. Applicazioni: Android viene fornito di un set di applicazioni stan- dard (dette anche core applications), tra cui client email, gestore SMS, calendario, mappe, browser, contatti e altri. Tutte queste applicazio- ni (oltre ovviamente a quelle scritte da terzi) utilizzano il linguaggio Java. 14
  20. 20. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE 15 2. Application Framework: rendendo disponibile una piattaforma di sviluppo aperta, Android offre agli sviluppatori la possibilit` di crea- a re applicazioni estremamente interessanti ed innovative: i progettisti, infatti, hanno completo accesso alle API dello stesso framework utiliz- zato dalle core application, potendo cos` sfruttare al meglio l’hardware ı del dispositivo mobile. L’architettura delle applicazioni ` progettata e per favorire il riutilizzo dei componenti ed ogni applicazione che pub- blica i servizi implementati pu` essere a sua volta utilizzata da altre o per sviluppare funzioni pi` complesse (in base comunque ai vincoli di u sicurezza forzati dal framework stesso). Sottesi ad ogni applicazione, ci sono un insieme di sistemi e servizi, tra cui: • Un corposo set di Views (viste) che possono essere utilizzate per la progettazione di un’applicazione: tra queste viste sono incluse griglie, liste, text box, bottoni ed altri componenti; • Content Providers che permettono alle applicazioni di ac- cedere a dati di altre applicazioni, oppure condividere i propri; • Un Resource Manager che fornisce l’accesso a risorse come grafiche, file di layout, ecc... • Un Notification Manager che d` la possibilit` ad ogni ap- a a plicazione di visualizzare notifiche personalizzate sulla barra di stato; • Un Activity Manager che gestisce il ciclo di vita delle applicazioni e fornisce uno stack di navigazione comune. 3. Librerie: include una serie di librerie scritte in C/C++ utilizzate da vari componenti del sistema; queste estensioni sono rese disponi- bili agli sviluppatori tramite l’Android Application Framework. Alcu- ne delle librerie principali sono elencate di seguito: Media Libraries, Surface Manager, SGL, 3D libraries, SQLite e FreeType. 4. Kernel Linux: Android si basa sulla versione 2.6 di Linux per i servizi di sistema come la sicurezza, il management della memoria, lo stack di rete e il modello dei driver. Il kernel agisce inoltre da abstraction layer tra l’hardware ed il resto del sistema. 15
  21. 21. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE16 APPLICAZIONI MOBILE Figura 1.5: Architettura di Android Come accennato in precedenza, le applicazioni Android sono scritte inlinguaggio Java e per questo lanciate su una virtual machine: non si trattain questo caso della classica Java Virtual Machine (JVM), ma di un compo-nente open-source chiamato Dalvik virtual machine. Questa tecnologia` stata scritta con l’obiettivo di poter lanciare pi` istanze di virtual machinee uefficientemente sullo stesso dispositivo: ogni applicazione (contenuta in unfile eseguibile .dex, ottimizzato per un utilizzo minimo della memoria) vieneinfatti lanciata all’interno di un’istanza della Dalvik VM, che a sua voltarisiede all’interno di un processo Linux gestito dal kernel (come mostratoin figura 1.6). La Dalvik VM si basa sul kernel Linux per le funzionalit` di abasso livello come il multi-tasking ed un’efficiente gestione della memoria.Development e deployment in AndroidIl requisito principale per progettare applicazioni su piattaforma Android` l’SDK Android fornito da Google. E’ disponibile inoltre un plugin,edenominato “Android Developer Tool ”, che permette di sviluppare appli-cazioni all’interno dei principali ambienti di programmazione Java, come 16
  22. 22. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE 17 Figura 1.6: Esecuzione di un’applicazione Androidad esempio l’IDE Eclipse3 : questi tool di sviluppo forniscono un ambienteJava sensibile al contesto, oltre che aiuto e suggerimenti lungo la program-mazione; una volta che il codice ` stato compilato correttamente, l’Android eDeveloper Tool si occupa del corretto impacchettamento dei dati e dellacompilazione del file manifest AndroidManifest.xml, necessario per ogniapplicazione. All’interno dell’SDK, sono presenti anche vari tool command-line peril debugging delle applicazioni realizzate; i principali e pi` comunemente uutilizzati sono: • Android Emulator: questo emulatore permette di testare le proprie applicazioni su un device virtuale oppurtunamente configurato, per valutarne performance e corretto comportamento; • Android Debug Bridge: consiste in due programmi, uno server e l’altro client-side, per la connessione al telefono da remoto. ` E importante sottolineare che, data la versatilit` dell’utilizzo di Java acome linguaggio di programmazione, lo sviluppo di applicazioni Androidpu` avvenire su tutti i principali sistemi operativi disponibili (Microsoft oWindows, Mac OS X, Linux). 3 disponibile all’indirizzo http://www.eclipse.org. 17
  23. 23. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE18 APPLICAZIONI MOBILE1.2.3 Windows PhoneWindows Phone (prima conosciutocol nome Windows Phone 7 Series) ` eil sistema operativo mobile sviluppatoda Microsoft ed il successore dellapiattaforma Windows Mobile. Conquesto nuovo sistema, Microsoft offreun’interfaccia utente rinnovata conl’utilizzo del linguaggio di designMetro, che si occupa sia dell’inte-grazione con i servizi Microsoft econ quelli sviluppati da terzi, siadell’utilizzo performante dell’hard-ware di cui dispone il dispositivo.Windows Phone richiede alcunirequisiti hardware minimi per il suocorretto funzionamento, ma, comeAndroid, ` progettato per funzionare esu differenti piattaforme e chipsethardware. Per questo motivo ` stato escelto come linguaggio principaledi programmazione C#, in quantorende possibile una compilazione run-time tramite “Common Language Figura 1.7: Schermata e logoRuntime” (CLR, una virtual machine di Windows Phoneproprietaria).StoriaIl lavoro per una sostanziale update del precedente Windows Mobile inizi` onei primi mesi del 2004 sotto il nome di “Photon”, ma visti gli scarsi risultatiiniziali il lavoro fu cancellato. Successivamente, nel 2008, Microsoft riun` ıun team per lo sviluppo di un nuovo sistema operativo mobile e nel 2009fu realizzato Windows Phone, anche se alcuni ritardi costrinsero Microsofta sviluppare Windows Mobile 6.5 come release provvisoria. 18
  24. 24. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE 19 Il nome Windows Phone 7 rappresenta di fatto il rinnovamento del vec-chio OS mobile di Microsoft Windows Mobile : il 5 febbraio 2010 al MobileWorld Congress 2010 di Barcellona, Microsoft svel` per la prima volta Win- odows Phone e ne rivel` altri dettagli il mese successivo al MIX 2010. La oversione finale dell’SDK fu resa disponibile per gli sviluppatori da settembredello stesso anno. Nell’ottobre del 2010 sono stati lanciati sul mercato dieci dispositiviche montano Windows Phone, fabbricati da HTC, Dell, Samsung e LG.Successivamente, nel febbraio del 2011 ` stata annunciata una partnership etra Nokia e Microft, per far diventare Windows Phone il sistema operativoprimario sui dispositivi realizzati dalla casa finlandese.ArchitetturaL’architettura di Windows Phone 7 ` basata sul kernel Windows Embedded eCE 6.0 ed ` logicamente divisa in tre livelli principali: i componenti relativi eal kernel-mode ed al user-mode (il livello software), oltre ai componentihardware [21]. Il diagramma in figura 1.8 mostra i componenti primaridell’architettura. Figura 1.8: Architettura di Windows Phone 19
  25. 25. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE20 APPLICAZIONI MOBILE 1. Componenti Kernel-mode: il kernel di Windows Phone OS 7.0 fornisce i servizi fondamentali del sistema, come la gestione della me- moria, dei processi e dello scheduling dei threads. Gli obiettivi princi- pali di questo sistema sono le performance, la sicurezza e la robustezza della piattaforma. 2. Componenti User-mode: i principali componenti che fanno parte di questo livello sono: • l’host dei servizi (file ServicesD.exe) che ` sostanzialmente un e processo che gestisce i servizi di lunga durata che non hanno bisogno di accesso diretto all’hardware o al kernel (librerie DLL dinamiche); ` stato utilizzato un kernel unificato dove ogni sotto- e sistema ` caricato dinamicamente come una DLL: l’utilizzo di e questa tipologia di kernel migliora le performance generali poich´ e ogni chiamata di funzione pu` essere eseguita senza chiamate o incrociate ai processi. • l’user-mode driver host (file UDevices.exe) che contiene tutti i driver utente a cui ` consentito un accesso ristretto alla memoria, e in modo da prevenire azioni potenzialmente dannose; • la shell di Windows Phone 7.0 (file TelShell.exe) che controlla l’interfaccia utente del dispositivo; • il phone dialer (file Cprog.exe) che ` un’applicazione che gestisce e i servizi di chiamata, in quanto al suo interno sono implementate le funzioni per la ricezione e l’invio di una telefonata; • l’application platform che rappresenta la piattaforma su cui tutte le applicazioni sviluppate per Windows Phone risiedono. 3. Hardware: l’hardware ` costituito da tutti i sensori e le tecnologie e con cui ` equipaggiato lo smartphone su cui ` stato installato il si- e e stema; Windows Phone ` in grado di gestire questi elementi in base e all’attuale configurazione del dispositivo, adattando la sua esecuzione. ` E comunque richiesta una configurazione hardware minima per una corretta esecuzione. 20
  26. 26. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLEAPPLICAZIONI MOBILE 21Development e deployment in Windows PhoneQualsiasi applicazione si intenda sviluppare, il punto di partenza della pro-gettazione ` la Windows Phone Application Platform [22]: questa epiattaforma definisce i componenti centrali comuni a tutti gli sviluppatori.Nello specifico, l’Application Platform contiene tutti gli strumenti per losviluppo, per l’esecuzione runtime, per la progettazione di servizi e cloud-computing. Oltre alla piattaforma base, ` possibile valutare estensioni per ela progettazione di funzionalit` accessorie. a L’ambiente di sviluppo primario per la progettazione di un’applicazioneper Windows Phone ` Microsoft Visual Studio 2010, combinato con ealcuni tool specifici, come il Windows Phone Emulator, che fornisce unsupporto per definire, progettare, effettuare il debugging ed il deploymentdelle proprie applicazioni.1.3 Smart Mobile ApplicationsLe piattaforme operative introdotte in precedenza forniscono nuove ed in-novative funzionalit` per lo sviluppo di applicazioni di nuova generazione: adel resto, l’avanzamento tecnologico ha messo a disposizione degli sviluppa-tori dispositivi sempre pi` potenti dal punto di vista computazionale e dei usensori con cui vengono equipaggiati, aumentandone esponenzialmente gliambiti di utilizzo. Per questo motivo, le tipologie di applicazioni supportateda questi dispositivi si sono evolute profondamente negli ultimi anni, graziealla possibilit` di poter disporre ed elaborare nuove informazioni ottenute adal contesto dell’utente o direttamente dalla rete. Da un lato, quindi, le applicazioni realizzate per questa tipologia didispositivi di nuova generazione hanno accesso a nuove fonti di dati chepermettono loro di avere un comportamento smart, letteralmente “intelli-gente”, capace di adattarsi alla situazione esterna realizzando funzionalit` ainnovative. Dall’altro, l’introduzione di questi nuovi scenari introduce nuovesfide legate allo sviluppo di applicazioni mobile, vista la difficolt` crescen- ate. Queste applicazioni avranno quindi a che fare con problematiche legatealla concorrenza tra processi, all’interazione asincrona con differenti servizi(web-services, social networks, client email) e dovranno presentare un com-portamento incentrato sull’utente, indirizzato dalle informazioni specifiche 21
  27. 27. CAPITOLO 1. EVOLUZIONE DEI DISPOSITIVI E DELLE22 APPLICAZIONI MOBILEsull’attuale contesto (la posizione geografica del dispositivo, la presenza diconnettivit` nelle vicinanze, ecc...). a Questi nuovi scenari hanno spinto molti brand ed aziende a buttarsi sulmercato mobile, realizzando le proprie applicazioni diffuse spesso a titologratuito, con lo scopo di promuovere e migliorare il proprio servizio o sem-plicemente pubblicizzare la propria azienda. La concorrenza che si ` venuta ea creare in questo settore di sviluppo, ha quindi portato a nuovi standardper lo sviluppo di applicazioni smart, dando notevole importanza all’usa-bilit` ed all’interfaccia grafica, oltre agli aspetti implementativi menzionati ain precedenza. Un’interfaccia intuitiva ed accattivante rende utilizzabileun’applicazione molto sofisticata a tutti gli utenti, rivolgendosi quindi adun insieme di clienti pi` vasto e recettivo. Inoltre, nell’ottica di un merca- uto fortemente saturo e competitivo, questo aspetto assume un’importanzacommerciale pi` spiccata, oltre che prettamente funzionale. u 22
  28. 28. Capitolo 2Ubiquitous computing econtext-awarenessNegli ultimi anni, uno dei principali filoni di ricerca relativi all’interazioneuomo-macchina (human-computer interaction, o HCI ) ` stato l’esplorazione edi nuove forme di interazione ottenute unendo le nuove tecnologie sviluppa-te con il mondo fisico in cui viviamo e lavoriamo. Questo campo di ricercaha assunto negli anni molte denominazioni, ciascuna focalizzata su un par-ticolare aspetto o modello di interazione (ubiquitous computing, pervasivecomputing, context-aware computing, ecc...). Al di l` della nomenclatura autilizzata, l’idea centrale rimane invariata: seguendo il trend attuale di svi-luppo di dispositivi low-cost e low-power, l’ubiquitous computing proponeun futuro digitale nel quale la computazione sia incorporata nella struttu-ra del mondo intorno a noi. In questo mondo, l’esperienza primaria dellacomputazione non avviene pi` attraverso i tradizionali desktop computers, uma piuttosto con una serie di dispositivi computazionalmente avanzati: se-condo questa visione, il mondo intorno a noi pu` diventare l’interfaccia per ola computazione e le possibilit` di interazione diventano molteplici. a Questa visione del futuro sviluppo tecnologico porta con s´ alcune pro- eblematiche relative all’ambito di ricerca. In particolare, ` lecito chiedersi equanto la computazione possa essere resa “sensibile” e possa adattarsi di-namicamente alle variazioni dell’ambiente fisico o sociale attorno ad essa.Quando una persona parla con un’altra, entrambe hanno la possibilit` di autilizzare informazioni circostanziali implicite (o contesto) per ampliare lacomunicazione. Questo meccanismo risulta particolarmente impoverito nel- 23
  29. 29. CAPITOLO 2. UBIQUITOUS COMPUTING E24 CONTEXT-AWARENESSla tradizionale forma di interazione per la computazione, viste le metodolo-gie per fornire input alle macchine; per questo motivo, nella maggior partedei casi, i computer non hanno la capacit` di sfruttare al massimo il contesto aattorno a loro. Lo scenario appena descritto pone l’accento sul concetto di contestoe sul ruolo centrale che assume in questo ambito di ricerca. Miglioran-do l’accesso dei computer al contesto, possiamo arricchire l’interazioneuomo-macchina e rendere possibile lo sviluppo di servizi nuovi e funzionali.Soprattutto in questa era tecnologica in cui la computazione si sta spostan-do “off the desktop” (cio` lontano dai soli personal computer, trasferendosi ein vari dispositivi disseminati nel mondo fisico), l’importanza di adattare lacomputazione alle informazioni ottenute dall’ambiente circostante risultadi centrale importanza. Per poter utilizzare al meglio questa fonte di informazioni, bisogna in-nanzitutto comprendere cosa si intenda esattamente per contesto e comedebba essere utilizzato, in modo da scegliere unicamente le informazioniutili per l’applicazione o il servizio che si desidera sviluppare e in modo dasupportare in maniera corretta e coerente le reazioni a cambiamenti dell’en-vironment locale. Per questo motivo, partendo dal modello dell’ubiquitouscomputing, di seguito verr` definito e caratterizzato il concetto di contesto, adiscutendone la particolare importanza nell’applicazione all’ambito mobile.2.1 Ubiquitous computing modelL’ubiquitous computing ` un modello di interazione uomo-macchina in ecui la computazione delle informazioni ` stata profondamente integrata ne- egli oggetti e nelle attivit` della vita quotidiana. Durante lo svolgimento aordinario delle proprie attivit`, la persona che “utilizza” l’ubiquitous com- aputing sfrutta numerosi dispositivi computazionali simultaneamente, senzaper forza essere consapevole del loro utilizzo. Questo modello ` generalmente considerato l’evoluzione del desktop com- eputing, in cui l’utente individuale aziona consciamente una singola apparec-chiatura per uno scopo specifico. Pi` formalmente, l’ubiquitous computing u` definito come “macchine che vengono inserite nell’ambiente umano inveceeche forzare l’uomo ad entrare nel loro”, sottolineando la possibilit`, durante a 24
  30. 30. CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS 25ogni nostra attivit`, di accedere a capacit` elaborative per soddisfare ogni a anecessit`, in maniera pressoch´ trasparente. a e Il paradigma dell’ubiquitous computing viene anche descritto come per-vasive computing, ambient intelligence, ecc... dove ognuno di questi terminienfatizza aspetti leggermente differenti. In generale, utilizzando il termineubiquitous computing si vogliono privilegiare gli aspetti legati alla elevatamobilit` e pervasivit` della capacit` elaborativa nell’ambiente fisico (come a a amostrato nel prospetto in figura 2.1). Figura 2.1: Aspetti principali dell’ubiquitous computing In base alle definizioni fornite finora, possiamo riassumere di seguito lecaratteristiche pi` importanti di questo modello computazionale: u • Trasparenza nell’interazione: soprattutto in ambiente mobile, l’in- terazione uomo-macchina deve superare il semplice uso di tastiera e mouse, utilizzando interfacce non convenzionali che aiutino l’utente. A questo scopo, la ricerca ha portato allo sviluppo di strumenti in grado di riconoscere la scrittura, i gesti e la voce. • Conoscenza del contesto: questo grado di conoscenza permette all’applicazione di sapere dove, quando e perch´ un’azione ` stata e e intrapresa e di utilizzare questa conoscenza (spesso implicita) per completare nuovi compiti. 25
  31. 31. CAPITOLO 2. UBIQUITOUS COMPUTING E26 CONTEXT-AWARENESS • Cattura automatica delle esperienze: i dispositivi devono avere la capacit` di memorizzare, gestire e rivedere le esperienze che acca- a dono durante il loro utilizzo. Questo tipo di dispositivi devono quindi avere la possibilit` di memorizzare un grande numero di informazio- a ni, immagini e commenti, e possono essere riutilizzati in momenti successivi. Tra gli aspetti principali presentati finora, si pu` notare come sia gi` o aemersa la profonda importanza della conoscenza del contesto per il para-digma dell’ubiquitous computing: questa caratteristica, approfondita mag-giormente in seguito, render` possibile non solo l’adattamento del compor- atamento delle applicazioni in base a quello che succede intorno a loro, masar` la spinta principale per la previsione delle necessit` dell’utente stesso. a a2.1.1 Storia del modelloIl termine ubiquitous computing ` stato coniato da Mark Weiser intorno al e1988, durante la docenza come chief technologist (ingegnere capo), presso ilPalo Alto Research Center (PARC) della Xerox1 . Riconoscendo che l’estensione della potenza della computazione agliscenari quotidiani avrebbe necessitato della conoscenza di fenomeni sociali,culturali e psicologici oltre il proprio ambito, Weiser fu influenzato damolte discipline lontane dalla computer science, fra cui filosofia, feno-menologia, antropologia, psicologia, post-modernismo e sociologia dellascienza. Come da lui dichiarato, “l’ubiquitous computing d` il nome alla aterza era tecnologica: all’inizio sono stati costruiti i mainframes, grandie costosi computers condivisi da molte persone; fino ai primi anni delnuovo millennio ` stata la volta dell’era del personal computer, in cui euomo e macchina interagivano tra loro su una scrivania (desktop, da cuiprende nome il modello), non sempre in maniera semplice. La successivaevoluzione ` quindi rappresentata dall’ubiquitous computing, o era di e‘calma tecnologica’, in cui la tecnologia recede andando a far parte dellosfondo delle nostre vite”. 1 la Xerox ` una delle aziende leader nella produzione di stampanti e fotocopiatrici. eNegli anni settanta produceva anche computer e proprio in quegli anni apr` un grande ıcentro di ricerca a Palo Alto, California (lo Xerox PARC, appunto), che successivamentesi ` separato dalla casa madre nel 2002. e 26
  32. 32. CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS 27 Figura 2.2: Ere della computer science secondo Weiser Figura 2.3: Trend di sviluppo dell’ubiquitous computing 27
  33. 33. CAPITOLO 2. UBIQUITOUS COMPUTING E28 CONTEXT-AWARENESS Un contributo significativo in questo campo ` stato fornito inoltre dal eMIT, in particolare dal consorzio Things that Thinks 2 (diretto da HiroshiIshii, Joseph A. Paradiso e Rosalind Picard) presso i Media Lab, oltre allavoro di ricerca realizzato presso il CSAIL3 , sotto il nome di Project Oxygen.Altri enti che hanno fornito contributi significativi sono il Georgia Tech’sCollege of Computing, il NYU’s Interactive Telecommunications Program, ilDipartimento di Informatica dell’University of California, Irvine, MicrosoftResearch, Intel Research and Equator, l’Ajou University UCRi & CUS.2.2 Il “contesto”Introducendo l’ambito dell’ubiquitous computing, si ` potuto notare come euna delle caratteristiche fondamentali delle macchine che popolano la no-stra quotidianit` debba essere la possibilit` di riconoscere le informazioni a arelative alla situazione in cui la computazione si svolge, o in altre paroledi contestualizzare la computazione. L’importanza di questa caratteristica,emersa prepotentemente nella prima met` degli anni novanta, ha portato aallo sviluppo di un filone di ricerca autonomo chiamato context-awarecomputing, argomento particolarmente attuale nel panorama di ricercacorrente. Nella maggior parte dei servizi attualmente sviluppati (es. i principaliportali online, come Google, Amazon, ecc...), in maniera trasparente all’u-tente si ricerca di utilizzare anche solo le pi` esplicite informazioni conte- ustuali, come lo posizione, la lingua o il dispositivo utilizzato, per migliorarel’esperienza dell’utente. Al contrario, altre informazioni interessanti nonvengono tenute in considerazione, come ad esempio il tempo speso all’in-terno del sistema, l’azienda di appartenenza o la mansione dell’utente, acausa della difficolt` di recuperare queste informazioni. Dove queste infor- amazioni siano disponibili, la context-awareness pu` aiutarci a sfruttare i odati rilevanti relativi al contesto. Una semplice possibilit` per recuperare queste informazioni ` chiederle a eesplicitamente all’utente: questo per` implica che il sistema cos` svilup- o ı 2 Things that Thinks ` uno dei principali filoni di ricerca presso i Media Labs, con el’obiettivo di inserire dispositivi di computazione sia nell’ambiente che negli oggettiquotidiani, http://ttt.media.mit.edu/. 3 Computer Science and Artificial Intelligence Laboratory presso il MIT, http://www.csail.mit.edu/. 28
  34. 34. CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS 29pato abbia un insieme predefinito di contesti, che pu` tradursi in pratica ocon il tralasciare alcune configurazioni rilevanti del contesto oppure, nellapi` immediata delle ipotesi, provvedere ad un cambiamento del contesto uunicamente su richiesta. Inoltre, gli utenti potrebbero essere preoccupatidella loro privacy e non voler rivelare al sistema il proprio attuale contesto,fornendo informazioni sbagliate. Per questi motivi, un approccio staticodi questo tipo non si adatta bene all’ambiente dinamico ed al principio ditrasparenza che si vuole ricercare. Di seguito verr` indagato innanzitutto ail reale significato di “contesto”, per poi definire in dettaglio le principalicaratteristiche che vengono richieste alle applicazioni context-aware.2.2.1 I primi approcci al contestoPrima di passare alle applicazioni pratiche dei concetti precedentementeintrodotti, appare necessario sviluppare una specifica definizione di contestoche possa essere utilizzata in maniera distintiva nel campo del context-awarecomputing. Per fare questo sono state analizzate numerose definizionidei ricercatori che hanno lavorato in questo ambito e hanno propostouna propria definizione all’interno del loro lavoro. In generale, moltepersone capiscono tacitamente cosa sia il contesto, ma hanno difficolt` ad aesplicitarlo, enumerando spesso esempi o utilizzando sinonimi di contesto. Nel lavoro che per primo introduce il termine “context-aware” nel 1994,Schilit and Theimer [18] si riferiscono al contesto come posizione, vicinanzatra due entit` (siano queste oggetti o persone) e relativi cambiamenti alle aentit` stesse. Queste tipologie di definizioni che descrivono il contesto attra- averso esempi sono per` difficili da applicare. Quando vogliamo determinare ose un certo tipo di informazione sia contenuta nella definizione di contestoo meno, non ` chiaro come utilizzare la precedente definizione per risolvere eil problema. Altre definizioni hanno semplicemente fornito dei sinonimi di contesto:ad esempio, spesso si sono riferiti al contesto come ambiente o situazione.Come nel caso delle definizioni tramite esempi, anche questa tipologia didefinizione risulta difficilmente applicabile in pratica. Le definizioni forniteda Schilit e Pascoe sono comunque le pi` vicine alla definizione operazionale uche ricerchiamo. Schilit [17] afferma che gli aspetti importanti del conte-sto rispondono a tre domande fondamentali: dove sei, cosa possiedi con te 29
  35. 35. CAPITOLO 2. UBIQUITOUS COMPUTING E30 CONTEXT-AWARENESSe quali risorse sono nelle vicinanze. Pascoe [12], invece, definisce il con-testo come il sottoinsieme di stati fisici o concettuali di interesse per unaparticolare entit`. Queste definizioni sono entrambe troppo specifiche: in agenerale, il contesto ` tutto quello che risulta rilevante riguardo all’intera esituazione e l’insieme degli utenti. Per questo non ` possibile elencare quali easpetti di ogni situazioni siano rilevanti, in quanto questi variano da situa-zione a situazione. Le definizioni presentate finora non esauriscono quindila trattazione.2.2.2 Una duplice visione del contestoNonostante sia spesso considerato un ambito lontano dall’informatica,un’attenzione particolare va alle possibili interpretazioni del contesto nel-l’ambito sociale. Oltre alle definizioni precedentemente elencate, Dourish[7] suggerisce che la nozione di contesto nell’ambito dell’ubiquitous com-puting abbia una duplice origine. Da una parte, ` una nozione tecnica, eche offre agli sviluppatori di sistemi nuovi modi di concettualizzare leazioni umane e le relazioni tra queste azioni ed i sistemi computazionali.Dall’altra, invece, ` anche una nozione derivata dalle scienze sociali, eprestando un’attenzione analitica verso alcuni aspetti dell’ambito sociale.Tuttavia, trasferire le idee tra questi differenti domini intellettuali, risultaallo stesso tempo interessante ma inaspettatamente difficile: le idee, infatti,devono essere comprese all’interno dell’ambito intellettuale che fornisceloro un significato. Per questo, le difficolt` di traduzione di questi concet- ati da un ambito all’altro rappresentano un problema di primaria importanza. In linea di massima, Dourish afferma che le teorie sviluppate in questocampo appartengono a tre categorie: positiviste, fenomenologiche e critiche.Le teorie positiviste derivano dalla tradizione razionale, empirica e scienti-fica. Per analogia con le modalit` con cui le teorie scientifiche cercano di asemplificare i fenomeni complessi osservabili per ridurre ogni comportamen-to ad una legge matematica sottesa, le teorie positiviste cercano di ridurrei fenomeni sociali a modelli essenziali o semplificati che catturino patterngenerali. Di conseguenza, le teorie positiviste ricercano descrizioni oggettivee indipendenti dei fenomeni sociali, astraendo dai dettagli relativi all’occa-sione o ambiente particolare, spesso a favore della ricerca di trend statistici 30
  36. 36. CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS 31o modelli idealizzati. Queste teorie, inoltre, sono per natura quantitative omatematiche. In evidente contrasto con queste caratteristiche delle teorie positiviste,le teorie fenomenologiche hanno un orientamento soggettivo e qualitativo.La soggettivit` di queste teorie sta nel fatto che queste osservano i fatti non atrasformando la componente sociale in una realt` oggettiva, ma basandosi asulla capacit` degli individui e dei gruppi di riconoscere ed orientarsi attra- averso quello che accade intorno a loro. Secondo questa visione, i fatti socialisono le propriet` emergenti della comunicazione, non predefinite o assolute, ama negoziate e contestate, soggette a continui processi di interpretazione ere-interpretazione. La fenomenologia non pone un’attenzione analitica sul-l’idea di un mondo esterno stabile che sia percepito da tutti senza problemi;al contrario, propone l’idea di un mondo che, per come ` percepito, sia es- esenzialmente l’insieme delle interpretazioni. Queste teorie affermano che,ad esempio, le categorie astratte non sono classi che esistono a priori nellarealt`, ma sono imposte nel mondo dagli utenti stessi tramite le interazioni ache vengono effettuate tra di loro e con le classi stesse. Le teorie critiche tendono ad avere un pi` ampio scopo. Questo tipo di uteorie, associate spesso alla Frankfurt School e ai teorici Adorno, Horkhei-mer, Marcuse e Foucault, sono essenzialmente un’estensione dell’analisimarxista. Il materialismo marxista sostiene che le condizioni sociali edeconomiche sono la conseguenza di un processo storico di evoluzione, eriflettono un sistema dinamico (e generalmente non equo) in evoluzione,di potenza e di controllo tra categorie sociali. Essenzialmente, la naturadell’esistenza umana ` il prodotto di condizioni sociali ed economiche che eripropongono la medesima distribuzione storica di potenza e di controllodella societ` al proprio interno. Queste teorie estendono il materialismo astorico oltre il “prodotto” sociale ed economico della societ` stessa, dimo- astrando che le idee, la lingua e le modalit` di pensiero sono condizionate aallo stesso modo. Nonostante Dourish abbia incluso per completezza le teorie critiche, c’` eun’importante differenza tra le teorie positiviste e fenomenologiche. Larilevanza di questa distinzione ` che gli approcci ingegneristici (inclusi i eprincipali approcci nel campo dell’ubiquitous computing) ereditano una tra-dizione positivista, mentre molti approcci alle analisi sociali rilevanti per lamodellazione della HCI sono legati ad una metodologia fenomenologica. Da 31
  37. 37. CAPITOLO 2. UBIQUITOUS COMPUTING E32 CONTEXT-AWARENESSuna parte, gli approcci positivisti postulano che la causa della vita socialesia indipendente dall’osservatore, dall’altra le teorie fenomenologiche affer-mano che le opere e l’interpretazione sono le sfaccettature principali di ogniazione sociale. I costrutti analitici delle motivazioni positiviste alle azionisociali sono i risultati delle azioni sociali stesse; in questo modo sono intrin-secamente collegati e quindi non possono essere separati o resi indipendenti.Per questo motivo, le due posizioni sono incompatibili.Allo stesso modo, con argomentazioni simili si dimostra che il concetto di“contesto” contrappone la tradizione ingegneristica positivista e la tradi-zione sociale fenomenologica, incompatibili come affermato in precedenza.Conseguentemente, per poter utilizzare coerentemente il concetto di “con-testo” all’interno dello sviluppo di un sistema complesso, bisogna in primoluogo fornirne una descrizione pi` accurata. u2.2.3 Definizione operativaSi deve ai ricercatori Anind K. Dey and Gregory D. Abowd [5] nel 2001 ladefinizione di contesto ormai pi` diffusa e citata: u Il contesto rappresenta ogni informazione che pu` essere utiliz- o zata per caratterizzare la condizione di una entit`. Una entit` ` a ae una persona, un posto o un oggetto considerato rilevante ai fini dell’interazione tra un utente e un’applicazione, inclusi l’utente e l’applicazione stessi. Questa definizione rende pi` semplice per uno sviluppatore identificare uil contesto per un determinato scenario di un’applicazione. Se una por-zione di informazione pu` essere utilizzata per caratterizzare la condizione odi un partecipante all’interazione, allora questa informazione fa parte del“contesto”. Prendiamo, ad esempio, un’applicazione context-aware cano-nica, come una guida turistica indoor nella sua versione mobile. Le entit` apresenti in questo modello sono ovviamente l’utente, l’applicazione ed i sitituristici. Consideriamo ora due altre possibili informazioni relative a questoscenario: il tempo atmosferico e la presenza di altre persone. Utilizzandola definizione, l’obiettivo ora ` quello di discriminare se facciano parte o emeno del “contesto”. Il tempo atmosferico non influenza l’applicazione, inquanto questa verr` utilizzata indoor; per questo motivo, non ` considerata a e“contesto”. La presenza di altre persone, invece, pu` essere utilizzata per o 32
  38. 38. CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS 33caratterizzare la condizione corrente: se un utente sta viaggiando con altrepersone, allora i luoghi che gli altri visitano potrebbero essere di partico-lare interesse per lui. Per questo motivo, questa informazione pu` essere oconsiderata “contesto”. Un’assunzione generale ` che il contesto consista unicamente in infor- emazioni implicite, anche se questa distinzione risulta alquanto restrittiva.Secondo la definizione operazionale precedentemente presentata, il conte-sto pu` essere sia implicitamente che esplicitamente indicato dall’utente. oAd esempio, sia che l’identit` di un utente sia riconosciuta implicitamente atramite un processo di visione artificiale, sia che venga fornita dall’utentestesso tramite un’apposita form di login, questa informazione fa comunqueparte del contesto. In generale, i ricercatori si sono spesso rivolti versole informazioni implicite in quanto i margini di esplorazione dell’interazio-ne uomo-macchina in questo campo sono molto pi` interessanti sfruttando uquesta tipologia di informazioni.2.2.4 Categorie di contestoUna categorizzazione delle principali tipologie di contesto potrebbe aiutarei progettisti di applicazioni context-aware ad identificare le informazioni delcontesto pi` utili per la loro applicazione. Possiamo partire dalle precedenti udefinizioni di contesto, presentate nella sezione 2.2.1, per identificare questecategorie. Ryan e al. [14] suggeriscono come tipologie di contesto la posi-zione, l’ambiente, l’identit` ed il tempo. Schilit e al. [17], invece, elencano acome aspetti principali del contesto dove sei, con chi sei e che risorse sonodisponibili nelle vicinanze. Le applicazioni context-aware ricercano la risposta alle domande chi `, edov’` e cosa sta facendo una data entit` e utilizzano queste informazioni e aper determinare il perch´ una situazione si stia verificando. L’applicazione ein realt` non determina realmente il perch´ una situazione si sia verificata, a ema il progettista deve riuscire a farlo. Lo sviluppatore, infatti, utilizza laconoscenza delle condizioni attuali e delle sue cause per codificare determi-nate azioni nell’applicazione. Riprendendo l’esempio della guida turisticapresentato nella sezione 2.2.3, un utente fornito di notebook si avvicina adun luogo per lui interessante e le informazioni rilevanti riguardo quel luogovengono visualizzate dinamicamente sul computer. In questa situazione, ilprogettista ha codificato nell’applicazione la consapevolezza che, quando un 33
  39. 39. CAPITOLO 2. UBIQUITOUS COMPUTING E34 CONTEXT-AWARENESSutente si avvicina ad un determinato luogo (il contesto prossimo), il suocomportamento dimostri interesse verso il luogo stesso (il perch´ ), per cui el’applicazione ha il compito di mostrare le informazioni rilevanti al riguardo(l’azione). Ci sono certe tipologie di contesto che sono, in pratica, pi` importanti udi altre. In particolare, posizione, identit`, attivit` e tempo. L’unica a adifferenza tra questo elenco e la definizione fornita da Ryan e al. ` l’utilizzo edel termine “attivit` ” piuttosto che “ambiente”: mentre il termine “ambien- ate” ` un sinonimo di contesto e non aiuta nella sua definizione, l’utilizzo di e“attivit` ” risponde alla fondamentale domanda ‘cosa sta accadendo nella asituazione corrente’. Le categorie fornite da Schilit e al., invece, includonounicamente informazioni riguardo a posizione e indentit`, mentre per ca- aratterizzare una situazione, c’` bisogno anche di informazioni riguardo alle eattivit` svolte e al tempo. La posizione, l’identit`, il tempo e l’attivit` a a acostituiscono dunque le tipologie primarie di contesto, necessarie per ca-ratterizzare la situazione corrente di una particolare entit`: queste tipologie adi contesto non solo rispondono alle domande chi, cosa, dove e quando, mafunzionano anche come indici rispetto ad altre fonti di informazioni con-testuali. Ad esempio, data l’identit` di una persona, possiamo acquisire anumerose altre informazioni collegate, come il numero di telefono, l’indiriz-zo, le email, la data di nascita, la lista degli amici, le relazioni con altrepersone dell’ambiente, ecc... Con la posizione di una persona, possiamo de-terminare quali altri oggetti o persone siano nelle vicinanze e quali azionistiano avvenendo nell’ambiente circostante. Da questi esempi, dovrebbe es-sere evidente che le tipologie primarie relative ad un’entit` possono essere autilizzate come indici per ottenere le tipologie secondarie di contesto perla stessa entit` (es. l’indirizzo email), oppure le tipologie primarie per una adifferente entit` (es. persone nello stesso luogo). a In questa categorizzazione iniziale, troviamo un semplice sistema a duelivelli: le quattro parti primarie del contesto gi` identificate rappresentano ail primo livello. Tutte le rimanenti tipologie di contesto rappresentano ilsecondo livello. Le parti secondarie del contesto condividono una caratteri-stica comune: possono essere indicizzate tramite il contesto primario, perch´ esono attributi dell’entit` tramite il contesto primario. Ad esempio, il nu- amero di telefono di un utente fa parte del contesto secondario e pu` essere oottenuto utilizzando l’identit` dell’utente stesso come indice in uno spazio ainformativo, come una rubrica telefonica. Ci sono alcune situazioni in cui 34
  40. 40. CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS 35sono necessarie svariate informazioni del contesto primario come indice inuno spazio informativo. Le previsioni del tempo, ad esempio, sono un’in-formazione relativa al contesto in una guida turistica outdoor, che utilizzaqueste informazioni per pianificare delle visite: per ottenere una previsione,sono necessarie sia la posizione che la data per cui la previsione ` richiesta. e Questa caratterizzazione aiuta i progettisti a scegliere il contesto adat-to per la propria applicazione, a strutturare il contesto da utilizzare ed aricercare altri contesti rilevanti. Le quattro tipologie principali di contestoindicano il tipo di informazioni necessarie per caratterizzare una situazioneed il loro utilizzo come indici fornisce un modo di utilizzo ed organizzazio-ne del contesto stesso. Ora che ` stata fornita una definizione operativa edi contesto ed una categorizzazione delle informazioni che ne fanno parte,possiamo passare ad analizzare i modi di utilizzarlo. Nella sezione successi-va verranno caratterizzate le applicazioni context-aware e le loro principalicaratteristiche.2.3 Mobile context-awarenessCome gi` accennato in precedenza, il campo del context-aware computing arappresenta uno dei filoni di ricerca pi` battuti negli ultimi anni. Soprat- ututto nell’era in cui lo sviluppo tecnologico ha portato alla realizzazione diuna fascia di dispositivi sempre pi` compatti e portatili (denominati mobile udevices), sfruttare il contesto in cui un’applicazione viene lanciata appareuna prerogativa sempre pi` fondamentale. Negli ultimi anni, infatti, l’im- upiego di questi dispositivi ha spostato definitivamente la computazione dalclassico contesto desktop, aprendo infinite possibilit` di utilizzo e nuove ra- amificazioni applicative. Tramite i sensori a disposizione, si pu` raccogliere ouna miriade di informazioni riguardo all’utente ed al contesto attorno a lui,cos` come ` stato definito nella sezione 2.2.3: tracciando i comportamenti ı edel proprio proprietario ed analizzando i dati cos` ottenuti, il dispositivo ınon solo pu` svolgere funzioni utili in relazione al contesto attuale, ma mo- odellare ed anticipare le intenzioni dell’utente. Questo rappresenta realmenteil nuovo livello di context-awareness che si ricerca dalle applicazioni mobileall’avanguardia. 35
  41. 41. CAPITOLO 2. UBIQUITOUS COMPUTING E36 CONTEXT-AWARENESS2.3.1 I primi approcci alla context-awarenessLa prima definizione delle applicazioni context-aware fornita da Schilit eTheimer nel 1994 [18] ha ristretto la definizione da “applicazioni sempli-cemente a conoscenza del contesto”, ad “applicazioni che si adattano alcontesto”. Comunque sia, ` universalmente riconosciuto che il primo lavo- ero di ricerca nel campo della context-awareness ` l’Olivetti Active Badge, esviluppato nel 1992. Successivamente, ci sono stati numerosi tentativi didefinire il context-aware computing, di cui di seguito vengono riportati iprincipali. Context-aware ` diventato in qualche modo sinonimo di altri etermini spesso citati nell’informatica: adaptive, reactive, situated, context-sensitive e environment-directed. Le precedenti definizioni di context-awarecomputing rientrano in due macro-categorie: quelle che utilizzano il contestoe quelle che si adattano al contesto. Per primo verr` discusso il caso pi` generale di utilizzo del contesto. a uHull e al. [10] e Pascoe e al. [12] definiscono il context-aware computingcome l’abilit` di dispositivi computazionali di individuare e percepire, in- aterpretare e reagire all’ambiente locale di un utente e del dispositivo stesso.Dey [4] limita invece la context-awareness all’interfaccia uomo-macchina,come opposto dell’applicazione sottesa. In seguito, Dey e al. [6] inizianoad introdurre la nozione di “adattamento” definendo la context-awarenesscome il lavoro che avrebbe portato all’automazione di un sistema softwarebasato sulla conoscenza del contesto dell’utente. Salber e al. [15] defini-scono la context-awareness come l’abilit` di fornire la massima flessibilit` a ada parte di un servizio computazionale basato sulla percezione real-time delcontesto. Le seguenti definizioni si riconducono, invece, alla pi` specifica ucategoria “adattamento al contesto”. Molti ricercatori definiscono le ap-plicazioni context-aware come applicazioni che dinamicamente modificanoo adattano il loro comportamento in base al contesto dell’utente o dell’ap-plicazione. Pi` specificamente, Ryan [14] ne parla come applicazioni che umonitorano gli input forniti da sensori ambientali e permettono agli uten-ti di selezionare una configurazione da un range di contesti fisici o logici,in base ai propri interessi o attivit` attuali. Questa definizione risulta ad- adirittura pi` restrittiva rispetto alle precedenti in quanto identifica gi` le u amodalit` con cui le applicazioni operano in relazione al contesto. Brown a[3] definisce invece le applicazioni context-aware come servizi che autono-mamente forniscono informazioni e/o agiscono in base al contesto attuale 36
  42. 42. CAPITOLO 2. UBIQUITOUS COMPUTING ECONTEXT-AWARENESS 37dell’utente, percepito da appositi sensori. Fornisce inoltre una visione ulte-riormente ristretta affermando che queste azioni possono concretizzarsi nelpresentare informazioni all’utente, eseguire un programma coerentementecon il contesto attuale o configurare un apposito layout grafico. Infine,l’ultima definizione analizzata ` quella del ricercatore Fickas e al. [8] che edefiniscono le applicazioni environment-directed (termine praticamente uti-lizzato come sinonimo di context-aware) come applicazioni che monitorano icambiamenti nell’ambiente e adattano il loro comportamento in base a lineeguida predefinite, configurate dall’utente.2.3.2 Definizione operativaCome per quanto riguarda il concetto di “contesto”, riportiamo di seguitola definizione dei ricercatori Dey e Abowd [5], ormai largamente diffusa: Un sistema ` context-aware se utilizza il contesto per fornire e all’utente informazioni rilevanti e/o servizi, dove la rilevanza dipende dal compito dell’utente stesso. Anche in questo caso ` stata scelta una definizione generale di context- eaware computing. Le definizioni pi` specifiche della categoria “adattamento ual contesto” richiedono che il comportamento di un’applicazione sia modi-ficato per essere considerata context-aware. Quando si prova ad applicarequeste definizioni per discriminare le applicazioni context-aware, si scopreche si adattano difficilmente. Ad esempio, un’applicazione che semplice-mente mostri il contesto dell’ambiente in cui risiede l’utente non modifica ilsuo comportamento, ma ` sicuramente context-aware. Se invece utilizziamo ele definizioni meno generali, queste applicazioni non sarebbero classificatein questo modo. Per questo ` stata scelta una definizione pi` generale, che e upossa descrivere tutte le applicazioni di questa tipologia. Questa definizione, infatti, ` pi` generale di quella fornita da Hull e al. o e uda Pascoe e al.: loro impongono che i sistemi context-aware da loro descrittiindividuino, interpretino e rispondano al contesto. La descrizione operativafornita sopra, invece, necessita unicamente che rispondano al contesto, per-mettendo che l’individuazione e l’interpretazione del contesto sia effettuatada altre entit` computazionali. Inoltre differisce dalle altre definizioni gene- arali fornite nella sezione 2.3.1, in quanto focalizza l’attenzione sull’utente,non limitando la consapevolezza (awareness) all’interfaccia applicativa, non 37
  43. 43. CAPITOLO 2. UBIQUITOUS COMPUTING E38 CONTEXT-AWARENESSrichiedendo che l’applicazione svolga servizi automatizzati ed, infine, nonrichiedendo un’acquisizione real-time del contesto.2.3.3 Caratteristiche delle applicazioni context-awareNella sezione 2.2 ` gi` stata introdotta l’importanza di un approccio di- e anamico e non intrusivo nella rilevazione del contesto dell’utente, evitan-do la presenza di contesti predefiniti a cui ricondurre i casi reali: questastaticit`, spesso dovuta alla mancanza di informazioni concettuali disponi- abili, si concretizza spesso nella richiesta esplicita di informazioni all’utente,portando in primis ad una minor utilizzabilit` del sistema. Queste carat- ateristiche rappresentano quindi le linee guida generali durante la progetta-zione di applicazioni context-aware. Per comprendere pi` a fondo il campo udella context-awareness, nelle sezioni successive verranno presentate alcunecaratteristiche comuni a queste tipologie di applicazioni.Categorizzazione di SchilitAll’interno di questo filone di ricerca, sono stati due i principali tentatividi sviluppare una tassonomia simile. Il primo si deve a Schilit e al. [17] ed` costituito da due dimensioni ortogonali: se la computazione ` recuperaree eun’informazione o eseguire un comando o se invece ` eseguito manualmente eo automaticamente. Le applicazioni che recuperano manualmente informa-zioni per l’utente in base al contesto disponibile, sono chiamate applicazionidi selezione prossima. Questa ` una tecnica di interazione dove ` presentata e euna lista di oggetti (printers) o luoghi (offices), in cui gli oggetti rilevantiper l’utente sono enfatizzati o resi pi` facili da scegliere. Invece, le appli- ucazioni che recuperano automaticamente informazioni per l’utente in baseal contesto disponibile, sono classificate come riconfigurazione contestualeautomatica. Questa ` una tecnica di livello o di sistema che crea un legame eautomatico con una risorsa disponibile in base al contesto corrente. Un’al-tra categoria consiste nelle applicazioni che eseguono manualmente comandidell’utente in base al contesto attuale, classificate quindi come applicazio-ni a comando contestuale. Sono in pratica servizi eseguibili resi disponibilitramite il contesto dell’utente o la cui esecuzione ` modificata in base al econtesto dell’utente. Infine, le applicazioni che eseguono automaticamentecomandi per l’utente basandosi sul contesto disponibile, utilizzano azioni 38

×