Model Driven Reverse Engineering

(with Eclipse Modisco)

Gerson Sunyé

Naomod — Nantes Software Modeling Group

Introduction

Reverse Engineering is the process of examining an already implemented software system to represent it in a different form/formalism and at a higher abstraction level

— Chikofsky and Cross
mdre
  • E. J. Chikofsky and J. H. Cross. Reverse Engineering and Design Recovery: A Taxonomy. IEEE Software, 7(1):13–17, 1990

State-of-the-Art

MDRE vs. Reverse Engineering (early 2000’s)
  • Analysis platforms, language workbenches

  • OMG’s Architecture Driven Modernization

Specific MDRE solutions
  • Programming languages (Java, C++)

  • Goals: migration, integration, analysis

General-purpose MDRE solutions
  • Some general modeling (commercial) tools

  • Few generic MDRE solutions…​

Challenges

  • Are we able to deploy our approach on practical scenarios / systems of various technical natures?

  • Are we able to adapt and reuse our approach / components as part of other (MDRE) solutions?

  • Are we able to use our approach in the context of large-scale scenarios / systems?

Conceptual Approach (1/3)

  1. MDRE framework architecture

    • Reuse and integration examples

    • Technology-specific components

    • Technology-independent bricks

conceptual approach

Model Driven Reverse Engineering = Model Discovery + Model Understanding

Conceptual Approach (2/3)

model discovery
Figure 1. Model Discovery General Principle

Conceptual Approach (2/3)

model discovery
Figure 2. Model Discovery General Principle
two steps process
Figure 3. Possible Two-Steps Process

Conceptual Approach (3/3)

model understanding
Figure 4. Model Understanding

MDRE with Modisco

modisco logo

Reverse Engineering Scenarios

reverse engineering scenarios

Model Driven Reverse Engineering Approach

modisco approach
Figure 5. Use models to represent and manipulate artifacts from existing systems

Discover and Navigate

discover navigate

Understand and Extract

understand extract

Transform and Regenerate

transform regenerate

Eclipse Modisco

An Eclipse framework to support the elaboration of Model Driven Reverse Engineering solutions

Official Eclipse Modeling project
  • Open-source (EPL)

  • Based on other Eclipse Modeling projects

  • Released with Helios, Indigo, Juno, Kepler, Luna, Mars…

Eclipse Modisco

Supported by the OMG
  • Reference implementations for several ADM (Architecture Driven Modernization) standards:

    KDM

    Knowledge Discovery Metamodel

    SMM

    Structured Metrics Metamodel

    ASTM

    Abstract Syntax Tree Metamodel

Modisco Architecture

modisco architecture

Modisco Model Browser

A feature-rich Ecore model browser:
  • Generic (metamodel-independent)

  • Customizable (display, fonts, colors, icons, etc.)

  • Advanced navigation & search capabilities

modisco browser

MoDisco Discoverer Manager

  • Define and register model discoverers

  • Support for different legacy technologies

modisco discoverer

Modisco Workflow

Specify reverse engineering processes
  • Chain discoverers, transformations & generations

modisco workflow

Modisco Support for Java

Technology-specific components for Java
  • Complete metamodel

  • Corresponding discoverer & generator

  • Transformation to KDM

  • Advanced composite discoverer (Java + KDM)

modisco java

Modisco Support for JEE

Technology-specific components for JEE
  • Complete JSP metamodel & corresponding discoverer

  • Discoverers for web.xml & ejb-jar.xml files (based on XML) + generic framework

  • JEE queries & facets (based on Java)

modisco jee

Modisco Support for XML

Technology-specific components for XML
  • Generic support (XSD- or DTD- independent)

  • Complete metamodel (based W3C specification)

  • Corresponding discoverer

modisco xml

More information

Useful links:
Naomod Contact