MINISTERO DELL'ISTRUZIONE DELL'UNIVERSIT└ E DELLA RICERCA

RELAZIONE ANNUALE

RESPONSABILE UNIT└ DI RICERCA

Anno 2001 - prot. 2001017253_002





Responsabile Scientifico dell'UnitÓ di Ricerca:  MOGGI Eugenio 
UniversitÓ  Universita' degli Studi di GENOVA 
Quota Cofinanziamento MIUR  81.000.000 
(41.833 Euro)
 
Quota Cofinanziamento ATENEO  35.000.000 
(18.076 Euro)
 
Totale finanziamento  116.000.000 
(59.909 Euro)
 



Illustrazione dell'attivitÓ svolta

Nel primo anno si sono svolte le seguenti attivita'

Guardiani e tool linguistici per l'applicazione di politiche di sicurezza (Firenze/Pisa/Genova, TEMA1, ANNO1).

In [FMP02a] proponiamo un modo per estendere calcoli basati su ambienti, che presentano due principi: un ambiente e' un'unita' di monitoraggio e coordinamento, il nome di un ambiente determina la sua politica (di monitoraggio e coordinamento). Piu' in particolare, ad ogni ambiente e' associato un guardiano, che controlla le attivita' delle sotto-componenti (ovvero di processi e sotto-ambienti) e l'interazione con l'ambiente esterno. Nella nostra proposta, guardiani e processi hanno un ruolo duale: i guardiani sono entita' centralizzate che controllano ed inibiscono azioni, mentre i processi sono entita' decentralizzate che eseguono azioni. Infine si esemplifica l'uso di guardiani per garantire proprieta' di sicurezza.

Estensione di KLAIM con costrutti higher order e con primitive di programmazione multi-stage (Firenze/Pisa/Genova, TEMA2, ANNO2).

