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/