02.03.2015 Views

Modello B - Università degli Studi di Genova

Modello B - Università degli Studi di Genova

Modello B - Università degli Studi di Genova

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

MINISTERO DELL'ISTRUZIONE DELL'UNIVERSITÀ E DELLA RICERCA<br />

DIREZIONE GENERALE DELLA RICERCA<br />

PROGRAMMI DI RICERCA SCIENTIFICA DI RILEVANTE INTERESSE NAZIONALE<br />

RICHIESTA DI COFINANZIAMENTO (DM n. 1407 del 4 <strong>di</strong>cembre 2008)<br />

PROGETTO DI UNITÀ DI RICERCA - MODELLO B<br />

Anno 2008 - prot. 2008YY33BS_004<br />

1 - Area Scientifico-<strong>di</strong>sciplinare<br />

01: Scienze matematiche e informatiche 100%<br />

2 - Coor<strong>di</strong>natore Scientifico<br />

ZUCCA<br />

ELENA<br />

Professore Associato confermato<br />

<strong>Università</strong> <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> GENOVA<br />

Facoltà <strong>di</strong> SCIENZE MATEMATICHE FISICHE e NATURALI<br />

Dipartimento <strong>di</strong> INFORMATICA E SCIENZE DELL'INFORMAZIONE<br />

3 - Responsabile dell'Unità <strong>di</strong> Ricerca<br />

CAZZOLA<br />

WALTER<br />

Ricercatore confermato 25/07/1969 CZZWTR69L25D969S<br />

<strong>Università</strong> <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> MILANO<br />

Dipartimento <strong>di</strong> INFORMATICA E COMUNICAZIONE<br />

02 503 16300<br />

(Prefisso e telefono)<br />

(Numero fax)<br />

cazzola@<strong>di</strong>co.unimi.it<br />

4 - Curriculum scientifico<br />

Testo italiano<br />

Walter Cazzola è Ricercatore presso l'<strong>Università</strong> <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> Milano dal 30 Dicembre del 2002. In precedenza è stato assegnista presso l'<strong>Università</strong> <strong>di</strong> <strong>Genova</strong><br />

(2001-2002) ed ha conseguito il titolo <strong>di</strong> dottore <strong>di</strong> ricerca presso l'<strong>Università</strong> <strong>di</strong> Milano (Febbraio 2001).<br />

Walter Cazzola è autore <strong>di</strong> più <strong>di</strong> 50 articoli pubblicati su riviste e conferenze internazionali; è stato membro <strong>di</strong> comitati <strong>di</strong> programma <strong>di</strong> workshop e conferenze<br />

internazionali, recentemente per RAM-SE (Reflection, AOP and Meta-Data for Software Evolution) 2004, 2005, 2006, 2007 e 2008; ha curato il libro "Reflection and<br />

Software Engineering" pubblicato da Springer nel 1999 ed è stato curatore del numero speciale della rivista "Transaction on aspect-oriented software development"<br />

de<strong>di</strong>cata all'evoluzione del software.<br />

Ha partecipato a <strong>di</strong>versi progetti <strong>di</strong> ricerca nazionali ed internazionali; in particolare è stato responsabile scientifico per il progetto RAMSES (Reflective and<br />

Adaptive Middleware for Software Evolution of Nonstopping Systems) e RAMSES-II (proseguimento del progetto RAMSES) finanziati dal Deutsche<br />

Forschungsgemeinschaft (Fondazione Tedesca per la Ricerca).<br />

Interessi <strong>di</strong> ricerca: programmazione e sviluppo object- e aspect-oriented, riflessione computazionale, implementazione <strong>di</strong> linguaggi ed evoluzione del software.<br />

Testo inglese<br />

Walter Cazzola is an Assistant Professor at the University of Milano since the 30th of December 2002. Previously, he was a research fellow at the University of<br />

<strong>Genova</strong> (2001-2002); he has taken his PhD in Informatics from the University of Milano (February 2001).<br />

Walter Cazzola has written more than 50 papers in international journals and conferences; he has served as program committee and organizing member for several<br />

international conferences and workshops (recently for RAM-SE -- Reflection, AOP and Meta-Data for Software Evolution -- 2004, 2005, 2006, 2007 and 2008); he<br />

has coe<strong>di</strong>ted the book "Reflection and Software Engineering" published by Springer in 1999 and he is the co-e<strong>di</strong>tor of the special issue on software evolution of the<br />

journal "Transaction on aspect-oriented software development".<br />

He has participated in several international and national research projects; in particular he was the scientific coor<strong>di</strong>nator of the RAMSES (Reflective and Adaptive<br />

Middleware for Software Evolution of Nonstopping Systems) and RAMSES-II (RAMSES follow-up) projects funded by the Deutsche Forschungsgemeinschaft (German<br />

Research Foundation).<br />

Current research interests: object- and aspect-oriented programming and software development, computational reflection, compilers and software evolution.<br />

MIUR - BANDO 2008 - MODELLO B - 1 -


Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

5 - Pubblicazioni scientifiche più significative del Responsabile dell'Unità <strong>di</strong> Ricerca<br />

1. CAPRA L, CAZZOLA W. (2008). Evolutionary Design through Reflective Petri Nets: an Application to Workflow. In: Procee<strong>di</strong>ngs of the IASTED International<br />

