Applying Metamodel-based Tooling to Object-oriented Code

Model-driven development processes mainly from the capabilities of modelling frameworks, since these offer an explicit representation of model elements and features, as well as reusable tooling, such as transformation languages or editor frameworks. Nevertheless, most software systems are not developed in a model-driven way although they do contain implicit models encoded in their object-oriented design. Adaptation to model-driven tooling imposes high manual effort and easily breaks compatibility with dependent code and existing tooling. We present an automated and minimally intrusive approach that makes implicit models in software systems explicit. We adapt existing object-oriented code so that it provides an explicit model representation, while preserving its original API. As a result, capabilities of modelling frameworks, such as persistence and change notifications, can be integrated into object-oriented code, and enable the application of reusable tools. We provide a classification of requirements that existing code has to fulfill, usable as an indicator for the applicability of modelling tools to them. An evaluation based on one artificial and two open-source case study systems shows the correct preservation of the API, as well as the ability to apply tooling to the modified code.

[1]  Georg Hinkel NMF: A Multi-platform Modeling Framework , 2018, ICMT.

[2]  Robert Heinrich,et al.  The CoCoME Platform for Collaborative Empirical Research on Information System Evolution : Evolution Scenarios in the Second Founding Period of SPP 1593 , 2018 .

[3]  Max E. Kramer,et al.  Ecoreification: Making Arbitrary Java Code Accessible to Metamodel-Based Tools , 2017, 2017 ACM/IEEE 20th International Conference on Model Driven Engineering Languages and Systems (MODELS).

[4]  Timothy Lethbridge,et al.  Umple: A framework for Model Driven Development of Object-Oriented Systems , 2015, 2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[5]  Timothy Lethbridge,et al.  Reverse engineering of object-oriented code into Umple using an incremental and rule-based approach , 2014, CASCON.

[6]  Jordi Cabot,et al.  MoDisco: A model driven reverse engineering framework , 2014, Inf. Softw. Technol..

[7]  Leo A. Meyerovich,et al.  Empirical analysis of programming language adoption , 2013, OOPSLA.

[8]  Wilhelm Hasselbring,et al.  Xbase: implementing domain-specific languages for Java , 2012, GPCE '12.

[9]  Gerardo Canfora,et al.  Achievements and challenges in software reverse engineering , 2011, Commun. ACM.

[10]  Martin Fowler,et al.  Domain-Specific Languages , 2010, The Addison-Wesley signature series.

[11]  Timothy Lethbridge,et al.  Umplification: Refactoring to Incrementally Add Abstraction to a Program , 2010, 2010 17th Working Conference on Reverse Engineering.

[12]  Jordi Cabot,et al.  MoDisco: a generic and extensible framework for model driven reverse engineering , 2010, ASE.

[13]  Liliana Favre,et al.  MDA-Based Reverse Engineering of Object Oriented Code , 2009, BMMDS/EMMSAD.

[14]  Liliana Favre,et al.  Formalizing MDA-Based Reverse Engineering Processes , 2008, 2008 Sixth International Conference on Software Engineering Research, Management and Applications.

[15]  Heiko Koziolek,et al.  CoCoME - The Common Component Modeling Example , 2007, CoCoME.

[16]  P. Tonella Reverse engineering of object oriented code , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[17]  Uwe Aßmann Automatic Roundtrip Engineering , 2003, Electron. Notes Theor. Comput. Sci..

[18]  Eleni Stroulia,et al.  A study on the current state of the art in tool-supported UML-based static reverse engineering , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[19]  John Vlissides,et al.  Pattern hatching: design patterns applied , 1998 .