Sviluppo di un sistema multi-agente per la gestione di un calendario

   page       attach   
Cinzia La Morgia

Sempre più persone utilizzano il computer per gestire la propria agenda, in quanto i ritmi di lavoro odierni portano naturalmente a desiderare di mantenere organizzati i propri impegni con appositi strumenti di supporto. Tuttavia, la realtà degli applicativi per  ?calendari elettronici? è ancora in fase di evoluzione, sia dal punto di vista dell'usabilità (non sempre soddisfacente), sia dal punto di vista dell'architettura.
L?obiettivo di questa tesi è progettare una applicazione di calendario elettronico adottando il paradigma ad agenti come riferimento metodologico e architetturale. I vantaggi dell'approccio ad agenti si possono misurare nel confronto con le tecnologie precedenti e in particolare con la tecnologia ad oggetti che è stata per lungo tempo il metodo preponderante di programmazione.
Il paradigma ad oggetti si è rivelato inadeguato in confronto alla complessità dei sistemi moderni. Le relazioni fra gli oggetti si limitano all?utilizzo e alla semplice gerarchia, mentre nella realtà le entità del sistema danno vita a diverse relazioni e dipendenze dinamiche, interagiscono tra loro e necessitano di un supporto per  la coordinazione. Dagli oggetti, entità passive dotate di stato, che si attivano tramite un?invocazione di metodo, si è passati agli agenti, entità dotate di stato e comportamento. Un agente è considerato come una particolare entità software in grado di agire in modo autonomo prelevando informazioni dall?ambiente in cui si trova e capace di  prendere iniziative per soddisfare i propri obiettivi.
Strettamente correlato alla teoria degli agenti è il concetto di sistemi multi-agente: un insieme di agenti autonomi che interagiscono fra loro e con l?ambiente, per ottenere informazioni e per coordinare le loro attività. Nel momento in cui gli agenti vivono nel medesimo
contesto ambientale, comunicano e instaurano rapporti di interazione per raggiungere
degli obiettivi globali (effettuando attività competitive o cooperative) essi vengono
a creare una società di agenti. In un ambiente ?vivono? perciò sia agenti che società
di agenti. Le metodologie di progettazione orientate agli agenti vengono in aiuto
nella fase di ingegnerizzazione del sistema multi-agente, mettendone in evidenza,
tra l?altro, gli aspetti sociali. Sono uno strumento per specificare e realizzare
sistemi software basati su astrazioni di più alto livello rispetto a quelli messi a
disposizione dalle metodologie ad oggetti.
Come detto gli agenti non sono entità chiuse, ma  nascono per vivere e cooperare
con altri. Da qui nasce la necessità di infrastrutture che regolino  la comunicazione
e l?interazione fra le entità in gioco nel sistema (agenti, società, ambiente,ecc),
attraverso un ben preciso modello di coordinazione. Esse rappresentano un?astrazione
concettuale da poter sfruttare sia nell?analisi sia nella progettazione di sistemi
multi-agente. La maggior parte dei classici modelli di comunicazione e
sincronizzazione usati per lo sviluppo di sistemi (comunicazione diretta)
non separano l?interazione dalla computazione. In un sistema multi-agente,
questo approccio renderebbe la progettazione del sistema assai complessa.
Modelli di coordinazione come il modello a lavagna o lo spazio di tuple forniscono
invece un?astrazione di comunicazione condivisa, intorno alla quale un sistema
multi-agente può essere realizzato in maniera più naturale.

La gestione di un calendario elettronico sarà trattata come caso di studio per
modellare un sistema multi-agente. Si cercherà di sviluppare un applicativo
calendario che migliori l?approccio con l?utente rispetto ad altri progetti
già esistenti. Il sistema vuole mettere a disposizione dell?utente funzionalità
e servizi essenziali, che soddisfano le aspettative principali. Non importa la
quantità dei servizi offerti, ma la qualità. Per il formato dei calendari si è scelto
di adottare e supportare lo standard iCalendar (iCal), perfezionato della IETF
per la presentazione e condivisione di calendari anche attraverso Internet.
Un passo obbligato visto che è da tempo lo standard più utilizzato in questo ambito.
Come metodologia orientata agli agenti si è deciso di usare SODA, ideata per
l?analisi e la progettazione di società ad agenti. SODA propone la separazione
tra problemi sociali ed individuali sin dalle prime fasi dell?analisi, inoltre si
concentra sugli aspetti sociali (aspetti inter-agente) attraverso l?utilizzo di
modelli e tecnologie di coordinazione. Come infrastruttura di coordinazione si userà
TuCSoN, sviluppato dal Dipartimento di Elettronica Informatica e Sistemistica  
(DEIS) dell?Università di Bologna, progettato per servire la comunicazione e la
coordinazione nei sistemi di agenti distribuiti. Grazie a questa infrastruttura,
possiamo non solo progettare il nostro sistema in astratto ma anche costruire un
prototipo, che ci permetterà di mettere concretamente alla prova il paradigma ad
agenti e di valutarne in particolare il grado di portabilità, flessibilità e
scalabilità.
Nel primo capitolo analizzeremo due applicativi calendario rappresentativi dello stato dell?arte attuale, descrivendone caratteristiche e servizi supportati, per poi passare a una spiegazione accurata dello standard iCal. Nel secondo capitolo introdurremo il modello ad agenti, le caratteristiche e le tipologie di agente che si possono individuare, definiremo che cos?è una società di agenti, l?ambiente in cui gli agenti ?vivono? e i modelli di coordinazione che si prestano per l?analisi delle relazioni nelle società di agenti. Nel terzo capitolo spiegheremo in dettaglio la metodologia SODA e l?infrastruttura TuCSoN, con particolare attenzione agli aspetti che interessano maggiormente la progettazione del nostro sistema. Nel quarto capitolo redigeremo una pianificazione accurata del nostro progetto, analizzando le specifiche e i requisiti del programma; saranno quindi pianificati dei casi d?uso, che mostrano le interazioni dell?utente con l?interfaccia e le modalità di utilizzo del programma. Nel quinto capitolo, procederemo con il definire i modelli di analisi e di progettazione seguendo la metodologia SODA, il modello della persistenza dati del sistema e degli esempi di interfacce grafiche di cui sarà composta l?applicazione. Nel sesto capitolo infine vengono riportati tutti i dettagli implementativi e le decisione intraprese durante la stesura vera e propria in linguaggio Java dell?applicativo calendario.