Conference on Software Engineering (SE'08). Innsbruck, Austria, February 2008<br />

2. CAZZOLA W., Alessandro Marchetto (2008). AOP-->HiddenMetrics: Separation, Extensibility and Adaptability in SW Measurement. JOURNAL OF OBJECT<br />

TECHNOLOGY, vol. 7; p. 53-68, ISSN: 1660-1769<br />

3. E. Figueiredo, C. Sant'Anna, A. Garcia, T. T. Bartolomei, CAZZOLA W., A. Marchetto (2008). On the Maintainability of Aspect-Oriented Software: A<br />

Concern-Oriented Measurement Framework. CSMR 2008 : 12TH EUROPEAN CONFERENCE ON SOFTWARE MAINTENANCE AND REENGINEERING :<br />

DEVELOPING EVOLVABLE SYSTEMS : APRIL 1&#x2013;4, 2008, ATHENS, GREECE /. p. 183-192IEEE, ISBN/ISSN: 9781424421572, doi:<br />

10.1109/CSMR.2008.4493313<br />

4. CAPRA L, CAZZOLA W. (2007). A Reflective PN-based Approach to Dynamic Workflow Change. In: Procee<strong>di</strong>ngs of the 9th International Symposium in<br />

Symbolic and Numeric Algorithms for Scientific Computing (SYNASC'07). Timisoara, Romania, September 2007IEEE, p. 533-540<br />

5. CAPRA L, CAZZOLA W. (2007). Self-Evolving Petri Nets. JOURNAL OF UNIVERSAL COMPUTER SCIENCE, vol. 13; p. 2002-2034, ISSN: 0948-6968<br />

6. CAZZOLA W., PINI S (2007). AOP vs Software Evolution: a Score in Favor of the Blueprint. In: Procee<strong>di</strong>ngs of the 4th ECOOP Workshop on Reflection, AOP<br />

and Meta-Data for Software Evolution (RAM-SE'07). Berlin, Germany, July 2007, p. 81-91<br />

7. CAZZOLA W., PINI S (2007). On the Footprints of Join Points: The Blueprint Approach. JOURNAL OF OBJECT TECHNOLOGY, vol. 6; p. 167-192, ISSN:<br />

1660-1769<br />

8. CAZZOLA W., PINI S, GHONEIM A, SAAKE G (2007). Co-Evolving Application Code and Design Models by Exploiting Meta-Data. In: Procee<strong>di</strong>ngs of the<br />

12th Annual ACM Symposium on Applied Computing (SAC'07). Seoul, South Korea, March 2007ACM, p. 1275-1279<br />

9. CAPRA L, CAZZOLA W. (2006). A Petri-Net Based Reflective Framework. DISCRETE MATHEMATICS AND THEORETICAL COMPUTER SCIENCE, vol.<br />

159; p. 41-59, ISSN: 1365-8050<br />

10. CAZZOLA W., GHONEIM A, SAAKE G (2006). Viewpoint for Maintaining UML Models against Application Changes. In: Procee<strong>di</strong>ngs of International<br />

Conference on Software and Data Technologies (ICSOFT 2006). Setúbal, Portugal, September 2006Springer, p. 263-268<br />

11. CAZZOLA W., PINI S (2006). Join Point Patterns: a High-Level Join Point Selection Mechanism. In: MoDELS'06 Satellite Events Procee<strong>di</strong>ngs. <strong>Genova</strong>, Italy,<br />

October 2006Springer, vol. 4364, p. 17-26<br />

12. CAPRA L, CAZZOLA W. (2005). A Petri-Net Based Reflective Framework. In: IPM International Workshop on Foundations of Software Engineering<br />

(FSEN'05), October 2005<br />

13. CAZZOLA W., CISTERNINO A., COLOMBO D. (2005). Freely Annotating C#. JOURNAL OF OBJECT TECHNOLOGY, vol. 4(10); p. 31-48, ISSN: 1660-1769<br />

14. CAZZOLA W., CISTERNINO A., COLOMBO D. (2005). [a]C#: C# with a Customizable Code Annotation Mechanism. In: Annual ACM Symposium on Applied<br />

Computing (SAC'05), March 2005, p. 1274-1278<br />

15. CAZZOLA W., PINI S, ANCONA M (2005). The Role of Design Information in Software Evolution. In: Procee<strong>di</strong>ngs of the 2nd ECOOP Workshop on Reflection,<br />

AOP and Meta-Data for Software Evolution (RAM-SE'05). Glasgow, Scotland, July 2005, p. 59-70<br />

16. CAZZOLA W., PINI S., ANCONA M. (2005). AOP for Software Evolution: A Design Oriented Approach. In: Annual ACM Symposium on Applied Computing<br />

(SAC'05), March 2005, p. 1356-1360<br />

17. CISTERNINO A, CAZZOLA W., COLOMBO D (2005). Metadata-Driven Library Design. In: Procee<strong>di</strong>ngs of Library-Centric Software Design Workshop<br />

(LCSD'05). San Diego, CA, USA, October 2005<br />

18. ANCONA M., CAZZOLA W. (2004). Implementing the Essence of Reflection: a Reflective Run-Time Environment. In: ACM Symposium on Applied Computing<br />

(SAC'04), p. 1503-1507<br />

19. CAZZOLA W. (2004). SmartMethod: an Efficient Replacement for Method. In: ACM Symposium on Applied Computing (SAC'04), p. 1305-1309<br />

20. CAZZOLA W. (2004). SmartReflection: Efficient Introspection in Java. JOURNAL OF OBJECT TECHNOLOGY, vol. 3(11); p. 117-132, ISSN: 1660-1769<br />

21. CAZZOLA W., GHONEIM A., SAAKE G. (2004). Software Evolution through Dynamic Adaptation of Its OO Design. In: EHRICH H.-D.; MEYER J.-J.; RYAN;<br />

M. D.. Objects, Agents and Features: Structuring Mechanisms for Contemporary Software. p. 69-84Springer<br />

22. CAZZOLA W., GHONEIM A., SAAKE G. (2004). System Evolution through Design Information Evolution: a Case Study. In: 13th International Conference on<br />

Intelligent and Adaptive Systems and Software Engineering, July, p. 145-150<br />

23. CAZZOLA W. (2003). Remote Method Invocation as a First-Class Citizen. DISTRIBUTED COMPUTING, vol. 16; p. 287-306, ISSN: 0178-2770<br />

6 - Elenco dei partecipanti all'Unità <strong>di</strong> Ricerca<br />

6.1 - Componenti<br />

Componenti della sede dell'Unità <strong>di</strong> Ricerca<br />

nº Cognome Nome <strong>Università</strong>/Ente Qualifica Disponibilità<br />

temporale<br />

in<strong>di</strong>cativa<br />

prevista<br />

1°<br />

anno<br />

2°<br />

anno<br />

1. CAPRA Lorenzo <strong>Università</strong> <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> MILANO Ricercatore confermato 8 8<br />

2. CAZZOLA Walter <strong>Università</strong> <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> MILANO Ricercatore confermato 6 6<br />

TOTALE 14 14<br />

MIUR - BANDO 2008 - MODELLO B - 2 -


Componenti <strong>di</strong> altre <strong>Università</strong> / Enti vigilati<br />

Nessuno<br />

Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

Titolari <strong>di</strong> assegni <strong>di</strong> ricerca<br />

Nessuno<br />

Titolari <strong>di</strong> borse<br />

Nessuno<br />

6.1 bis Vice-responsabile<br />

6.2 - Altro personale<br />

nº Cognome Nome <strong>Università</strong>/Ente Dipartimento Qualifica Disponibilità temporale<br />

in<strong>di</strong>cativa prevista<br />

1° anno 2° anno<br />

1. PUKALL MARIO <strong>Università</strong> <strong>di</strong> Magdeburg Dottorando 3 3<br />

TOTALE 3 3<br />

6.3 - Personale a contratto da destinare a questo specifico Progetto<br />

Nessuno<br />

6.4 - Dottorati a carico del PRIN da destinare a questo specifico Progetto<br />

nº Costo<br />

previsto<br />

Note<br />

1. 48.000 sulla tematica sviluppo composizionale <strong>di</strong><br />

linguaggi (sottotask 1.4)<br />

TOTALE 48.000<br />

7 - Titolo specifico del Progetto svolto dall'Unità <strong>di</strong> Ricerca<br />

Testo italiano<br />

Composizione ed Evoluzione <strong>di</strong> Sistemi ad Oggetti Avanzati<br />

Testo inglese<br />

Composition and Evolution for Advanced Object Systems<br />

8 - Abstract del Progetto svolto dall'Unità <strong>di</strong> Ricerca<br />

Testo italiano<br />

La maggior parte del lavoro che svolgerà l'unità <strong>di</strong> Milano riguarderà la progettazione e lo sviluppo <strong>di</strong> un framework che permetterà la progettazione <strong>di</strong> un nuovo<br />

linguaggio <strong>di</strong> programmazione come la composizione <strong>di</strong> costrutti provenienti dalla definizione <strong>di</strong> altri linguaggi <strong>di</strong> programmazione; inoltre permetterà <strong>di</strong> generare<br />

un compilatore ad hoc per la traduzione dei programmi scritti col nuovo linguaggio. Tale framework aiuterà anche le altre unità nel conseguimento dei propri<br />

obiettivi fornendole <strong>di</strong> uno strumento che semplifica lo sviluppo ed il testing delle idee che proporranno. Inoltre i ricercatori dell'unità contribuiranno sugli aspetti <strong>di</strong><br />

evoluzione e <strong>di</strong>stribuzione presenti nel progetto.<br />

La partecipazione dell'unità <strong>di</strong> Milano è <strong>di</strong> basilare importanza per il conseguimento <strong>degli</strong> obiettivi del progetto in quanto contribuirà con una pluriennale esperienza<br />

nella progettazione e lo sviluppo <strong>di</strong> linguaggi <strong>di</strong> programmazione orientata agli oggetti ed agli aspetti e riflessivi e sull'uso <strong>di</strong> tali linguaggi nell'ambito<br />

dell'evoluzione del software. Le caratteristiche più pragmatiche dei ricercatori dell'unità <strong>di</strong> Milano si complementano perfettamente con le abilità più teoriche dei<br />

colleghi delle unità <strong>di</strong> Firenze, <strong>Genova</strong> e Torino per ottenere gli obiettivi prefissati tramite una stretta collaborazione tra le unità. Tale collaborazione si è più volte<br />

<strong>di</strong>mostrata fruttuosa e è stata ulteriormente affinata grazie a <strong>di</strong>versi progetti sviluppati assieme.<br />

I contributi dell'unità sono riassunti <strong>di</strong> seguito.<br />

MIUR - BANDO 2008 - MODELLO B - 3 -


Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

SottoTask 1.3 Evoluzione e refactoring.<br />

Il lavoro dell'unità in questo sottotask si focalizza principalmente sul supporto dell'evoluzione e del refactoring sia a livello linguistico sia metodologico. I risultati<br />

attesi sono: i) l'implementazione <strong>di</strong> un linguaggio grafico per la programmazione ad aspetti (Blueprint [CP07b]) che dovrebbe risolvere il problema della fragilità<br />

dei pointcut a fronte dell'evoluzione del software; ii) definizione ed implementazione <strong>di</strong> un'estensione <strong>di</strong> AspectJ (@AspectJ) che sfrutta un più fine modello <strong>di</strong><br />

meta-dati per <strong>di</strong>saccoppiare la definizione dei pointcut dall'implementazione dell'applicazione per aumentare la robustezza dei pointcut in caso <strong>di</strong> evoluzione; iii)<br />

sviluppo <strong>di</strong> un framework per supportare l'evoluzione <strong>di</strong>namica e cambi allo schema <strong>di</strong> una classe durante l'esecuzione dell'applicazione senza mo<strong>di</strong>ficare la Java<br />

virtual machine e iv) sviluppo <strong>di</strong> un approccio semi-automatico all'aggiornamento della documentazione nel caso l'applicazione debba evolvere.<br />

SottoTask 1.4 Sviluppo composizionale <strong>di</strong> linguaggi.<br />

Il lavoro dell'unità in questo sottotask si focalizza principalmente sullo sviluppo <strong>di</strong> una metodologia per definire un linguaggio <strong>di</strong> programmazione come la<br />

composizione dei suoi componenti base; componenti che possono essere riusati dalla definizione <strong>di</strong> altri linguaggi. La metodologia che si intende investigare segue le<br />

idee date in [CS09]. Ogni costrutto sarà incapsulato in uno slice assieme ai dettagli necessari per realizzarne l'implementazione/valutazione. I risultati attesi sono: i)<br />

la definizione <strong>di</strong> un meccanismo per definire le componenti base del linguaggio che potranno essere selettivamente composte a formare un nuovo linguaggio; ii) lo<br />

sviluppo <strong>di</strong> un framework per generare compilatore ed interprete per i programmi scritti nel linguaggio risultato della composizione; e infine iii) l'applicazione del<br />

framework alla ridefinizione/implementazione <strong>di</strong> alcuni linguaggi <strong>di</strong> programmazione esistenti, come Java [GJSB05], Featherweight Java [IPW01] e Linda [CG89].<br />

Il lavoro in questo sottotask è condotto in collaborazione con l'unità <strong>di</strong> Torino.<br />

SottoTask 2.4 Mobilità ed evoluzione <strong>di</strong>namica<br />

Il lavoro svolto dall'unità in questo sottotask si focalizza principalmente sulle reti <strong>di</strong> Petri riflessive [CC06, CC07b], che l'unità ha sviluppato, e nella loro<br />

applicazione alla modellazione dell'evoluzione del struttura <strong>di</strong> una rete mobile. I risultati attesi sono: i) la definizione e lo sviluppo <strong>di</strong> un apposito calcolo per l'analisi<br />

strutturale e dello spazio <strong>degli</strong> stati delle reti <strong>di</strong> Petri riflessive; ii) l'implementazione <strong>di</strong> un simulatore per le reti <strong>di</strong> Petri riflessive derivata da strumenti esistenti; ed<br />

infine iii) l'uso delle reti <strong>di</strong> Petri riflessive e delle pianificate estensioni per modellare l'evoluzione reti mobili altamente mutevoli come le reti <strong>di</strong> sensori, allo scopo <strong>di</strong><br />

eseguire analisi <strong>di</strong> qualità e performance per algoritmi appropriate come quelli <strong>di</strong> gossiping [GPR08].<br />

Testo inglese<br />

Most of the efforts of the unit of Milan are about designing and developing a framework that will permit to design a programming language as the composition of<br />

programming features coming from other programming language definitions and to generate an ad hoc compiler for the just defined programming language. This<br />

framework will help to accomplish also the work of the other units provi<strong>di</strong>ng a tool to easily develop and test the proposed ideas. Secondary the researchers of the<br />

unit will be work on the evolution and <strong>di</strong>stribution topic.<br />

The participation of the unit of Milano is of basic importance in achieving project's objectives since they will contribute their plurennial experience on design and<br />

developing object-oriented, aspect-oriented and reflective programming languages and on their applications to software evolution. Such a more pragmatic<br />

competences are perfectly completed by the more theoretic skills from the units of Firenze, <strong>Genova</strong> and Torino to achieve the prefixed objectives with a tight<br />

collaborations among the units. The collaboration with the units has proved successful and tuned by the collaborations in previous common projects.<br />

The contributions of the unit is summarized below.<br />

SubTask 1.3 Evolution and refactoring.<br />

The work of this unit in this subtask mainly focuses on supporting evolution and refactoring at linguistic level and as a methodology. The expected results are: i) the<br />

implementation of a graphical aspect-oriented language (named Blueprint [CP07b]) that should solve the pointcut fragility against software evolution; ii) definition<br />

and implementation of an AspectJ extension (named @AspectJ) exploiting a finer model for meta-data used to decouple pointcut from application implementation in<br />

order to improve pointcut robustness against software evolution; iii) development of a framework to support dynamic evolution and schema changes during<br />

application execution in Java without changing its virtual machine and finally iv) development of a semi-automatic approach to documentation maintenance against<br />

software evolution.<br />

SubTask 1.4 Compositional language development.<br />

The work of the unit in this subtask mainly focuses on developing a methodology to define a programming language as the composition of its basic components;<br />

components that can be reused from other language definitions. The methodology we intend to investigate basically follows the ideas we have given in [CS09]. Each<br />

programming feature will be encapsulated in a slice together with the necessary details to realize its implementation/evaluation. The expected results are: i) the<br />

definition of a mechanism to define basic programming features that can be selectively composed to form a novel programming language; ii) the development of a<br />

framework to generate the compiler and interpreter for programs written in the programming language resulting from the composition; and finally iii) the application<br />

of the novel framework to the redefinition/implementation of some well-known programming languages, such as Java [GJSB05], Featherweight Java [IPW01] and<br />

Linda [CG89].<br />

The work in this subtask is carried out in collaboration with the unit of Torino.<br />

Task 2.4 Mobility and dynamic evolution<br />

The work of the unit in this subtask mainly focus on the reflective Petri net formalism [CC06,CC07b] we developed and in its application to model the evolution of the<br />

layout of a mobile network. The expected results are: i) the definition and development of an appropriate structural analysis and state space calculi for the reflective<br />

Petri nets formalism; ii) the implementation of a simulation engine for reflective Petri nets derived by existing tools; and finally iii) the use of the reflective Petri net<br />

