Section: New Results
Meta-Modeling
Modeling Modeling
Participant : Benoit Baudry.
Model-driven engineering have permeated all branches of software engineering; to the point that it seems that we are using models, as Molière's Monsieur Jourdain was using prose, without knowing it. At the heart of modeling, there is a relation that we establish to represent something by something else. We have reviewed various definitions of models and relations between them [38] . Then, we have defined a canonical set of relations that express various kinds of representation relations and we proposed a graphical concrete syntax to represent these relations. Hence, this work is a contribution towards a theory of modeling. This is in collaboration with Frédéric Fondement from Université de Haute Alsace.
Model Driven Software Evolution
Participants : Naouel Moha, Régis Fleurquin, Olivier Barais, Jean-Marc Jézéquel.
Code and design smells are recurring design problems in software systems that must be identified to avoid their possible negative consequences on development and maintenance. In collaboration with the University of Montréeal and the ADAM project team in Lille, we introduced an approach to automate the generation of detection algorithms from specifications written using a domain-specific language [19] . This language is defined from a thorough domain analysis. It allows the specification of smells using high-level domain-related abstractions. It allows the adaptation of the specifications of smells to the context of the analysed systems [18] .
We also studied the problem of God Classes (large classes which know too much or do too much in an OO design): how they arise, how prevalent they are, and whether they remain or they are removed as the systems evolve over time, through a number of versions [43] . We showed how to detect the degree of godliness of classes automatically, distinguishing between those classes that are so by design (good code) from those that occurred by accident (bad code). This methodology can guide software quality teams in their efforts to implement prevention and correction mechanisms.
However, these kind of model analysis, or other model transformations such as refactorings specified for a given language cannot be readily reused for another language because their related metamodels may be structurally different. To solve this problem, we have discovered [32] an approach allowing the specification of generic model transformations, in particular refactorings, so that they can be applied to different metamodels. Our approach relies on two mechanisms: (1) an adaptation based mainly on the weaving of aspects; (2) the notion of model typing, an extension of object typing in the model-oriented context. We validated our approach by performing some experiments that consisted of specifying three well known refactorings (Encapsulate Field, Move Method, and Pull Up Method) and applying each of them onto three different metamodels (Java, MOF, and UML).
Executable Software Process Modeling
Participants : Benoit Combemale, Jean-Marc Jézéquel.
Describing and managing activities, resources and constraints of software development processes is a challenging goal for many organizations [45] . We proposed a comparison of UML-based Software Process Modeling Languages (SPMLs) [15] .
One major advantage of executable software process models is that once defined, they can be simulated, checked and validated in short incremental and iterative cycles. This also makes them a powerful asset for important process improvement decisions such as resource allocation, deadlock identification and process management. We proposed a framework that combines Aspect and Model-Driven Engineering approaches in order to ensure process modeling, simulation and execution [26] . This framework is based upon UML4SPM, a UML2.0-based language for Software Process Modeling and Kermeta, an executable metaprogramming language. This work has been done in collaboration with Reda Bendraou from the UPMC.