SAMOA: Socially-Aware and Mobile Architecture Relazione esame del corso di Reti di Calcolatori LS Emanuele Colombini Introduzione Sin da quando si è affermata la rete internet, sono stati sviluppati strumenti di comunicazione sempre più evoluti, in modo da permettere a milioni di persone di entrare in contatto tra loro. Il concetto di comunità è cresciuto assieme alla facilità di oltrepassare i classici limiti della conoscenza fisica di altri individui. Gli strumenti forniti da internet hanno permesso dapprima di comunicare semplicemente con le persone conosciute, ad esempio usando le email; l’evoluzione dei servizi ha portato poi alla creazione di piccole comunità dedicate a particolari argomenti: ad esempio le comunità a tema ed i forum. Infine le reti sociali hanno dato possibilità ancora maggiori di conoscere altre persone, entrando nel vivo dei loro gusti e delle loro caratteristiche. La maggior parte degli strumenti che aiuta nella creazione di queste comunità di persone si basa appunto su internet; ogni persona collegata alla rete è slegata dalla sua posizione fisica e dal suo contesto, ma entra a far parte di una comunità unica dove si possono scambiare informazioni di tutti i tipi. Moltissimi servizi attuali, estremamente pubblicizzati anche attraverso altri canali di comunicazione, mettono in mostra la facilità con cui si possono creare legami tra persone che fisicamente risiedono molto lontane le une dalle altre. Con il recente sviluppo delle tecnologie mobile, dispositivi portatili che hanno grandi capacità comunicative, sono state ampliate ulteriormente le possibilità di creare reti sociali legate al contesto in cui si trovano i membri della rete stessa: il luogo fisico in cui si trovano gli utenti. Un primo strumento che permette la creazione e la gestione di tali reti è data dall’oggetto di questa relazione: il middleware SAMOA (“Socially-Aware and MObile Architecture”). SAMOA è un middleware che permette all'utilizzatore di creare reti sociali semantiche in ambienti mobili, in qualsiasi momento ed in qualsiasi luogo (“anytime & anywhere social network computing”). L'obiettivo principale di SAMOA è quello di poter fornire un supporto semplice da usare, in modo da permettere ai programmatori di concentrarsi sull'applicazione piuttosto che sulla creazione e sulla gestione della rete sociale. A tale scopo, SAMOA mette a disposizione una serie di servizi e di funzionalità che permettono la localizzazione e la comunicazione con altre entità SAMOA. I prossimi paragrafi saranno concentrati sulla descrizione di questo middleware. In particolare il secondo paragrafo descriverà le caratteristiche fondamentali di SAMOA. Seguirà una descrizione più dettagliata del modello che ha guidato la creazione della rete sociale, considerando i ruoli delle entità in gioco ed i profili che le caratterizzano. Il quarto paragrafo sarà concentrato sull’architettura del middleware descrivendo i vari servizi offerti uno per uno. Il quinto paragrafo riguarderà invece l’implementazione di due dei servizi fondamentali di SAMOA. Verrà poi presentato un caso di studio in cui sono state messe in evidenza le caratteristiche fondamentali del progetto. La trattazione si concluderà con il paragrafo dedicato alle conclusioni ed ai futuri sviluppi. Caratteristiche di SAMOA In questo paragrafo verranno elencate le caratteristiche dominanti di SAMOA, ovvero tutte quelle particolarità che derivano dallo studio delle altre soluzioni già presenti sul mercato ed ottimizzate in modo da ottenere un unico progetto adatto ad ogni evenienza. Come detto nell’introduzione, una delle principali caratteristiche di SAMOA è che non si basa su Internet. Molte soluzioni, nate col nascere della rete, hanno invece fatto molto affidamento su questo mezzo di comunicazione. Un utente che vuole partecipare ad una comunità non deve far altro che registrarsi e specificare i propri interessi. La semplicità di tali progetti è anche il loro maggior limite: sebbene negli ultimi anni molte città si stiano adoperando per offrire il servizio di connettività con la rete Internet anche per le vie del centro, resta comunque una soluzione che non tiene conto del luogo in cui nasce la rete sociale. SAMOA permette invece la definizione di reti sociali fortemente dipendenti dal luogo in cui vengono create e per fare questo non è necessaria la presenza della rete Internet: questa capacità è detta “anytime and anywhere social network computing”. Diretta conseguenza di quanto appena detto, un'altra caratteristica fondamentale di SAMOA riguarda il concetto di prossimità. Creare reti sociali basate sulla località in cui si trova l'utente (chiamato “ego-user” per mettere in evidenza la sua presenza centrale nella propria rete sociale) significa mettere in relazione l'utente stesso con gli altri utenti situati nella stessa località. Sfruttare il concetto di prossimità permette di creare nuove interazioni con persone sconosciute, ma che frequentano abitualmente gli stessi luoghi (chiamati “familiar stranger”) oppure di riconoscere un amico nelle vicinanze, che altrimenti non avremmo visto. Un ulteriore aspetto distintivo di SAMOA risiede nell'adozione di un approccio semantico nella specifica delle caratteristiche degli utenti e delle località, oltre all'uso di algoritmi di matching semantici per inferire relazioni tra le individualità presenti. Tale sistema lascia all'utente uno strumento molto potente, ma allo stesso tempo estremamente semplice da usare per descrivere le proprie caratteristiche e preferenze. Oltre a questo è possibile specificare in modo flessibile anche gli aspetti peculiari della rete sociale che si vuole creare mediante la definizione delle caratteristiche e delle preferenze dell'ego-user nella località. Una diretta conseguenza dell'utilizzo del match semantico risiede nel fatto che non è necessario registrarsi ad alcun servizio: ogni utente può modificare le proprie caratteristiche in qualsiasi momento e rientrare in reti sociali senza che questo sia reso esplicito, ma in maniera completamente automatica. SAMOA, come indicato nel nome, permette di creare reti mobili, ovvero l'utente può utilizzare il middleware anche sui nuovi dispositivi portatili, che oggigiorno sono sempre più potenti e permettono comunicazioni wireless. In questo modo la rete segue l'ego-user ovunque esso vada, cambiando continuamente, adattandosi alla località in cui si trova e aggregando nuovi membri nella rete che prima non risiedevano nella precedente località. Questo effetto “roaming” della rete, assieme alle precedenti caratteristiche di SAMOA, è una funzionalità messa a disposizione del middleware. Il fatto che SAMOA sia il primo tentativo di produrre un middleware che permetta la creazione di reti sociali dimostra lo sforzo di portare l'attenzione sulla facilità di progetto, sviluppo e distribuzione di nuove applicazioni atte a supportare il social network computing. Tutte le altre soluzioni analizzate si sono dimostrate troppo legate all'applicazione e all'ambiente di sviluppo, portando ad una conseguente incapacità di riusare il codice prodotto e dovendo ogni volta ricominciare il progetto daccapo. La soluzione a middleware permette, invece, una netta separazione tra la gestione della rete sociale e l'applicazione vera e propria, facilitandone la veloce prototipazione. Modello della rete sociale Le reti sociali gestite da SAMOA sono dei gruppi di utenti che si trovano tutti in una stessa località e che condividono gli stessi interessi. Le reti sono costruite attorno all'ego-user (vengono infatti chiamate reti egocentriche) e tengono in considerazione vari aspetti: le caratteristiche della località in cui si trova l'ego-user (“place-awareness”) e le preferenze specificate dall'ego-user stesso (“profile-awareness”). Questa distinzione è stata introdotta per facilitare ed ottimizzare la gestione della rete: la visibilità della località permette di ridurre il raggio d'azione della rete considerando solamente gli utenti vicini all'ego-user, mentre la visibilità del profilo permette di raffinare ulteriormente la rete sociale, considerando solamente quegli utenti che hanno caratteristiche in comune con l'ego-user. Ogni entità SAMOA può ricoprire uno o più ruoli: “manager”, “client” e “member”. Manager: sono quei particolari ego-user che intendono creare una propria rete sociale. Non ci sono restrizioni sulla natura del manager, può essere un utente reale oppure un componente software, può essere fisso oppure mobile. L'unico aspetto importante è che il manager ha il compito di definire i parametri della propria rete sociale specificando i criteri della località e delle sue preferenze. Clients: i clienti sono utenti SAMOA che entrano nel raggio d'azione del manager. Potrebbero diventare membri della rete se le loro caratteristiche combaciassero con quelle richieste dal manager. Members: i clienti che passano il test semantico entrano a far parte della rete sociale. Ogni entità può svolgere più ruoli contemporaneamente: ad esempio un manager può essere membro di un’altra rete, oppure un utente può essere membro di più reti sociali, come mostrato nella figura 1. Figura 1: Reti Sociali I punti fondamentali per definire una rete sociale in SAMOA sono quindi il concetto di località e la specifica delle caratteristiche e delle preferenze dell'ego-user. Una località in SAMOA è definita dal numero di entità collegate con il manager, sia direttamente che indirettamente. Per inserire un limite alla dimensione della rete, vengono contati un certo numero di hop tra un utente ed il manager: se il numero supera il limite imposto, l'utente è fuori dalla rete. A seconda del caso, però, è possibile specificare altri sistemi per definire una località: ad esempio possono considerarsi vicini tutti gli utenti di una stesso access point wireless oppure tutti gli utenti collegati ad una stessa MANET (“Mobile Ad-hoc NETwork”). Come detto prima, le caratteristiche e le preferenze degli utenti vengono specificate secondo un approccio semantico. Ogni utente, sia esso manager, cliente o membro, dispone di una serie di profili che contengono le loro caratteristiche, i loro interessi e le relative preferenze. In particolare ogni utente viene rappresentato da un identificatore univoco, un Personal IDentifier (PID) e da un profilo utente (UserProfile UP). Il UP contiene la lista di tutti gli interessi ed attività che l'utente svolge, specificando ove necessario anche le preferenze su ciascuna attività (un utente a cui piace ascoltare la musica inserirà l'attività “Musica” tra gli hobbies ed in particolare specificherà il tipo di musica nelle preferenze relative a questa attività, ad esempio “Rock & Roll”) Per quanto riguarda il manager, invece, vengono introdotti altri due tipi di profili, il primo dei quali descrive la località (PlaceProfile PP) ed il secondo indica indica i criteri che un manager vuole per la propria rete sociale (DiscoveryProfile DP). Il PP contiene la lista di attività che caratterizzano la località del manager e agisce come un primo filtro. Ogni membro della rete sociale deve avere almeno una di queste attività nel proprio UP. Il DP invece contiene le preferenze del manager sulle attività specificate nel PP. Quest'ultimo profilo agisce come un secondo filtro e permette una selezione più raffinata degli utenti nella rete sociale. Una particolarità della gestione dei profili di SAMOA è che i dati scambiati con gli altri utenti sono limitati allo stretto indispensabile. Sia per motivi di performance che per considerazioni legate alla privacy dei dati, i profili inviati al manager contengono solo le informazioni relative alle attività in comune col manager stesso. La lista dei membri della rete sociale in un dato momento, ovvero l'insieme degli utenti che sono s colocati nella stessa località del manager e che hanno passato entrambi i filtri del PP e del DP, formano la Place-dependent Social Network.. Questa lista, assieme ai vari eventi di inserimento o uscita dei membri dalla rete, rappresenta le informazioni messe a disposizione sposizione dell'applicazione. Il programmatore quindi non deve fare altro che richiedere tali servizi al middleware e concentrarsi sul resto dell'applicazione senza preoccuparsi della gestione della rete. Oltre alla rete “volatile”, SAMOA mette a disposizione anche un altro tipo di rete sociale persistente, la Global Social Network. Questa rete memorizza tutte le reti sociali create nel tempo dall'ego-user, user, oltre a registrare tutti i membri che ne hanno fatto parte. Ogni qualvolta un nuovo utente è stato inserito nella place-dependent dependent social network, le stesse informazioni sono state inserite anche nella global social network. Questa rete persistente fornisce all'applicazione una serie di informazioni memorizzate ed aggiornate nel tempo, che possono essere usate per vari scopi, come ad esempio l'analisi delle preferenze dei vari membri incontrati per scopi commerciali. Figura 2:: Uso dei profili nelle reti sociali Architettura del middleware SAMOA ha un'architettura strutturata strutt su due livelli, posti tra la Java Virtual Machine e l'applicazione. Il livello più basso, quello a contatto con la JVM e tutti i dispositivi di hardware, è il Basic Service Layer (BS), mentre il livello più alto, quello che si interfaccia all'applicazione, è il Social Network Management Layer (SNM). Figura 3:: Architettura SAMOA Basic Service Layer Il BS è il layer che si interfaccia alla JVM e mette a disposizione le varie funzioni che permettono di rilevare e comunicare con altre entità SAMOA in vista. E' anche presente un sistema di nomi che consente all'applicazione e agli altri servizi SAMOA di identificare gli utenti mediante i loro PID. In particolare, il BS fornisce i seguenti servizi: Message Transport Manager (MTM) L'obiettivo principale dell'MTM è quello di implementare i pattern di comunicazione con le altre entità SAMOA mediante il protocollo UDP. Sono permesse due tipologie di comunicazioni: la comunicazione punto-punto punto verso un singolo utente e la comunicazione punto-multipunto punto verso tutti gli utenti SAMOA presenti nel raggio d'azione dell'egodell'ego user. L'invio di un messaggio unicast nella comunicazione punto-punto punto ha come destinatario un singolo o utente SAMOA identificato dal suo PID, il servizio di nomi interno seleziona il corretto indirizzo dell'utente in modo automatico. L'invio dei messaggi punto-punto, invece, risente dello scenario applicativo della località: nel caso di una rete infrastrutturata si utilizza il broadcast, mentre nel caso di una MANET viene usato un protocollo di flooding controllato. Location/Proximity Manager (LPM) Il secondo servizio del BS ha come scopo principale il riconoscimento delle entità SAMOA presenti nel raggio d'azione, oltre alla gestione del PID dell'ego-user. Ogni entità SAMOA, o meglio ogni servizio LPM, rende nota la propria presenza alle altre entità in vista mediante messaggi broadcast di presenza, chiamati PresenceBeacon, inviati ad intervalli regolari. Ogni PresenceBeacon contiene il PID dell'utente e l'indirizzo IP del suo dispositivo. Le entità SAMOA riceventi, mediante l'LPM, aggiungono le informazioni del nuovo utente nelle proprie tabelle delle entità co-locate e informano i livelli superiori dell'evento. Se non arrivano più PresenceBeacon da parte di un certo utente, tale utente viene considerato fuori dal raggio d'azione e quindi scollegato dalla rete sociale. Il Location/Proximity Manager ha un ruolo molto importante nella gestione della rete sociale, visto che è questo servizio ad incaricarsi della responsabilità di percepire la presenza degli altri utenti; inoltre è grazie all'LPM che è possibile gestire il raggio d'azione delle reti sociali indicando di volta in volta il numero di hops. Social Network Management Layer Tutte le funzionalità per creare e mantenere le reti sociali dell'ego-user sono gestite mediante questo livello. Il SNM recupera le informazioni dal BS e comunica al livello applicativo delle variazioni delle entità co-locate con il manager. I servizi del SNM sono: Profile Manager (PM) Il PM, come indicato nel nome, si concentra sulla gestione dei profili della rete sociale. Oltre a questo, il PM si prende carico di determinare, coordinandosi con il Semantic Matching Engine, quali delle altre entità SAMOA possono entrare nella rete sociale del manager. Innanzitutto il PM controlla la presenza e la correttezza dei profili dell'ego-user. Gli ego-user interessati a creare una rete sociale, i manager, possono configurare il PM in modo tale da accorgersi dell'arrivo di nuovi utenti nel raggio sociale. Il servizio LPM informa il PM della presenza di un nuovo utente e quest’ultimo inizia il protocollo che permette l'inserimento dell'utente nella rete sociale, se viene considerato idoneo mediante gli algoritmi dello SME. Semantic Matching Engine (SME) Gli algoritmi semantici sono implementati mediante lo SME. La versione descritta in questa relazione è ancora in fase prototipale ed il sistema è stato realizzato mediante sistemi simil-semantici. Nel prossimo paragrafo verrà descritta la logica che guida il funzionamento dello SME, senza entrare nel dettaglio implementativo. Place-dependent Social Network Manager (PSNM) Questo servizio gestisce la place-dependent social network mediante la creazione e la gestione di una tabella in memoria contenente tutte le informazioni utili all'applicazione. Una volta che il PM determina idoneo un nuovo utente, comunica al PSNM il PID di tale utente, il suo attuale indirizzo IP e la porzione di UserProfile compatibile con il PP. Il PSNM ha il compito di informare anche il livello applicativo dell'avvenuto inserimento del nuovo utente nella rete. L'uscita di un utente dalla rete sociale è riconosciuta dal servizio LPM, questo informerà dell'evento il PM e a sua volta il PSNM. Il Place-dependent Social Network Manager toglierà l'utente uscito dalla tabella dei membri attuali ed informerà l'applicazione. Social Global Network Manager (GSNM) La rete sociale persistente è gestita dal GSNM. Per ogni rete sociale viene creata una tabella contenente le informazioni relative ad ogni utente incontrato. Per ogni utente le informazioni memorizzate sono il PID e la porzione di UP che ha permesso all'utente stesso di entrare nella rete sociale. Oltre a queste informazioni vengono registrati anche i PP ed i DP che hanno caratterizzato tale rete sociale. Quando un utente cambia le proprie preferenze e caratteristiche il GNSM automaticamente memorizza le modifiche nell'apposita tabella. Il servizio presenta una API in modo da permettere ai programmatori delle applicazioni di poter elaborare le informazioni relative agli utenti incontrati. imposto a priori, ma deciso dal processo servitore. Ad esempio la coda fornita dal PSNM è composta da tabelle contenenti due colonne, nella prima delle quali vengono inseriti i PID degli utenti, mentre nella seconda viene specificato l'ingresso o l'uscita di quell'utente mediante un booleano; l'applicazione deve quindi adattarsi a ricevere messaggi di questo tipo. Cliente: Richiesta coda interna XYZ Servitore: Controllo presenza nome Dettagli implementativi Coda Esistente? Oggetti di questa relazione sono il servizio Profile Manager ed il servizio Semantic Matching Engine. Il servizio SME richiedeva tecnologie non ancora rese disponibili durante la prototipazione del middleware, viene quindi mostrato solamente il suo funzionamento all’interno del sistema. No Servitore: Creazione coda Si Cliente: Ricezione della coda Servitore: Fornitura della coda Cliente: Receive sulla coda Cliente Bloccato fino a ricevimento Comunicazione locale tra i livelli Per imporre una ben determinata linea di demarcazione tra i livelli, le comunicazioni sono state implementate a scambio di messaggi e non a chiamata di procedura. Questo significa che le API dei servizi di un certo livello forniscono al livello superiore la possibilità di recuperare una o più code di messaggi per informarli dell'evolversi della situazione. Un esempio dell'utilizzo delle code avviene nella comunicazione tra LPM e PM; il PM richiede all'LPM una coda di notifica per venire informato dell'arrivo o dell'uscita degli utenti dal raggio d'azione dell'ego-user. La stessa procedura deve essere attuata tra applicazione e PSNM ed in questo caso serve per conoscere l'ingresso e l'uscita degli utenti dalla rete sociale del manager. La gestione delle code viene effettuata dal servizio server che le mette a disposizione dei servizi client. Per ogni server, le code sono individuate dal nome. Il servizio client, una volta ottenuta la coda, si deve porre in ascolto per l'arrivo di nuovi messaggi; una receive sulla coda è bloccante fino a che non è disponibile un messaggio. Per permettere un alto grado di riusabilità delle code, il contenuto dei messaggi non viene Servitore: Send a tutti sulla coda Cliente: Ricezione messaggio sulla coda Figura 4: Richiesta e funzionamento coda interna Gli algoritmi semantici: SME SAMOA utilizza tecniche basate sul matching semantico per popolare le reti sociali dei manager. I profili scambiati vengono elaborati mediante due algoritmi e in base al risultato si può determinare se un utente è idoneo o meno ad entrare in una determinata rete sociale. Il primo algoritmo viene eseguito dal cliente che entra nel raggio d'azione del manager. Questi, non appena lo vede, invia il PP relativo alla rete sociale. Una volta ricevuto il PP, il primo algoritmo determina quali attività del cliente combacino con quelle richieste dal manager. Il risultato del primo algoritmo viene poi inviato al manager che lo elaborerà col secondo algoritmo. La lista di attività in comune tra cliente e manager viene corredata con tutte le relative preferenze del cliente stesso. Se il risultato del primo algoritmo non contiene alcuna attività in comune, allora il cliente viene immediatamente considerato non idoneo ad entrare nella rete. Il controllo semantico delle attività prevede due modalità: una diretta, caratterizzata da una stessa “classe di attività” sia per il manager che per il cliente, ed una indiretta, quando il cliente specifica una attività che è sottoclasse di una indicata dal manager. Questa doppia modalità permette una ulteriore forma di semplificazione nella creazione delle reti sociali, infatti il cliente può specificare in modo più preciso le proprie caratteristiche e preferenze, mentre il manager può indicare una classe di attività generica e considerare al suo interno non solo gli utenti che mostrano gli stessi interessi, ma anche utenti che mostrano interessi più specifici in una branchia della attività considerata. Un esempio di match semantico diretto può avvenire in uno scambio di file ed informazioni musicali dove il manager e il cliente sono entrambi interessati all'attività dell'ascolto “Musica”. Se consideriamo invece un software pubblicitario (il manager) avente come attività di interesse lo “Shopping”, un cliente interessato ad acquistare vestiti (attività “BuyClothes”, sottoclasse di “Shopping”) può rientrare nella rete sociale del manager e venire informato delle ultime proposte nel campo del vestiario. dall'utente e determina se quest'ultimo può far parte o meno della rete sociale. L'algoritmo viene eseguito dal manager e ha inizio una volta recuperato il risultato del primo algoritmo da un client idoneo. Il profilo del client contiene le preferenze relative alle attività richieste dal manager nel PP. Per spiegare il funzionamento dell'algoritmo semantico, considereremo le preferenze del client come istanze e le preferenze richieste dal manager come classi. La similitudine semantica delle preferenze può essere di tre tipi: exact case : la preferenza del client è un'istanza della classe di preferenze richiesta dal manager; subsumes case : la preferenza del client è l'istanza di una classe più generica rispetto a quella del manager; plug-in case : la preferenza del client è l'istanza di una classe più specifica rispetto a quella del manager. Se alla fine dei controlli il client risulta idoneo ad entrare nella rete, allora le sue informazioni vengono inserite nella place-dependent social network e nella global social network del manager e rese disponibili per l’applicazione. Algoritmo2 (UMP, DP) Algoritmo1: Creazione nuovo UMP UMP vuoto? Altre Attività? (PlaceProfile) No No Algoritmo1: Restituzione UMP Return False No Return True No Return False No Si Relazione attività? Si Altre Attività? Si Si Match ok? SI Aggiunta preferenze utente ad UMP Figura 5: Funzionamento algoritmo 1 Il secondo algoritmo confronta le preferenze specificate dal manager con quelle indicate Figura 6: Funzionamento algoritmo 2 Il protocollo della rete SAMOA: PM Gli algoritmi presentati nel paragrafo precedente fanno parte del protocollo per l’inserimento nella rete sociale. Il protocollo è gestito dal Profile Manager,, mentre gli algoritmi sono messi a disposizione dal Semantic Matching Engine. Engine Per gestire il protocollo il PM richiede al MTM due canali unicast: uno in input ed uno in output; questi canali vengono utilizzati nello scambio di messaggi tra il manager e l’utente in questione. Inoltre il PM richiede al LPM una coda locale per ottenere le variazioni del vicinato; all’arrivo di un nuovo utente verrà effettuato il protocollo, rotocollo, mentre all’uscita dell’utente utente corrisponderà l’eventuale rimozione dalla rete sociale. I messaggi scambiati tra manager e utente sono 3, come si può vedere nella figura 7: nel paragrafo precedente edente permettono il controllo semantico tra i profili dell’utente dell’utent e quelli della rete sociale cui egli vuole far parte. Nei passi 3 e 5 del protocollo vengono utilizzati utilizzat rispettivamente il primo ed il secondo algoritmo dello SME; la prima volta viene ene controllata la compatibilità dell’utente con la località del manager, mentre la seconda volta vengono confrontati i gusti dell’utente con quelli del manager. Se entrambi i controlli danno esito positivo allora l’utente può far parte della rete sociale. In caso di esito positivo il PM comunica al PSNM l’inserimento del nuovo utente nella rete specificandone anche il PID e la porzione del suo UserProfile (chiamato UMP, UserMatchingProfile). Il PM cerca di garantire una certa qualità di servizio mettendo a disposizione disposizio altre due funzionalità automatiche. In primo luogo vengono ridotte al minimo le comunicazioni non necessarie. Mediante la global social network vengono memorizzate tutte le informazioni degli utenti incontrati; se l’utente indicato dal LPM è già stato incontrato precedentemente si cerca di usare il profilo UMP memorizzato, evitando così un nuovo protocollo. Figura 7: Protocollo PM 1) Il PM-Manager Manager viene informato dall'LPM-Manager dall'LPM dell'arrivo del nuovo utente User. 2) il PM-Manager invia al PM-User User il PlaceProfile della propria località. 3) il PM-User User riceve il PP e, mediante il primo algoritmo dello SME, determina la porzione del proprio UserProfile compatibile col PP (questa porzione è chiamata UserMatchingProfile - UMP). 4) il PM-User invia il UMP al PM-Manager. Manager. 5) il PM-Manager Manager riceve il UMP e determina se l'utente può entrare nella sua rete sociale mediante il secondo algoritmo dello SME ed il DiscoveryProfile. 6) il PM-Manager invia al PM-User User il responso del protocollo e, nel caso di risposta positiva, comunica l’ingresso al PSNM Lo SME ricopre un ruolo molto importante nel protocollo di inserimento; i due algoritmi presentati L’altra funzionalità, invece, si concentra concent sulla possibilità di perdita dei messaggi da parte della rete mobile.. Per ogni nuovo protocollo viene memorizzato l’istante di inizio; se questo protocollo non termina oltre una data scadenza il protocollo viene automaticamente re-iniziato. iniziato. Caso di studio: io: Marketing Scenario Viral Per descrivere le capacità di SAMOA viene ora presentato un esempio di viral marketing. In questo caso di studio si ipotizzano vari negozi forniti di applicazioni SAMOA in grado di riconoscere i passanti interessati a certi prodotti; a questi utenti vengono inviati messaggii pubblicitari in modo da informarli di particolari promozioni. Gli Gl utenti poi, camminando per le vie del centro, passeranno le pubblicità ai partecipanti alle loro reti sociali. Di seguito viene presentata l’applicazione SONET basata sul middleware SAMOA, poi verranno elencate elencat le entità partecipanti al caso di studio ed infine verranno mostrate le varie interazioni tra gli utenti. L’applicazione SONET Una delle principali caratteristiche di SAMOA consiste nella facile prototipazione di applicazioni per il social networking. SONET è un’applicazione costruita sul middleware SAMOA pensata per i dispositivi portatili wireless. Gli utenti, camminando per le vie del centro, possono entrare nelle nell reti sociali di altri manager oppure riconoscere nuovi partecipanti alle proprie reti. L’applicazione ha anche la capacità di registrare le pubblicità che vengono ricevute dai negozi e che saranno poi consegnate ai propri “amici”, ovvero ai partecipanti delle proprie reti sociali. Le pubblicità sono inviate da altre istanze di SONET mediante una particolare configurazione. configura “ handbook Pubblicità: Promozione sul libro “The of mobile middleware”. ClothesShop:: venditore di vestiti; vestiti interessato a tutti gli utenti che intendono acquistare stivali senza spendere più di 100 €. Pubblicità:: Promozione sui nuovi stivali in vendita. Utenti: Nome:: Ernest Hemingway Interessi:: lettura libri del tipo “Computer Science” Rete Sociale:: interessato a tutti gli utenti che amano la lettura Nome: Umberto Nobile Interessi:: lettura libri del tipo “Computer Science” ed acquisto stivali con prezzo non superiore ai 90 €. Rete Sociale:: interessato a tutti gli utenti che amano la lettura e gli stivali. Nome:: Antonino Zichichi Interessi: lettura dei giornali e acquisto magliette. Rete Sociale:: interessato a tutti gli utenti che amano la lettura ed i vestiti. Figura 8: SONET Entità del caso di studio Per mostrare tutte le capacità semantiche del middleware, sono stati previsti vari partecipanti, ognuno con le sue caratteristiche e preferenze: Negozi: BookShop: libreria del centro;; la promozione riguarda tutti gli utenti che sono interessati alla lettura dei libri del tipo “ComputerScience”. Interazioni tra gli utenti In questo caso di studio sono presenti, contemporaneamente, 5 reti sociali. Ogni utente crea una propria rete sociale riguardante riguarda i propri interessi e le proprie preferenze. Ipotizzando un centro di ritrovo, come ad esempio un bar, tutti e tre gli utenti di questo caso di studio entreranno nelle reti sociali degli altri e potranno conoscersi o anche semplicemente cemente accorgersi che un “vecchio amico è in zona”. Quando un utente, come ad esempio il nostro Ernest Hemingway, si avvicina ad un negozio, negozio può entrare a far parte della rete sociale del negozio stesso. Questo avviene ad esempio quando Ernest si avvicina alla libreria,, al contrario non accade nulla quando invece si avvicina al negozio di vestiti. L’analisi semantica dei profili viene eseguita da entrambe le entità; sia utente-manager utente che negoziomanager analizzano i profili dell’altra entità e decidono se accettarla o meno nella propria rete sociale. Tenendo Ernest e libreria come entità esempio, si ha che Ernest entra nella rete sociale della libreria, ma non viceversa. Conseguenza dell’ingresso di Ernest nella rete della libreria è l’invio della pubblicità informativa riguardante il libro di Computer Science. Il caso prevede anche un effetto “viral” della pubblicità. Ernest infatti memorizza la pubblicità per un certo determinato periodo di tempo, all’interno del quale ogni utente che entra a far parte della rete sociale di Ernest (quindi tutti gli utenti interessati alla lettura) riceverà tale pubblicità (a meno che non sia già stata ricevuta precedentemente). Un caso simile avviene anche tra il nostro Umberto Nobile ed il negozio di vestiti. Anch’egli riceverà la pubblicità del negozio a cui si riferisce e la trasporterà per consegnarla a tutti i partecipanti della sua rete sociale. Solamente Antonino non rientra nelle reti sociali di alcun negozio a causa delle sue preferenze sia in fatto di lettura, che in fatto di vestiti preferiti. Come detto prima, la ricezione della pubblicità non avviene solo dai negozi, ma anche attraverso i partecipanti delle proprie reti sociali. Antonino infatti potrebbe ricevere informazioni sui libri o sugli stivali attraverso gli altri utenti del caso di studio. Conclusioni Il progetto presentato in questa relazione riguarda SAMOA, un middleware pensato per facilitare la prototipazione di applicazioni per il social network computing. Il middleware è stato realizzato usando un’architettura a livelli, ogni livello è composto dai vari servizi che permettono all’applicazione di comunicare alle altre entità e di gestire la rete sociale in modo semplice ed immediato. Attualmente il servizio SME, il motore semantico, è in fase prototipale, la versione trattata in questa relazione tenta di sostituire questa mancanza con un motore sintattico. Sono in corso d’opera ulteriori miglioramenti e sviluppi nel middleware, come ad esempio garantire una migliore qualità di comunicazione oppure aumentare il numero di servizi messi a disposizione dell’applicazione.