formalism and of the planned extensions to model the evolution of highly mutable mobile networks, such as sensor networks, in order to carry out performance and<br />

quality analysis on appropriate algorithms, such as gossiping [GPR08].<br />

9 - Settori <strong>di</strong> ricerca ERC (European Research Council)<br />

PE Mathematics, physical sciences, information and communication, engineering, universe and earth sciences<br />

PE5 Information and communication: informatics and information systems,computer science, scientific computing, communication technology, intelligent<br />

systems<br />

PE5_16 Systems and software<br />

PE5_6 Informatics and information systems<br />

MIUR - BANDO 2008 - MODELLO B - 4 -


Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

10 - Parole chiave<br />

Testo italiano<br />

EVOLUZIONE DEL SOFTWARE<br />

COMPOSIZIONE DINAMICA<br />

Testo inglese<br />

SOFTWARE EVOLUTION<br />

DYNAMIC COMPOSITION<br />

11 - Stato dell'arte<br />

Testo italiano<br />

Il lavoro dell'unità <strong>di</strong> Milano riguarderà i Task 1 (Composizione) e 2 (Interazione e Distribuzione).<br />

Nel seguito vedremo lo stato dell'arte delle aree <strong>di</strong> ricerca collegate ai sottotask che ci vedono coinvolti, in particolare i lavori correnti che rappresenteranno il punto<br />

<strong>di</strong> partenza per la ricerca.<br />

Task 1 - Composizione<br />

SottoTask 1.3 Evoluzione e refactoring<br />

L'evoluzione del software è un argomento piuttosto attuale [MBZR03,Fel03,BR00,MWD+05]. Molte applicazioni devo essere aggiornate ed estese con nuove<br />

caratteristiche durante il loro ciclo <strong>di</strong> vita. L'evoluzione del software, come pure il suo mantenimento, è caratterizzata da un alto costo ed una lenta realizzazione.<br />

Tipicamente l'evoluzione ha luogo fermando l'esecuzione dell'applicazione, adattandolo e quin<strong>di</strong> facendola ripartire; questo processo, però, è non perseguibile<br />

quando il sistema è critico e non può essere fermato come nel caso del sistema per il controllo del traffico aereo.<br />

In generale, il modo giusto per affrontare l'evoluzione <strong>di</strong> un'applicazione durante l'esecuzione (evoluzione <strong>di</strong>namica) consiste nel i) posporre la pianificazione<br />

dell'evoluzione dalla progettazione all'esecuzione, ii) separare l'evoluzione dal co<strong>di</strong>ce dell'applicazione iii) (semi-)automatizzare l'evoluzione stessa. Sia la riflessione<br />

computazionale [Mae87] che la programmazione orientata agli aspetti [KHH+ 01] forniscono alcuni meccanismi per superare questi problemi.<br />

Alcuni middleware riflessivi e orientati agli aspetti [CSST99,Ran05,CSG06] sono stati investigati con l'intento <strong>di</strong> affrontare il problema dell'evoluzione <strong>di</strong>namica ma<br />

con successo limitato. Tali middleware si sono dovuti scontrare con il limitato supporto che hanno i sistemi <strong>di</strong> sviluppo nei confronti dei cambiamenti all'applicazione<br />

durante l'esecuzione, ad es., Java [GJSB05], similarmente agli altri linguaggi <strong>di</strong> programmazione principali, supporta solo cambiamenti al co<strong>di</strong>ce ma non allo<br />

schema della classe [PKS08], cioè, è possibile aggiungere istruzioni ad un metodo ma è impossibile aggiungere un metodo ad una classe impedendo <strong>di</strong> fatto <strong>di</strong>versi<br />

tipi <strong>di</strong> evoluzione.<br />

Anche l'evoluzione statica del co<strong>di</strong>ce ha <strong>di</strong>versi problemi: la documentazione tipicamente non evolve in accordo all'evoluzione del co<strong>di</strong>ce che documenta [CPG07],<br />

spesso è necessario cambiare co<strong>di</strong>ce che, apparentemente, non dovrebbe essere interessato dai cambiamenti rompendo la modularizzazione [KS04]. Sia le tecniche<br />

orientate agli oggetti che agli aspetti hanno <strong>di</strong>versi limiti nei confronti dell'evoluzione del software e dovrebbero essere migliorati.<br />

Lavoro corrente. Il gruppo <strong>di</strong> ricerca sta lavorando sull'evoluzione del software da <strong>di</strong>verso tempo ed ha iniziato ad affrontare tutti problemi riportati. In particolare<br />

si è progettato un approccio orientato agli aspetti alternativo (Blueprint) per affrontare il problema dell'evoluzione liberando la modularizzazione dalla sintassi dei<br />

moduli [CPA04, CPA05, CPA06, CP06, CP07a, CP07b]; analogamente, abbiamo esteso il modello dei meta-dati <strong>di</strong> Java e C# [CCC05b, CCC05a] (rispettivamente<br />

in @Java e [a]C#) per supportare annotazioni a grana fine che possono essere usati per co-evolvere co<strong>di</strong>ce e documentazione [CPGS07].<br />

SottoTask 1.4 - Sviluppo composizionale <strong>di</strong> linguaggi<br />

Linguaggi con dominio specifico (DSLs) sono usati per risolvere <strong>di</strong>versi problemi, come re<strong>di</strong>gere documenti, esprimere e verificare vincoli e coor<strong>di</strong>nare la<br />

computazione.<br />

In alcuni casi, si tratta solo <strong>di</strong> alcuni costrutti immersi un linguaggi <strong>di</strong> programmazione più generali o fornite come librerie. Ancor più spesso, si tratta <strong>di</strong> linguaggi <strong>di</strong><br />

programmazione <strong>di</strong> Turing completi devoti a scopi precisi. In entrambi i casi rimangono delle problematiche aperte: implementare e apprendere come usare un<br />

nuovo DSL richiede molto tempo; estendere un linguaggio esistente si rivela più semplice ma la flessibilità è spesso compromessa. Inoltre, in generale, è abbastanza<br />

<strong>di</strong>fficile adattare un DSL esistente alle necessità <strong>di</strong> un problema da risolvere o far coesistere costrutti che arrivano da DSL <strong>di</strong>versi in un unico linguaggio.<br />

Provare nuove idee nell'area dei linguaggi <strong>di</strong> programmazione consiste nella definizione/implementazione <strong>di</strong> un DSL a partire da un linguaggio <strong>di</strong> programmazione<br />

esistente via tecniche <strong>di</strong> prototipizzazione rapida (OpenJava [CTKI00] e Javassist [Chi00]). Da un lato questo approccio permette <strong>di</strong> focalizzarsi<br />

sull'implementazione dell'idea dall'altro lato permette <strong>di</strong> estendere un linguaggio con nuovi costrutti ma non permette <strong>di</strong> riusare costrutti provenienti da altri<br />

linguaggi.<br />

I problemi derivano dal classico approccio monolitico [ASU86] sono orientati alle grammatiche normalmente adottato per sviluppare un linguaggio. Le grammatiche<br />

descrivono la sintassi del linguaggio e come un programma scritto in quel linguaggio dovrebbe essere tradotto. Nonostante il processo <strong>di</strong> compilazione sia <strong>di</strong>viso in<br />

fasi, la definizione del linguaggio non lo è, questo, a nostro avviso, è l'ostacolo principale per rendere un linguaggio facilmente esten<strong>di</strong>bile.<br />

Alcuni tentativi per rendere la definizione <strong>di</strong> un linguaggio e la sua implementazione modulari sono stati fatti: Ziggurat [FS06], Linglet Transformation System<br />

[Cle07], Polyglot [NCM03] e JastAdd [EH07]; ma la modularità offerta è limitata e spesso si riferisce esclusivamente alla definizione del linguaggio e non alla sua<br />

implementazione.<br />

Lavoro corrente. In [CS09], è stato presentato un approccio alternativo (Hive) alla specifica e implementazione modulare <strong>di</strong> DSL. Hive sfrutta l'idea <strong>di</strong><br />

decomposizione introdotta da HyperJ [OT01] per scomporre in moduli la definizione e implementazione del linguaggio che verranno liberamente ricomposti.<br />

Task 2 - Interazione e <strong>di</strong>stribuzione<br />

SottoTask 2.5 - Mobilità ed evoluzione <strong>di</strong>namica<br />

La mobilità è uno dei concetti chiave che pervadono l'attività quoti<strong>di</strong>ana. Palmari e sensori sono esempi <strong>di</strong> <strong>di</strong>spositivi mobili che possono essere configurati in reti<br />

altamente <strong>di</strong>namiche. Alcuni <strong>di</strong> questi <strong>di</strong>spositivi abbastanza vicini da essere reciprocamente visibili formano la cosiddetta nuvola. Le nuvole sono caratterizzate da<br />

una costante variabilità nel tempo della composizione: a causa della loro mobilità i <strong>di</strong>spositivi entrano ed escono <strong>di</strong> continuo dalla nuvola; pertanto le nuvole sono in<br />

costante evoluzione. Inoltre questi <strong>di</strong>spositivi hanno parecchie limitazioni e sono necessari algoritmi specifici per cooperare con tali limitazioni.<br />

La ricerca nell'area è piuttosto vivace [GPR08,BGPS06,WW07,SX05] ma malamente affronta il problema della mutabilità della nuvola; principalmente a causa dello<br />

scarso supporto che i vari formalismi (Reti <strong>di</strong> Petri [Rei85], pi-calcolo [Mil99]) per modellare la mobilità hanno nei confronti dell'evoluzione della <strong>di</strong>sposizione <strong>degli</strong><br />

MIUR - BANDO 2008 - MODELLO B - 5 -


Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

elementi mobili. Senza tale supporto è <strong>di</strong>fficile modellare come un algoritmo si comporti quando la struttura della nuvola cambia e conseguentemente un'analisi<br />

qualitativa non può essere effettuata se non sperimentalmente dopo che l'algoritmo è stato implementato.<br />

Diversi tentativi per supportare l'evoluzione della struttura sono stati fatti: reti <strong>di</strong> Petri riflessive [CC07b], reconfigurable nets [BO98], nets-within-nets [CDMR05] e<br />

reti come token [Val98]. In generale tutti questi approcci tranne le reti <strong>di</strong> Petri riflessive affrontano l'evoluzione co<strong>di</strong>ficando tutte le possibilità nel modello; questo<br />

porta ad avere i) un modello che non rappresenta la realtà corrente ma che è inquinato da ciò che potrebbe accadere e ii) che <strong>di</strong>fficilmente riesce a coprire tutte le<br />

possibili evoluzioni. Le reti <strong>di</strong> Petri riflessive sfruttano la riflessione [Mae87] per separare il modello da come potrebbe evolvere ed è lo strumento perfetto per<br />

modellare situazioni in cui l'evoluzione è regolata da leggi <strong>di</strong> <strong>di</strong>stribuzione o è generata proceduralmente come nel caso delle nuvole.<br />

Lavoro corrente. Da <strong>di</strong>versi anni si sta lavorando sulle reti <strong>di</strong> Petri riflessive [CC06,CC07b] e sulla loro applicazione alla riflessione [CC07a,CC08].<br />

Testo inglese<br />

The work of this group of researchers (unit of Milano) will be within Task 1 (Composition) and Task 2 (Interaction and Distribution).<br />

In the following we review the state of the art of the research areas related to subtasks in which this unit is expected to be the main investigator, in particular the<br />

