Difference between revisions of "MoDisco/Architecture"

From Eclipsepedia

Jump to: navigation, search
(Use-cases)
m (h(n) to h(n+1) titles)
 
(22 intermediate revisions by 4 users not shown)
Line 2: Line 2:
  
 
To facilitate reuse of components between several use-cases, [[MoDisco]] is organized in three layers:  
 
To facilitate reuse of components between several use-cases, [[MoDisco]] is organized in three layers:  
* the [[#Use-cases|Use-Cases]] layer containing components providing a solution for a specific modernization use-case.
+
* the [[#Use-cases layer|Use-Cases]] layer containing components providing a solution for a specific modernization use-case.
* the [[#Technologies|Technologies]] layer containing components dedicated to one legacy technology but independent from the modernization use case.
+
* the [[#Technology layer|Technology]] layer containing components dedicated to one legacy technology but independent from the modernization use case.
* the [[#Infrastructure|Infrastructure]] layer containing generic components independent from any legacy technology.
+
* the [[#Infrastructure layer|Infrastructure]] layer containing generic components independent from any legacy technology.
 +
 
  
 
[[Image:Modisco-Architecture.PNG|450px]]
 
[[Image:Modisco-Architecture.PNG|450px]]
  
== Use-cases ==
+
== Use-cases layer ==
  
 
This layer contains components supporting legacy modernization use-cases. The kind of use-cases MoDisco could support is quite infinite. Nevertheless, the main ones are well identified:
 
This layer contains components supporting legacy modernization use-cases. The kind of use-cases MoDisco could support is quite infinite. Nevertheless, the main ones are well identified:
Line 16: Line 17:
 
* '''Cartography''': detection of the main components of a system and their dependencies.
 
* '''Cartography''': detection of the main components of a system and their dependencies.
 
* '''Understanding''': extraction of features presented independently from the implementation (structure, behaviour, persistence, data-flow …).
 
* '''Understanding''': extraction of features presented independently from the implementation (structure, behaviour, persistence, data-flow …).
* '''Reverse-Modeling''': creation of models out of existing systems to populate modeling tools (supporting UML or Domain-Specific Languages).
+
* '''Reverse-Modeling''': creation of models out of existing systems to populate modeling tools (supporting [[MDT-UML2|UML]] or Domain-Specific Languages).
 
* '''Refactoring''': improvement of the source code to integrate better coding norms or design patterns.
 
* '''Refactoring''': improvement of the source code to integrate better coding norms or design patterns.
 
* '''Migration''': transformation of the source code to change the framework, the language, or the architecture of existing applications.
 
* '''Migration''': transformation of the source code to change the framework, the language, or the architecture of existing applications.
Line 26: Line 27:
 
Other more specific use-cases may be supported as, for example, extraction of business rules from programs to populate a business-rules engine, modification of an existing system to better integrate with another system, etc…
 
Other more specific use-cases may be supported as, for example, extraction of business rules from programs to populate a business-rules engine, modification of an existing system to better integrate with another system, etc…
  
== Technologies ==
+
== Technology layer ==
  
 
The technology layer contains components dedicated to one legacy technology.  
 
The technology layer contains components dedicated to one legacy technology.  
Line 47: Line 48:
 
* analysing parameter files
 
* analysing parameter files
 
* analysing execution logs
 
* analysing execution logs
* unzipping an archive to access to its contents
+
* unzipping an archive to access its contents
 
* querying a database
 
* querying a database
 
* using APIs to access a tool with which the system has been designed
 
* using APIs to access a tool with which the system has been designed
Line 62: Line 63:
 
* Generator to regenerate the initial artefact from its model
 
* Generator to regenerate the initial artefact from its model
  
== Infrastructure ==
 
  
<to be completed>
+
*See [[MoDisco/Roadmap#Technologies_layer | Technology layer's roadmap]]
 +
 
 +
== Infrastructure layer ==
 +
 
 +
The Infrastructure layer aims at providing components independent from use-cases and legacy technologies.
 +
 
 +
There will be two kinds of components in this layer :
 +
 
 +
===MoDisco Knowledge components===
 +
These components provide metamodels describing legacy systems independently from their technology. Like components of the Technology layer, these components can come with discoverers or utilities.
 +
 
 +
Examples of MoDisco Knowledge components are the metamodels from [http://adm.omg.org OMG/ADM] :
 +
*[http://www.omg.org/technology/documents/modernization_spec_catalog.htm KDM] (Knowledge Discovery Metamodel)
 +
*ASTM (Abstract Syntax Tree Metamodel)
 +
*SMM (Software Metrics Metamodel).
 +
 
 +
===MoDisco Technical components===
 +
These components are utilities to build or facilitate the use of all the other components.
 +
 
 +
Examples of MoDisco Technical components are :
 +
*abstract discoverers from which concrete discoverers can derive
 +
*a file-system metamodel describing the organization of files and directories
 +
*a model browser facilitating the visualization of MoDisco models
 +
 
 +
 
 +
*See [[MoDisco/Roadmap#Infrastructure_layer |MoDisco Infrastructure layer's roadmap]]
 +
 
 +
[[Category:MoDisco]]

Latest revision as of 11:04, 19 April 2010

MoDisco aims at providing a platform supporting various legacy modernization use-cases for various kinds of existing technologies.

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

  • the Use-Cases layer containing components providing a solution for a specific modernization use-case.
  • the Technology layer containing components dedicated to one legacy technology but independent from the modernization use case.
  • the Infrastructure layer containing generic components independent from any legacy technology.


Modisco-Architecture.PNG

Contents

[edit] Use-cases layer

This layer contains components supporting legacy modernization use-cases. The kind of use-cases MoDisco could support is quite infinite. Nevertheless, the main ones are well identified:

  • Comparison : comparing two versions of the same application at a structural level
  • Quality Analysis: detection of anti-patterns in existing code and computation of metrics.
  • Cartography: detection of the main components of a system and their dependencies.
  • Understanding: extraction of features presented independently from the implementation (structure, behaviour, persistence, data-flow …).
  • Reverse-Modeling: creation of models out of existing systems to populate modeling tools (supporting UML or Domain-Specific Languages).
  • Refactoring: improvement of the source code to integrate better coding norms or design patterns.
  • Migration: transformation of the source code to change the framework, the language, or the architecture of existing applications.


Modisco-UseCases.PNG


Other more specific use-cases may be supported as, for example, extraction of business rules from programs to populate a business-rules engine, modification of an existing system to better integrate with another system, etc…

[edit] Technology layer

The technology layer contains components dedicated to one legacy technology.


These components can be reused between several use-cases components involving the same legacy technology. For example, a use-case computing metrics on Java source code and another providing refactoring for Java applications could reuse the same component.


Use-cases generally involve only one legacy technology (the one used to implement the existing system). Nevertheless, some use-cases can involve several legacy technologies. It is the case when the existing system is heterogeneous, built with several languages. For example, when a system, implemented with Java, stores data into a relational database using JDBC, the use-case may need MoDisco components able to analyse Java and SQL source code.


Modisco-Technologies.PNG


Each technology component is composed of, at least, a metamodel of the dedicated technology. This metamodel describes the elements required to support modernization use-cases for the corresponding technology. Depending on the kind of use-case the metamodel can be complete (for refactoring or migration) or partial (for cartography or some quality analysis scenarii).


Ideally, the metamodel is completed by a discoverer, a component which aims at building models conforming to the metamodel from artefacts of an existing system. Artifacts analysed by discoverers are not necessarily source code files. There exists multiple other ways a discoverer can find the information needed to create a model of an existing system :

  • analysing parameter files
  • analysing execution logs
  • unzipping an archive to access its contents
  • querying a database
  • using APIs to access a tool with which the system has been designed
  • translating data provided by a reverse-engineering tool into model
  • transforming models provided by another discoverer


A MoDisco Technology component can come with utilities dedicated to its metamodel:

  • Browsers to navigate the models more easily
  • Viewers to represent the models graphically
  • Computation of standard metrics
  • Transformation to standard metamodels (ASTM, KDM, UML …)
  • Generator to regenerate the initial artefact from its model


[edit] Infrastructure layer

The Infrastructure layer aims at providing components independent from use-cases and legacy technologies.

There will be two kinds of components in this layer :

[edit] MoDisco Knowledge components

These components provide metamodels describing legacy systems independently from their technology. Like components of the Technology layer, these components can come with discoverers or utilities.

Examples of MoDisco Knowledge components are the metamodels from OMG/ADM :

  • KDM (Knowledge Discovery Metamodel)
  • ASTM (Abstract Syntax Tree Metamodel)
  • SMM (Software Metrics Metamodel).

[edit] MoDisco Technical components

These components are utilities to build or facilitate the use of all the other components.

Examples of MoDisco Technical components are :

  • abstract discoverers from which concrete discoverers can derive
  • a file-system metamodel describing the organization of files and directories
  • a model browser facilitating the visualization of MoDisco models