<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Quality Assessment of ATL Model Transformations using Metrics?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>M.F. van Amstel</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>M.G.J. van den Brand</string-name>
          <email>M.G.J.v.d.Brandg@tue.nl</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Mathematics and Computer Science Eindhoven University of Technology</institution>
          ,
          <addr-line>Eindhoven</addr-line>
          ,
          <country country="NL">The Netherlands</country>
        </aff>
      </contrib-group>
      <fpage>19</fpage>
      <lpage>33</lpage>
      <abstract>
        <p>One of the key concepts of Model-Driven Engineering (MDE) is model transformations. Because of the crucial role of model transformations in MDE, they have to be treated in a similar way as traditional software artifacts. It is therefore necessary to de ne and assess their quality. In this paper we present a set of metrics for assessing the quality of ATL model transformations.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Model-Driven Engineering (MDE) is a software engineering discipline in which
models play a central role throughout the entire development process [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. MDE
combines domain-speci c languages (DSL) for modeling software systems, and
model transformations for transforming models speci ed in a DSL into
equivalent models speci ed in another language. In this way, models speci ed in a DSL
can be used for various di erent purposes. Model transformations are in many
ways similar to traditional software artifacts, i.e., they have to be used by
multiple developers, they have to be maintained according to changing requirements
and they should preferably be reused. Therefore, they need to adhere to similar
quality standards. To achieve these standards, there should be a methodology
for developing model transformations with high quality. A rst step in this
direction is developing methods for assessing the quality of model transformations.
For most other types of software artifacts, e.g., source code and models, there
already exist approaches for assessing their quality. The goal of our research
is to make the quality of model transformations measurable. In this paper, we
focus on model transformations created using the ATL model transformation
formalism [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        Our approach is aimed at assessing the internal quality of a model
transformation, i.e., the quality of the model transformation artifact itself [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. We
do this by extracting metrics from the model transformation directly, i.e., we
do not consider the input and output models of a model transformation in our
? This work has been carried out as part of the FALCON project under the responsibility of the
Embedded Systems Institute with Vanderlande Industries as the industrial partner. This project
is partially supported by the Netherlands Ministry of Economic A airs under the Embedded
Systems Institute (BSIK03021) program.
measurements. This is referred to as direct quality assessment [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. In this
paper, we present the metrics we intend to use for assessing the internal quality of
ATL model transformations. However, metrics alone are not enough for assessing
quality. They need to be related to quality attributes. Therefore, we would like
to conduct an empirical study in the same way as described in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. However, this
is a point for future work and will therefore not be addressed in this paper.
      </p>
      <p>The remainder of this paper is structured as follows. In Section 2, we analyze
an ATL model transformation by hand. Section 3 describes the metrics that we
have de ned for analyzing the quality of model transformations. In Section 4, we
describe the tool we created that can be used for automatically extracting metrics
from ATL transformations. Section 5 revisits the case we manually analyzed
in Section 2 and presents an analysis of another case. In both cases, metrics
are automatically extracted from the model transformation. We discuss related
work in Section 6. Conclusions and directions for further research are given in
Section 7.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Example</title>
      <p>
        In this section, we perform an analysis of a simple ATL model transformation by
hand. The transformation we chose for our analysis is the book to publication
transformation that can be found in the ATL zoo [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Its purpose is to transform
a book model that adheres to the book metamodel into a publication model
that adheres to the publication metamodel. This has to be done as follows. The
title of a publication should be the title of a book. The authors attribute of
a publication should be set to the concatenation of the authors of each of the
chapters separated by the word `and' and there should be no duplicates. The
number of pages of the publication should be the sum of the number of all of the
pages of the chapters in the book. The ATL code belonging to the transformation
is depicted in Listing 1.1.
2.1
      </p>
      <sec id="sec-2-1">
        <title>Analysis</title>
        <p>The model transformation takes one input model and returns one output model.
It consists of one transformation rule. This rule is a matched rule and has no
imperative section and has no local variable de nitions. Since there is only one rule
in this model transformation and it is not abstract, there is no rule inheritance
present. This rule has an input pattern consisting of one element and an output
pattern also consisting of one element. The input pattern has a condition. This
implies that not all model elements in the source model may be transformed. The
output pattern has three bindings. One of the bindings is initialized by copying
a model element of the source model. The other two bindings are initialized by
the results of calls to helpers, i.e., the rule depends on two helpers. There are
three helpers de ned in the transformation module. These are all the helpers
in the transformation, since no other ATL units are imported in the
transformation. All three helpers are operation helpers that are de ned in a context,
module Book2Publication ;
create OUT : Publication from IN : Book ;
helper context Book ! Book def : getAuthors (): String =
self . chapters
-&gt; collect (e | e. author )
-&gt; asSet ()
-&gt; iterate ( authorName ;
acc : String = '' |
acc + if acc = ''
then authorName
else ' and ' + authorName
endif
);
helper context Book ! Book def : getNbPages (): Integer =
self . chapters
-&gt; collect (f | f. nbPages )
-&gt; iterate ( pages ;
acc : Integer = 0 |
acc + pages
);
helper context Book ! Book def : getSumPages () : Integer =
self . chapters</p>
        <p>-&gt; collect (f | f. nbPages ). sum ();
rule Book2Publication {
from b : Book ! Book (b. getSumPages () &gt; 2)
to out : Publication ! Publication (
title &lt;- b. title ,
authors &lt;- b. getAuthors () ,
nbPages &lt;- b. getSumPages ()
}
)</p>
        <p>Listing 1.1. Book to publication transformation
in this case the same context. None of the three operation helpers take
arguments. Also, in none of the helpers are local variables de ned. All helpers are
used to manipulate collections. Two of the three helpers are used in the
transformation. The helper getSumPages() is called twice and the helper getAuthors
is called once. All of these calls come from the only transformation rule. The
helper getNbPages() is never called by a rule or another helper. This may
indicate that this helper is obsolete. In the documentation of the transformation
is stated that the helpers getNbPages() and getSumPages() are two di erent
implementations of the same functionality. In the helper getAuthors(), a
conditional statement is used. This should be taken into consideration when testing
the transformation.</p>
        <p>For such a small example like this one, it is feasible to do an analysis by
hand. However, when model transformations grow larger, it is infeasible to do
this. Therefore it is desirable to perform an automated analysis. In Section 3,
we describe a set of metrics that can be automatically extracted from ATL
transformations by a tool that we describe in Section 4.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Metrics</title>
      <p>This section describes the metrics we de ned for assessing the quality of ATL
model transformations. The metrics described here are speci c for ATL.
However, for most of them a conceptually equivalent metric can be de ned for other
model transformation formalisms as well.</p>
      <p>The metrics can be divided into four categories, viz., rule metrics, helper
metrics, dependency metrics, and miscellaneous metrics. In the remainder of this
section, we will address each of these categories and elaborate on the metrics
belonging to them. An overview of all the metrics can be found in Tables 1,
and 2 in Section 5.
3.1</p>
      <sec id="sec-3-1">
        <title>Rule Metrics</title>
        <p>A measure for the size of a model transformation is the number of transformation
rules it encompasses. In ATL, there are di erent types of rules, viz., matched
rules, lazy matched rules, unique lazy matched rules, and called rules. In our
metrics, we distinguish between these di erent types of rules. In case of a
completely declarative model transformation, i.e., one with only non-lazy matched
rules, it is to be expected that the amount of non-lazy matched rules is related
to the size of the input metamodel, since typically a matched rule matches on
one metamodel element. However, this is not necessarily the case, since matched
rules can have input patterns that match on multiple metamodel elements at
the same time or it may be the case that only part of the metamodel needs to
be covered by the transformation.</p>
        <p>Lazy matched rules and called rules need to be explicitly invoked in an ATL
model transformation. Therefore it may be the case that there are lazy matched
rules or called rules in an ATL model transformation that are never invoked.
This can have a number of reasons, e.g., the rule has been replaced by another
rule. To detect such unused rules, we included the metrics number of unused lazy
matched rules and number of unused called rules.</p>
        <p>
          ATL has support for rule inheritance. The use of inheritance may a ect the
quality of a model transformation in a similar way as it a ects object-oriented
software [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. A rule deeper in the rule inheritance tree may be more fault-prone
because it inherits a number of properties from its ancestors. Moreover, in deep
hierarchies it is often unclear from which rule a new rule should inherit from.
To acquire insights into the rule inheritance relations in an ATL model
transformation, we de ned a number of metrics. We propose to measure the number of
rule inheritance trees and per such tree the maximum depth and the maximum
width. Furthermore, we de ned the metric number of abstract transformation
rules, and, again, we distinguish matched rules, lazy matched rules, and unique
lazy matched rules. We also propose to measure for each abstract rule the number
of children that inherit from it.
        </p>
        <p>
          We have also de ned a number of metrics on the input and output patterns
of rules. The metric number of input pattern elements and number of output
pattern elements measure the size of respectively the input and the output pattern
of rules. Note that since called rules do not have an input pattern, the metric
number of input model elements does not include called rules. These two metrics
can be combined. The metric rule complexity change measures the amount of
output model elements that are generated per input model element. For
example, if the input pattern consists of one model element and two model elements
are generated the rule complexity change is 12 = 2. We do not consider model
elements that are generated within distinct foreach blocks, since the amount of
generated elements depends on the input model and can therefore not be
determined statically. This metric may be used for measuring the external quality [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]
of a model transformation because it addresses the size increase (or decrease) of
a model. Note that this metric is de ned on matched rules only, since called rules
do not have an input pattern. Instead, called rules have parameters similar to
operation helpers. Therefore, instead of measuring the number of input patterns,
for called rules we measure the number of parameters per called rule. It may be
the case that some of these parameters are never used for various reasons. To
detect this, we propose to measure the number of unused parameters per called
rule.
        </p>
        <p>The input pattern of a matched rule can be constrained by means of a
lter condition. The metric number of rules with a lter condition measures the
amount of rules that have such an input pattern. Using such lter conditions
a rule matches only on a subset of the model elements de ned by the input
pattern. Therefore it may be the case that there are multiple matched rules
that match on the same input model elements. We de ned the metric number of
matched rules per input pattern to measure this. Note that in general ATL does
not allow multiple rules to match the same input elements, except in the case a
rule overrides another rule.</p>
        <p>To initialize target model elements, an output pattern has bindings. The
metric number of bindings per output pattern is another measure for the size of
the output pattern of a transformation rule. Typically, the bindings of an output
pattern are initialized with attributes and references derived from elements in
the input pattern. We propose to measure the number of unused input pattern
elements to detect possibly obsolete input pattern elements. Matched rules
require input pattern elements for the matching. In case that none of the input
pattern elements of a lazy matched rule are used in that rule, this could be an
indication that a called rule may be used instead. Note, however, that this is
not always the case, since switching from a lazy matched rule to a called rule
will no longer provide implicit tracing information that can be used elsewhere
in the transformation. A metric related to the previous two is the number of
direct copies. This metric measures the number of rules that copy (part of) an
input model element to an output model element without changing any of the
attributes. Note that this only occurs when the input metamodel and the output
metamodel are the same.</p>
        <p>Transformation rules can have local variables. These variables are often used
to provide separation of concerns, i.e., to split the calculation of certain output
bindings in orderly parts. This should increase the understandability of the rule.
We de ne two metrics to measure the use of local variables in rules, viz.,
number of rules with a using clause and number of variables per using clause. We
also measure the number of unused variables de ned in using clauses to detect
obsolete variable de nitions.</p>
        <p>ATL allows the de nition of imperative code in rules in a do block. This can
be used to perform calculations that do not t the preferred declarative style
of programming. To measure the use of imperative code in a transformation,
we de ned two metrics, viz., number of rules with a do section and number of
statements per do section.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Helper Metrics</title>
        <p>Besides transformation rules, an ATL transformation also consists of helpers.
Therefore the size of a model transformation is also in uenced by the number
of helpers it includes. Two orthogonal distinctions can be made. On the one
hand, there are helpers with context and helpers without context. On the other
hand, there are attribute helpers and operation helpers. The operation helpers
can be further subdivided into operation helpers with parameters and without
parameters. Since helpers may be de ned in the transformation module or in
library units, we also measure the number of helpers per unit. This gives an idea
of the division of helpers among units.</p>
        <p>Similarly to lazy matched rules and called rules, helpers need to be invoked
explicitly. Therefore, again, it may be the case there are some helpers present in
a model transformation that are never invoked. To detect such unused helpers,
we included the metric number of unused helpers.</p>
        <p>Helpers are identi ed by their name, context, and, in case of operation
helpers, parameters. It is possible to overload helpers, i.e., de ne helpers with
the same name but with a di erent context. To measure this kind of
overloading we de ne the metrics number of overloaded helpers and number of helpers
per helper name. Overloading is used to de ne similar operations on di erent
datatypes. Of course it is also possible to de ne multiple di erent operations on
the same datatype, i.e., in a di erent context. Therefore, we propose to measure
the number of helpers per context.</p>
        <p>To get more insight in the use of parameters by operation helpers, we propose
to measure the number of parameters per operation helper. Also parameters may
be unused for various reasons. To detect this, we propose the metric number of
unused parameters per operation helper.</p>
        <p>
          Helpers are often used to manipulate collections. Therefore, we measure the
number of operations on collections per helper. Also, conditions are often used
in helpers. The metric helper cyclomatic complexity is related to McCabe's
cyclomatic complexity [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], it measures the amount of decision points in a helper.
Currently, only if statements are considered as decision points. Similar to rules,
helpers also allow the de nition of local variables. We de ne the metrics
number of helpers with a let clause, and number of variables per helper to measure
the use of variables in helpers. Again, we also measure the number of unused
variables de ned in let clauses to detect obsolete variable de nitions.
3.3
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>Dependency Metrics</title>
        <p>We consider six categories of dependency, viz., units depending on other units,
rules depending on rules, rules depending on helpers, helpers depending on
helpers, helpers depending on called rules, and rules and helpers on built-in
functions. To measure the rst three categories of dependencies we have de ned
a number of fan-in, and fan-out metrics. For example, the metric number of calls
to lazy matched rules per lazy matched rule measures the fan-in of lazy matched
rules and the metric number of calls from helpers to helpers per helper measures
the fan-out of helpers. An overview of all the fan-in and fan-out metrics can be
found in Table 2 in Section 2.</p>
        <p>The dependency of units on other units is measured by four metrics. The
metrics number of imported units per unit and number of times a module is
imported per unit are used to measure the import dependencies of units. On a
lower level, the metrics number of calls from helpers in other units (unit fan-in)
and number of calls to helpers in other units (unit fan-out) measure how the
internals of units depend on each other.</p>
        <p>The last dependency category, i.e., the dependency of rules and helpers on
built-in functions is measured by the metric number of calls to built-in
functions. Built-in functions are OCL functions and also additional ATL operations
such as replaceAll(). There are some built-in functions that deserve special
attention. First, there is the resolveTemp() function. This function is used to
look-up references to non-default output elements of other rules. Therefore, it is
to be expected that model transformations with a large number of calls to the
resolveTemp() function are harder to understand. There are also the println()
and the debug() function. The debug() function is used to print information
to the console that can be used for debugging. In practice, we see that
sometimes the println() function is used for a similar purpose. The occurrence of
these two functions may indicate that the model transformation is still under
development.
3.4</p>
      </sec>
      <sec id="sec-3-4">
        <title>Miscellaneous Metrics</title>
        <p>We de ned four more metrics that do not t the discussed categories. The metric
number of units measures the amount of units that make up a model
transformation. This metric can provide insight in the size and modularity of a model
transformation. It may be the case that there are library units imported from
which no helper is invoked in the transformation. To detect this, we de ne the
metric number of unused units.</p>
        <p>The last two metrics provide insight in the context of the model
transformation. It is to be expected that model transformations involving more models
are more complex. Therefore we propose to measure the number of input models
and the number of output models.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Tool</title>
      <p>
        We implemented a tool that enables automatic collection of the metrics
presented in Section 3 from ATL speci cations [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Figure 1 gives an overview of
the architecture of the tool. An ATL model transformation consists of a
mod. a t l
A T L f i l e
      </p>
      <p>A T L
p a r s e r</p>
      <p>M e t r i c s
e x t r a c t o r
A T L m o d e l</p>
      <p>
        M e t r i c s m o d e l
ule and possibly a number of libraries. The les containing this module and
libraries are parsed by the ATL parser. This results in ATL models representing
the model transformation. These models are the input for the metrics extractor.
This metrics extractor is itself a model transformation implemented in ATL. It
consists of one matched rule that matches on an ATL module, and a number
of lazy matched rules, each for calculating the value of one of the metrics. The
output of the metrics extractor is a model that contains the metrics data. This
model is used as input for a pretty printer. This pretty printer is a model-to-text
transformation implemented in Xpand [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. The output of the pretty printer is a
comma separated value le that can be read by a spreadsheet application.
      </p>
      <p>In Section 3 we presented two types of metrics, viz., metrics that are measured
over the entire transformation and metrics that are measured on a smaller scale,
i.e., per unit, per rule, or per helper. The former type of metric has as single value
for the entire transformation. We refer to this type of metrics as simple metrics.
The latter type of metric has multiple values for the entire transformation, viz.,
one for every element that is measured (unit, rule, or helper). To assess the
transformation as a whole we do not present all of these values. Instead, we give
average, minimum, maximum, median and standard deviations for these metrics.
We refer to this type of metrics as aggregated metrics.</p>
      <p>
        The metrics extractor gathers data from an ATL model. Therefore, there is a
problem with identifying calls to helpers. The call to a helper consists of only its
name. However, a helper is de ned by its name, context, and parameters. In order
to distinguish between calls to helpers with the same name, more information
is required. Unfortunately, this information is only available during run-time.
We therefore decided to identify a call to a helper only by its name. We realize
that this is a threat to the validity of our measurements, since some of the
metrics may be calculated incorrectly. However, from our own experience and
by looking at the transformations available in the ATL zoo [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] we can conclude
that there are few transformations that have overloaded helpers. Besides, if there
are overloaded helpers, this is indicated by a metric.
      </p>
    </sec>
    <sec id="sec-5">
      <title>Example: Continued</title>
      <p>In Section 2, we performed a manual analysis of the book to publication
transformation. In this section, we present the metric values that were automatically
extracted from this transformation by our metrics extraction tool. Table 1
contains the simple metrics and Table 2 contains the aggregated metrics. The rst
column of the tables states the category a metric belongs to. The second column
contains the metric itself. The remainder of the columns contain the values for
a metric.
As a second example, we present the metrics we extracted from the metrics
extractor described in Section 4 using that same tool. The extracted metrics are
presented in Tables 3 and 4.
Metric Value
# Transformation Rules 90
# Matched Rules (Excluding Lazy Matched Rules) 1
# Matched Rules (Including Lazy Matched Rules) 90
# Lazy Matched Rules (Excluding Unique) 89
# Lazy Matched Rules (Including Unique) 89
# Unique Lazy Matched Rules 0
# Called Rules 0
s# Unused Lazy Matched Rules 1
irc# Unused Called Rules 0
te# Rules with a Filter Condition on the Input Pattern 0
em# Unused Input Pattern Elements 83
lu# Rules with a do Section 0
R# Direct Copies 0
# Abstract Transformation Rules 0
# Abstract Matched Rules 0
# Abstract Lazy Matched Rules 0
# Abstract Unique Lazy Matched Rules 0
# Rule Inheritance Trees 90
# Rules with a Using Clause 55
# Unused Variables De ned in Using Clauses 0
# Helpers 28
# Helpers with Context 11
# Helpers without Context 17
# Attribute Helpers 1
# Attribute Helpers with Context 0
# Attribute Helpers without Context 1
s # Operation Helpers 27
irc # Operation Helpers with Context 11
te # Operation Helpers without Context 16
rm # Operation Helpers with Parameters 13
ep # Operation Helpers without Parameters 14
le# Overloaded Helpers 0
H# Unused Helpers 0
# Unused Helpers with Context 0
# Unused Helpers without Context 0
# Unused Attribute Helpers 0
# Unused Operation Helpers 0
# Helpers with a Let Clause 14
# Unused Variables De ned in Let Clauses 0
# Calls to println() 7
.p# Calls to debug() 0
eD# Calls to resolveTemp() 0
# Calls To Built-In Functions (Built-In Function Fan-In) 519
# Units 1
.sc# Unused Units 0
iM# Input Models 1
# Output Models 1
The metric values give some insight into the transformation. There are 89
lazy matched rules and it can be derived from the metric values that all matched
rules have one element per input pattern. Also, 83 input pattern elements are
unused. From this we can conclude that 83 of the matched rules do not use their
input pattern. This indicates that a large part of the lazy matched rules may
be replaced by called rules if the use of the implicit tracing mechanism is not
required. In this particular case it is possible to replace lazy matched rules by
called rules. This is a point for future work.</p>
      <p>There are seven calls to the println() function. In Section 3, we argued
that this could indicate that debugging information is being printed. Here this
is not the case. Instead, the calls to the println() function are used to generate
warnings.</p>
      <p>There are 90 rules and 28 helpers in one module. It may be advisable to
introduce a library for the helpers to decrease the size of the transformation
module.</p>
      <p>From the values for the metric number of calls to helpers per helper, we can
conclude that there are a lot of calls to a few helpers. These are calls to the
helpers that calculate the aggregated metrics.</p>
      <p>There is one unused lazy matched rule. This lazy rule is intended to calculate
a metric that we considered as irrelevant. It should therefore be removed.</p>
      <p>The advantages of using the tool to extract metric values are that it is fast,
repeatable, and less error-prone. The disadvantage of using the tool is that it
only provides numbers. Therefore, the analysis is not as detailed as the manual
analysis we presented in Section 2. For example, from the metrics we can only
conclude that there is one unused helper in the transformation, not which one it
is. This is not a problem since we are interested in a relation between metrics and
quality attributes. Moreover, the tool can easily be extended to provide more
detailed reports such that it can be of assistance in locating problems.
6</p>
    </sec>
    <sec id="sec-6">
      <title>Related Work</title>
      <p>
        In [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], a similar study aimed at de ning metrics for ATL model transformations
is described. We used the metrics they de ned to complete our own set of metrics.
Therefore, the metrics they de ne overlap with ours. Some of the metrics they
consider are used to measure the input and output metamodels. Therefore they
perform both direct and indirect quality assessment, whereas we consider direct
quality assessment only. In our metrics set, there are more metrics aimed at
detecting incompleteness and inconsistency, e.g., number of unused lazy matched
rules, unused units, and number of calls to debug(). Our goal is to establish a
relation between metrics and quality attributes by means of an empirical study.
They sketch such a relation for their metrics based on how they expect it to be.
      </p>
      <p>
        The authors of [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] discuss characteristics of MDE that are important when
building a quality framework for it. One of the characteristics that needs to be
considered is the quality of model transformations. Their motivation for this
is that model transformations can a ect the quality of models. Another reason
for considering the quality of model transformations they present is that model
transformations are increasingly being used at runtime in self-adaptive systems
where performance plays an important role. They discuss some issues that play
a role in model transformation quality and they t it into their framework. The
main di erence with our work is the scope. They consider the quality of di erent
aspects of MDE, whereas our focus is solely on model transformation quality.
Also their scope on model transformation quality is broader. They studied
literature and identi ed issues regarding the evaluation of model transformation
quality and t that in their framework, whereas we propose a methodology for
assessing the internal quality of model transformations using metrics.
      </p>
      <p>
        The authors of [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] state that one of the problems in MDE is how to identify
what model transformations can improve the quality if models. They propose
to solve this problem by embedding metrics and methods for calculating them
into metamodels. The values for these metrics can be calculated before and
after performing the model transformation to establish how the quality of the
model has changed. The main di erence with our approach is that they focus
on the external quality of model transformations, whereas we focus on their
internal quality. The external quality of a model transformation is the quality
change induced on a model by the model transformation [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The disadvantage of
their approach is that it only applies to endogenous model transformations, i.e.,
model transformations where the input and output model adhere to the same
metamodel [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In case the input and output model do not adhere to the same
metamodel, i.e., in case of an exogenous model transformation, the metrics for
measuring model quality are probably di erent and therefore incomparable.
7
      </p>
    </sec>
    <sec id="sec-7">
      <title>Conclusions and Future Work</title>
      <p>We have addressed the necessity for a methodology to analyze the quality of
model transformations. In this paper, we de ned a set of 86 metrics for predicting
the quality of model transformations created using ATL. These metrics can
automatically be collected from ATL model transformation speci cations by a
tool we created.</p>
      <p>
        Metrics alone are not su cient to assess the quality of a model
transformation. They need to be related to quality attributes to understand which metrics
are relevant for assessing the di erent attributes of the quality model of
transformations. Therefore, we would like to conduct an empirical study in the same way
as described in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Metrics should be extracted from a heterogeneous collection
of ATL model transformations using the tool described in Section 4. The quality
of the same collection of model transformations should be manually assessed
by ATL experts. Thereafter the correlations between the metrics data acquired
from the tool and the quality evaluation acquired from the experts should be
analyzed. In this way, we can derive which metrics are relevant for assessing the
di erent attributes of model transformation quality.
      </p>
    </sec>
    <sec id="sec-8">
      <title>Acknowledgement</title>
      <p>
        We would like to thank Andres Vignaga for providing us with and letting us
use the metrics he de ned in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. We would also like to thank the anonymous
reviewers for their valuable comments which helped us improving an earlier
version of this paper.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>D.C.</given-names>
          </string-name>
          :
          <article-title>Model-driven engineering</article-title>
          .
          <source>Computer</source>
          <volume>39</volume>
          (
          <issue>2</issue>
          ) (
          <year>February 2006</year>
          )
          <volume>25</volume>
          {
          <fpage>31</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kurtev</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>Transforming models with ATL</article-title>
          . In Bruel, J., ed.:
          <source>MoDELS 2005 Satellite Events. Number 3844 in Lecture Notes in Computer Science</source>
          , Montego Bay, Jamaica, Springer (
          <year>October 2005</year>
          )
          <volume>128</volume>
          {
          <fpage>138</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. van Amstel,
          <string-name>
            <surname>M.F.</surname>
          </string-name>
          :
          <article-title>The right tool for the right job: Assessing model transformation quality</article-title>
          .
          <source>In: Proceedings of the Fourth IEEE International Workshop on Quality Oriented Reuse of Software (QUORS'10)</source>
          <article-title>(co-located with COMPSAC</article-title>
          <year>2010</year>
          ), Seoul, South-Korea (
          <year>July 2010</year>
          ) To appear.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. van Amstel,
          <string-name>
            <given-names>M.F.</given-names>
            ,
            <surname>Lange</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.F.J.</surname>
          </string-name>
          , van den Brand, M.G.J.:
          <article-title>Using metrics for assessing the quality of ASF+SDF model transformations</article-title>
          . In Paige, R.F., ed.
          <source>: Proceedings. of the Second International Conference on Model Transformation</source>
          . Volume
          <volume>5563</volume>
          of Lecture Notes in Computer Science., Zurich, Switzerland, Springer (
          <year>June 2009</year>
          )
          <volume>239</volume>
          {
          <fpage>248</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5. ATL transformations. http://www.eclipse.org/m2m/atl/atlTransformations/ (viewed March
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Basili</surname>
            ,
            <given-names>V.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Briand</surname>
            ,
            <given-names>L.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Melo</surname>
            ,
            <given-names>W.L.</given-names>
          </string-name>
          :
          <article-title>A validation of object-oriented design metrics as quality indicators</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          <volume>22</volume>
          (
          <issue>10</issue>
          ) (
          <year>1996</year>
          )
          <volume>751</volume>
          {
          <fpage>761</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>McCabe</surname>
            ,
            <given-names>T.J.:</given-names>
          </string-name>
          <article-title>A complexity measure</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          <volume>2</volume>
          (
          <issue>4</issue>
          ) (
          <year>December 1976</year>
          )
          <volume>308</volume>
          {
          <fpage>320</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. van Amstel,
          <string-name>
            <surname>M.F.</surname>
          </string-name>
          :
          <article-title>Metrics extraction tool</article-title>
          . http://www.win.tue.nl/~mamstel/experiments.html#ATL (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Thoms</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , E tinge, S.:
          <article-title>Xpand website</article-title>
          . http://wiki.eclipse.org/Xpand (viewed
          <year>March 2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Vignaga</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Metrics for measuring ATL model transformations</article-title>
          .
          <source>Technical report, MaTE</source>
          , Department of Computer Science, Universidad de Chile (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Mohagheghi</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dehlen</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>An overview of quality frameworks in model-driven engineering and observations on transformation quality</article-title>
          .
          <source>In: Proceedings of the Second Workshop on Quality in Modeling (QiM'07)</source>
          , Nashville, USA (
          <year>October 2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Saeki</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kaiya</surname>
          </string-name>
          , H.:
          <article-title>Measuring model transformation in model driven development</article-title>
          . In Eder, J.,
          <string-name>
            <surname>Tomassen</surname>
            ,
            <given-names>S.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Opdahl</surname>
            ,
            <given-names>A.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sindre</surname>
          </string-name>
          , G., eds.
          <source>: Proceedings of the CAiSE'07 Forum at the 19th International Conference on Advanced Information Systems Engineering</source>
          . Volume
          <volume>247</volume>
          of CEUR Workshop Proceedings.,
          <string-name>
            <surname>Trondheim</surname>
          </string-name>
          , Norway, CEUR-WS.
          <source>org (June</source>
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Mens</surname>
            , T., van Gorp,
            <given-names>P.:</given-names>
          </string-name>
          <article-title>A taxonomy of model transformation</article-title>
          . In Karsai, G.,
          <string-name>
            <surname>Taentzer</surname>
          </string-name>
          , G., eds.
          <source>: Proceedings of the International Workshop on Graph and Model Transformation (GraMoT'05)</source>
          . Volume
          <volume>152</volume>
          of Electronic Notes in Theoretical Computer Science., Tallinn, Estonia, Elsevier (
          <year>September 2006</year>
          )
          <volume>125</volume>
          {
          <fpage>142</fpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>