KDM and MoDisco for MDRE process
What exactly is reverse engineering? In a general sense, reverse engineering is simply an effort to try and recreate the design of a product by examining the product itself. Reverse engineering is the process of asking “how did they do that?” and then trying to do it yourself. In terms of software however, reverse engineering involves examining what a piece of software does, and how it does it.
This book covers many diverse topics. It starts with a discussion of common “reverse engineering tools” such as disassemblers, decompilers, and debuggers. It moves along to discuss low-level details of common system architectures and file formats. It then proceeds to talk about details of the compilation process, and how high-level code becomes low-level instructions.
Unfortunately, the title “Disassemblers, Debuggers, System Architectures, File Formats, Compilers and Low-level code Generation” doesn’t roll off the tongue as well as “Reverse Engineering” does.
Knowledge Discovery Metamodel (KDM) is publicly available specification from the Object Management Group (OMG). KDM is a common intermediate representation for existing software systems and their operating environments, that defines common metadata required for deep semantic integration of Application Lifecycle Management tools. KDM was designed as the OMG’s foundation for software modernization, IT portfolio management and software assurance. KDM uses OMG’s Meta-Object Facility to define an XMI interchange format between tools that work with existing software as well as an abstract interface (API) for the next-generation assurance and modernization tools. KDM standardizes existing approaches to knowledge discovery in software engineering artifacts, also known as software mining.
Principles of model discovery are based on a metamodel-driven approach (see Figure 1). It means that every step is guided by a metamodel. Thus, the very first step of a model discovery process is always to define the metamodel corresponding to the models you want to discover. This step is common to all kinds of systems.
Figure 1 Metamodel driven model discovery
Then, the second step is about creating one or many discovering tools that will be called “discoverers” in this document. These tools extract necessary information from the system in order to build a model conforming to the previously defined metamodel. The way to create these discoverers is often manual but can also be semi-automatic. The output of a discoverer is a model, in XMI format for instance.
The MoDisco (Model Discovery) component is an Eclipse/GMT component which has been initiated by the ATLAS Team, INRIA. The aim of the GMT project is to produce a set of prototypes in the area of Model Driven Engineering (MDE). The MoDisco project acts in this way by providing a support for model-driven reverse engineering, i.e. principles, methodologies and tooling.
The goal of MoDisco (Model Discovery) is to allow practical extractions of models from legacy systems. Because of the widely different nature and technological heterogeneity of legacy systems, there are several different ways to extract models from such systems. MoDisco proposes a generic and extensible metamodel-driven approach to model discovery. A basic framework and a set of guidelines are provided to the Eclipse contributors to bring their own solutions to discover models in various kinds of legacy.
Due to the highly diversified nature of the considered legacy, MoDisco is a collaborative component involving many organizations. Each of them will bring its own expertise in a given area. A common infrastructure, inspired by the OMG KDM recommendation, will allow integrating all these contributions.
As a GMT component, MoDisco will make good use of other GMT components or solutions available in the Eclipse Modeling Project (EMF, M2M, M2T, GMF, TMF, etc), and more generally of any plugin available in the Eclipse environment.
Follow you can find same MoDisco tools.
MoDisco Tool – KDM-to-UML2 Converter
This tool is about converting KDM models into UML2 models in order to allow integrating KDM-compliant tools (i.e. discoverers) with UML2-compliant tools (e.g. modelers, model transformation tools, code generators, etc).[link]
MoDisco Tool – Jar2UML Discovery Tool
This discovery tool, written by Dennis Wagelaar from the System and Software Engineering Lab (VUB), is about generating UML models from Java APIs. It takes a Jar file as input and generates a UML file (that contains a representation of the API) as output.[link]
MoDisco Tool – Java Abstract Syntax Discovery Tool
This generic tool is about discovering a full abstract syntax tree (AST) of the code (statements, expressions, annotations and Javadoc) taken from a Java compilation unit (typically a Class). It builds models, representing Java compilation units, which conform to a metamodel designed from the Eclipse JDT Java API. [link]