A General Overview on MoDisco: A Model Driven Reverse Engineering Framework

Lasith Jayalath
2 min readSep 12, 2019

MoDisco has been implemented as an Eclipse open source project which provides an extensible and customizable Model Driven Reverse Engineering (MDRE) framework to develop model-driven tools. The developed tools will support in different reverse engineering scenarios such as legacy system migration or modernization, quality assurance, retro-documentation, etc. And the final goal of MoDisco is to offer an open source genetic and extensible MDRE framework.

Approach

The overall idea is to retrieve models from a given system depending on the required viewpoints. There can be one or several models depending on the system. And then will start working on he retrieved models directly.

Two Phases of the Approach

The model representation will help the reverse engineering process in the following ways,

  • Ease of reusing genetic metamodels and related transformations to handle and perform the required computations.
  • Ease of extending the support to several different kinds of technology.

The approach used by MoDisco is consisting with two phases,

  1. Model Discovery
  2. Model Understanding

Model Discovery

It can be considered as the initial phase of any type of MDRE process. During this phase it obtains a model which is able to represent the view on the legacy system. Here the model can be technology-specific or more genetic (depending on the expressed need). Here the model is realized by a software component which is known as “discoverer”. When considering about the real world scenario sometimes it requires several models to fully reverse engineer given system. In case of such a situation it will use several different discoverers. Later these models will be combined in order to get an overall view of the system.

Model Understanding

At the end of the first phase the legacy system is represented as models. Now these models can be utilized to achieve various targeted reverse engineering scenarios such as retro-documentation, metrics computation, query analysis, refactoring, code generation, etc. In order to achieve the above mentioned objectives chains of model transformations take place until obtaining the final desired outcome. And there can be several intermediate representations too. For some common and already identified scenarios this process can be automated.

--

--

Lasith Jayalath

Software Engineer | WSO2 | Faculty of Information Technology | University of Moratuwa| Richmondite