current work which will be the starting point for the research.<br />

Task 1 - Composition<br />

SubTask 1.3 Evolution and refactoring<br />

Nowadays, software evolution is a very hot topic [MBZR03, Fel03, BR00, MWD+05]. Many applications need to be updated or extended with new characteristics<br />

during their lifecycle. Software evolution, as well as software maintenance, is characterized by its huge cost and slow speed of implementation. Typically the evolution<br />

takes place by stopping the system, adapting it and finally restarting it; this process is unfeasible when the system is critical and basically cannot be stopped as in air<br />

traffic control systems, banking systems, and so on.<br />

In general, the right <strong>di</strong>rection to face the system evolution during its execution (dynamic evolution) consists of i) postponing the evolution planning from design-time<br />

to run-time, ii) separating the evolution crosscutting concern from the application code and iii) (semi-)automating the system evolution. Both reflection [Mae87] and<br />

aspect-oriented programming [KHH+ 01] provide some mechanisms to overcome these problems.<br />

Few reflective and aspect-oriented middleware [CSST99, Ran05, CSG06] have been investigated with the intent of tackling the problem of run-time evolution with<br />

limited success. They have to face with the limited support of the development frameworks to dynamic changes to the software, e.g., Java [GJSB05], as well as many<br />

others mainstream programming languages, supports only changes to the code but not to the schema of a class [PKS08], i.e., it is possible to add a statement to a<br />

method but it is impossible to add a new method to a class impe<strong>di</strong>ng several kind of evolution.<br />

Also static code evolution presents several problems: documentation typically do not evolve accor<strong>di</strong>ngly with the application code evolution [CPGS07], often is<br />

necessary to change code that do not apparently affect by the change and break the module decomposition [KS04]. Currently both object- and aspect-oriented<br />

techniques have several limits with respect to the evolution issue and need to be improved.<br />

Current work. We are working on the evolution issue since a long time and started to face all the reported problems. In particular we have designed an alternative<br />

aspect-oriented approach named Blueprint to face the evolution problem by freeing the modularization from the module syntax [CPA04, CPA05, CPA06, CP06,<br />

CP07a, CP07b]; similarly we have extended Java and C# [CCC05b, CCC05a] meta-data facility (respectively in @Java and [a]C#) to support fine grained<br />

annotations that can be used to co-evolve code and documentation [CPGS07].<br />

SubTask 1.4 - Compositional language development<br />

Domain Specific Languages (DSLs) are used to solve several problems, such as typesetting documents and code, to express and verify constraints and to coor<strong>di</strong>nate<br />

<strong>di</strong>stributed computation.<br />

In some cases, these are simply a bunch of programming features, useless standalone, embedded in a general purpose programming language or provided as external<br />

libraries. More often, they are Turing complete programming languages devoted to a specific aim. In both cases there are some issues that hamper their<br />

realization/usage: in the latter case, to implement and test a new DSL requires time and often it also has a steep learning curve; in the former case the learning curve<br />

is smoother but performances and flexibility are often compromised. Moreover, in general, it is quite hard to tailor an existing DSL to the needs of a given problem or<br />

to let coexist features coming from two or more DSLs into a single programming language.<br />

To test new ideas in programming languages research area is often demanded to the definition/implementation of a DSL from an existing programming language via<br />

rapid prototyping techniques, e.g., by using OpenJava [CTKI00], Javassist [Chi00] and so on. On the one hand this approach permits to focus on the new idea<br />

implementation on the other hand it strictly relies on the extension of a language with new features but does not permit to reuse features and their implementation<br />

from other languages.<br />

In our view, the observed problems derive from the monolithic approach adopted to define and implement a programming language. Classic approaches [ASU86] to<br />

programming language definition and to compiler designing are grammar-centric; grammars describe the language syntax and how a program written in that<br />

language should be translated (syntax <strong>di</strong>rected translation). Even if the compiling process is modularized in phases the language definition cannot, this, in our view,<br />

is the major obstacle to render a programming language easily extensible.<br />

Some attempts to have a more modular programming language definition and implementation has been done: Ziggurat [FS06], Linglet Transformation System<br />

[Cle07], Polyglot [NCM03] and JastAdd [EH07]; but the provided modularity is limited and often refers only to the language definition and not to its<br />

implementation.<br />

Current work. In [CS09], we have started to design an alternative approach (named Hive) to DSL specification and implementation highly modular. Hive exploits the<br />

slicing idea from HyperJ [OT01] to decompose the language definition and implementation in modules that can be freely composed.<br />

Task 2 - Interaction and Distribution<br />

SubTask 2.5 - Mobility and dynamic evolution<br />

Nowadays, mobility is one of the key concepts that pervades everyday activity. Smartphones, palmtops and sensors are examples of mobile devices that can be<br />

configured in highly dynamic networks. A number of these devices close enough to be reachable each other originates the so called cloud. Clouds are characterized<br />

by an highly variability in composition over time: devices due to their mobility enter and exit from the reachability area of the other devices and therefore from the<br />

cloud, i.e., the cloud layout is in a continuous evolution. Moreover mobile devices have several limitations such as battery and CPU performances so algorithms<br />

coping with such limitations are necessary to route messages, to spread information around and to detect which devices can or cannot be reached.<br />

Research in the area is quite vivacious [GPR08, BGPS06, WW07, SX05] but they badly cope with the high evolvability of the cloud. This is mainly due to the limited<br />

support to layout evolution that the formalisms to model <strong>di</strong>stribution provide, e.g., Petri nets [Rei85], pi-calculus [Mil99]. Without such a support it is hard to model<br />

how an algorithm behaves when the cloud layout changes and consequently a quality analysis cannot be performed if not experimentally after the algorithm<br />

implementation that means to spend time in realizing something that could be useless.<br />

Several attempts to support layout evolvability have been done: reflective Petri nets [CC07b], reconfigurable nets [BO98], nets-within-nets [CDMR05] and nets as<br />

tokens [Val98]. In general all of these approaches but the reflective Petri nets face the evolution issue by co<strong>di</strong>ng all the possible evolution in the model; this has a<br />

couple of drawbacks: i) the model does not represent the current reality but it is polluted by what could be happen and ii) it is quite impossible to foresee all the<br />

possible evolutions. Reflective Petri nets exploit reflection [Mae87] to separate the model from how it can evolve and it seems perfect to model situations where the<br />

MIUR - BANDO 2008 - MODELLO B - 6 -


Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

evolutions can follow <strong>di</strong>stribution laws or can be procedurally generated as in the case of the clouds variability.<br />

Current work. Since several years we are working on the reflective Petri nets formalism [CC06, CC07b] and on its applications to evolution [CC07a, CC08].<br />

12 - Riferimenti bibliografici<br />

[ASU86] Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Ad<strong>di</strong>son Wesley, 1986.<br />

[BGPS06] Stephen Boyd, Arpita Ghosh, Balaji Prabhakar, and Devavrat Shah. Randomized Gossip Algorithms. IEEE Transactions on Information Theory,<br />

52(6):2508-2530, June 2006.<br />

[BO98] Eric Badouel and Javier Oliver. Reconfigurable Nets, a Class of High Level Petri Nets Supporting Dynamic Changes within Workflow Systems. IRISA<br />

Research Report PI-1163, IRISA, January 1998.<br />

[BR00] Keith H. Bennett and Václav T. Rajlich. Software Maintenance and Evolution: a Roadmap. In The Future of Software Engineering, pp. 75-87. ACM Press,<br />

2000.<br />

[CC06] Lorenzo Capra and Walter Cazzola. A Petri-Net Based Reflective Framework. Electronic Notes on Theoretical Computer Science, 159:41-59, 2006.<br />

[CC07a] Lorenzo Capra and Walter Cazzola. A Reflective PN-based Approach to Dynamic Workflow Change. In Procee<strong>di</strong>ngs of SYNASC'07, pp. 533-540,<br />

Timisoara, Romania, September 2007. IEEE.<br />

[CC07b] Lorenzo Capra and Walter Cazzola. Self-Evolving Petri Nets. Journal of Universal Computer Science, 13(13):2002-2034, December 2007.<br />

[CC08] Lorenzo Capra and Walter Cazzola. Evolutionary Design through Reflective Petri Nets: an Application to Workflow. In Procee<strong>di</strong>ngs of the IASTED<br />

