Metamodel co-evolution with related model-driven engineering artifacts : a multi-objective search framework

Les produits logiciels sont, en général, évolués en introduisant des changements continus. Les tâches d’évolution et de maintenance sont fastidieuses et longues. Évidemment, il y a un besoin pour trouver de meilleures façons de faire évoluer les systèmes de logiciels. De la même manière que le code source, la conception est amenée à évoluer au fil du temps, en raison des changements des exigences et des contraintes techniques. Dans le développement dirigée par les modèles, l’évolution des métamodèles peut briser les relations avec les artefacts dépendants tels que les modèles, les règles de transformation et les contraintes OCL. Alors que plusieurs études de coévolution sont proposées, la plupart d’entre elles fournissent un support manuel ou semi-automatisé baser sur des modèles prédéfinis de scénarios d’évolution. En plus d’être prédéfinis, ces modèles sont spécifiques à l’artefact à coévoluer avec le métamodèle. L’objectif principal de notre recherche est de proposer un cadre de recherche générique qui automatise la dérivation de stratégies de coévolution sans utiliser de modèles prédéfinis pour des changements de métamodèles ou des types d’artefacts spécifiques. Pour qu’un artefact coévolue, le but est de produire une nouvelle version conforme à la nouvelle version du métamodèle. À cette fin, nous considérons la coévolution comme un problème d’optimisation multi-objectif. La recherche des solutions est guidée par trois objectifs, qui visent à minimiser la violation de la structure du métamodèle révisé, le nombre de modifications appliquées à l’artefact initial et la perte d’informations. Ensuite, le cadre recommande un sous-ensemble approprié de solutions de coévolution, avec la possibilité d’intégrer l’utilisateur dans la boucle pour fournir des commentaires et mettre à jour les modifications recommandées. Nous avons validé notre cadre générique en utilisant trois cas de coévolution de métamodèles, des modèles, des règles de transformation et des contraintes OCL, sur des ensembles de données réelles. Les résultats de l’évaluation montrent que notre approche est efficace en termes d’exactitude, et d’utilité par rapport aux approches de coévolution les plus récentes. Successful software products are evolved by introducing continuous changes at different levels. Thus, software industry is actively recruiting software engineers, not to create new software systems, but to evolve and maintain existing ones. Such evolution and maintenance tasks are tedious and time consuming. Thus, there is an urgent need to find better ways to evolve software systems and consequently, improve developers’ productivity. Like the source code, the design is subject to evolution due to changing requirements and technological constraints. Model-Driven Software Evolution is concerned with the changes related to the design of software systems, from initial development to maintenance. In model driven development, the evolution of metamodels may break the relationships to dependent artifacts like models, transformation rules and OCL constraints. While several coevolution studies are proposed, most of them are providing either a manual or semi-automated support based on pre-defined templates of evolution scenarios. In addition to be pre-defined, these templates are specific to the artifact to co-evolve with the metamodel. The main objective of our research is to propose a generic search-based framework for the automated recommendation of coevolution strategies without using pre-defined templates for specific metamodel changes or artifact types. For an artifact to co-evolve, the goal is to produce a new version that conforms to the new version of the metamodel. To this end, we view the co-evolution as a multi-objective optimization problem, and guide the search for solutions by three objectives, which aims at minimizing the violation of the structure of the revised metamodel, the number of changes applied to the initial artifact, and the loss of information. Then, the framework is able to recommend an appropriate subset of co-evolution solutions, with the possibility of integrating the user in the loop to provide feedback and update the recommended changes. We validated our generic framework using three metamodel co-evolution cases, models, transformation rules, and OCL constraints, on sets of real-world data. The evaluation results show that our approach is effective in terms of correctness and usefulness as compared to the state-of-the-art co-evolution approaches.

Keyphrases: Evolution des logiciels, Ingénierie dirigée par les modèles, Optimisation multi-objectif, Search-based Software Engineering, Software Evolution, Model Driven Engineering, Multi-Objective Optimization