• Nem Talált Eredményt

In the beginning of my research (in 2003), the following graph transformation tools, which can be considered as successors of the first visual graph transformation environment of [54], represented the state of the art, which are listed in alphabetical order.

• AGG [42] is a development environment for attributed graph transformation systems support-ing an algebraic approach to graph transformation. It aims at specifysupport-ing and rapid prototypsupport-ing applications with complex, graph structured data. The main strengths of AGG are its analysis techniques, namely, the critical pair analysis [61] and consistency checking [62].

AGG may also be used as a general purpose, interpreted graph transformation engine, which has a category theory based implementation written in Java. Its algorithm [119] interprets pattern matching as a constraint satisfaction problem. AGG runs in main memory without using an underlying database.

3.3. GRAPH TRANSFORMATION TOOLS 29

• AToM3 [31] is a tool for multi-paradigm modelling. Starting from metamodel specifications, AToM3 can generate graphical tools for manipulating well-formed models. In addition, model transformation is supported by means of graph transformation, whose rules can be specified declaratively in the framework.

AToM3 has an interpreted, in-memory pattern matching engine written in Python, which uses a local search based technique.

• BOTL [91] is a specification language and mechanism for the bidirectional transformation of object-oriented models. Specification is based on the graph transformation concept, which is complemented by algorithmic expressions, which relate object identities and attributes.

Tool support for BOTL is stated as an ongoing work in [21], so exact details of its pattern match-ing algorithm are unknown.

• DiaGen [96] is a rapid prototyping tool for developing powerful diagram editors. It provides support for specifying, editing, and analyzing diagrams, and for automatically generating visual editors from diagram specifications, which are represented by graph transformation rules.

The main strength of DiaGen is its structural analysis module, which can validate syntactic cor-rectness of diagrams on-line during the editing process. This module is based on interpreted hypergraph transformation and it is supplemented by syntax highlighting and an interactive lay-out facility to visualize the result of structural analysis.

• FUJABA[77] is an open source UML CASE tool, which focuses on the rule-based development of Java applications with complex data structures. The envisioned development process with FUJABA starts from specifications described by UML diagrams. In order to define the exact behaviour of the system under design, UML diagrams are supplemented by further graphical data structures such as graph transformation rules and story diagrams [44], which latter describes control flow. These specifications are then used to guide the automatic code generation process, which produces source code in Java.

FUJABA uses an in-memory, local search technique for pattern matching, and it belongs to the group of compiled graph transformation tools.

• GREAT [1] is a language for graph rewriting and transformations, and a corresponding tool for building model transformation applications inside the Generic Modeling Environment [83]

(GME) framework, which aims at creating domain-specific modeling and program synthesis environments.

GREAT has a pattern specification, a graph transformation and a control flow language, which define the behaviour of the pattern matcher, the rule executor, and the sequencer module, respec-tively. This tool performs uni-directional transformation. Its pattern matching engine [158] is a local search based approach, and it can run both in interpreted and in compiled mode, in which C++ code is generated. The pattern matcher uses a breadth-first traversal strategy starting from a set of nodes that are initially matched. This initial binding is referred to as pivoted pattern matching in GReAT terminology.

• Groove [113] is a graph transformation based model checking approach. In this sense, graph based models represent the states of the transition system, and graph transformation is used for specifying transitions. Groove can be used for modeling the design-time, compile-time, and run-time structure of object-oriented systems, and its main benefit is the ability to verify model

30 CHAPTER 3. COMPUTING BY GRAPH TRANSFORMATION

transformation and dynamic semantics through an (automatic) analysis of the resulting graph transformation system.

From a technical point of view, Groove generates full state space by exhaustively applying all enabled GT rules at each state. Each newly generated state is compared to all other states up to isomorphism. The pattern matching module runs in interpreted mode and performs a local search based algorithm.

• PROGRES [122] is an integrated set of tools, which supports programming with graph trans-formation. It has a graph-oriented data model and a hybrid (textual and graphical) syntax for specifying dynamic behaviour, which are backed by a syntax-directed graphical editor.

PROGRES operates on an underlying graph based database (GRAS) [76], and it has an inte-grated interpreter, which translates specifications into intermediate code and executes this code afterwards. PROGRES can also run in compiled mode as both C and Java code can be generated from the specifications. This tool uses a local search based strategy for pattern matching.

• VIATRA2 [6] is a transformation-based verification and validation framework, which aims at im-proving the quality of systems designed within the Unified Modeling Language by automatically checking consistency, completeness, and dependability requirements like in case of [143]. This feature is supported by automatically executable, provenly correct and complete model transfor-mations [142, 144], which are specified by the mathematically precise rule-based specification formalisms of graph transformation (GT) and Abstract State Machines (ASM).

The graph pattern matching module of VIATRA2 is an interpreted engine. Its earlier version provided a CSP-based technique and it was written in Prolog, while the current version is written in Java, and it performs local search in the pattern matching phase.

• VMTS [85] is a graphical metamodeling environment, which again enables model editing and graph transformation in a single tool. The main strength of this tool is its full feature support for validating OCL constraints [84]. These constraints are attached to the specification of graph transformation rules, and they are checked at run-time by aspect-oriented constraint management techniques.

VMTS is an interpreted approach as graph transformation is executed by the Visual Model Pro-cessor module, and pattern matching is performed by a local search approach.

The recently developed graph transformation tools are the following.

• Graph Rewrite Generator (GrGen) [51] is a generative programming system for graph transfor-mation, which originally aimed at finding patterns in graph-based intermediate representations being used in compiler construction. GrGen represents models as uses attributed, typed, and directed multigraphs with multiple inheritance on node and edge types.

GrGen has been recently reimplemented for the .NET framework. This new version generates .NET assemblies by a generator written in Java, and it additionally contains a graph backend written in C#.

• MOLA [69, 70] is a graphical and procedural model transformation language together with a tool consisting of a Transformation Definition Environment and a Transformation Execution En-vironment. Both environments use an underlying RDBMS based repository for storing models, metamodels and transformations.