In [FMP02b] proponiamo un calcolo che tratta gli aspetti spaziali e terporali della programmazione WAN, cosi' come la necessita' di interoperare con componenti potenzialmente inaffidabili. MetaKlaim rappresenta un tentativo (il primo a nostra conoscenza) di affrontare questi aspetti in modo coerente, e dovrebbe preparare la strada per proposte piu' elaborate (per esempio l'incorporazione di ambienti mobili e di type system piu' accurati). MetaKlaim e' un calcolo higher-order di processi distribuiti arricchito con meccanismi di staging, che integra MetaML e Klaim. Esso permette l'interleaving di attivita' di meta-programmazione (come l'assemblaggio e il linking di frammenti di codice), type checking dinamico ai confini amministrativi, e di attivita' di normale computazione su wide area network (come la comunicazione remota e la mobilita' del codice). MetaKlaim sfrutta un potente type system (che comprende tipi polimorfi alla system F) per trattare componenti mobili altamente parametrizzate e per far rispettare dinamicamente le politiche di sicurezza: i tipi sono metadati estratti dal codice a run-time e usati per esprimere garanzie di affidabilita'

Semantica per la programmazione multi-stage in presenza di effetti computazionali (Genova, TEMA3, ANNO1).

In [CMS02] affrontiamo il problema di combinare in modo sicuro effetti computazionali e programmazione multi-stage. Proponiamo un type system, che sfrutta una nozione di tipo chiuso, per controllare staticamente che un programma multi-stage imperativo non causi errori a run-time. L'approccio e' dimostrato formalmente per un linguaggio core, che combina costrutti multi-stage e reference stile ML, e costituisce un'estensione conservativa di un semplice sottoinsieme imperativo di SML.

In [MF02] forniamo comprensione piu' approfondita degli aspetti computazioni della programmazione multi-stage nel framework di un metalinguaggio con tipi computazionali e tipi codice (i tipi computazionali classificano termini che descrivono computazioni, mentre i tipi codice classificano termini che rappresentano altri termini), e descrivendo la semantica operazionale in termini di due aspetti ortogonali: semplificazione locale (indipendenti dagli effetti computazionali) e computazione (che puo' causare effetti computazionali). Questo framework fornisce un approccio generale per aggiungere lo staging ad un linguaggio di programmazione (descritto in uno stile monadico), includendo un metalinguaggio multi-linguistico, dove una varieta' di monadi (linguaggi di programmazione) coesistono. In questo framework si puo' anche avere una nuova visione degli aspetti di tipaggio.

Modeling separate compilation with an application to Java (Genova, TEMA3, ANNO1).

In [ALZ02a] abbiamo sviluppato un modello generale per la compilazione separata di linguaggi orientati agli oggetti (tipo Java) che ha permesso di evidenziare alcune anomalie nel compilatore standard di Java che non garantisce alcune buone proprieta`, come ad esempio assenza di errori di linking, se non sotto l'ipotesi troppo limitativa di ricompilare l'intero programma ogni volta che viene modificato. Al fine di risolvere tali anomalie in [ALZ02b] e' stato definito un sistema di tipi piu` raffinato che permette di evitare la propagazione della ricompilazione all'intero programma.

Translation of a Java-like language supporting dynamic object reconfiguration into pure Java (Genova/Torino, TEMA3, ANNO1).

In [AADDGZ02b] la traduzione da Fickle a Java (definita in [AADDGZ02]) e' stata generalizzata ed estesa a FickleII ed e` stato provato che essa preserva la semantica statica e dinamica del linguaggio.

Translation of Java extensions in plain Java (Torino/Genova, TEMA5, ANNO1).

E' stato realizzato un prototipo di compilatore basato sul sistema di tipo. in [ALZ02b], che permette di evitare la propagazione della ricompilazione all'intero programma.

E` stato sviluppato un prototipo di traduttore da Fickle a Java basato sulla traduzione definita in [AADDGZ02].


Compiler/Interpreter supporting reflection (Genova, TEMA5, ANNO2).

Abbiamo Implementato un middleware riflessivo (mChaRM) [Caz02]. mChaRM permette di astrarre aspetti non funzionali legati alle comunicazioni da quelli funzionali dell'applicazione aprendo il meccanismo di RMI proprio di Java. Abbiamo inoltre sviluppato un meccanismo per il supporto di gruppi di oggetti [2,3] in Java ed esteso il classico RMI per gestire comunicazioni multi-punto. ╚ in corso l'integrazione di mChaRM con il nostro meccanismo di gestione di gruppi di oggetti.

Abbimo fatto uso di architetture riflessive nell'evoluzione di sistemi software critici. L'architettura riflessiva permette di separare il motore evolutivo (meta-livello) dall'applicazione vera e propria. Compito del meta-livello sarÓ quello di rilevare eventuali problemi non previsti, definire la strategia di intervento ed infine intervenire in modo indolore sull'attivitÓ del sistema critico [CGS02a,CCGS02].

Infine abbiamo affrontato lo sviluppo ed implementazione di un linguaggio di programmazione intrinsecamente riflessivo. L'idea Ŕ quella di sviluppare un linguaggio di programmazione e relativo ambiente di sviluppo (interprete/compilatore) che sia intrinsicamente rifelssivo, cioŔ che non abbia particolari hook linguistici per il supporto della riflessione, bensý che la gestione delle azioni riflessive sia demandata al runtime system. Al momento abbiamo definito il linguaggio Io con le caratteristiche desiderare [AC02] e realizzato parte dell'interprete.

Software sviluppato nel progetto.


  1. middleware riflessivo (mChaRM)
  2. prototipo di compilatore Java basato un sistema di tipi piu` raffinato che permette di evitare la propagazione della ricompilazione all'intero programma
  3. prototipo di traduttore da Fickle a Java basato sulla traduzione definita in [AADDGZ02].


Pubblicazioni relative al progetto.. 6 Conf.Int., 2 WS.Int., 2 Riv.Int., 3 Tech.Rep.


  1. [ALZ02a] D.Ancona, G.Lagorio, E.Zucca, A Formal Framework for Java Separate Compilation, ECOOP'02.

  2. [ALZ02b] D.Ancona, G.Lagorio, E.Zucca, True Separate Compilation of Java Classes, PPDP'02.

  3. [AADDGZ02b] D.Ancona, C.Anderson, F.Damiani, S.Drossopoulou, P.Giannini, E.Zucca, Translating FickleII into FickleII^-, Rapporto Tecnico, Dicembre 2002.

  4. [AC02] M.Ancona, W.Cazzola. The Programming Language Io. Technical Report DISI-TR-04-02, DISI, UniversitÓ degli Studi di Genova, May 2002.

  5. [Caz02] W.Cazzola. mChaRM: Reflective Middleware with a Global View of Communications. IEEE Distributed System On-Line, 3(2), February 2002.

  6. [CACMS01] W.Cazzola, M.Ancona, F.Canepa, M.Mancini, and V.Siccardi. Shifting Up Java RMI from P2P to Multi-Point. Technical Report DISI-TR-01-13, DISI, UniversitÓ degli Studi di Genova, December 2001.

  7. [CACMS02] W.Cazzola, M.Ancona, F.Canepa, M.Mancini, and V.Siccardi. Enhancing Java to Support Object Groups. In Proceedings of the Third Conference on Recent Object-Oriented Trends (ROOTS'02), Bergen, Norway, on 17th-19th of April 2002.

  8. [CGS02] W.Cazzola, A.Ghoneim, G.Saake. Reflective Analysis and Design for Adapting Object Run-time Behavior. In Zohra BellahsŔne, Dilip Patel, and Colette Rolland, editors, Proceedings of the 8th International Conference on Object-Oriented Information Systems (OOIS'02), Lecture Notes in Computer Science 2425, pages 242--254, Montpellier, France, on 2nd-5th of September 2002. Springer-Verlag.

  9. [CCGS02] W.Cazzola, J.O.Coplien, A.Ghoneim, G.Saake. Framework Patterns for the Evolution of Nonstoppable Software Systems. In Kristian Elof S°reson and Pavel Hruby, editors, Proceedings of the 1st Nordic Conference on Pattern Languages of Programs (VikingPLoP'02), pages 266--283, H°jstrupgňrd, Helsing°r, Denmark, on 20th-22nd of September 2002.

  10. [CMS02] C.Calcagno, E.Moggi, T.Sheard, Closed Types for a Safe Imperative MetaML, Journal of Functional Programming, to appear

  11. [FMP02a] G.Ferrari, E.Moggi, R.Pugliese. Guardians for ambient-based monitoring. In V.Sassone, editor, F-WAN: Foundations of Wide Area Network Computing, number 66 in ENTCS. Elsevier Science, 2002.

  12. [FMP02b] G.Ferrari, E.Moggi, R.Pugliese. MetaKlaim: A type safe multi-stage language for global computing. submitted to MSCS, 2002.

  13. [MF02] E.Moggi, S.Fagorzi. A monadic multi-stage metalanguage. accepted to FOSSACS'03, 2002.


Altri riferimenti bibliografici.


  • [AADDGZ02] D.Ancona, C.Anderson, F.Damiani, S.Drossopoulou, P.Giannini, E.Zucca, A type preserving translation of Fickle into Java, workshop TOSCA, ENTCS'02.


Partecipazioni a conferenze internazionali.

ROOTS 2002, Bergen Norvegia: CazzolaW

VikingPLoP 2002, Helsing°r Danimarca: CazzolaW

PLI 2002, Pittsburgh PA USA: MoggiE, ZuccaE

ICALP and F-WAN 2002, Malaga Spain: MoggiE

ECOOP 2002, Malaga Spain: AnconaD




Schema riassuntivo dei fondi utilizzati (cifre spese o impegnate)

Voce di spesa  Spese indicate
nella rimodulazione 
Cifra spesa  Descrizione 
Materiale inventariabile  15.000 
(29.043.876 Lire)
 
14.563 
(28.197.731 Lire)
 
portatili e workstations 
Grandi Attrezzature       
Materiale di consumo  7.500 
(14.521.938 Lire)
 
2.830 
(5.479.611 Lire)
 
licenze SW, rimborso in conto ricerca 
Spese per calcolo ed elaborazione dati       
personale a contratto  10.000 
(19.362.584 Lire)
 
   
Servizi esterni       
Missioni  25.408 
(49.196.453 Lire)
 
6.764 
(13.096.852 Lire)
 
partecipazione a convegni e riunioni di progetto, collaborazioni scierntifiche 
Pubblicazioni       
Partecipazione / Organizzazione convegni  2.000 
(3.872.517 Lire)
 
   
Altro       
TOTALE 59.908 
(115.997.367 Lire)
 
24.157 
(46.774.194 Lire)
 
  



Data 30/12/2002 14:47