Dottorato di Ricerca in Ingegneria dell’Informazione
XX Ciclo
Quitadamo Raffaele
Curriculum:
Informatica
Titolo della Ricerca da svolgere:
Paradigmi e tecniche per l’ingegnerizzazione di sistemi ad agenti
Paradigms and techniques for the engineering of agent systems
Tutor:
prof.ssa Letizia Leonardi
Breve descrizione dell’attività di ricerca svolta
Durante il suo primo anno di dottorato, lo studente ha studiato i paradigmi per la mobilità del
codice, interessandosi in particolare del paradigma ad agenti mobili (MA). La progettazione di
applicazioni ad agenti mobili ha dimostrato in numerosi casi di essere una valida alternativa ai
modelli classici Object-Oriented o a quelli basati su componenti. Gli agenti mobili rivoluzionano il
concetto stesso di software in quanto riescono a offrire grande flessibilità nel modo di fornire i
servizi su una rete locale o su Internet. Essi, infatti, possono agire per conto dell’utente finale,
interagendo con l’ambiente di esecuzione che li ospita e con altri agenti, superando il concetto di
“set statico di servizi”: un agente mobile si porta dietro i dati ed il codice (il know-how) necessario
per svolgere i suoi compiti, eseguendo sulle piattaforme in cui decide di migrare. Inoltre, il
paradigma ad agenti mobili consente di progettare applicazioni distribuite senza bisogno del
collegamento costante con l’utente (operazioni disconnesse), iniettandosi in reti con diversa
affidabilità e banda più o meno limitata e garantendo una migliore tolleranza ai guasti.
Nella prima parte dell’anno accademico, lo studente si è focalizzato su un tratto peculiare dei
sistemi ad agenti mobili: il supporto alla mobilità del codice. Tra i vari tipi di mobilità, quello più
diffuso è senz’altro il tipo debole, perché più semplice da implementare e meno costoso in termini
computazionali: un agente debole può spostarsi con il suo codice (i metodi delle classi che usa) e
alcuni dati intermedi, ma non può portare con sé lo stato di esecuzione (lo stack dei frame); quindi,
è costretto a ricominciare dal suo “entry point” ad ogni migrazione. Questo non è vero, invece, per i
sistemi ad agenti con mobilità forte, ove un agente è in grado di migrare in un certo punto del suo
codice, sospendendosi localmente e riprendendo l’esecuzione su un altro host dall’istruzione
successiva all’ultima eseguita. Un agente con la mobilità forte risulta di grande utilità in quelle
applicazioni distribuite, dove gli agenti svolgono calcoli complessi e possono spostarsi per propria
iniziativa (migrazione proattiva) oppure su comando di un agente “master” (migrazione reattiva), ad
esempio per esigenze di bilanciamento del carico tra processori in rete (si pensi alle nuove
frontiere del Grid Computing o del Pervasive Computing).
Concentrandosi sugli agenti mobili realizzati in Java, lo studente ha utilizzato la Java Virtual
Machine (JVM) JikesRVM, interessante progetto di ricerca dell’IBM Watson Research Center, per
implementare un framework per la mobilità dei thread Java. In questa prima fase implementativa,
tale JVM è stata estesa con un package di classi importabili dall’utente, senza interventi invasivi
sulla JVM stessa. Le classi implementate realizzano il concetto ambizioso di “thread Java mobile”,
in grado di rilocarsi dinamicamente da una istanza all’altra di JikesRVM, semplicemente invocando
un apposito metodo di migrazione (in questa prima fase, solo migrazione proattiva). Per realizzare
la migrazione e la cattura dello stack dei frame Java, lo studente ha studiato ed impiegato la
tecnica dell’OSR (On Stack Replacement), nota per le sue applicazioni nei compilatori JIT (Just In
Time) ottimizzati. Catturando lo stack con l’OSR è stato possibile ottenere, con overhead
notevolmente ridotti, una rappresentazione di flusso di esecuzione (thread) portabile tra varie
architetture hardware (PowerPC, IA32, IA64) e software (Linux, MacOS, AIX), in quanto espressa
tramite entità “bytecode-level” comprensibili a qualsiasi JVM fedele alle specifiche di SUN.
I test sul prototipo implementato e la conoscenza maturata della Virtual Machine JikesRVM, hanno
portato nella seconda parte dell’anno ad arricchire il concetto di mobilità forte, consentendo la
migrazione di gruppi sincronizzati di thread Java, oltre che di thread in possesso di lock su oggetti.
Si è incominciata, inoltre, a sperimentare con successo anche la migrazione reattiva, nella quale il
thread Java è soggetto ad una prelazione pseudo-forzata, con l’effetto di uscire dallo scheduler
della JVM e riprendere l’esecuzione su un’altra JVM nella rete. Tale supporto ha richiesto lo studio
delle politiche di scheduling di JikesRVM e la loro estensione per consentire l’interrompibilità del
flusso di esecuzione ai fini della rilocazione del thread.
Il lavoro implementativo di questa fase del primo anno ha portato ad alcune pubblicazioni
sull’argomento, alcune delle quali sottomesse verso la fine dell’anno e quindi ancora in revisione,
ed ha consentito di iniziare una fase successiva del lavoro: la realizzazione di una versione della
ben nota piattaforma ad agenti Aglets (prodotta dall’IBM ed ora progetto Open-Source)
equipaggiata con il supporto alla mobilità forte realizzato per JikesRVM.
Infine, alla luce della crescente diffusione della piattaforma Microsoft .NET, lo studente sta
percorrendo uno studio del CLR (Common Language Runtime) di .NET, quale virtual machine
ispirata alla JVM di SUN. Oltre alla partecipazione a conferenze sull’argomento, lo studente sta
maturando esperienza con questa innovativa piattaforma, partecipando tra l’altro allo sviluppo di
una applicazione di e-commerce per palmari, utilizzando la versione Compact del framework
Microsoft e programmando in C#. In tale applicazione, si fa uso delle TAPI (Telephony API) di
Windows CE .NET per trasmettere dati tra una coppia di modem GSM.
Attività prevista per il 2006
Nel suo secondo anno di dottorato, lo studente intende, innanzitutto, proseguire e migliorare il
lavoro sulla mobilità forte realizzato, con l’obiettivo di valutare i vantaggi e gli svantaggi che offre
tale tipo di mobilità. Inoltre, partecipando al progetto europeo CASCADAS (appena avviato), si
concentrerà sui tema del service-oriented computing (SOC) e dei servizi di comunicazione
autonomici, in grado di spostarsi tra reti eterogenee, auto-organizzarsi e adattarsi al contesto in cui
sono collocati.
Partecipazioni a progetti nazionali ed internazionali:
Lo studente ha partecipato al seguente progette:
 IS-MANET: Infrastrutture per reti ad-hoc mobili, progetto CNR-MIUR, anni 2003-2005.