International Conference on Software Engineering (SE'08), Innsbruck, Austria, February 2008.<br />

[CCC05a] Walter Cazzola, Antonio Cisternino, and Diego Colombo. Freely Annotating C#. Journal of Object Technology, 4(10):31-48, December 2005.<br />

[CCC05b] Walter Cazzola, Antonio Cisternino, and Diego Colombo. [a]C#: C# with a Customizable Code Annotation Mechanism. In Procee<strong>di</strong>ngs of SAC'05, pp.<br />

1274-1278, Santa Fe, New Mexico, USA, March 2005. ACM Press.<br />

[CDMR05] Lawrence Cabac, Michael Duvignau, Daniel Moldt, and Heiko Roelke. Modeling Dynamic Architectures Using Nets-Within-Nets. In Procee<strong>di</strong>ngs of<br />

ICATPN'05, LNCS 3536, pp. 148-167, Miami, FL, USA, June 2005. Springer.<br />

[CG89] Nicholas Carriero and David Gelernter. Linda in Context. Communications of the ACM, 32(4):444-458, April 1989.<br />

[CGS06] Walter Cazzola, Ahmed Ghoneim, and Gunter Saake. Viewpoint for Maintaining UML Models against Application Changes. In Procee<strong>di</strong>ngs of ICSOFT<br />

2006, pp. 263-268, Setúbal, Portugal, September 2006. Springer.<br />

[Chi00] Shigeru Chiba. Load-Time Structural Reflection in Java. In Procee<strong>di</strong>ngs of ECOOP 2000, LNCS 1850, pp. 313-336, Cannes, France, June 2000. Springer.<br />

[Cle07] Thomas Cleenewerck. Modularizing Language Constructs: A Reflective Approach. Phd thesis, Vrije Universiteit Brussel, Brussel, Belgium, July 2007.<br />

[CP06] Walter Cazzola and Sonia Pini. Join Point Patterns: a High-Level Join Point Selection Mechanism. In MoDELS'06 Satellite Events Procee<strong>di</strong>ngs, LNCS 4364,<br />

pp. 17-26, <strong>Genova</strong>, Italy, October 2006. Springer.<br />

[CP07a] Walter Cazzola and Sonia Pini. AOP vs Software Evolution: a Score in Favor of the Blueprint. In Procee<strong>di</strong>ngs of RAM-SE'07, pp. 81-91, Berlin, Germany,<br />

July 2007.<br />

[CP07b] Walter Cazzola and Sonia Pini. On the Footprints of Join Points: The Blueprint Approach. Journal of Object Technology, 6(7):167-192, August 2007.<br />

[CPA04] Walter Cazzola, Sonia Pini, and Massimo Ancona. Evolving Pointcut Definition to Get Software Evolution. In Procee<strong>di</strong>ngs of RAM-SE'04, pp. 83-88, Oslo,<br />

Norway, June 2004.<br />

[CPA05] Walter Cazzola, Sonia Pini, and Massimo Ancona. AOP for Software Evolution: A Design Oriented Approach. In Procee<strong>di</strong>ngs of SAC'05, pp. 1356-1360,<br />

Santa Fe, New Mexico, USA, March 2005. ACM Press.<br />

[CPA06] Walter Cazzola, Sonia Pini, and Massimo Ancona. Design-Based Pointcuts Robustness Against Software Evolution. In Procee<strong>di</strong>ngs of RAM-SE'06, pp.<br />

35-45, Nantes, France, July 2006.<br />

[CPGS07] Walter Cazzola, Sonia Pini, Ahmed Ghoneim, and Gunter Saake. Co-Evolving Application Code and Design Models by Exploiting Meta-Data. In<br />

Procee<strong>di</strong>ngs of SAC'07, pp. 1275-1279, Seoul, South Korea, March 2007. ACM Press.<br />

[CS09] Walter Cazzola and Ivan Speziale. Sectional Domain Specific Languages. In Procee<strong>di</strong>ngs of DSAL'09, Charlottesville, Virginia, USA, March 2009. ACM.<br />

[CSST99] Walter Cazzola, Andrea Savigni, Andrea Sosio, and Francesco Tisato. Rule-Based Strategic Reflection: Observing and Mo<strong>di</strong>fying Behaviour at the<br />

Architectural Level. In Procee<strong>di</strong>ngs of ASE'99, pp. 263-266, Cocoa Beach, Florida, USA, October 1999.<br />

[CTKI00] Shigeru Chiba, Michiaki Tatsubori, Marc-Olivier Killijian, and Kozo Itano. OpenJava: A Class-based Macro System for Java. In Reflection and Software<br />

Engineering, LNCS 1826, pp. 119-135. Springer, June 2000.<br />

[EH07] Torbjorn Ekman and Gorel He<strong>di</strong>n. The JastAdd Extensible Java Compiler. In Procee<strong>di</strong>ngs of OOPSLA'07, pp. 1-18, Montreal, Quebec, Cananda, 2007.<br />

ACM.<br />

[Fel03] Massimo Felici. Taxonomy of Evolution and Dependability. In Procee<strong>di</strong>ngs of USE 2003, Warsaw, Poland, April 2003.<br />

[FS06] David Fisher and Olin Shivers. Sttic Semantics for Syntax Objects. In Procee<strong>di</strong>ngs of the International Conference on Functional Programming, pp. 111-121,<br />

Portland, OR, USA, 2006. ACM Press.<br />

[GJSB05] James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. The Java Language Specification. Ad<strong>di</strong>son-Wesley, third e<strong>di</strong>tion, 2005.<br />

[GPR08] Francesco Giu<strong>di</strong>ci, Elena Pagani, and Gian Paolo Rossi. Impact of Mobility on Epidemic Broadcast in DTNs. In Procee<strong>di</strong>ngs of MWCN'08/PWC'08, pp.<br />

421-434, Tolouse, France, September 2008.<br />

[IPW01] Atsushi Igarashi, Benjamin C. Pierce, and Philip Wadler. Featherweight Java: A Minimal Core Calculus for Java and GJ. ACM Transactions on<br />

Programming Languages and Systems, 23(3):396-450, May 2001.<br />

[KHH+ 01] Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeff Palm, and Bill Griswold. An Overview of AspectJ. In Procee<strong>di</strong>ngs of ECOOP'01, LNCS<br />

2072, pp. 327-353, Budapest, Hungary, June 2001. Springer.<br />

[KS04] Christian Koppen and Maximilian Stoerzer. PCDiff: Attacking the Fragile Pointcut Problem. In Procee<strong>di</strong>ngs of EIWAS'04, Berlin, Germany, September 2004.<br />

[Mae87] Pattie Maes. Concepts and Experiments in Computational Reflection. In Procee<strong>di</strong>ngs of OOPSLA'87, pp. 147-156, Orlando, Florida, USA, October 1987.<br />

ACM.<br />

[MBZR03] Tom Mens, Jim Buckley, Matthias Zenger, and Awais Rashid. Towards a Taxonomy of Software Evolution. In Procee<strong>di</strong>ngs of the 2nd International<br />

Workshop on Unanticipated Software Evolution (USE 2003), Warsaw, Poland, April 2003.<br />

[Mil99] Robin Milner. Communicating and Mobile Systems: The pi-Calculus. Cambridge University Press, 1999.<br />

[MWD+ 05] Tom Mens, Michel Wermelinger, Stephane Ducasse, Serge Demeyer, Robert Hirschfeld, and Meh<strong>di</strong> Jazayeri. Challenges in Software Evolution. In<br />

Procee<strong>di</strong>ngs of IWPSE'05, pp. 13-22, Lisbon, Portugal, September 2005. IEEE Press.<br />

[NCM03] Nathaniel Nystrom, Michael R. Clarkson, and Andrew C. Myers. Polyglot: An Extensible Compiler Framework for Java. In Procee<strong>di</strong>ngs of CC'03, LNCS<br />

2622, pp. 138-152, Warsaw, Poland, April 2003. Springer.<br />

[OT01] Harold Ossher and Peri Tarr. Hyper/J: Multi-Dimensional Separation of Concerns for Java. In Procee<strong>di</strong>ngs of ICSE'01, pp. 729-730, Toronto, Ontario,<br />

Canada, 2001. IEEE.<br />

[PKS08] Mario Pukall, Christian Kaestner, and Gunter Saake. Towards Unanticipated Runtime Adaptation of Java Applications. In Procee<strong>di</strong>ngs of APSEC'08, pp.<br />

85-92, Bejing, China, December 2008. IEEE.<br />

[Ran05] Stephen Rank. Architectural Reflection for Software Evolution. In Procee<strong>di</strong>ngs of RAM-SE'05, pp. 53-58, Glasgow, Scotland, July 2005.<br />

[Rei85] Wolfgang Reisig. Petri Nets: An Introduction, volume 4 of EATCS Monographs on Theoretical Computer Science. Springer, 1985.<br />

[SX05] Sartaj Sahni and Xiaochun Xu. Algorithms for Wireless Sensor Networks. International Journal on Distributed Sensor Network, 1(1):35-56, 2005.<br />

[Val98] Ru<strong>di</strong>ger Valk. Petri Nets as Token Objects: An Introduction to Elementary Object Nets. In Jorg Desel and Manuel Silva, e<strong>di</strong>tors, Procee<strong>di</strong>ngs of ICATPN'98,<br />

LNCS 1420, pp. 1-25, Lisbon, Portugal, June 1998. Springer.<br />

[WW07] Dorothea Wagner and Roger Wattenhofer, e<strong>di</strong>tors. Algorithms for Sensor and Ad Hoc Networks, LNCS 4621. Springer, 2007.<br />

MIUR - BANDO 2008 - MODELLO B - 7 -


13 - Descrizione del programma e dei compiti dell'Unità <strong>di</strong> Ricerca<br />

Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

Testo italiano<br />

In generale, il lavoro dell'unità <strong>di</strong> ricerca ha lo scopo <strong>di</strong> progettare e sviluppare un framework basato sull'idea presentata in [CS09] per decomporre un la definizione<br />

<strong>di</strong> un linguaggio <strong>di</strong> programmazione in componenti riusabili; supportare l'evoluzione <strong>di</strong>namica del software tramite tecniche riflessive e <strong>di</strong> manipolazione del<br />

bytecode e <strong>di</strong> affrontare <strong>di</strong>versi problemi legati all'evoluzione del software (inconsistenza della documentazione dopo l'evoluzione ed evitare <strong>di</strong> dover mo<strong>di</strong>ficare<br />

co<strong>di</strong>ce non <strong>di</strong>rettamente collegato al co<strong>di</strong>ce interessato dai cambiamenti). L'unità <strong>di</strong> ricerca sarà coinvolta nei task del progetto come viene dettagliato <strong>di</strong> seguito.<br />

Task 1. Composizione<br />

SubTask 1.3 Evoluzione e refactoring<br />

Il lavoro <strong>di</strong> questa unità in questo sottotask si focalizza principalmente sul supporto dell'evoluzione del software e del refactoring sia a livello linguistico che<br />

metodologico.<br />

Primo Anno. L'evoluzione del software influenza la manutenzione del software coinvolgendo parti <strong>di</strong> co<strong>di</strong>ce che apparentemente non dovrebbero esserne interessate<br />

provocando una specie <strong>di</strong> effetto domino. Questo risulta particolarmente evidente nel caso <strong>di</strong> programmi sviluppati con tecniche orientate agli aspetti dove evolvere<br />

l'applicazione può rompere la modularità e incapsulamento imposti dalla decomposizione in aspetti e forzando l'evoluzione anche del co<strong>di</strong>ce che descrive come gli<br />

aspetti vengono composti; questo, per esempio, impatta sul meccanismo <strong>di</strong> selezione dei join point, cioè sulla definizione dei pointcut che spesso devono essere<br />

aggiornati per mantenere le loro funzionalità (problema della fragilità dei pointcut) [KS04].<br />

Per risolvere il problema della fragilità dei pointcut abbiamo progettato un linguaggio <strong>di</strong> programmazione orientato agli aspetti grafico, chiamato Blueprint<br />

[CP07b], che <strong>di</strong>saccoppia il meccanismo <strong>di</strong> selezione dei join point dalla sintassi dell'applicazione. Durante il primo anno continueremo lo sviluppo <strong>di</strong> Blueprint.<br />

Inoltre, si intende investigare un secondo approccio (chiamato @AspectJ) basato sul modello dei meta-dati <strong>di</strong> @Java e [a]C# [CCC05a] che permetterebbe <strong>di</strong><br />

segnare <strong>di</strong>rettamente nel co<strong>di</strong>ce dell'applicazione dove gli aspetti dovrebbero venire inseriti confinando, in questo modo, ciò che verrà interessato dall'evoluzione in<br />

un unico e ben definito punto e non all'intera applicazione.<br />

Sull'altro fronte, si intende supportare l'evoluzione <strong>di</strong>namica del software in termini <strong>di</strong> cambiamenti allo schema <strong>di</strong> una classe estendendo l'approccio presentato in<br />

[PKS08] per preservare l'ere<strong>di</strong>tarietà e l'incapsulamento tramite la sostituzione <strong>di</strong>namica della classe. Questo lavoro è svolto in collaborazione con Mario Pukall<br />

dell'<strong>Università</strong> <strong>di</strong> Magdeburg.<br />

Secondo Anno. Nel secondo anno si continuerà a sviluppare sia Blueprint che @AspectJ e le loro applicazioni verranno esplorate.<br />

Relativamente al lavoro sull'evoluzione <strong>di</strong>namica si prevede una fase <strong>di</strong> validazione formale della soli<strong>di</strong>tà e completezza dell'approccio sviluppato e si investigherà il<br />

ruolo che potrà avere nel weaving <strong>di</strong>namico <strong>di</strong> aspetti.<br />

Inoltre si intende migliorare il lavoro [CPGS07] sulla co-evoluzione del co<strong>di</strong>ce dell'applicazione e della documentazione semplificando la metodologia e l'insieme <strong>di</strong><br />

meta-dati usato con l'intento <strong>di</strong> automatizzarne l'uso; sarà anche considerata l'integrazione con il processo <strong>di</strong> sviluppo agile.<br />

Risultati Attesi.<br />

- l'implementazione del linguaggio <strong>di</strong> programmazione Blueprint e la sua validazione nel caso dell'evoluzione del software;<br />

