Cac Es3 2009

50
ATELIER e la sua infrastruttura Esercitazione 3 del corso di Sistemi Context-aware http://www.siti.disco.unimib.it/didattica/sistemica Marco Loregian [email protected]

description

Esercitazione su ATELIER 2009

Transcript of Cac Es3 2009

Page 1: Cac Es3 2009

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

Nelle scorse lezioni

• Esempi pratici di ubiquitous e context-aware computing

• Architettura e componenti del sistema Gaia

Page 3: Cac Es3 2009

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

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

• 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

• 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

• 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

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

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

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

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

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

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

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

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

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

Quale deve essere il grado di specificità di

una piattaforma?

Page 18: Cac Es3 2009

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 19: Cac Es3 2009

http://atelier.k3.mah.se

Page 20: Cac Es3 2009

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

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

Infrastruttura di Atelier

Page 23: Cac Es3 2009

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

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

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

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

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

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

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

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

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

Esempi di componenti e applicazioni

• Configurazione ambiente fisico

• RFID/Barcode

• Interazione con documenti

• HMDB

• Ontologia

• Tangible Image Query

Page 33: Cac Es3 2009

Esempio implementazione di un semplicissimo sistema basato sull’infrastruttura del progetto Atelier

Page 34: Cac Es3 2009

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

Adapter

SituationMonitor

SituationMonitorGUI

PresenceService

Adapter

BadgeReaderGUI

BadgeReader

Adapter

KernelBadgeID

BadgeID #People

#People

Page 36: Cac Es3 2009

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

Conoscenze

• Necessarie

• Java

• XML

• Accessorie

• OWL

• DB

In generale Per il progetto(non per tutti)

Page 38: Cac Es3 2009

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

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
Page 41: Cac Es3 2009
Page 42: Cac Es3 2009

File → Import

Page 43: Cac Es3 2009

Java Build Path

Libraries

Page 44: Cac Es3 2009
Page 45: Cac Es3 2009
Page 46: Cac Es3 2009
Page 47: Cac Es3 2009

Run

Page 48: Cac Es3 2009

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

Nella prossima lezione

• Inseriremo un servizio basato su una rappresentazione del contesto definita come ontologia

Page 50: Cac Es3 2009

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