On the power of abstraction: a model-driven co-evolution approach of software code

Model-driven software engineering fosters abstraction through the use of models and then automation by transforming them into various artefacts, in particular to code, for example: 1) from architectural models to code, 2) from metamodels to API code (with EMF in Eclipse), 3) from entity models to front-end and back-end code in Web stack application (with JHispter), etc. In all these examples, the generated code is usually enriched by developers with additional code implementing advanced functionalities (e.g., checkers, recommenders, etc.) to build a full coherent system. When the system must evolve, so are the models to re-generate the code. As a result, the developers' enriched code may be impacted and thus need to co-evolve accordingly. Many approaches support the co-evolution of various artifacts, but not the co-evolution of code. This paper sheds light on this issue and envisions to fill this gap. We formulate the hypothesis that the code co-evolution can be driven by the model changes by means of change propagation. To investigate this hypothesis, we implemented a prototype for the case of metamodels and their accompanying code in EMF Eclipse. As a preliminary evaluation, we considered the case of the OCL Pivot metamodel evolution and its code co-evolution in two projects from version 3.2.2 to 3.4.4. Preliminary results confirms our hypothesis that model-driven evolution changes can effectively drive the code co-evolution. On 562 impacts in two projects' code by 221 metamodel changes, our approach was able to reach the average of 89% and 92,5% respectively of precision and recall.

[1]  Michael Langhammer Co-evolution of component-based architecture-model and object-oriented source code , 2013, WCOP '13.

[2]  Gerti Kappel,et al.  A posteriori operation detection in evolving software models , 2013, J. Syst. Softw..

[3]  Sven Apel,et al.  Coevolution of variability models and related software artifacts , 2016, Empirical Software Engineering.

[4]  Mark Rouncefield,et al.  Empirical assessment of MDE in industry , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[5]  Alexander Egyed,et al.  An Empirical Study on the Impact of Inconsistency Feedback during Model and Code Co-changing , 2019, J. Object Technol..

[6]  Alexander Egyed,et al.  Towards Model-and-Code Consistency Checking , 2014, 2014 IEEE 38th Annual Computer Software and Applications Conference.

[7]  Dianxiang Xu,et al.  Automated Security Test Generation with Formal Threat Models , 2012, IEEE Transactions on Dependable and Secure Computing.

[8]  Richard F. Paige,et al.  Searching for model migration strategies , 2012, ME '12.

[9]  Bernhard Rumpe,et al.  Achievements, Failures, and the Future of Model-Based Software Engineering , 2018, The Essence of Software Engineering.

[10]  Sander Vermolen,et al.  An Extensive Catalog of Operators for the Coupled Evolution of Metamodels and Models , 2010, SLE.

[11]  Sander Vermolen,et al.  Reconstructing Complex Metamodel Evolution , 2011, SLE.

[12]  Olivier Barais,et al.  Co-Evolving Code with Evolving Metamodels , 2020, 2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE).

[13]  Mark Rouncefield,et al.  Model-driven engineering practices in industry , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[14]  Kyriakos C. Chatzidimitriou,et al.  From requirements to source code: a Model-Driven Engineering approach for RESTful web services , 2017, Automated Software Engineering.

[15]  Shuai Li,et al.  Bidirectional Mapping between Architecture Model and Code for Synchronization , 2017, 2017 IEEE International Conference on Software Architecture (ICSA).

[16]  Antonio Cicchetti,et al.  Managing Dependent Changes in Coupled Evolution , 2009, ICMT@TOOLS.

[17]  Marie-Pierre Gervais,et al.  A semi-automatic maintenance and co-evolution of OCL constraints with (meta)model evolution , 2017, J. Syst. Softw..

[18]  Mark von Rosing,et al.  Business Process Model and Notation - BPMN , 2015, The Complete Business Process Handbook, Vol. I.

[19]  Jean-Marc Jézéquel,et al.  Code generation from UML models with semantic variation points , 2005, MoDELS'05.

[20]  Alexander Egyed,et al.  Co-evolution of Metamodels and Models through Consistent Change Propagation , 2013, ME@MoDELS.

[21]  David Notkin,et al.  ArchJava: connecting software architecture to implementation , 2002, ICSE '02.

[22]  James E. Rumbaugh,et al.  Unified Modeling Language (UML) , 2010, Encyclopedia of Software Engineering.

[23]  Alexander Egyed,et al.  Change Propagation-based and Composition-based Co-evolution of Transformations with Evolving Metamodels , 2018, MoDELS.

[24]  Gail C. Murphy,et al.  Hipikat: recommending pertinent software development artifacts , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[25]  Marie-Pierre Gervais,et al.  Detecting complex changes and refactorings during (Meta)model evolution , 2016, Inf. Syst..