
explicitly express the elements to be traced. 2 = Automatic support. The language
automatically provides traceability of all the elements.
Unidirectionality (mandatory, weight=4). Rationale: Unidirectionality is the abil-
ity to specify transformations in one direction only. When we never need to apply the
reverse transformation it will be easier to concentrate only on the transformation one-
way. Scale: 0 = no support, 1 = support.
Complete textual notation (mandatory, weight=4). Rationale: Textual notation
enables users to define transformations without a graphical tool. Textual notations are
also often preferred for defining large, complex transformations since graphical ap-
proaches are hard to scale. Scale: 0=no support, 1 = support.
Black-box interoperability (mandatory, weight=4). Rationale: This enables the
reuse of any existing codes or scripts written in other languages, that otherwise would
need to be rewritten in the transformation language. Support requires that it is possi-
ble to specify references to external code within a transformation. Scale: 0 = no sup-
port, 1 = support.
Composition of transformations (mandatory, weight=3). Rationale: This is de-
sired in order to reuse several basic transformations to accomplish a more complex
task. Scale: 0 = No support. 1 = Sequence only. 2 = Supporting the five basic control
flow patterns [7] (sequence, and-split, and-join, or-split, or-join).
Graphical notation (mandatory, weight=2). Rationale: Graphical notations pro-
vide a higher-level view on the transformation and can more easily be communicated
than a pure lexical alternative. Scale: 0 = No support. 1 = Only parts of a transforma-
tion can be graphical. 2 = A single transformation can be fully defined graphically. 3
= Compositions of transformations (see separate property) as well as single transfor-
mations can be fully defined graphically.
Updating source model(s) (mandatory, weight=2). Rationale: In some cases it is
desired to update/complete an existing model instead of producing a new model.
Scale: 0 = no support, 1 = support.
Incomplete transformations completed with pattern parameters (mandatory,
weight=2). Rationale: This is a powerful construction for reusing large parts of a
transformation that otherwise would need to be copied into several transformations.
Scale: 0 = no support, 1 = support.
Modularity (optional, weight=6). Rationale: This will ease the comprehension
and development of transformations. Scale: 0=no support, 1 = support. Support for
this includes the possibility to split a transformation into several files, structure the
code in separate UML package, provide separate transformation rules or to group
methods inside classes, thus achieving fine grain modularity.
Reusability (optional, weight=5). Rationale: It is desirable to define transforma-
tions that capture common transformation rules that can be reused by other more
specialized or parameterized transformations. This will improve the ability to share
common knowledge, the ability to faster make new transformations and the ability to
maintain the transformations. Scale: 0 = No support. 1 point for each of these that are
satisfied: a) can import transformation library b) can specialize transformations.
Maximum score is 2.
Restricting conditions/pre-conditions (optional, weight=4). Rationale: This is
useful to ensure that the source model(s) provided to the transformation follows the
restrictions set by the transformation. It prevents the transformation from being used
89