MoDisco: A model driven reverse engineering framework

Context: Most companies, independently of their size and activity type, are facing the problem of managing, maintaining and/or replacing (part of) their existing software systems. These legacy systems are often large applications playing a critical role in the company’s information system and with a non-negligible impact on its daily operations. Improving their comprehension (e.g., architecture, features, enforced rules, handled data) is a key point when dealing with their evolution/modernization. Objective: The process of obtaining useful higher-level representations of (legacy) systems is called reverse engineering (RE), and remains a complex goal to achieve. Socalled Model Driven Reverse Engineering (MDRE) has been proposed to enhance more traditional RE processes. However, generic and extensible MDRE solutions potentially addressing several kinds of scenarios relying on different legacy technologies are still missing or incomplete. This paper proposes to make a step in this direction. Method: MDRE is the application of Model Driven Engineering (MDE) principles and techniques to RE in order to generate relevant model-based views on legacy systems, thus facilitating their understanding and manipulation. In this context, MDRE is practically used in order to 1) discover initial models from the legacy artifacts composing a given system and 2) understand (process) these models to generate relevant views (i.e., derived models) on this system. Results: Capitalizing on the different MDRE practices and our previous experience (e.g., in real modernization projects), this paper introduces and details the MoDisco open source MDRE framework. It also presents the underlying MDRE global methodology and architecture accompanying this proposed tooling. Conclusion: MoDisco is intended to make easier the design and building of modelbased solutions dedicated to legacy systems RE. As an empirical evidence of its relevance and usability, we report on its successful application in real industrial projects and on the concrete experience we gained from that.

[1]  Mirko Seifert,et al.  Closing the Gap between Modelling and Java , 2009, SLE.

[2]  Hall Chapman,et al.  Software Reuse and Reverse Engineering in Practice , 1992 .

[3]  H. M. Sneed Migration of procedurally oriented COBOL programs in an object-oriented architecture , 1992, Proceedings Conference on Software Maintenance 1992.

[4]  Romain Robbes,et al.  Software systems as cities: a controlled experiment , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[5]  William J. Premerlani,et al.  An approach for reverse engineering of relational databases , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[6]  Juha-Pekka Tolvanen,et al.  MetaEdit+: defining and using domain-specific modeling languages and code generators , 2003, OOPSLA '03.

[7]  Eelco Visser,et al.  Model-Driven Software Evolution: A Research Agenda , 2007 .

[8]  Jürgen Ebert,et al.  GUPRO - Generic Understanding of Programs , 2002, Electron. Notes Theor. Comput. Sci..

[9]  Aniello Cimitile,et al.  RE2: Reverse-engineering and reuse re-engineering , 1994, J. Softw. Maintenance Res. Pract..

[10]  Kalle Lyytinen,et al.  MetaEdit - A Flexible Graphical Environment for Methodology Modelling , 1991, CAiSE.

[11]  Thomas Olsson,et al.  Supporting traceability and inconsistency management between software artifacts , 2002, ICSE 2002.

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

[13]  Harry M. Sneed,et al.  Migrating from COBOL to Java , 2010, 2010 IEEE International Conference on Software Maintenance.

[14]  Jesús García Molina,et al.  An Architecture-Driven Modernization Tool for Calculating Metrics , 2010, IEEE Software.

[15]  Tibor Gyimóthy,et al.  Columbus - reverse engineering tool and schema for C++ , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[16]  Jean Bézivin,et al.  ATL: A model transformation tool , 2008, Sci. Comput. Program..

[17]  Tian Zhao,et al.  Towards a Model-driven Approach for Reverse Engineering Design Patterns , 2009, TWOMDE@MoDELS.

[18]  Franck Barbier,et al.  Model-Driven Reverse Engineering of COBOL-Based Applications , 2010 .

[19]  M. G. Rekoff,et al.  On reverse engineering , 1985, IEEE Transactions on Systems, Man, and Cybernetics.

[20]  Gabor Karsai,et al.  The Generic Modeling Environment , 2001 .

[21]  Jesús Sánchez Cuadrado,et al.  Model-driven reverse engineering of legacy graphical user interfaces , 2010, ASE.

[22]  Jean Bézivin,et al.  On the unification power of models , 2005, Software & Systems Modeling.

[23]  Michele Lanza CodeCrawler - polymetric views in action , 2004, Proceedings. 19th International Conference on Automated Software Engineering, 2004..

[24]  Luciano Baresi,et al.  A Toolbox for Automating Visual Software Engineering , 2002, FASE.

[25]  Weijun Sun,et al.  A Model-Driven Reverse Engineering Approach for Semantic Web Services Composition , 2009, 2009 WRI World Congress on Software Engineering.

[26]  Pascal Fradet,et al.  Consistency checking for multiple view software architectures , 1999, ESEC/FSE-7.

[27]  Jean-Marie Favre,et al.  Foundations of Model (Driven) (Reverse) Engineering : Models - Episode I: Stories of The Fidus Papyrus and of The Solarus , 2004, Language Engineering for Model-Driven Software Development.

[28]  Lionel C. Briand,et al.  Toward the Reverse Engineering of UML Sequence Diagrams for Distributed Java Software , 2006, IEEE Transactions on Software Engineering.

[29]  Philip H. Newcomb,et al.  Information Systems Transformation: Architecture-Driven Modernization Case Studies , 2010 .

[30]  Liliana Favre Model Driven Architecture for Reverse Engineering Technologies: Strategic Directions and System Evolution , 2010 .

[31]  Jean-Marc Jézéquel,et al.  Model-driven engineering for software migration in a large industrial context , 2007, MODELS'07.

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

[33]  Rick Kazman,et al.  Requirements for integrating software architecture and reengineering models: CORUM II , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[34]  Eldad Eilam,et al.  Reversing: Secrets of Reverse Engineering , 2005 .

[35]  T. C. Nicholas Graham,et al.  An Iterative Framework for Software Architecture Recovery: An Experience Report , 2008, ECSA.

[36]  Axel Uhl,et al.  Model-Driven Architecture , 2002, OOIS Workshops.

[37]  Elmar Jürgens,et al.  Flexible architecture conformance assessment with ConQAT , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[38]  Michael L. Nelson A Survey of Reverse Engineering and Program Comprehension , 2005, ArXiv.

[39]  R. E. Kurt Stirewalt,et al.  Model-driven reverse engineering , 2004, IEEE Software.

[40]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[41]  Stuart Kent,et al.  Model Driven Engineering , 2002, IFM.

[42]  Olivier Barais,et al.  Integrating legacy systems with MDE , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.