Partecipazioni a congressi e workshop internazionali e nazionali (per presentazione lavori):
Lo studente ha presentato un lavoro al seguente workshop:
 WOA 2005, Simulazione e Analisi Formale di Sistemi Complessi, 14 novembre - 16
novembre 2005, Camerino, Italy.
Partecipazioni a congressi e scuole internazionali e nazionali (per studio-approfondimento):
Lo studente ha partecipato ai seguenti eventi per motivi di studio-approfondimento:
 .NET Technologies 2005, 3rd International Conference, University of West Bohemia, Plzen,
Czech Republic, May 30 - June 1, 2005
 “Mobile Agents for Mobile Ubiquitous Computing”, Ichiro Satoh, seminario svoltosi presso il
Dip. di Elettronica, Informatica e Sistemistica dell’Università degli Studi di Bologna, 24
Giugno 2005



“Constructing Agent Systems”, Marcin Paprzycky. Seminario svoltosi presso il Dip. di
Matematica Pura ed Applicata dell’Università di Modena e Reggio Emilia, 6 Aprile 2005
European Agent Systems Summer School (EASSS) scuola estiva sui sistemi ad agenti,
Utrecht, the Netherlands, 18 - 22 July 2005
Migration & Interoperability, Workshop su .NET e interoperabilità con Java e i sistemi
legacy, Microsoft Italia, Segrate (MI), 12-13 Ottobre 2005
Attività didattica:
Nel corso dell’anno 2005 il dottorando ha svolto le seguenti attività didattiche:
 Marzo 2005: Seminario per il corso di Sistemi Software Distribuiti dal titolo “La mobilità forte
di un thread Java”
 Settembre-Dicembre 2005: esercitazioni per il corso di Principi di Sistemi Operativi, laurea
specialistica in Ingegneria Informatica;
 Ottobre 2005: Seminario sulla programmazione concorrente in Java: implementazione del
concetto di thread, gestione dei thread, sincronizzazione dei thread ed esempi;
 Dicembre 2005: Seminario di dipartimento dal titolo Il linguaggio C# e la filosofia della
piattaforma Microsoft .NET
Pubblicazioni scientifiche (suddivise per riviste internazionali, capitoli di libri, conferenze e
workshop nazionali ed internazionali, rapporti tecnici):
Conferenze e workshop:
 G. Cabri, L. Ferrari, L. Leonardi, R. Quitadamo, “Improving Aglets with Strong Agent
Mobility through the IBM JikesRVM”, in the Proceeding of WOA 2005, Simulazione e
Analisi Formale di Sistemi Complessi, November 2005, Camerino, Italy.

G. Cabri, L. Ferrari, L. Leonardi, R. Quitadamo, “Strong Agent Mobility for Aglets based on
the IBM JikesRVM”, to appear in the Proceedings of the 21st Annual ACM Symposium on
Applied Computing (SAC), Dijon, France, April 23 -27, 2006

G. Cabri, L. Ferrari, L. Leonardi, R. Quitadamo, “Enabling Mobile Computing on the IBM
Jikes Research Virtual Machine”, submitted to The Fourth International Conference on
Mobile Systems, Applications, and Services (MobiSys 2006), Uppsala, Sweden, June 1922 2006.
Indirizzo di e-mail:
[email protected]
Indirizzo sito web:
http://www.agentgroup.ing.unimo.it/didattica/curriculum/raffaele/