Modello B - Università degli Studi di Genova
Modello B - Università degli Studi di Genova
Modello B - Università degli Studi di Genova
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–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 -