SARAH Shop Assistant in Reti Ad-Hoc Marco Montali.
-
Upload
bertina-rossa -
Category
Documents
-
view
223 -
download
3
Transcript of SARAH Shop Assistant in Reti Ad-Hoc Marco Montali.
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 l’astrazione 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 aiutarloCi interessa capire che un
item è stato preso, ma anche da chi (attribuzione di
responsabilità)
Architettura di SARAHLivello di interazione
con l’utente
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
• L’elenco dei partecipanti attualmente “visibili”
• Tecnologia JAVASpeech per comunicare l’evoluzione 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
d’aiuto
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 dell’applicazione– 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 un’area 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)
ComandiComandi che il livello di
presentazione usa per scatenare azioni nei layer sottostanti
Comandi utilizzati dal livello dei servizi per dare delle informazioni all’utente
L’interazione con i servizi di presenza è differente
Registrazione presso il servizio e notifica al cambiamento
dell’insieme 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
help
help
milk -
eggs -
milk -
eggs -
milk -
eggs -
AIUTO!
acksend list
Sono occupat
o
acksend 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
eggsavverti (d, prende, milk)
d
b1
b2
prendo il latte
milk X d
eggs
milk X d
eggs
avverti (d, prende, milk)
Multicast come N unicast
milk X d
eggs
Aggiornamento
milk
eggs
milk
eggs
milk
eggsavverti (b2, prende, milk)
d
b1
b2
prendo il latte
milk X b2
eggs
milk X b2
eggs
avverti (b2, prende, milk)
milk X b2
eggs
chiedi (b2, può prendere, milk)
Aggiornamento
milk
eggs
milk
eggs
milk
eggsavverti (b2, prende, milk)
d
b1
b2
prendo il latte
milk X b2
eggs
milk X b2
eggs
avverti (b2, prende, milk)
milk X b2
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
eggsavverti (b2, prende, milk)
d
b1
b2
prendo il latte
milk X b2
eggs
milk X b1
eggs
avverti (b2, prende, milk)
milk X b2
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 LOCATIONSERVICE
LOCATIONFILTER