- la definizione <strong>di</strong> un approccio alternativo (@AspectJ) basato su @Java per limitare le mo<strong>di</strong>fiche dovute all'evoluzione del software nel caso <strong>di</strong> applicazioni<br />

sviluppate tramite tecniche orientate agli aspetti;<br />

- l'implementazione e la valutazione <strong>di</strong> un framework che permetta la mo<strong>di</strong>fica dello schema <strong>di</strong> una classe durante l'esecuzione dell'applicazione;<br />

- lo sviluppo <strong>di</strong> un approccio semi-automatico per mantenere la consistenza della documentazione a fronte dell'evoluzione dell'applicazione ed integrazione della<br />

metodologia nel processo <strong>di</strong> sviluppo agile.<br />

SottoTask 1.4 Sviluppo composizionale <strong>di</strong> linguaggi<br />

Il lavoro dell'unità in questo sottotask si focalizza principalmente sullo sviluppo <strong>di</strong> una metodologia per definire un linguaggio <strong>di</strong> programmazione come la<br />

composizione delle sue componenti base (cioè, i costrutti che compongono il linguaggio <strong>di</strong> programmazione); componenti che possono essere riusati dalla definizione<br />

<strong>di</strong> altri linguaggi. La metodologia che si intende investigare segue le idee presentate in [CS09]. Ogni costrutto sarà incapsulato in uno slice assieme ai dettagli<br />

necessari per l'implementazione/valutazione, cioè, i dettagli per realizzare ogni fase della compilazione/interpretazione (ad es., controllo dei tipi, valutazione,<br />

generazione del co<strong>di</strong>ce, ...) sono incapsulati in moduli dello slice che saranno composti assieme ai moduli corrispondenti <strong>degli</strong> altri costrutti per generare il<br />

compilatore/interprete dell'intero linguaggio.<br />

La metodologia sarà supportata da un linguaggio <strong>di</strong> programmazione per definire gli slice e un framework per comporre gli slice a formare il nuovo linguaggio <strong>di</strong><br />

programmazione ed automaticamente generare il corrispondente compilatore/interprete per compilare ed eseguire i programmi scritti nel linguaggio <strong>di</strong><br />

programmazione appena sviluppato.<br />

La composizione <strong>degli</strong> slice rappresenta la sfida più <strong>di</strong>fficile dell'intera idea perché gli slice possono rappresentare un insieme piuttosto variegato <strong>di</strong> costrutti che<br />

spesso possono interagire con il comportamento <strong>di</strong> altri costrutti, ad es. consideriamo uno slice che rappresentante il ciclo for ed un altro slice che introduce una<br />

keyword per parallelizzare il pezzo <strong>di</strong> co<strong>di</strong>ce a cui è associata: la composizione <strong>di</strong> questi due slice doterà il linguaggio <strong>di</strong> un ciclo for tra<strong>di</strong>zionale e <strong>di</strong> uno il cui<br />

corpo è eseguito parallelamente; quin<strong>di</strong> la valutazione <strong>di</strong> un costrutto <strong>di</strong>pende strettamente dalla valutazione <strong>degli</strong> altri costrutti che potrebbero mo<strong>di</strong>ficarne il<br />

comportamento. Il lavoro sulla composizione verrà svolto in collaborazione con l'unità <strong>di</strong> Torino.<br />

Anche l'uso dell'approccio è uno dei nostri obiettivi, in particolare si è intenzionati ad investigare l'implementazione <strong>di</strong> Featherweight Java [IPW01] attraverso il<br />

nostro framework; il successo in questo stu<strong>di</strong>o doterebbe tutte le unità <strong>di</strong> un adeguato strumento per provare le estensioni linguistiche che si propongono nel progetto<br />

in modo semplice ed imme<strong>di</strong>ato. Altri linguaggi <strong>di</strong> programmazione che inten<strong>di</strong>amo re-implementare con il nostro framework sono: Java [GJSB05] e Linda [CG89].<br />

Primo Anno. Durante il primo anno <strong>di</strong> procederà a sviluppare e realizzare l'idea principale <strong>di</strong>etro la proposta (il linguaggio per descrivere gli slice e il meccanismo<br />

<strong>di</strong> composizione); in parallelo si procederà con lo sviluppo <strong>degli</strong> stu<strong>di</strong>o <strong>di</strong> caso.<br />

Secondo Anno. Durante il secondo anno si continuerà con lo sviluppo della metodologia assieme all'implementazione del framework e all'analisi dello stu<strong>di</strong>o <strong>di</strong><br />

caso; inoltre si modellerà formalmente il meccanismo <strong>di</strong> decomposizione/composizione.<br />

Risultati.<br />

- un meccanismo per definire le componenti base del meccanismo (gli slice) che possono essere selettivamente composti per formare un nuovo linguaggio <strong>di</strong><br />

programmazione;<br />

- un framework per generare il compilatore e l'interprete per i programmi scritti nel linguaggio <strong>di</strong> programmazione risultante dalla composizione;<br />

- un insieme <strong>di</strong> slice necessari per definire linguaggi <strong>di</strong> programmazione noti, come Java [GJSB05], Featherweight Java [IPW01] e Linda [CG89].<br />

Task 2. Interazione e <strong>di</strong>stribuzione<br />

Task 2.4 Mobilità ed evoluzione <strong>di</strong>namica<br />

Il lavoro dell'unità in questo sottotask si focalizza principalmente sul formalismo delle reti <strong>di</strong> Petri riflessive [CC06,CC07b] sviluppato per modellare l'evoluzione <strong>di</strong><br />

un sistema <strong>di</strong>namico ad eventi <strong>di</strong>screti (ad es. reti mobili) e le sue applicazioni.<br />

MIUR - BANDO 2008 - MODELLO B - 8 -


Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

Il formalismo delle reti <strong>di</strong> Petri riflessive è stato progettato per facilitare la modellazione <strong>di</strong> applicazioni <strong>di</strong>stribuite che possono evolvere senza inquinare il modello<br />

con "ciò che potrebbe essere" ma descrivendo esclusivamente "ciò che è correntemente". Questo è realizzato sfruttando la riflessione computazionale [Mae87] e<br />

stratificando il modello in due livelli: i) una rete <strong>di</strong> Petri classica rappresentante la situazione corrente e ii) come il modello può evolvere attraverso delle strategie<br />

che evolveranno la situazione corrente quando attivate.<br />

La struttura stratificata del modello lo mantiene estremamente semplice ma compromette la possibilità <strong>di</strong> applicare le classiche tecniche <strong>di</strong> analisi (principalmente<br />

analisi strutturare e ispezione dello spazio <strong>degli</strong> stati) a istanti tra evoluzioni consecutive, cioè, senza considerare il modello prima della sua ultima evoluzione o le<br />

potenziali nuove evoluzioni. Analogamente, gli strumenti esistenti che supportano l'e<strong>di</strong>ting e la simulazione delle applicazioni modellate tramite reti <strong>di</strong> Petri classiche<br />

non supportano le reti <strong>di</strong> Petri riflessive perché sviluppati ignorando la presenza <strong>di</strong> un secondo strato che inneschi l'evoluzione del modello; non permettendo<br />

pertanto nessun cambiamento <strong>di</strong>namico della struttura della rete <strong>di</strong> Petri durante la simulazione. Nel progetto si intende superare queste restrizioni fornendo una<br />

semantica stati-transizioni che renderà possibile simulare ed analizzare questo tipo <strong>di</strong> reti, sviluppando uno strumento <strong>di</strong> supporto ad hoc estendendo il pacchetto<br />

GreatSPN e investigando l'uso <strong>di</strong> tecniche <strong>di</strong> analisi strutturale applicate alle reti <strong>di</strong> Petri riflessive.<br />

Un'altra interessante <strong>di</strong>rezione <strong>di</strong> ricerca è la possibilità <strong>di</strong> caratterizzare il comportamento delle reti <strong>di</strong> Petri riflessive (e stocastiche) in termini <strong>di</strong> processi<br />

Markoviani. In particolare inten<strong>di</strong>amo investigare i possibili collegamenti tra il comportamento stocastico delle reti <strong>di</strong> Petri riflessive e i modelli Markoviani<br />

<strong>di</strong>namici, ad es. grafi <strong>di</strong> evoluzione Markoviana. Questo argomento potrebbe essere esplorato in collaborazione con l'unità <strong>di</strong> Firenze.<br />

Oltre al lavoro relativo a dotare questo nuovo formalismo <strong>di</strong> solide fondamenti matematici, nel progetto si intende utilizzare le reti <strong>di</strong> Petri riflessive per modellare<br />

reti mobili altamente mutabili, come la maggioranza delle reti <strong>di</strong> sensori. In particolare si intende modellare l'algoritmo <strong>di</strong> gossiping descritto in [GPR08] con<br />

l'intento <strong>di</strong> valutare e migliorare le sue performance; inoltre tale lavoro costituirà il perfetto stu<strong>di</strong>o <strong>di</strong> caso per le tecniche <strong>di</strong> analisi che svilupperemo nel progetto.<br />

Primo Anno. Durante il primo anno si intende lavorare sulle capacità <strong>di</strong> analisi delle reti <strong>di</strong> Petri riflessive ed in parallelo sulla loro applicazione al dominio<br />

applicativo delle reti <strong>di</strong> sensori. Inoltre si analizzerà come estendere il tool GreatSPN per ottenere un simulatore che supporti anche le reti <strong>di</strong> Petri riflessive.<br />

Secondo Anno. Durante il secondo anno si intende continuare il lavoro iniziato nel primo anno ed implementare il simulatore.<br />

Risultati.<br />

- estensione delle reti <strong>di</strong> Petri riflessive in particolare in relazione alle tecniche <strong>di</strong> analisi;<br />

- implementazione del simulatore;<br />

- applicazione delle reti <strong>di</strong> Petri riflessive alla modellazione <strong>di</strong> reti mobili altamente mutabili, in particolare in relazione agli algoritmi <strong>di</strong> gossiping nelle reti <strong>di</strong><br />

sensori.<br />

Testo inglese<br />

The overall aim of the research unit will be to design and develop a framework based on the idea presented in [CS09] to decompose a programming language<br />

definition and implementation in reusable components. To support dynamic software evolution through reflective and bytecode instrumentation techniques and to face<br />

several problems tied to the software evolution (inconsistent documentation and sanitizing the domino effect). The research unit will be involved in the project tasks,<br />

as detailed below.<br />

Task 1. Composition<br />

SubTask 1.3 Evolution and refactoring<br />

The work of this unit in this subtask mainly focuses on supporting evolution and refactoring at linguistic level and as a methodology.<br />

First Year. Software evolution affects the maintenance of the application by imposing the evolution of part of the application that apparently should not be affected by<br />

the new requirements provoking a sort of domino effect. This is particularly evident in the case of aspect-oriented application where evolving the application can<br />

break the modularity and encapsulation imposed by the aspects forcing to evolve the code to describe the composition as well; this affects the join point selection, i.e.,<br />

pointcut definitions that need to be updated to maintain their functionality (pointcut fragility problem) [KS04].<br />

To solve the pointcut fragility problem we have designed a graphical aspect-oriented language, named Blueprint [CP07b], which decouples the join point selection<br />

mechanism from the application syntax. In the first year we will continue the development of the Blueprint language.<br />

Moreover, we intend to investigate a second approach (codename @AspectJ) based on the meta-data facility of @Java and [a]C# [CCC05a] that should permit to<br />

