Section: New Results
Model Driven and Aspect Oriented Design
Models at Runtime
Participants : Brice Morin, Olivier Barais, Grégory Nain, Noël Plouzeau, Mahmoud Ben Hassine, Jean-Marc Jézéquel.
We have developed a first proof of concept of the models at runtime idea [33] , [21] , [35] , [23] to tame the complexity of dynamically adaptive systems by combining model-driven and aspect-oriented techniques and offering a high degree of automation and validation.
Since software systems need to be continuously available under varying conditions, their ability to evolve at runtime is increasingly seen as one key issue. Modern programming frameworks already provide support for dynamic adaptations. However the high-variability of features in Dynamic Adaptive Systems (DAS) introduces an explosion of possible runtime system configurations (often called modes) and mode transitions. Designing these configurations and their transitions is tedious and error-prone, making the system feature evolution difficult. While Aspect-Oriented Modeling (AOM) was introduced to improve the modularity of software, we have shown how an AOM approach can be used to tame the combinatorial explosion of DAS modes [33] . Using AOM techniques, we were able to derive a wide range of modes by weaving aspects into an explicit model reflecting the runtime system. We used these generated modes to automatically adapt the system. We validated our approach on Entimid, a platform for home automation in the context of AAL (Ambient Assisted Living) [35] .. A demo of this application has been presented at several venues, including the “Fete de la Science” in Nov. 2009.
We also showed how aspects can be unwoven, based on a precise traceability metamodel dedicated to aspect model weaving. We analyzed traceability models, which describe how aspects were woven into a base, to determine the extent to which an aspect has affected the woven model in order to determine how it can be unwoven. Aspect unweaving is finally performed by applying inverse operations of a sub-sequence of the weaving operations in opposite order [31] .
Managing Variability with Aspects
Participants : Brice Morin, Olivier Barais, Gilles Perrouin, Jean-Marc Jézéquel.
From a modeling point of view, the terms aspect and model can be considered synonymous. This notion of aspect goes beyond the usual meaning found in the Aspect Oriented Programming community where an aspect is often narrowly dened as the modularization of a cross-cutting concern. From this perspective, work on aspect-oriented approaches to modeling is important because it can yield signicant insights into how the MDE vision of software development can be realized. There is thus a growing community interested in the convergence of Aspect-Oriented Software Development (AOSD) and MDE ideas [17] .
Domain-Specific Modeling Languages (DSMLs) describe the concepts of a particular domain and their relationships, in a meta-model. From a given DSML, it is possible to describe a wide range of different models. These models often share a common base and vary on some parts. Current approaches tend to distinguish the variability language from the DSMLs themselves, implying greater learning curve for DSMLs stakeholders and a significant overhead in product line engineering of DSLs. We propose [36] , [30] to consider variability concepts as an independent aspect to be woven into the DSML to introduce variability capabilities. In particular we detail how variability is woven and how to perform product line derivation. We validate our approach through the weaving of variability into two very different metamodels: Ecore and SmartAdapter, our aspect-oriented modelling weaver, thus adding exibility in the weaving process itself. These results emphasize how new abilities of the language can be provided by this means.
Analyzing aspect-oriented programs
Participants : Romain Delamare, Freddy Munoz, Benoit Baudry.
We have analyzed 38 aspect-oriented open source projects with respect to the impact of aspects on the projects, and to coverage of the language features [39] . This reveals that AOP is currently used in a cautious way. This work is a first step to built support and development tools dedicated to actual practices for AOP, based on empirical usage profiles. We believe a possible reason for this distrust is the lack of dedicated tools for anlyzing, testing and evolving aspect-oriented programs.
A major issue when testign AspectJ programs is to ensure that the pointcut descriptor (PCD) matches the intended set of joinpoints. We have developed AdviceTracer to monitor the execution of advices in AspectJ programs and define dedicated oracles that can capture errors in the PCD [27] . In order to validate our approach, we also developed a mutation tool that systematically injects faults into PCDs[28] . Using these two tools, we perform experiments to validate that our approach can be applied for specifyi expected joinpoints to detect faults in the PCD. We have also shown that AdviceTracer is more adapted than JUnit to buid test cases that check PCDs [12] .