Skip to content

Instantly share code, notes, and snippets.

@yuriploc
Last active February 17, 2022 08:31
Show Gist options
  • Save yuriploc/22a6e8b3f8eeda8b9664523def2973e9 to your computer and use it in GitHub Desktop.
Save yuriploc/22a6e8b3f8eeda8b9664523def2973e9 to your computer and use it in GitHub Desktop.

Survey and classification of model transformation tools

Objective: To present 60 metamodel-based transformation tools and compare them using a qualitative framework.

Method: Classification by transformation approach and compare by 46 facets in 6 categories.

  • More than half (6 of 11) of the tools based on a relational transformation language have been discontinued.
  • Four out of nine tools targeting the QVT standard have been discontinued

General

Already seen

Model-level

Support for different languages and standards to express models and metamodels, repositories, and model management.

Table 4

Modeling Languages (ML)

Tool DSML GPML
UML-RSDS UML 2.x -
MagicDraw UML 1.x/2.x & SysML & BPMN -
SPARX UML 2.x & SysML & BPMN & BPEL & UPDM & TOGAF & SOAML & SOMF -
Blu Age UML 2.x OOP
AToMPM UML 2.x -
Umple UML 2.x -
Actifsource UML 2.x -
VMTS UML 2.x OOP
Fujaba UML 2.x -
Together UML 2.x/1.x & BPMN -
Modelio SysML & BPMN & TOGAF & UPDM & SOAML & UTP -
MetaEdit+ SysML Petri Nets
AToM3 - Petri Nets
GrGen.NET Proprietary OOP
AGG ATG -

Metamodeling Languages (MML)

Meta-Object Facility (MOF)

  • eMOF - subset of UML class diagrams
  • cMOF - UML
  • Ecore - based on eMOF (EMF)
  • Kernel MetaModel (KM3) - subset of Ecore

Others exist

GOPPRR (MetaEdit+), ArkM3 (AToMPM), Genmodel (Henshin), MOLA MOF (MOLA), VPM (VIATRA before June 2015), VMTS Root (VMTS), MetaModeler (ModelMorf), and Umple (Umple).

Model Comparison (MC)

To identify similarities and differences between homogeneous and heterogeneous models for tasks such as testing and model evolution management.

diff

Tools: ModelAnt, MetaEdit+, Umple, SPARX, Together, Epsilon (ECL), Blu Age, GRoundTram, MOMoT and VIATRA.

Model Query (MQ)

Used to request specific contents or a selection of the model elements. Model query can be categorized according to its supporting query language as: Graph patterns or OCL based.

context Meeting::isConfirmed : Boolean
init: false
context Teammember:meetings : Set(Meetings)
init: Set{}

Querying can be also used for other purposes, such as model analysis and evolution, and reporting.

Some tools provide model query as a standalone feature retrieving information without any side-effects on the models.

MetaModeling Environment (MME)

Whether the tool can be used to define metamodels.

Tools:

  • Melange
  • MetaEdit+
  • Kermeta2
  • AToM3
  • AToMPM
  • VMTS (supports an arbitrary number of metamodel levels)

Model Repositories (MR)

Repositories such as the Eclipse Modeling Framework (EMF) and the NetBeans Meta-data Repository (MDR) are used to store large models, using an API to access and manipulate the models.

EMF, a Java modeling framework and code generation facility based on a structured data model, is widely used by transformation tools.

Other model repositories:

  • Connected Data Objects (CDO) - can use many databases backends
  • ModelBus - webservice application to manage a subversion (argh) engine
  • EMFStore - collaborative editing and versioning of models
  • Neo4EMF - based on the Neo4j model repository
  • MDR is a Java Meta-data Interface (JMI) implementation of MOF - uses XML

Other tools use their own model repositories. Some model repositories can be extended using an API.

Compatibility with well-known Standards, Specifications, and Languages (CS)

Standards:

  • CORBA Model Interchange (CMI)
  • XML Metadata Interchange (XMI)
  • Human-Usable Textual Notation (HUTN)
  • Java Metadata Interface (JMI)
  • Diagram Definition (DD)
  • Common Warehouse Metamodel (CWM)
  • Object Constraint Language (OCL)

M2T: MOF Model to Text Transformation Language (MOFM2T) - templates and OCL M2M: Query/View/Transformation language (QVT)

Reverse Engineering (RE)

Generates models from code.

Tools:

  • MDWorkbench
  • ModelAnt
  • MetaEdit+
  • Modelio
  • Umple
  • Blu Age
  • Fujaba
  • MagicDraw
  • SPARX
  • Together
  • and Acceleo.

Usually Java only

Round-trip Engineering (RT)

Is an effort to keep these models consistent by propagating changes from one model to other related models.

  1. detecting changes to a model under consideration
  2. finding other models affected by the change
  3. propagating the change to the affected models

bi-directional transformation, incremental transformation, model synchronization, reverse engineering and traceability, can be used to implement round-trip engineering.

Hard to support.

Transformation style

Aspects of transformation implementation and execution such as rule scheduling, organization, and application control.

Model Transformation Language Syntax (MTLX)

Syntax of the model transformation language of the tool.

Textual or graphical syntax.

Output (O)

M2M:

  • in-place (destructive) - optimizarions are one example
  • out-place (conservative)

M2T:

  • XMI - Prolog
  • XMI - SQL tables
  • RTF
  • Plain text
  • HTML
  • XML
  • DB Schema
  • JavaDoc
  • Source code (Java, C#, Python, PHP, C++, SQL...)

Cardinality (C)

Number of input-output models the tool can handle.

1-to-1, 1-to-N, N-to-1, N-to-N

Rule Scheduling (RS)

(...)

User experience

User friendliness of the tool, such as editor features and support for typical development activities such as debugging, refactoring, and profiling.

Collaboration support

Collaborative development, interoperability, reuse, and extensibility.

Runtime requirements

Assumptions the tool makes about its operating environment, such as operating systems, hosting frameworks, and IDEs.

Discussion

Where the tools were developed:

  • 77% - Europe
  • 13% - North America
  • 7% - Asia
  • 3% - Australia

M2T: 31 tools

  • 19 - template
  • 5 - visitor
  • 7 - hybrid

M2M: 56 tools

  • 17 - imperative
  • 15 - graph-based
  • 13 - hybrid
  • 11 - relational

27% have been discontinued 5% have been replaced by successors

  • More than 55% of the relational tools have been discontinued;

Longevity Support

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment