SARAH Shop Assistant in Reti Ad-Hoc Marco Montali
SARAH Obiettivo Software per il coordinamento di un gruppo di benefattori che aiutano un disabile a fare la spesa Condivisione della lista della spesa e sincronizzazione degli aggiornamenti
Scenario Necessità di mettere in comunicazione dispositivi –Mobili –Eterogenei In un contesto –In continua evoluzione –Senza infrastrutture di rete (niente cavi, access point, ecc. ecc.) Mobile Ad-Hoc Network Contesto dinamico e soggetto a perdita di messaggi, disconnessioni improvvise, partizionamenti...
Semplificazione Tipologia di rete molto difficile da gestire Semplificazione: utilizzo di un middleware Deleghiamo al middleware la gestione della rete e ci concentriamo sulle problematiche di livello applicativo La scelta di un middleware adatto, oltre a scaricarci da una serie di problematiche, può darci un supporto importante a livello applicativo
AGAPE Vogliamo che il middleware: –Gestisca la rete (comunicazione, routing, …) –Renda disponibile lastrazione del concetto di gruppo –Permetta di capire chi è presente attualmente in rete, qualificandolo attraverso un profilo (presence awareness) La scelta è caduta su AGAPE (Allocation and Group Aware Pervasive Environment) Possiamo dedicarci al livello applicativo Coordinamento a livello di gruppo = disabile + insieme di benefattori che hanno deciso di aiutarlo Ci interessa capire che un item è stato preso, ma anche da chi (attribuzione di responsabilità)
Architettura di SARAH Livello di interazione con lutente separazione completa tra applicazione e presentazione Servizi di coordinamento e processori dei messaggi Entità e gerarchia dei messaggi
Presentation layer Interfaccia grafica –Pannello per inserire la propria lista e richiedere aiuto –Per ogni gruppo di lavoro un Tab Panel (identificato dal nick del disabile che ha chiesto aiuto e associato al corrispondente Group ID) –Ogni Tab Panel mostra la lista della spesa condivisa, con informazioni su chi ha preso cosa e possibilità di spuntare un elemento Lelenco dei partecipanti attualmente visibili Tecnologia JAVASpeech per comunicare levoluzione del lavoro di gruppo al disabile
Entità e messaggi Generica entità dell applicazione Elemento della spesa Lista della spesa Aggiornamento di un elemento della lista Richiesta del permesso per modificare un elemento Richiesta di aiuto ai benefattori Accettazione della richiesta daiuto Spedizione di un gruppo di elementi (lista) Richiesta di riconciliazione delle liste (dopo un partizionamento)
Servizi e processori Il layer dei servizi e dei processori dei messaggi è il cuore dellapplicazione –Realizza i protocolli di coordinamento –Si interfaccia con il middleware Compiti fondamentali dei servizi: –Filtrare le informazioni riguardanti la rete e rendere visibili quelle di interesse –Gestire la spedizione dei messaggi –Gestire la ricezione dei messaggi invocando il corrispondente processore I processori dei messaggi interpretano tipo e contenuto dei messaggi eseguendo una serie di azioni meccanismo double- dispatch per separare la logica di gestione dei messaggi dalle entità messaggio
Servizi Servizi principali –HelpService (lato disabile) Creazione gruppo di lavoro per il disabile e richiesta di aiuto Comunicazione ai benefattori degli aggiornamenti sulla lista –CharityService (lato benefattore) Gestione delle interazioni iniziali, per mettere il benefattore in condizioni di lavorare –ServantService (lato benefattore) Invio e ricezione messaggi relativi a modifiche sulla lista Inoltre, un servizio di presenza –Per capire chi ha preso cosa –Per modificare il protocollo di coordinamento in base al contesto Ogni gruppo rappresenta unarea di lavoro a sé stante Un servizio di presenza per ogni gruppo di lavoro Un singleton PresenceServicePooler restituisce il servizio di presenza dato un GID (o il PID del corrispondente disabile)
Comandi Comandi che il livello di presentazione usa per scatenare azioni nei layer sottostanti Comandi utilizzati dal livello dei servizi per dare delle informazioni allutente Linterazione con i servizi di presenza è differente Registrazione presso il servizio e notifica al cambiamento dellinsieme dei componenti del gruppo
Protocolli di coordinamento Obiettivo ideale Rilassamento Però Quando possibile, abbiamo bisogno di qualcuno che scelga uno dei contendenti, con il vantaggio che Sincronizzazione perfetta delle liste di ogni componente del gruppo Irrealizzabile! Siamo in una rete ad-hoc: semantica best-effort, perdita messaggi, partizionamenti, … Ammettiamo che due utenti prendano lo stesso elemento Vogliamo minimizzare il numero di tali inconsistenze Basta sceglierne uno, non ci sono mai criteri di preferenza Scegliamo il disabile come risolutore dei conflitti Ha > potere decisionale: tutti gli aggiornamenti devono essere approvati da lui E se perdiamo la sua visibilità?
Handshake iniziale help milk- eggs- milk- eggs- milk- eggs- AIUTO! ack send list Sono occupat o ack send list Tutti i benefattori che hanno accettato sono agganciati al gruppo e pronti per lavorare (possiedono copia della lista)
Aggiornamento milk eggs milk eggs milk eggs avverti (d, prende, milk) d b1 b2 prendo il latte milkXd eggs milkXd eggs avverti (d, prende, milk) Multicast come N unicast milkXd eggs
Aggiornamento milk eggs milk eggs milk eggs avverti (b2, prende, milk) d b1 b2 prendo il latte milkXb2 eggs milkXb2 eggs avverti (b2, prende, milk) milkXb2 eggs chiedi (b2, può prendere, milk)
Aggiornamento milk eggs milk eggs milk eggs avverti (b2, prende, milk) d b1 b2 prendo il latte milkXb2 eggs milkXb2 eggs avverti (b2, prende, milk) milkXb2 eggs chiedi (b2, può prendere, milk) chiedi (b1, può prendere, milk) prendo il latte b2 è arrivato prima...
Perdita di messaggi milk eggs milk eggs milk eggs avverti (b2, prende, milk) d b1 b2 prendo il latte milkXb2 eggs milkXb1 eggs avverti (b2, prende, milk) milkXb2 eggs chiedi (b2, può prendere, milk) chiedi (b1, può prendere, milk) prendo il latte b2 è arrivato prima... Il disabile non risponde… meglio essere conservativi
Sviluppi futuri Location awareness per mostrare solo gli elementi della lista che si trovano nei dintorni PRESENTATION INPUT COMMAND OUTPUT COMMAND SERVICES LOCATION SERVICE LOCATION FILTER