Cac Es3 2009
-
Upload
marco-loregian -
Category
Education
-
view
569 -
download
1
description
Transcript of Cac Es3 2009
![Page 1: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/1.jpg)
ATELIER e la sua infrastruttura
Esercitazione 3 del corso di Sistemi Context-awarehttp://www.siti.disco.unimib.it/didattica/sistemica
Marco [email protected]
![Page 2: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/2.jpg)
Nelle scorse lezioni
• Esempi pratici di ubiquitous e context-aware computing
• Architettura e componenti del sistema Gaia
![Page 3: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/3.jpg)
In questa lezione
• Generalizzazione: Infrastrutture per l’ubiquitous computing
• Il progetto ATELIER
• L’infrastruttura software di ATELIER
• Esempio di implementazione
• References
![Page 4: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/4.jpg)
Introduzione
• Ubiquitous computing: integrazione di molti dispositivi e tecnologie diverse
• Esempi di tecnologie per l’integrazione
• CORBA (vd. Gaia), Java, Jini, OSGi, ...
• Forniscono gli elementi di base per l’integrazione
• protocolli di scoperta dei servizi, trasporto dei messaggi, ...
![Page 5: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/5.jpg)
• Infrastrutture tecnologiche: ne esistono molte e a diversi livelli
• stratificazione dei problemi (vd. stack protocolli di rete, ...)
• [Per questo corso] Ci interessa il livello più alto (infrastruttura software in generale)
• Sfruttiamo le infrastrutture tecnologiche e ci concentriamo su problemi di più alto livello
• Nascondiamo tutti i problemi sottostanti
• Dipendenti da hardware, reti, ...
![Page 6: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/6.jpg)
• I componenti, servizi e applicazioni costruiti appoggiandosi sull’infrastruttura software devono essere configurabili e ricombinabili a seconda delle diverse situazioni
• Sistemi estendibili (incrementalmente) nel tempo
![Page 7: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/7.jpg)
• Un’infrastruttura per l’ubicomp deve supportare la scoperta, l’adattamento, e la fruizione delle diverse funzionalità delle applicazioni a seconda della situazione corrente
• Al variare delle condizioni degli utenti
• La consapevolezza della disponibilità delle risorse è essenziale per avere la possibilità di utilizzarle
Eterogeneitàfunzionale
![Page 8: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/8.jpg)
Requisiti non funzionali
• Indipendenza da
• hardware e sistema operativo
• rete
• linguaggio di programmazione
• Estensibilità e configurabilità
• Formato delle informazioni e dei contenuti
![Page 9: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/9.jpg)
Indipendenza da HW e SO
• Ubicomp: gamma completa di dispositivi
• spesso privi di capacità computazionale o di connettività
• Separazione funzionalità (es. I/O, app. logic)
• Pattern Model-View-Controller (MVC)
• esteso ad un sistema distribuito (es. frammentavione View)
![Page 10: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/10.jpg)
MVCin sintesi
• Separazione dei compiti fra componenti software
• model: contiene i dati e fornisce i metodi per accedervi;
• view: visualizza i dati contenuti nel model;
• controller: riceve i comandi dell'utente (attraverso il view) e li attua modificando lo stato degli altri due componenti.
http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html
ModelView
Controller
Business/ApplicationLogic
User Interface
Event Manager
Associazione indirettaAssociazione diretta
![Page 11: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/11.jpg)
Indipendenza dalla rete
• Molti tipi di dispositivi ⇒ molti protocolli da supportare
• Conviene nascondere la complessità (es. del trasporto) con uno strato di comunicazione indipendente
• Le applicazioni non si devono adattare all’ambiente (es. transizione copertura bluetooth → WiFi), ci pensa l’infrastruttura
• Spesso ci sono reti diverse perché le situazioni sono diverse
• Conviene avere un’infrastruttura generica che consenta di sviluppare applicazioni indipendentemente dal dominio
![Page 12: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/12.jpg)
Approccio Platform / OS
• Approccio di Gaia: sviluppare un OS (∼virtual machine) per applicazioni ubicomp
• Astrazione basata su OS del dispositivo + servizi aggiuntivi
• API per sviluppatori basate su linguaggio esistente (es. Java, C++) o su uno nuovo (specifico)
• Gaia si basa su CORBA
![Page 13: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/13.jpg)
CORBA in sintesi
• Common Object Request Broker Architecture
• ORB = Object-oriented RPC (remote procedure call)
• Middleware distribuito per la comunicazione tra applicazioni
http://www.omg.org/docs/formal/04-03-12.pdfhttp://www.ciaranmchale.com/corba-explained-simply/core-concepts-and-terminology.html
![Page 14: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/14.jpg)
Indipendenza dal linguaggio di programmazione
• Infrastrutture come Gaia hanno bisogno di una piattaforma HW in grado eseguire TAO (CORBA C++)
• Spesso i dispositivi non possono eseguire neanche codice compilato
• Ci vuole un adapter che faccia da tramite tra dispositivo e piattaforma
![Page 15: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/15.jpg)
Estensibilità• Nuovi requisiti da soddisfare
• Aggiungere nuove funzionalità
ConfigurabilitàStessi dispositivi per differenti contesti
Per qualsiasi utente, non solo tecnici
![Page 16: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/16.jpg)
Formato informazioni e contenuti
• Dispositivi diversi (HW, OS)
• si scambiano messaggi di diverso tipo (protocolli)
• elaborano diversi tipi di documenti
• Possibile una soluzione generale/standard?
• XML
![Page 17: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/17.jpg)
Quale deve essere il grado di specificità di
una piattaforma?
![Page 18: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/18.jpg)
ATELIER
• Progetto europeo
• Diversi setup e scenari di test
• Infrastruttura aggiornata e riutilizzata anche dopo la conclusione del progetto (2004)
• Scopo: semplificare lo sviluppo di applicazioni in un ambiente eterogeneo
![Page 20: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/20.jpg)
Caratteristiche dell’infrastruttura
• Comunicazione asincrona basata su XML
• Via TCP/IP (nella versione che useremo)
• Indipendente dal linguaggio di programmazione (esempi e tools in Java)
![Page 21: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/21.jpg)
Architettura a microkernel
• Nucleo centrale (Kernel) per funzioni di base
• Servizi aggiuntivi del kernel (interni)
• Protocolli
• Servizi applicativi aggiuntivi (esterni)
• Adapters
• Componenti
Component
Adapter
Protocol
Kernel
External Service
Internal Service
![Page 22: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/22.jpg)
Infrastruttura di Atelier
![Page 23: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/23.jpg)
Interazione fra componenti
• Tutti i componenti e i servizi
• devono registrarsi presso il kernel (vd. esempio precedente)
• possono essere de-registrati
• Meccanismo (message passing) tipo publish/subscribe
• Ogni componente dice che tipo di messaggi produce a quale tipo di messaggi è interessato, e il kernel glieli inoltra se qualcuno li produce
• Un componente può chiedere al kernel se c’è qualcuno che produce/consuma un certo tipo di messaggio
Awareness
![Page 24: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/24.jpg)
MVC distribuito e microkernel
• Model, View e Control sono frammentabili e comunicano via XML:
<message> <category name="root/registration"> <type name="register" /> </category> <body content-type="text/xml"> <registration name="RemoteControlComponent" class="Control" type="component"> <metainfo name="provides" type="registration" id="RegistrationProvides"> <provides name="category" value="Root/event" /> <provides name="type" value="input/remote" /> </metainfo> <metainfo name="parameters" type="registration" id="RegistrationParameters"> <parameter name="port" value="COM1" /> </metainfo> </body> </message>
} Registrazione
} Messaggi che il componente produrrà
![Page 25: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/25.jpg)
Gerarchia dei messaggi
• Categoria (con sub-categorie)
• Messaggi, eventi, application-specific
• Tipo
• Dettaglio, funzione specifica (RPC)
• Esempio: category: application/dbtype: additem
• “Aggiungi un elemento al DB”, nel resto del messaggio avrò l’elemento vero e proprio
![Page 26: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/26.jpg)
Adapter
• Gli Adapters forniscono le funzionalità di comunicazione ai componenti
• abstract communication link
• Fungono da proxy per l’infrastruttura di comunicazione
![Page 27: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/27.jpg)
Asincronicità• Modello a eventi (o quasi)
• GUI → clicco il bottone e parte un handler associato all’evento specifico
• Il componente si registra al kernel, che gli recapita i messaggi a cui è interessato
• Quando arriva un messaggio il componente lo deve elaborare (demarshal), agire di conseguenza (PC), ed eventualmente generare un messaggio di risposta (marshal) da mandare al kernel (o direttamente a qualcun altro)
![Page 28: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/28.jpg)
Facilità d’uso• Sono state sviluppate API (utilities Java) che
semplificano la gestione dei messaggi XML
• Marshal, Demarshal
public void newHyperNodeAdded(HyperNode newNode) { AtelierXMLMessage msg =
new AtelierXMLMessage("application/entrance", "newitemadded"); msg.setBodyContentType("text/xml"); XMLElement content =
XMLMessageFactory.getInstance().createXMLElement("node"); Integer idOfNode = newNode.getID(); content.putAttribute("hypernodeid", idOfNode.toString()); msg.setBodyContent(content.toString()); adapter.sendMessage(msg);
}
![Page 29: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/29.jpg)
Indipendenza
• Chi sviluppa un componente, adapter, o servizio non vede i meccanismi di scambio dei messaggi
• Possono avvenire su reti di diverso tipo
• Architettura peer-to-peer ibrida
• Il kernel funge da directory dei servizi e degli indirizzi dei vari nodi (c’è la possibilità di creare route diretti)
![Page 30: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/30.jpg)
Estensibilità
• Estensione della piattaforma
• Modifiche al kernel
• Nuovi servizi interni/esterni di default
• Attualmente gli unici servizi interni sono: pipeline, name server e id factory
• Estensione delle applicazioni
• Gestione nuovi messaggi: categorie/tipi
• Estensione dei protocolli
![Page 31: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/31.jpg)
Configurabilità
• Fattori:
• meccanismo publish/subscribe
• filtraggio e trasformazione dei messaggi
• Configurabilità a runtime
• start/stop componenti e servizi
• routing dinamico
![Page 32: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/32.jpg)
Esempi di componenti e applicazioni
• Configurazione ambiente fisico
• RFID/Barcode
• Interazione con documenti
• HMDB
• Ontologia
• Tangible Image Query
![Page 33: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/33.jpg)
Esempio implementazione di un semplicissimo sistema basato sull’infrastruttura del progetto Atelier
![Page 34: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/34.jpg)
Scenario• un sensore rileva gli ingressi in una stanza
• un servizio conta le presenze (p)
• un monitor identifica la situazione in un insieme limitato di casi
• p < 2 → attività personale
• 2 ≤ p ≤ 5 → riunione
• p > 5 → seminario
![Page 35: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/35.jpg)
Adapter
SituationMonitor
SituationMonitorGUI
PresenceService
Adapter
BadgeReaderGUI
BadgeReader
Adapter
KernelBadgeID
BadgeID #People
#People
![Page 36: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/36.jpg)
Prima di iniziare
• Ambiente di sviluppo di riferimento: Eclipsehttp://www.eclipse.org/
• Package infrastruttura, scaricabile da:http://www.siti.disco.unimib.it/didattica/sistemica/materiale-didattico
• Esempi, stessa pagina
![Page 37: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/37.jpg)
Conoscenze
• Necessarie
• Java
• XML
• Accessorie
• OWL
• DB
In generale Per il progetto(non per tutti)
![Page 38: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/38.jpg)
Per iniziare
• infrastructure.jar contiene:
• bin: files batch
• conf: files di configurazione
• doc: APIs
• lib: infrastruttura e jar necessari
• META-INF: manifest del jar
Per decomprimere: jar xf infrastructure.jar
![Page 39: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/39.jpg)
Fase 1
• Creazione nuovo progetto eclipse
• Import infrastruttura
• Test: avvio del kernel
• N.B. Screenshots fatti con Eclipse per Mac OS
![Page 40: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/40.jpg)
![Page 41: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/41.jpg)
![Page 42: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/42.jpg)
File → Import
![Page 43: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/43.jpg)
Java Build Path
Libraries
![Page 44: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/44.jpg)
![Page 45: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/45.jpg)
![Page 46: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/46.jpg)
![Page 47: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/47.jpg)
Run
![Page 48: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/48.jpg)
Fase 2: Implementazione
• BadgeReader
• BadgeReaderGUI
• PresenceService
• SituationMonitor
• SituationMonitorGUI
Tutto il codice lo potete scaricare dalla
pagina dei materiali.
Ora lo commentiamo e testiamo
![Page 49: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/49.jpg)
Nella prossima lezione
• Inseriremo un servizio basato su una rappresentazione del contesto definita come ontologia
![Page 50: Cac Es3 2009](https://reader034.fdocument.pub/reader034/viewer/2022042614/559117651a28ab9a5c8b457d/html5/thumbnails/50.jpg)
Riferimenti
1. Antti Juustila, Toni Räisänen: Atelier Infrastructure for Ubiquitous Computing. Proceedings of the 30th Information Systems Reseach Seminar in Scandinavia. IRIS 2007
2. Marco Loregian, Kresimir Matkovic, Thomas Psik: Seamless Browsing of Visual Contents in Shared Learning Environments. PerCom Workshops 2006: 235-239 http://doi.ieeecomputersociety.org/10.1109/PERCOMW.2006.120