Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "MoDisco"

m
(Replace entirely with new page.)
Line 1: Line 1:
 
{{Backlink|GMT}}  
 
{{Backlink|GMT}}  
  
[[Image:LogoMoDiscoSmall.jpg|right]]  
+
[[Image:LogoMoDiscoSmall.jpg|right]] Legacy systems embrace a large number of technologies, making the development of tools to cope with legacy systems evolution a tedious and time consuming task.
  
The [http://www.eclipse.org/gmt/modisco/ MoDisco] ('''Model Discovery''') component is an Eclipse/[[GMT]] component which has been initiated by the '''AtlanMod Team''', [http://www.inria.fr/ 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.  
+
As modernization projects face with both technologies combination and various modernization situations, model-driven approaches and tools offer the requisite abstraction level to build up mature and flexible modernization solutions.  
  
 
<br>  
 
<br>  
  
== Overview ==
+
== What is MoDisco&nbsp;? ==
  
The goal of [http://www.eclipse.org/gmt/modisco/ 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.
+
MoDisco provides an extensible framework to develop '''model-driven tools''' to support use-cases of '''existing software modernization'''&nbsp;:
  
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. The modular [[MoDisco/Architecture|architecture of MoDisco]], integrating OMG/ADM standards such as [[MoDisco/KDM|KDM]], will allow integrating all these contributions.
+
*'''Quality Assurance''': verifying whether an existing system meets the required qualities (detection of anti-patterns in existing code and computation of metrics.)
 +
*'''Documentation''': extraction of information from an existing system to help understanding one aspect of this system (structure, behaviour, persistence, data-flow, change impact , etc).  
 +
*'''Improvement''': transformation of an existing system to integrate better coding norms or design patterns.  
 +
*'''Migration''': transformation of an existing system to change a component, the framework, the language, or its architecture
  
[[Image:Modisco-Architecture.PNG|center|300px|Architecture]]  
+
<br> [[Image:Modisco-Overview.PNG|center|600px]]  
  
<br> 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.
+
<br> In each case, modernizing an existing software system implies:
  
== Definitions  ==
+
*'''Describing''' the information extracted out of the artifacts of this system
 +
*'''Understanding''' the extracted information in order to take the good modernization decisions
 +
*'''Transforming''' this information to new artifacts facilitating the modernization (metrics, document, transformed code, ...)
  
We provide here a set of definitions for the main different concepts which are relevant within the context of MoDisco (i.e. which are related to model discovery and model-driven reverse engineering):  
+
MoDisco aims at supporting these three phases by providing&nbsp;:  
  
*'''Model discovery''': the general process composed of the two following metamodel-driven steps:
+
*'''Metamodels''' to describe existing systems
**the retrieval of the information from an existing system according to specific metamodels
+
*'''Discoverers''' to automaticaly create models of these systems<br>
**the injection of this information into one or several models that conform to the same specific metamodels.
+
*'''Generic tools''' to understand and transform complex models created out of existing systems
 +
*'''Use-cases''' illustrating how MoDisco can support modernization process
  
*'''Discoverer''': an implementation (i.e. a program, a ''tool'', etc) that has been designed for performing a model discovery process.
+
== Description  ==
  
== Available Components  ==
+
To facilitate reuse of components between several use-cases, MoDisco is organized in '''three layers''':
  
MoDisco already provides an initial set of [http://www.eclipse.org/gmt/modisco/useCases/ use cases] to illustrate metamodel-driven reverse engineering.  
+
{|
 +
|-
 +
| [[Image:Modisco-Architecture.PNG|300px]]
 +
|
 +
*'''Use-Cases'''&nbsp;: tools providing a solution for a specific modernization use-case.
  
You can develop your own use-cases by using the components available with MoDisco.
+
<br>
  
=== Metamodels  ===
+
*'''Technologies'''&nbsp;: components dedicated to one legacy technology but independent from one specific modernization use case.
  
MoDisco provides several metamodel implementations dedicated to model-driven reverse-engineering.
+
<br>
  
[[MoDisco/Metamodels|See complete list ...]]
+
*'''Infrastructure'''&nbsp;: generic components independent from any legacy technology.
  
=== Discoverers  ===
+
|}
  
MoDisco provides several discoverers to get models out of existing systems.  
+
[[MoDisco/Architecture|See MoDisco architecture detail...]]
  
[[MoDisco/Discoverers|See complete list ...]]
+
=== Infrastructure  ===
  
=== Model Editor  ===
+
All the components of this layer are available as plugins and provided in one single Eclipse feature
  
MoDisco provides a generic browser to inspect the contents of models created by the discoverers. This browser is an extension of the ECore editor to facilitate the navigation through objects and links contained by a model.  
+
{{CommentBox|Feature '''Infrastructure 0.7''' contains :
 +
* reference implementations of '''OMG/ADM metamodels''' ([http://wiki.eclipse.org/MoDisco/KDM KDM] and [http://wiki.eclipse.org/MoDisco/SMM SMM])
 +
* a transformation from '''[http://wiki.eclipse.org/MoDisco/KDM/UMLConverter KDM to UML]'''
 +
* a '''[http://wiki.eclipse.org/MoDisco/ModelEditor model browser]''' to facilitate the navigation through a complex model
 +
* a '''[http://wiki.eclipse.org/MoDisco/DiscoverersManager discovery manager]''' to register and integrate discoverers into Eclipse
 +
* a '''[http://wiki.eclipse.org/MoDisco/Workflow discovery workflow]''' to easily chain several discoverers and transformators
 +
* a '''[http://wiki.eclipse.org/MoDisco/KDMSourceDiscoverer sources discoverer]''' which creates a KDM model describing the files and directories of an existing project
 +
* a '''[http://www.eclipse.org/gmt/modisco/infrastructure/MetricsVisualizationBuilder/ metrics vizualizations builder]''' which generates HTML, SVG or Excel outputs from a model containing metrics
 +
}}
  
[[Image:MoDiscoModelBrowserMainUI.png]]
+
=== Technologies ===
  
[[MoDisco/ModelEditor|See complete features ...]]
+
All the components of this layer are available as plugins and provided in several Eclipse features&nbsp;: one for each technology.  
  
=== Discoverers Manager  ===
+
{{CommentBox|Feature '''J2SE5 0.7''' contains:
 +
* a complete [http://wiki.eclipse.org/MoDisco/J2SE5 metamodel] for the Java language
 +
* a complete [http://wiki.eclipse.org/MoDisco/JavaDiscoverer discoverer] to create J2SE5 models from Java source code contained in a Java project
 +
* a transformation from [http://wiki.eclipse.org/MoDisco/JavaDiscoverer J2SE5 models to KDM]}}
  
MoDisco provides a framework to define a standard contract for discoverers and generic tools to manipulate them.  
+
{{CommentBox|Feature '''JavaAST 0.2''' contains:
 +
* a complete metamodel for the Java language
 +
* a complete [http://www.eclipse.org/gmt/modisco/technologies/JavaAbstractSyntax/ discoverer] to create JavaAST models from Java source code contained in a Java project}}
  
[[MoDisco/DiscoverersManager|See complete features ...]]
+
''Note&nbsp;: a new component merging J2SE5 and JavaAST has been developped and will be released soon''
  
== Project plan ==
+
{{CommentBox|Feature '''CSharp 0.6''' contains:
 +
* a complete [http://wiki.eclipse.org/MoDisco/CSharp metamodel] for the C# language
 +
* a transformation from [http://wiki.eclipse.org/MoDisco/CSharpDiscoverer CSharp models to KDM]'' }}
 +
 
 +
=== Use-Cases ===
 +
 
 +
All the components of this layer are available as plugins
 +
 
 +
*'''Model Filter'''&nbsp;: creation of a UML model containing dependencies for a Java classes selected in the Eclipse environment
 +
*'''[http://www.eclipse.org/gmt/modisco/useCases/BugzillaMetrics/ Bugzilla metrics]'''&nbsp;: conversion of Bugzilla data into Excel, HTML or SVG documents
 +
*'''[http://www.eclipse.org/gmt/modisco/useCases/BIRTSampleDB/ BIRTSampleDB]'''&nbsp;: extraction of model from a BIRT database.
 +
 
 +
== Relationship with other Eclipse Projects  ==
 +
 
 +
MoDisco reuses lots of EMP projects&nbsp;:
 +
 
 +
*'''[http://www.eclipse.org/modeling/emf/ EMF]''' to describe and manipulate models of existing systems.
 +
*'''[http://www.eclipse.org/m2m/ M2M]''' to implement transformation of models into other models
 +
*'''[http://www.eclipse.org/modeling/m2t/ M2T]''' to implement generation of text (documentation or code)
 +
 
 +
MoDisco also reuses other projects such as&nbsp;:
 +
 
 +
*'''[http://www.eclipse.org/jdt/ JDT]''' to create models out of Java source code
 +
 
 +
== Project plan ==
  
 
Additional components are planned to be added to MoDisco.  
 
Additional components are planned to be added to MoDisco.  
Line 65: Line 112:
 
[[MoDisco/Project Plan|See the project's plan ...]]  
 
[[MoDisco/Project Plan|See the project's plan ...]]  
  
== Presentations ==
+
== Team ==
  
See MoDisco [http://www.eclipse.org/gmt/modisco/doc/ presentations] ...  
+
MoDisco has been initiated by the [http://www.inria.fr/recherche/equipes/atlanmod.en.html AtlanMod Team] (INRIA) and is strongly supported by [http://www.mia-software.com Mia-Software]&nbsp;:
  
== How to contribute&nbsp;? ==
+
*Hugo Bruneliere - AtlanMod (commiter)
 +
*Gabriel Barbier - Mia-Software (commiter)
 +
*Jean Bezivin - AtlanMod
 +
*Nicolas Bros - Mia-Software
 +
*Grégoire Dupé - Mia-Software
 +
*Frédéric Jouault - AtlanMod
 +
*Fabien Giquel - Mia-Software
 +
*Frédéric Madiot - Mia-Software
 +
*Jean-Sebastien Sottet - AtlanMod
 +
 
 +
== How to contribute&nbsp;? ==
  
 
See the [[MoDisco/How to contribute|process]] to contribute components to MoDisco.  
 
See the [[MoDisco/How to contribute|process]] to contribute components to MoDisco.  
  
== See Also ==
+
== See Also ==
 +
 
 +
Homepage on Eclipse website&nbsp;: [http://www.eclipse.org/gmt/modisco www.eclipse.org/gmt/modisco]
 +
 
 +
Newsgroup&nbsp;: {{Newsgroup|eclipse.modisco}}
  
[http://www.eclipse.org/gmt/modisco MoDisco], The '''MoDisco''' component's Eclipse homepage
+
Documents&nbsp;: [http://www.eclipse.org/gmt/modisco/doc/ presentations]  
  
 
[[Category:Modeling]] [[Category:Reverse-Engineering]] [[Category:MDD]] [[Category:GMT]] [[Category:MoDisco]]
 
[[Category:Modeling]] [[Category:Reverse-Engineering]] [[Category:MDD]] [[Category:GMT]] [[Category:MoDisco]]

Revision as of 10:40, 22 July 2009

< To: GMT

LogoMoDiscoSmall.jpg
Legacy systems embrace a large number of technologies, making the development of tools to cope with legacy systems evolution a tedious and time consuming task.

As modernization projects face with both technologies combination and various modernization situations, model-driven approaches and tools offer the requisite abstraction level to build up mature and flexible modernization solutions.


What is MoDisco ?

MoDisco provides an extensible framework to develop model-driven tools to support use-cases of existing software modernization :

  • Quality Assurance: verifying whether an existing system meets the required qualities (detection of anti-patterns in existing code and computation of metrics.)
  • Documentation: extraction of information from an existing system to help understanding one aspect of this system (structure, behaviour, persistence, data-flow, change impact , etc).
  • Improvement: transformation of an existing system to integrate better coding norms or design patterns.
  • Migration: transformation of an existing system to change a component, the framework, the language, or its architecture

Modisco-Overview.PNG


In each case, modernizing an existing software system implies:

  • Describing the information extracted out of the artifacts of this system
  • Understanding the extracted information in order to take the good modernization decisions
  • Transforming this information to new artifacts facilitating the modernization (metrics, document, transformed code, ...)

MoDisco aims at supporting these three phases by providing :

  • Metamodels to describe existing systems
  • Discoverers to automaticaly create models of these systems
  • Generic tools to understand and transform complex models created out of existing systems
  • Use-cases illustrating how MoDisco can support modernization process

Description

To facilitate reuse of components between several use-cases, MoDisco is organized in three layers:

Modisco-Architecture.PNG
  • Use-Cases : tools providing a solution for a specific modernization use-case.


  • Technologies : components dedicated to one legacy technology but independent from one specific modernization use case.


  • Infrastructure : generic components independent from any legacy technology.

See MoDisco architecture detail...

Infrastructure

All the components of this layer are available as plugins and provided in one single Eclipse feature

Feature Infrastructure 0.7 contains :

Technologies

All the components of this layer are available as plugins and provided in several Eclipse features : one for each technology.

Feature J2SE5 0.7 contains:
Feature JavaAST 0.2 contains:
  • a complete metamodel for the Java language
  • a complete discoverer to create JavaAST models from Java source code contained in a Java project

Note : a new component merging J2SE5 and JavaAST has been developped and will be released soon

Feature CSharp 0.6 contains:

Use-Cases

All the components of this layer are available as plugins

  • Model Filter : creation of a UML model containing dependencies for a Java classes selected in the Eclipse environment
  • Bugzilla metrics : conversion of Bugzilla data into Excel, HTML or SVG documents
  • BIRTSampleDB : extraction of model from a BIRT database.

Relationship with other Eclipse Projects

MoDisco reuses lots of EMP projects :

  • EMF to describe and manipulate models of existing systems.
  • M2M to implement transformation of models into other models
  • M2T to implement generation of text (documentation or code)

MoDisco also reuses other projects such as :

  • JDT to create models out of Java source code

Project plan

Additional components are planned to be added to MoDisco.

See the project's plan ...

Team

MoDisco has been initiated by the AtlanMod Team (INRIA) and is strongly supported by Mia-Software :

  • Hugo Bruneliere - AtlanMod (commiter)
  • Gabriel Barbier - Mia-Software (commiter)
  • Jean Bezivin - AtlanMod
  • Nicolas Bros - Mia-Software
  • Grégoire Dupé - Mia-Software
  • Frédéric Jouault - AtlanMod
  • Fabien Giquel - Mia-Software
  • Frédéric Madiot - Mia-Software
  • Jean-Sebastien Sottet - AtlanMod

How to contribute ?

See the process to contribute components to MoDisco.

See Also

Homepage on Eclipse website : www.eclipse.org/gmt/modisco

Newsgroup : Newsgroup.gif eclipse.modisco

Documents : presentations

Back to the top