Part 2 OCLC Strategic Presentation Bruce Crocco ACURIL 2011
Simone Mora - PhD Interview at ITU
1. PhD Interview
Simone Mora
via E.Fermi 23
24060-Casazza (BG) Italy
+393493196360
morasimone@gmail.com
April, 20th 2010
2. Simone Mora - About myself
Education and Training:
❖ Musical Theory Diploma (2000)
❖ Scientific High School Diploma (2002)
❖ Bachelor Degree in Industrial Engineering
(University of Bergamo, 2006)
❖ Master Degree in Computer Science
(University of Bergamo, 2009)
❖ Partecipant of the ERASMUS program (2007)
❖ Master Thesis during an exchange period at NTNU
(Norwegian University of Science and Technology) (2009)
3. Simone Mora - About myself
Work Experiences:
❖ Job as ResearcherDeveloper for IDI-NTNU
projects (July 2009 - March 2010):
❖ UbiCollab, Ubiquitous Collaboration
❖ ASTRA: Awareness Services and Systems -
Towards Theory and Realization (IST-FP6)
4. Simone Mora - About myself
Research Interests:
- Ubiquitous Computing
- HCI
- CSCW
- Pervasive Healthcare
- Multimedia Signal Processing
Technologies:
- C++, Java, OSGi, eRCPeSWT
- JSP, HTML, CSS, JavaScript, WebServices
- Mac OS X, Linux, Ms Windows
- QR, Datamatrix, RFID
- LaTeX
5. Service Discovery in:
UbiCollab
Ubiquitous and pervasive collaboration
Simone Mora
IDI-NTNU
6. UbiCollab
Mission
Build a platform for
supporting:
• Collaboration among
geographically distributed
people and their devices
services in physical spaces.
• Sharing context (meaning)
through a collaboration
instance (CI)
• Adaptability and automatic
configuration of spaces and
devices/services.
7. Problems and Motivations
Collaboration: “a recursive process where two or more people or organizations
work together in an intersection of common goals”
What collaboration involves:
Informations Devices
Sharing of Access of Devices and Access to Devices:
Informations: Informations: Ambient Intelligence
Social Networks Pervasive Healthcare Home Automation
Needs Service
Discovery!
9. UbiNode
• Service Discovery Manager:
Takes care of discovery over
multiple protocols, needs d. plugins
• Space Manager:
Allows user to create and maintain
spaces.
• CI Manager:
Allows creating and joining
collaboration instances
• Additionally:
Discovery Plugins, Proxies,
Applications
10. Retroactive Service Discovery
Where retroactive discovery fails?
• Retroactive Service Discovery protocols
(uPNP, BT,...) lack in effectiveness and
context awareness.
• Handheld devices have limited resources,
user shouldn’t be prompted for a long list of
discovery results
• Self-Advertising discovery protocols, like
Bluetooth, are not user-friendly enough.
11. Service Discovery in UbiCollab
from a Retroactive to a Proactive Discovery
Code:
1020
?
? ?
Code:
0000
HOME HOME
WORK
WORK
RETROACTIVE PROACTIVE
RESOURCE DISCOVERY RESOURCE DISCOVERY
15. Home Lights App
10101
10101
10101
House 10101
power grid
X10
Server
- The HomeLights app uses a X10 server to switch onoff devices connected to the power grid
16. Proxies
WS Proxy Stub
BundleContext
BundleContext
WS API
UbiCollab SOAP Invocations Shared
Proxy over HTTP
Application Resource
OSGi Domain WS Domain
• Discovered services/resources are heterogeneous
• Proxy services act as “software drivers” for these services/resources
• A Proxy service provides:
- APIs to UbiCollab applications and core modules
- A native interface to the heterogeneous service/resource
17. Applications
Application << SOAP Invocations>> Device
PROXY
Application << SOAP Invocations>> Device
PROXY
UbiNode Remote Resources
• Softwares directly operated by the user by multiple User Interfaces: GUI, voice,
gestures
• Can use proxies to get informations and control remote resources
• Can be discovered in the same ways as proxies
• UbiCollab provides an SDK for building rich applications without extensive coding,
it includes frames and graphical widgets for developing touch based UIs
• Application can even be external to the UbiCollab framework (e.g. ASTRA)
18. Astra Connector
call(naztabag,rotateHear,90); rotateHear(90); hear_pos(5A);
proxy
<<SOAP over HTTP>> <<SOAP over HTTP>>
AstraConnector
Back-end
Third-party
ASTRA Domain UbiCollab Domain
resource Domain
• Integration between UbiCollab and the european founded project ASTRA
• Improve ASTRAʼs capability in resource discovery field providing a user friendly way
to add external devices to an ASTRA node
• Provides to ASTRA information about the proxies installed in the UbiNode and a
exposes a WebService interface capable to drive them from an ASTRA node
• Make use of Java Reflection to build representations of ASTRA applications inside
the UbiNode
19. The full picture: on-the-fly discovery
User with UbiNode Shared Resources
Code: Code:
xxxx xxxx
Resource Advertisement
Code:
Code:
xxxx xxxx
6
1 1 1
TAN QRCode RFID
Plugin Plugin Plugin jpeg Application 5 proxy
Resource Discovery
Manager
2
Service Domain Manager
4
Platform Space User Space
3
UbiNode
UbiCollab Proxy Repository
20. Life Shirt App
WiFi WebServices SMS
SMS Gateway
SMS from UCLifeShirt
EMERGENCY ALERT
Patient's name: Arne Lars
Blood Pressure: 20
Patient's Location:
63.4164N 10.3943E
Ok
21. Technical Overview
Third-Party Technologies adopted in UbiCollab:
‣ OSGi - Open Services Gateway Initiative
‣ IBM J9 CDC JVM
‣ Eclipse eRCPeSWT
‣ Apache Axis
‣ X10 PLC (Power Line Comonication) protocol
‣ Phidgets Sensing and Control
22. Conclusion & Future Work
• Work review driven by user-testing feedbacks
• Solve Security and Concurrency issues
• Porting of the platform to iPhone and Android
• More proxies: Car, ...
• More Discovery Plugin: Voice Recognition, ...
Thank you!
26. Modules Involved in Service Discovery
eWorkbench
Astra Connector
UI Toolkit
Resource Database RFID
Resource Discovery
2DBarcodes Sensors Sensor Lab
Manager
Service Domain
Type a Number Lights Controller Home Lights
Manager
Service Discovery
Core Proxy Aplications
Plugins
27. Thanks!
Simone Mora
via E.Fermi 23
24060-Casazza (BG) Italy
+393493196360
morasimone@gmail.com
April, 20th 2010
Editor's Notes
Buongiorno a tutti, sono Simone Mora e vi parler&#xF2; del mio tirocinio presso il dipartimento di Computer Science della Norwegian University of Science and Technology, dove ho lavorato 11 mesi come ricercatore all&#x2019;interno del progetto UbiCollab e del progetto europeo ASTRA, progettando e implementando moduli software nel campo del Service Discovery.
UbiCollab &#xE8; una piattaforma tecnologica che mira a facilitare la collaborazione e l&#x2019;interazione con dispositivi tra persone geograficamente distribuite.
Questa griglia di persone, dispositivi e le connessioni che permetto di comunicare tra loro forma la struttura base di UbiCollab.
L&#x2019;informatica &#xE8; sempre pi&#xF9; pervasiva e distribuita, ognuno ormai ha nelle proprie tasche diversi dispositivi che deve amministrare e far comunicare tra loro. Come sappiamo infatti la tecnologia crea dispositivi sempre pi&#xF9; piccoli e versatili ma a volte non fornisce un sistema semplice e alla portata di tutti per interagire con essi. Inoltre l&#x2019;utilizzo della tecnologia &#xE8; sempre pi&#xF9; mobile, spesso ci si trova a dover usufruire di servizi avanzati direttamente dal proprio palmare o telefono.
Durante il mio periodo di ricerca, partendo dalle specifiche del progetto, ho progettato e implementato una soluzione per l&#x2019;installazione e l&#x2019;uso di questi dispositivi all&#x2019;interno della griglia affrontando sia aspetti prettamente tecnici che aspetti riguardanti l&#x2019;usabilit&#xE0;.
Vediamo ora in quali scenari pu&#xF2; essere utile questa tecnologia.
UbiCollab &#xE8; stato progettato come una piattaforma generica, capace di adattarsi dinamicamente a vari scenari d&#x2019;uso.
Abbiamo creato l&#x2019;infrastruttura e gli strumenti per permettere agli sviluppatori di scrivere applicazioni specifiche per certi casi d&#x2019;uso; inoltre, essendo UbiCollab rilasciato con licenza OpenSource chiunque pu&#xF2; sviluppare applicazioni.
Vediamo qui in quali campi pu&#xF2; essere utile questa tecnologia:
-Scenari in cui vi &#xE8; condivisione di Informazioni, come accade nei social network
-Scenari che richiedono accesso a dispositivi: sensori, attuatori; come accade per applicazioni di Home Automation
-Scenari che richiedono accesso sia a informazioni ma che a dispositivi come avviene per applicazioni di assistenza medica remota.
Questi ultimi due scenari necessitano di un sistema (chiamato Service Discovery) per trovare e utilizzare i dispositivi attorno a noi, che diventeranno quindi parte della griglia di UbiCollab.
Questo meccanismo, dovendo essere usato da un&#x2019;ampia parte della popolazione inclusi anziani e malati deve essere il pi&#xF9; immediato possibile.
Vediamo qui gli aspetti principali della piattaforma:
-Mobile: in quanto eseguibile su dispositivi portatili e non richiede hardware dedicato ma pu&#xF2; essere eseguito sui comuni palmari e smarthphone capaci di eseguire una Java Virtual Machine per Mobile.
-Service Oriented: in quanto il codice &#xE8; incapsulato in moduli che espongono e consumano servizi tra loro all&#x2019;interno del framework e verso dispositivi esterni tramite WebServices.
-Extendible without extensive coding: poich&#xE8; l&#x2019;implementazione di applicazioni per UbiCollab non richiede la conoscenza o la modifica dei moduli base dell&#x2019;architettura, inoltre &#xE8; stata creata una SDK contente documentazione, componenti e widget grafici che possono essere utilizzati dagli sviluppatori.
Vediamo ora come l&#x2019;utente pu&#xF2; interagire con questa griglia di dispositivi.
Ogni utente di UbiCollab utilizza uno smartphone o computer palmare, chiamato UbiNode, che funge da personal server.
In questo dispositivo sono eseguiti un insieme di moduli core e alcuni moduli addizionali, quali applicazioni e plugin, che possono venire installati dall&#x2019;utente, vedremo in seguito in che modo.
Come abbiamo detto questo dispositivo deve interagire con altre periferiche esterne, questo avviene tramite un modulo di service discovery che permette di installare e successivamente amministrare i dispositivi che interagiscono con l&#x2019;UbiNode.
Il problema di SD non &#xE8; banale &#xE8; comporta l&#x2019;interazione di vari moduli:
-Ad esempio nel caso di dispositivi fissi, quando l&#x2019;utente installa un nuovo dispositivo e poi l&#x2019;ascia l&#x2019;ambiente in cui questo risiede il sistema deve essere in grado (in alcuni scenari) di nascondere all&#x2019;utente il dispositivo installato e riattivarlo quando si fa ritorno nell&#x2019;ambiente in qui questo risiede. /*Si pensi ad esempio all&#x2019;utente che migra quotidianamente tra casa e ufficio.*/ Questa operazione &#xE8; svolto dal modulo &#x201C;Space Manager&#x201D; il quale tagga ogni risorsa installata con il nome dell&#x2019;ambiente in cui risiede.
-Allo stesso tempo un utente potrebbe volere dare ad altri utenti accesso alle risorse installate nel proprio UbiNode, instaurando quella che viene chiamata &#x201C;Collaboration Istance&#x201D; e ci&#xF2; avviene grazie al modulo &#x201C;Collaboration Manager&#x201D;
Iniziando a Progettare i moduli dedicati al Service Discovery ho prima analizzato quali meccanismi sono attualmente disponibili per installare o associare al proprio palmare un dispositivo esterno.
Questi meccanismi che ho chiamato Retroactive sono le classiche procedure per associare il proprio computer o palmare ad una periferica che siamo abituati ad utilizzare, ovvero:
-Installando un driver: tramite cd ma dovendo quindi collegare il palmare ad una postazione fissa, oppure scaricandolo da internet ma in questo caso l&#x2019;utente inesperto pu&#xF2; avere difficolt&#xE0; a il nome e modello della propria periferica e cercare il corrispondente driver su internet.
-Oppure, come accade soprattutto in ambiente lavorativo, si pu&#xF2; installare una periferica (es. una stampante) cercandola in server di stampa o in una directory condivisa. Solitamente questo approccio porta l&#x2019;utente a scorrere una lunga serie di risultati -il che &#xE8; difficoltoso su display di dimensioni limitate- e questi risultati spesso includono anche periferiche locate in un altro edificio oppure chiuse dietro la porta dell&#x2019;ufficio di un collega.
-Infine ci sono protocolli &#x201C;self-advertized&#x201D;, nati per periferiche mobili, come ad es. il Bluetooth, che pur risolvendo parte dei problemi appena elencati non sono ancora del tutto immediati in quanto l&#x2019;utente deve ricordarsi il nome della periferica, problematico quando vi sono pi&#xF9; periferiche dello stesso tipo vicine, e in alcuni casi anche una passkey necessaria per accedervi.
In questi contesti condividere la stessa periferica tra pi&#xF9; persone non fa altro che aumentare le difficolt&#xE0;.
Ho quindi concluso che questi metodi di service discovery sono poco efficaci dal punto di vista dell&#x2019;usabilit&#xE0; soprattutto in un ambiente mobile e non soddisfavano i requisiti del progetto che prevedono un sistema totalmente mobile e l&#x2019;uso da parte di malati e anziani.
Di coseguenza ho deciso di adottare un approccio nuovo al Service Discovery, definito proactive, nel quale, vengono utilizzate tecnologie di Object Tagging quali tag RFID, codici a barre bidimensionali e codici a barre numerici per associare al proprio UbiNode nuovi dispositivi.
Ritengo che questo approccio sia pi&#xF9; immediato in quanto richiede che l&#x2019;utente compia operazioni naturali quali ad esempio far sfiorare o mettere a contatto i due oggetti da associare nel caso dell&#x2019;RFID. Oppure compiere azioni che stanno diventando sempre pi&#xF9; comuni come fare una foto con il proprio cellulare al dispositivo (e quindi al codice a barre associato) che si vuole utilizzare.
Il modulo di Service Discovery cos&#xEC; progettato si avvale plugins ognuno dei quali implementa il riconoscimento di un tipo di tag. Ci&#xF2; vuol dire che i plugin, essendo a loro volta moduli, possono essere mutualmente installati.
Vediamo in dettaglio come funziona:
1)Ad Ogni dispositivo &#xE8; associato un nome e vengono codificati uno o pi&#xF9; tag, la scelta di assegnare pi&#xF9; tag ad ogni dispositivo &#xE8; giustificata per il motivo che essendo ogni nodo di UbiCollab eseguito su hardware generico &#xE8; possibile che non tutti i palmari abbiano a disposizione un lettore RFID o una fotocamera, quindi viene assegnato anche un codice numerico visto che si presuppone che, alla peggio, tutti questi dispositivi abbiano in comune una modalit&#xE0; di input numerico (tastiera a touch). Allo stesso tempo alcune tipologie di tag possono essere pi&#xF9; efficaci di altri in determinati scenari.
2) Questi tag sono resi noti all&#x2019;utente tramite un &#x201C;Service Advertisement&#x201D; che pu&#xF2; essere riportato un&#x2019;etichetta o direttamente sul dispositivo stesso se questo ha uno schermo. (come nel caso di questo display condiviso)
3) Dopo che l&#x2019;utente tramite l&#x2019;UbiNode, ha letto uno a scelta tra i tag, questo scarica e installa, da un repository remoto, un modulo (un driver) per poter accedere alla risorsa, infine mostra all&#x2019;utente un&#x2019;interfaccia per poter pilotare la risorsa.
Conseguentemente l&#x2019;utente diviene l&#x2019;amministratore di un servizio a cui altri moduli possono accedere, taggando la risorsa con il nome dello spazio in cui &#xE8; stata trovata (Space Manager) o pubblicandola ad altri utenti.
Vediamo in dettaglio come funziona:
1)Ad Ogni dispositivo &#xE8; associato un nome e vengono codificati uno o pi&#xF9; tag, la scelta di assegnare pi&#xF9; tag ad ogni dispositivo &#xE8; giustificata per il motivo che essendo ogni nodo di UbiCollab eseguito su hardware generico &#xE8; possibile che non tutti i palmari abbiano a disposizione un lettore RFID o una fotocamera, quindi viene assegnato anche un codice numerico visto che si presuppone che, alla peggio, tutti questi dispositivi abbiano in comune una modalit&#xE0; di input numerico (tastiera a touch). Allo stesso tempo alcune tipologie di tag possono essere pi&#xF9; efficaci di altri in determinati scenari.
2) Questi tag sono resi noti all&#x2019;utente tramite un &#x201C;Service Advertisement&#x201D; che pu&#xF2; essere riportato un&#x2019;etichetta o direttamente sul dispositivo stesso se questo ha uno schermo. (come nel caso di questo display condiviso)
3) Dopo che l&#x2019;utente tramite l&#x2019;UbiNode, ha letto uno a scelta tra i tag, questo scarica e installa, da un repository remoto, un modulo (un driver) per poter accedere alla risorsa, infine mostra all&#x2019;utente un&#x2019;interfaccia per poter pilotare la risorsa.
Conseguentemente l&#x2019;utente diviene l&#x2019;amministratore di un servizio a cui altri moduli possono accedere, taggando la risorsa con il nome dello spazio in cui &#xE8; stata trovata (Space Manager) o pubblicandola ad altri utenti.
Vediamo in dettaglio come funziona:
1)Ad Ogni dispositivo &#xE8; associato un nome e vengono codificati uno o pi&#xF9; tag, la scelta di assegnare pi&#xF9; tag ad ogni dispositivo &#xE8; giustificata per il motivo che essendo ogni nodo di UbiCollab eseguito su hardware generico &#xE8; possibile che non tutti i palmari abbiano a disposizione un lettore RFID o una fotocamera, quindi viene assegnato anche un codice numerico visto che si presuppone che, alla peggio, tutti questi dispositivi abbiano in comune una modalit&#xE0; di input numerico (tastiera a touch). Allo stesso tempo alcune tipologie di tag possono essere pi&#xF9; efficaci di altri in determinati scenari.
2) Questi tag sono resi noti all&#x2019;utente tramite un &#x201C;Service Advertisement&#x201D; che pu&#xF2; essere riportato un&#x2019;etichetta o direttamente sul dispositivo stesso se questo ha uno schermo. (come nel caso di questo display condiviso)
3) Dopo che l&#x2019;utente tramite l&#x2019;UbiNode, ha letto uno a scelta tra i tag, questo scarica e installa, da un repository remoto, un modulo (un driver) per poter accedere alla risorsa, infine mostra all&#x2019;utente un&#x2019;interfaccia per poter pilotare la risorsa.
Conseguentemente l&#x2019;utente diviene l&#x2019;amministratore di un servizio a cui altri moduli possono accedere, taggando la risorsa con il nome dello spazio in cui &#xE8; stata trovata (Space Manager) o pubblicandola ad altri utenti.
Vediamo in dettaglio come funziona:
1)Ad Ogni dispositivo &#xE8; associato un nome e vengono codificati uno o pi&#xF9; tag, la scelta di assegnare pi&#xF9; tag ad ogni dispositivo &#xE8; giustificata per il motivo che essendo ogni nodo di UbiCollab eseguito su hardware generico &#xE8; possibile che non tutti i palmari abbiano a disposizione un lettore RFID o una fotocamera, quindi viene assegnato anche un codice numerico visto che si presuppone che, alla peggio, tutti questi dispositivi abbiano in comune una modalit&#xE0; di input numerico (tastiera a touch). Allo stesso tempo alcune tipologie di tag possono essere pi&#xF9; efficaci di altri in determinati scenari.
2) Questi tag sono resi noti all&#x2019;utente tramite un &#x201C;Service Advertisement&#x201D; che pu&#xF2; essere riportato un&#x2019;etichetta o direttamente sul dispositivo stesso se questo ha uno schermo. (come nel caso di questo display condiviso)
3) Dopo che l&#x2019;utente tramite l&#x2019;UbiNode, ha letto uno a scelta tra i tag, questo scarica e installa, da un repository remoto, un modulo (un driver) per poter accedere alla risorsa, infine mostra all&#x2019;utente un&#x2019;interfaccia per poter pilotare la risorsa.
Conseguentemente l&#x2019;utente diviene l&#x2019;amministratore di un servizio a cui altri moduli possono accedere, taggando la risorsa con il nome dello spazio in cui &#xE8; stata trovata (Space Manager) o pubblicandola ad altri utenti.
Vediamo in dettaglio come funziona:
1)Ad Ogni dispositivo &#xE8; associato un nome e vengono codificati uno o pi&#xF9; tag, la scelta di assegnare pi&#xF9; tag ad ogni dispositivo &#xE8; giustificata per il motivo che essendo ogni nodo di UbiCollab eseguito su hardware generico &#xE8; possibile che non tutti i palmari abbiano a disposizione un lettore RFID o una fotocamera, quindi viene assegnato anche un codice numerico visto che si presuppone che, alla peggio, tutti questi dispositivi abbiano in comune una modalit&#xE0; di input numerico (tastiera a touch). Allo stesso tempo alcune tipologie di tag possono essere pi&#xF9; efficaci di altri in determinati scenari.
2) Questi tag sono resi noti all&#x2019;utente tramite un &#x201C;Service Advertisement&#x201D; che pu&#xF2; essere riportato un&#x2019;etichetta o direttamente sul dispositivo stesso se questo ha uno schermo. (come nel caso di questo display condiviso)
3) Dopo che l&#x2019;utente tramite l&#x2019;UbiNode, ha letto uno a scelta tra i tag, questo scarica e installa, da un repository remoto, un modulo (un driver) per poter accedere alla risorsa, infine mostra all&#x2019;utente un&#x2019;interfaccia per poter pilotare la risorsa.
Conseguentemente l&#x2019;utente diviene l&#x2019;amministratore di un servizio a cui altri moduli possono accedere, taggando la risorsa con il nome dello spazio in cui &#xE8; stata trovata (Space Manager) o pubblicandola ad altri utenti.
Vediamo in dettaglio come funziona:
1)Ad Ogni dispositivo &#xE8; associato un nome e vengono codificati uno o pi&#xF9; tag, la scelta di assegnare pi&#xF9; tag ad ogni dispositivo &#xE8; giustificata per il motivo che essendo ogni nodo di UbiCollab eseguito su hardware generico &#xE8; possibile che non tutti i palmari abbiano a disposizione un lettore RFID o una fotocamera, quindi viene assegnato anche un codice numerico visto che si presuppone che, alla peggio, tutti questi dispositivi abbiano in comune una modalit&#xE0; di input numerico (tastiera a touch). Allo stesso tempo alcune tipologie di tag possono essere pi&#xF9; efficaci di altri in determinati scenari.
2) Questi tag sono resi noti all&#x2019;utente tramite un &#x201C;Service Advertisement&#x201D; che pu&#xF2; essere riportato un&#x2019;etichetta o direttamente sul dispositivo stesso se questo ha uno schermo. (come nel caso di questo display condiviso)
3) Dopo che l&#x2019;utente tramite l&#x2019;UbiNode, ha letto uno a scelta tra i tag, questo scarica e installa, da un repository remoto, un modulo (un driver) per poter accedere alla risorsa, infine mostra all&#x2019;utente un&#x2019;interfaccia per poter pilotare la risorsa.
Conseguentemente l&#x2019;utente diviene l&#x2019;amministratore di un servizio a cui altri moduli possono accedere, taggando la risorsa con il nome dello spazio in cui &#xE8; stata trovata (Space Manager) o pubblicandola ad altri utenti.
Per testare l&#x2019;architettura ho sviluppato varie applicazioni. Una di queste permette di accendere e spegnere dispositivi connessi alla rete elettrica, comuni lampade in questo esempio.
Utilizzo questa applicazione per mostrare tramite un breve filmato come avviene l&#x2019;interazione tra l&#x2019;UbiNode e l&#x2019;utente:
A livello tecnico l&#x2019;azione di lettura di un tag da parte dell&#x2019;utente comporta il download e l&#x2019;installazione all&#x2019;interno dell&#x2019;UbiNode di un modulo chiamato proxy, il cui indirizzo all&#x2019;interno del repository &#xE8; codificato nel tag.
Un proxy &#xE8; quindi un&#x2019;astrazione di una dispositivo esterno, che pu&#xF2; essere creato da terze parti, all&#x2019;interno dell&#x2019;Ubinode
Una volta attivato il proxy espone due interfacce, una verso il dispositivo remoto che implementa quindi il protocollo di comunicazione nativo della risorsa, WebService in questo esempio; e una verso gli altri moduli di UbiCollab permettendo cos&#xEC; ad una applicazione di accedere e pilotare la risorsa remota.
Un applicazione per UbiCollab &#xE8; un modulo, che pu&#xF2; essere creato tramite la SDK fornita agli sviluppatori, il quale espone una ho pi&#xF9; interfacce utente (touch, voce, ad esempio) con le quali l&#x2019;utente pu&#xF2; interagire con altri dispositivi attraverso uno o pi&#xF9; proxy.
Essendo le applicazioni, moduli queste possono essere installate con la stessa procedura che abbiamo visto per i proxy.
ASTRA &#xE8; un progetto finanziato dall&#x2019;Unione europea di cui il dipartimento in cui ho lavorato &#xE8; patner, che, come UbiCollab, aiuta i suoi utenti a tenersi in contatto e a pianificare eventi creando un senso di awareness ovvero presenza tra le attivit&#xE0; dei suoi utenti.
A differenza di UbiCollab ASTRA &#xE8; web-based e non dispone di un meccanismo propretario per interagire con dispositivi esterni.
Mi &#xE8; stato quindi chiesto dai miei supervisori di valutare la possibilit&#xE0; di integrare i due progetti in modo da fornire agli utenti di ASTRA le modalit&#xE0; di interazione con i dispositivi proprie di UbiCollab.
E&#x2019; stato possibile effettuare questa integrazione &#xE8; ci&#xF2; e stato anche una grossa prova di flessibilit&#xE0; dell&#x2019;architettura modulare di UbiCollab che ora permette quindi l&#x2019;accesso alle risorse nella griglia anche da applicazioni create per ASTRA.
Tecnicamente questa integrazione &#xE8; stata effettuata implementando un modulo, AstraConnector, che fornisce delle notifiche PUSH ad ASTRA relativamente alle risorse che vengono installate negli UbiNode e allo stesso tempo permettendo l&#x2019;accesso a queste risorse creando, tramite la Java Reflection, delle istanze in UbiCollab delle applicazioni eseguite in ASTRA.
Questo modulo &#xE8; attualmente in fase di revisione da parte della UE.
Ci&#xF2; avviene in modo trasparente per l&#x2019;utente
Per testare l&#x2019;intero ciclo di utilizzo di un&#x2019;applicazione, dall&#x2019;installazione al normale utilizzo, ho sviluppato un&#x2019;applicazione per assistenza medica remota.
Abbiamo il prototipo di una maglietta, indossata dal paziente, che &#xE8; in grado di rilevare tramite sensori la pressione sanguigna. Questa maglietta comunica con un applicazione eseguita sull&#x2019;UbiNode mostrando il valore rilevato dai sensori. Nel caso che questo valore scenda sotto una determinata soglia l&#x2019;ubinode &#xE8; in grado di mandare un SMS contente i dati del paziente: nome, valore rilevato dal sensore, coordinate geografiche.
Qui vediamo le tecnologie di terze parti che ho utilizzato in UbiCollab.
-La modularizzazione &#xE8; ottenuta grazie a OSGi che permette di gestire il ciclo di vita (istallazione,uso, disattivazione) di un modulo a runtime senza dover riavviare la JVM
-La virtual machine utilizzata &#xE8; la J9 di IBM che implementa le specifiche sun per java mobile
-Le GUI sono state realizzate grazie alle runtime della Eclipse foundation
-Axis &#xE8; stato utilizzato come motore per i WebService
-Il protocollo X10 &#xE8; stato usato nell&#x2019;esempio sulla domotica, permette di comunicare con dispositivi connessi alla rete elettrica tramite onde convogliate
-Phidgets &#xE8; l&#x2019;azienda che ha prodotto i sensori e le librerie utilizzate per l&#x2019;applicazione biomedica
Conludendo presento gli sviluppi che il progetto avr&#xE0; in futuro.
In novembre abbiamo fatto diverse sessioni di user-testing, ovvero abbiamo chiamato persone di diversa et&#xE0; e competenze facendogli provare il sistema senza fornire istruzioni e rilevando poi impressioni e suggerimenti dei tester tramite un questionario. Grazie ai dati raccolti sar&#xE0; possibile migliorare l&#x2019;usabilit&#xE0; di UbiCollab.
Attualmente non c&#x2019;&#xE8; una gestione della sicurezza e della concorrenza tra i vari nodi, quindi &#xE8; indispensabile implementare moduli in questo senso.
Android &#xE8; una piattaforma che offre molte possibilit&#xE0; di sviluppo e gira su un hardware che ben si adatterebbe a diventare un UbiNode, sar&#xE0; valutato la possibilit&#xE0; di fare il porting della piattaforma
Infine ci aspettiamo di sviluppare o proxy per altre periferiche e nuovi Discovery Plugins.
Ho terminato, grazie a tutti dell&#x2019;attenzione.