mark <strong>di</strong>rectly in the application where to compose the aspects confining, in this way, what is affected by the evolution in a single and well-defined point and not to the<br />

whole application.<br />

On the other hand, we are going to support dynamic software evolution in terms of class schema changes by exten<strong>di</strong>ng the approach presented in [PKS08] to preserve<br />

inheritance and encapsulation through dynamic class replacement. This work is made in collaboration with Mario Pukall of the University of Magdeburg.<br />

Second Year. In this second year both Blueprint and @AspectJ will be still under development and also their applications will be investigated.<br />

The work about dynamic evolution will foresee a phase of formal validation of the soundness and completeness of the developed approach and the investigation of its<br />

use to implement dynamic weaving of aspects.<br />

We are going to improve our work [CPGS07] on co-evolution of application code and documentation by improving the proposed methodology and the set of<br />

meta-data to simplify the use and to automatize it; the integration with the agile development process will be investigated as well.<br />

Results.<br />

- implementation of the Blueprint programming language and its validation against software evolution;<br />

- definition of an alternative approach (@AspectJ) based on @Java to limit the changes against software evolution in aspect-oriented software;<br />

- implementation of a framework to permit schema changes during the execution of the application and its evaluation;<br />

- a semi-automatic approach to documentation maintenance against software evolution and its integration in the agile development process.<br />

SubTask 1.4 Compositional language development<br />

The work of the unit in this subtask mainly focuses on developing a methodology to define a programming language as the composition of its basic components (i.e.,<br />

the constructs composing the programming language); components that can be reused from other language definitions. The methodology we intend to investigate<br />

basically follows the ideas we have given in [CS09]. Each programming feature will be encapsulated in a slice together with the necessary details to realize its<br />

implementation/evaluation, i.e., the details to realize each compilation/interpretation phase (e.g., type checking, evaluation, code generation, and so on) are<br />

encapsulated in modules of the slice that will be composed together the correspon<strong>di</strong>ng modules of the other features to generate the compiler/interpreter of the whole<br />

language.<br />

The methodology will be supported by a programming language to define the slices and a framework that will permit to compose the slices to form the new<br />

programming languages and to automatically generate the correspon<strong>di</strong>ng compiler/interpreter to compile and execute the programs written in the just composed<br />

programming language.<br />

The slice composition represents the most challenging issue of the whole idea since slices represent a big variety of concepts and often these can affect how another<br />

slice behaves, e.g., consider the case where a slice introduces the for loop and another one a keyword to parallel a piece of code: the composition of these two slices<br />

will provide a normal for loop and a parallel for with the body executed in parallel; so the evaluation of a programming feature depends on the evaluation of the<br />

other features that could affect it. The composition investigation will be carried out in collaboration with the unit of Torino.<br />

MIUR - BANDO 2008 - MODELLO B - 9 -


Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

Applications of the approach are in our focus as well, in particular we intend to investigate the implementation of Featherweight Java [IPW01] through our<br />

framework; this should provide all the project units with the right testbed for testing the extensions we are proposing in this project. Other programming languages<br />

that could be considered are Java [GJSB05] and Linda [CG89].<br />

First Year. In the first year we intend to develop and realize the core idea behind the proposal (the slice language and the composition mechanism); in parallel we<br />

will develop the case study programming languages.<br />

Second Year. In the second year the development will be continued together with the framework implementation and the case study analysis; moreover we are going<br />

to formally model the decomposition/composition mechanism.<br />

Results.<br />

- a mechanism to define basic programming features (the slices) that can be selectively composed to form a novel programming language;<br />

- a framework to generate the compiler and interpreter for programs written in the programming language resulting from the composition;<br />

- a bunch of slices necessary to define well-known programming languages, such as Java [GJSB05], Featherweight Java [IPW01] and Linda [CG89].<br />

Task 2. Interaction and Distribution<br />

Task 2.4 Mobility and dynamic evolution<br />

The work of the unit in this subtask mainly focuses on the reflective Petri net formalism [CC06,CC07b] we developed to model the evolution of a dynamic<br />

<strong>di</strong>screte-event system (e.g. a mobile network), and its application.<br />

The reflective Petri net formalism has been designed to easily model <strong>di</strong>stributed applications that can evolve without polluting the model with "what could be" instead<br />

of simply model "what it currently is". This is realized exploiting the reflection concept [Mae87] and layering the model in two levels: i) a classic Petri net<br />

representing the current situation and ii) how the model can evolve through strategies that will change the current representation when triggered.<br />

The multi-layer structure of the model keeps it extremely simple but limits the possible usage of classical Petri nets analysis techniques (mainly structural analysis and<br />

state-space inspection) to intervals between consecutive evolutions, i.e., without considering the model before its last evolution, or the potential new evolutions.<br />

Analogously, the existing tools that support the e<strong>di</strong>ting and the simulation of Petri net models cannot work with reflective Petri nets since they were designed without<br />

considering the presence of a second layer coor<strong>di</strong>nating the evolution, thus not permitting any dynamical change to the Petri net layout during simulation runs. In the<br />

project, we are going to overcome these restrictions by first provi<strong>di</strong>ng a state-transitions semantics by which it will be possible to simulate and analyze these kind of<br />

nets, then developing an ad-hoc support tool by exten<strong>di</strong>ng the GreatSPN package, finally investigating structural analysis techniques for reflective Petri nets.<br />

Another interesting open question is the possibility of characterizing the behavior of (stochastic) reflective Petri nets in terms of Markov processes. In particular we<br />

aim at investigating possible links existing between the stochastic behavior of reflective Petri nets and dynamic Markovian models, e.g., Markovian evolving graphs.<br />

This issue could be explored in collaboration with the unit of Firenze.<br />

Beyond the work about provi<strong>di</strong>ng sound mathematical foundations for this novel formalism, in the project we are going to use reflective Petri nets to model highly<br />

mutable mobile networks, like a wide class of sensor networks. In particular we are going to model the gossiping algorithm described in [GPR08] with the intent of<br />

evaluating and optimizing its performances; moreover such a work will be the perfect testbed for the analysis techniques we will develop in the project.<br />

First Year. In the first year we are going to work on the analysis capability of the reflective Petri nets and in parallel on their application to the sensor networks<br />

application domain. Moreover we will analyze how to extend the GreatSPN tool to get a simulation tool supporting the reflective Petri nets as well.<br />

Second Year. In the second year we are continuing the work made in the first year and implementing the simulation tool.<br />

Results.<br />

- Reflective Petri nets extensions in particular related to the analysis part;<br />

- the implementation of the simulation tool;<br />

- application to the highly mutable mobile networks, in particular in relation to gossiping algorithms in sensor networks.<br />

14 - Descrizione delle attrezzature già <strong>di</strong>sponibili ed utilizzabili per la ricerca proposta<br />

Testo italiano<br />

Nessuna<br />

Testo inglese<br />

Nessuna<br />

15 - Descrizione delle Gran<strong>di</strong> attrezzature da acquisire (GA)<br />

Testo italiano<br />

Nessuna<br />

Testo inglese<br />

Nessuna<br />

MIUR - BANDO 2008 - MODELLO B - 10 -


16 - Mesi persona complessivi de<strong>di</strong>cati al Progetto<br />

Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

Numero<br />

Disponibilità<br />

temporale in<strong>di</strong>cativa<br />

prevista<br />

Totale<br />

mesi<br />

persona<br />

1° anno 2° anno<br />

Componenti della sede dell'Unità <strong>di</strong> Ricerca 2 14 14 28<br />

Componenti <strong>di</strong> altre <strong>Università</strong>/Enti vigilati 0<br />

Titolari <strong>di</strong> assegni <strong>di</strong> ricerca 0<br />

Titolari <strong>di</strong> borse Dottorato 0<br />

Post-dottorato 0<br />

Scuola <strong>di</strong> Specializzazione 0<br />

Personale a contratto Assegnisti 0<br />

Borsisti 0<br />

Altre tipologie 0<br />

Dottorati a carico del PRIN da destinare a questo specifico progetto 1 12 12 24<br />

Altro personale 1 3 3 6<br />

TOTALE 4 29 29 58<br />

17 - Costo complessivo del Progetto dell'Unità articolato per voci<br />

Voce <strong>di</strong> spesa<br />

Materiale inventariabile<br />

Spesa<br />

in<br />

Euro<br />

Descrizione dettagliata<br />

(in italiano)<br />

5.000 acquisto <strong>di</strong> due laptop ed un computer fisso da<br />

destinare ai componenti dell'unità<br />

Descrizione dettagliata<br />

(in inglese)<br />

2 laptops and 1 desktop to be used by the<br />

personal involved in the project<br />

Gran<strong>di</strong> Attrezzature 0<br />

Materiale <strong>di</strong> consumo e funzionamento 8.000 quota forfettaria del 10% 10% forfaitaire amount<br />

(comprensivo <strong>di</strong> eventuale quota<br />

forfettaria)<br />

Spese per calcolo ed elaborazione dati<br />

Personale a contratto 0<br />

Dottorati a carico del PRIN da<br />

destinare a questo specifico progetto<br />

48.000 dottorato relativo a "tecniche <strong>di</strong> modularizzazione<br />

della definizione e realizzazione <strong>di</strong> un linguaggio <strong>di</strong><br />

programmazione"<br />

about "modularization techniques applied to<br />

programming languages definition and<br />

implementation"<br />

Servizi esterni<br />

Missioni 7.400 spese per la presentazione dei risultati fund to attend conferences and presents the<br />

project results<br />

Pubblicazioni (*) 100 eventuali spese <strong>di</strong> pubblicazione publication expenses<br />

Partecipazione / Organizzazione<br />

convegni (*)<br />

Altro (voce da utilizzare solo in caso <strong>di</strong><br />

spese non riconducibili alle voci<br />

soprain<strong>di</strong>cate)<br />

Subtotale 76.000<br />

Costo convenzionale 4.000<br />

Totale 80.000<br />

Tutti gli importi devono essere espressi in Euro arrotondati alle centinaia<br />

7.400 spese per la presentazione dei risultati fund to register to conferences and presents<br />

the project results<br />

100 spese varie ed eventuali fund to support other expenses<br />

(*) sono comunque ren<strong>di</strong>contabili le spese da effettuare per pubblicazioni e presentazione dei risultati finali della ricerca nei do<strong>di</strong>ci<br />

mesi successivi alla conclusione del progetto, purché le relative spese siano impegnate entro la data <strong>di</strong> scadenza del progetto e purché<br />

le pubblicazioni e la presentazione dei risultati avvengano entro nove mesi dalla conclusione del progetto.<br />

18 - Prospetto finanziario dell'Unità <strong>di</strong> Ricerca<br />

Voce <strong>di</strong> spesa<br />

a.1) finanziamenti <strong>di</strong>retti, <strong>di</strong>sponibili da parte <strong>di</strong><br />

<strong>Università</strong>/Enti vigilati <strong>di</strong> appartenenza dei ricercatori<br />

Importo in Euro<br />

MIUR - BANDO 2008 - MODELLO B - 11 -


Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

dell'unità operativa<br />

a.2) finanziamenti <strong>di</strong>retti acquisibili con certezza da parte <strong>di</strong><br />

20.000<br />

<strong>Università</strong>/Enti vigilati <strong>di</strong> appartenenza dei ricercatori<br />

dell'unità operativa<br />

a.3) finanziamenti connessi al costo convenzionale 4.000<br />

b.1) finanziamenti <strong>di</strong>retti <strong>di</strong>sponibili messi a <strong>di</strong>sposizione da<br />

parte <strong>di</strong> soggetti esterni<br />

b.2) finanziamenti <strong>di</strong>retti acquisibili con certezza, messi a<br />

<strong>di</strong>sposizione da parte <strong>di</strong> soggetti esterni<br />

c) cofinanziamento richiesto al MIUR<br />

56.000<br />

(max 70% del costo complessivo)<br />

Totale 80.000<br />

19 - Certifico la <strong>di</strong>chiarata <strong>di</strong>sponibilità e l'utilizzabilità dei finanziamenti a.1) a.2) a.3) b.1) b.2)<br />

SI<br />

Firma _____________________________________<br />

I dati contenuti nella domanda <strong>di</strong> finanziamento sono trattati esclusivamente per lo svolgimento delle funzioni istituzionali del<br />

MIUR. Incaricato del trattamento è il CINECA- Dipartimento Servizi per il MIUR. La consultazione è altresì riservata al MIUR -<br />

D.G. della Ricerca -- Ufficio IV -- Settore PRIN, alla Commissione <strong>di</strong> Garanzia e ai referee scientifici. Il MIUR potrà anche<br />

procedere alla <strong>di</strong>ffusione dei principali dati economici e scientifici relativi ai progetti finanziati. Responsabile del proce<strong>di</strong>mento è il<br />

coor<strong>di</strong>natore del settore PRIN dell'ufficio IV della D.G. della Ricerca del MIUR.<br />

Firma _____________________________________ Data 15/02/2009 ore 21:26<br />

MIUR - BANDO 2008 - MODELLO B - 12 -


ALLEGATO<br />

Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

Curricula scientifici dei componenti il gruppo <strong>di</strong> ricerca<br />

Testo italiano<br />

1. CAPRA Lorenzo<br />

Curriculum:<br />

<strong>Stu<strong>di</strong></strong><br />

1993 Laurea in Scienze dell'informazione, <strong>Università</strong> <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> Milano, Italy.<br />

2001, PhD in Computer Science, <strong>Università</strong> <strong>di</strong> Torino, Italy.<br />

Impieghi professionali<br />

1986-1992 Analista/programmatore<br />

1992-2000 Consulente/ricercatore a tempo dterminato presso ENEL-CRA (Centro Ricerche <strong>di</strong> Automatica) e CESI spa.<br />

dal 2001 Ricercatore presso il Dipartimento <strong>di</strong> Informatica e Comunicazione (DICo), <strong>Università</strong> <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> Milano, Italy<br />

Aree <strong>di</strong> ricerca<br />

Analisi <strong>di</strong> prestazioni ed affidabilità <strong>di</strong> sistemi <strong>di</strong>stribuiti. Approcci formali all'ingegneria del software. Sistemi <strong>di</strong>namici. Modellazione <strong>di</strong> processi.<br />

Analisi/simulazione <strong>di</strong> reti <strong>di</strong> Petri <strong>di</strong> alto livello.<br />

Partecipazione a progetti <strong>di</strong> ricerca<br />

1996-1997, Esprit EFTOS (Embedded Fault-TOlerant Supercomputing). 1998, European Community HCM (Human Capital and Mobility), progetto MATCH<br />

(Modelling and Analysis of Time Constrained Hierarchical Systems), CHRX-CT94-0452<br />

1999-2000, Esprit TIRAN (Tailorable fault tolerance framework for embedded applications).<br />

2001, ISIDE project (Sistemi <strong>di</strong> elaborazione reattivi ed affidabili per applicazioni industriali) -Programmi <strong>di</strong> ricerca <strong>di</strong> rilevante interesse nazionale.<br />

2005-2007 EOS project (Extensible Object Systems) -MIUR Programmi <strong>di</strong> ricerca <strong>di</strong> rilevante interesse nazionale.<br />

Attività professionale<br />

membro <strong>di</strong> SCS (The Society for Modeling and Simulation International)<br />

membro <strong>di</strong> EUROSIS.<br />

Pubblicazioni:<br />

CAPRA L., CAZZOLA W (2008). Evolutionary design through reflective petri nets: An application to workflow. In: IASTED Software Engineering (SE<br />

2008)acta press, ISBN/ISSN: 978-0-88986-715-4;<br />

BELLETTINI C, CAPRA L., MONGA M (2007). Using a stochastic well formed net model for assessing a decentralized approach to configuration<br />

management. PERFORMANCE EVALUATION, vol. 64; p. 229-246, ISSN: 0166-5316<br />

CAPRA L. (2007). Algebraic techniques & symmetries: an efficient simulation approach for well-formed petri nets. European Simulation and Modelling.<br />

In: European Simulation and Modelling Conference (ESM'2007)EUROSIS-ETI, p. 155-163, ISBN/ISSN: 978-90-77381-36-6<br />

CAPRA L. (2007). Integrating symmetries and symbolic enabling test for efficient simulation of SWNs. In: EUROPEAN Conference on Modelling and<br />

Simulation (ECMS 2007)ECMS-SCS, ISBN/ISSN: 978-0-9553018-2-7<br />

CAPRA L., CAZZOLA W (2007). A reflective pn-based approach to dynamic workflow change. In: SYNASC '07: Procee<strong>di</strong>ngs of the 9th International<br />

Symposium on Symbolic and Numeric Algorithms for Scientific ComputingIEEE CS Press, ISBN/ISSN: 0-7695-3078-8<br />

CAPRA L., CAZZOLA W (2007). Self-evolving petri nets. JOURNAL OF UNIVERSAL COMPUTER SCIENCE, vol. 13; p. 2002-2034, ISSN: 0948-6968<br />

CAPRA L. (2006). Algebraic framework for efficient simulation of stochastic coloured petri nets. In: SummerSim'06SCS, ISBN/ISSN: ISBN 1-56555-309-8<br />

CAPRA L. (2006). Applying a symbolic approach for swn enabling test to workflow models. In: SYNASC '06: Procee<strong>di</strong>ngs of the 8th International<br />

Symposium on Symbolic and Numeric Algorithms for Scientific ComputingIEEE CS Press, p. 437-444, ISBN/ISSN: 0-7695-2740-X<br />

CAPRA L. (2006). Applying structural techniques for efficient analysis of complex swn models. In: Workshop on Discrete Event Systems (WODES'06IEEE<br />

CS Press, p. 338-344, ISBN/ISSN: 1-4244-0053-8<br />

CAPRA L., DE PIERRO M, FRANCESCHINIS G (2005). A high level language for structural relations in well-formed nets. In: ICATPN 2005, 26th<br />

International Conference on Applications and Theory of Petri Nets, LNCSSPRINGER, vol. 3536, p. 168-187<br />

Testo inglese<br />

1. CAPRA Lorenzo<br />

Curriculum:<br />

Education<br />

1993 Laurea degree in computer Science from <strong>Università</strong> <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> Milano, Italy.<br />

2001, PhD in Computer Science from the University of Torino, Italy.<br />

Professional employment<br />

1986-1992 Computing professional (analyst and programmer):<br />

1992-2000 Consultant/temporary researcher at ENEL-CRA (Research center of the Italian electric power provider) and CESI spa.<br />

since 2001 Assistant Professor at the Department of Informatics and Communication (DICo), Univ. of Milan, Italy<br />

MIUR - BANDO 2008 - MODELLO B - 13 -


Ministero dell'Istruzione dell'<strong>Università</strong> e della Ricerca<br />

Research interests<br />

Performance and dependability evaluation of <strong>di</strong>stributed systems. Formal approaches to software engineering. Dynamic systems. Workflow modeling.<br />

Analysis/simulation of High-level Petri nets.<br />

National and European Projects<br />

1996-1997, Esprit EFTOS (Embedded Fault-TOlerant Supercomputing). 1998, European Community HCM (Human Capital and Mobility), progetto MATCH<br />

(Modelling and Analysis of Time Constrained Hierarchical Systems).<br />

1999-2000, Esprit TIRAN (Tailorable fault tolerance framework for embedded applications).<br />

2001, ISIDE project (Sistemi <strong>di</strong> elaborazione reattivi ed affidabili per applicazioni industriali) - Programmi <strong>di</strong> ricerca <strong>di</strong> rilevante interesse nazionale.<br />

2005-2007 EOS project (Extensible Object Systems) -MIUR Programmi <strong>di</strong> ricerca <strong>di</strong> rilevante interesse nazionale.<br />

Professional activity<br />

member of SCS (The Society for Modeling and Simulation International)<br />

member of EUROSIS.<br />

Pubblicazioni:<br />

CAPRA L., CAZZOLA W (2008). Evolutionary design through reflective petri nets: An application to workflow. In: IASTED Software Engineering (SE<br />

2008)acta press, ISBN/ISSN: 978-0-88986-715-4;<br />

BELLETTINI C, CAPRA L., MONGA M (2007). Using a stochastic well formed net model for assessing a decentralized approach to configuration<br />

management. PERFORMANCE EVALUATION, vol. 64; p. 229-246, ISSN: 0166-5316<br />

CAPRA L. (2007). Algebraic techniques & symmetries: an efficient simulation approach for well-formed petri nets. European Simulation and Modelling.<br />

In: European Simulation and Modelling Conference (ESM'2007)EUROSIS-ETI, p. 155-163, ISBN/ISSN: 978-90-77381-36-6<br />

CAPRA L. (2007). Integrating symmetries and symbolic enabling test for efficient simulation of SWNs. In: EUROPEAN Conference on Modelling and<br />

Simulation (ECMS 2007)ECMS-SCS, ISBN/ISSN: 978-0-9553018-2-7<br />

CAPRA L., CAZZOLA W (2007). A reflective pn-based approach to dynamic workflow change. In: SYNASC '07: Procee<strong>di</strong>ngs of the 9th International<br />

Symposium on Symbolic and Numeric Algorithms for Scientific ComputingIEEE CS Press, ISBN/ISSN: 0-7695-3078-8<br />

CAPRA L., CAZZOLA W (2007). Self-evolving petri nets. JOURNAL OF UNIVERSAL COMPUTER SCIENCE, vol. 13; p. 2002-2034, ISSN: 0948-6968<br />

CAPRA L. (2006). Algebraic framework for efficient simulation of stochastic coloured petri nets. In: SummerSim'06SCS, ISBN/ISSN: ISBN 1-56555-309-8<br />

CAPRA L. (2006). Applying a symbolic approach for swn enabling test to workflow models. In: SYNASC '06: Procee<strong>di</strong>ngs of the 8th International<br />

Symposium on Symbolic and Numeric Algorithms for Scientific ComputingIEEE CS Press, p. 437-444, ISBN/ISSN: 0-7695-2740-X<br />

CAPRA L. (2006). Applying structural techniques for efficient analysis of complex swn models. In: Workshop on Discrete Event Systems (WODES'06IEEE<br />

CS Press, p. 338-344, ISBN/ISSN: 1-4244-0053-8<br />

CAPRA L., DE PIERRO M, FRANCESCHINIS G (2005). A high level language for structural relations in well-formed nets. In: ICATPN 2005, 26th<br />

International Conference on Applications and Theory of Petri Nets, LNCSSPRINGER, vol. 3536, p. 168-187<br />

MIUR - BANDO 2008 - MODELLO B - 14 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!