<!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>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Loli Burgue n ̃o Dept. Lenguajes y Ciencias de la Computacio ́n University of Malaga Malaga</institution>
          ,
          <country country="ES">Spain</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-As Model-Driven Engineering is becoming adopted by industry, models and model transformations (MTs) are extensively used. Hence, there is the urgent need for systematic testing mechanisms and tools to check their correctness. In this work, we make use of a particular case of contracts for model transformations called Tracts. First, Tracts allow the transformation developer to specify and test a model-to-model transformation in a modular way, and to identify bugs. However, they do not allow to track where the faults in the implementation are. For doing that, we present an approach based on matching functions that automatically establish the alignments between the specification and the implementation of a transformation using the metamodel footprints. Second, we extend Tracts to deal with text-to-model and model-to-text transformations in order to broaden and complete the scope of our testing proposal. Finally, we provide the corresponding tools that realize our proposal.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. PROBLEM AND MOTIVATION</title>
    </sec>
    <sec id="sec-2">
      <title>Model transformations (MT) are gaining more and more</title>
      <p>
        interest as industry is progressively adopting model-driven
techniques [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The main advantage of using of model
transformations is to save effort and reduce errors by automating
the creation and alteration of models as long as it is possible.
Thus, they are becoming a promising approach in many
different scenarios to solve a wide variety of problems, e.g. to
deal with the migration of systems, their modernization, for
code generation, etc., especially when complex data structures
are involved. This complexity may lead to the existence of
bugs in the model transformation implementation that make
it faulty. Then, the need of testing, validation and verification
procedures for model transformations is emerging in recent
years [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        So far, most of the efforts by the research community have
focused on testing model-to-model (M2M) transformations for
which having explicit model representations for the input and
output domain is assumed. There are different approaches that
can be classified attending to their characteristics as
blackbox vs. white-box and static vs. dynamic. Depending on the
concrete situation, the transformation developer needs to make
the decision of what mechanism to use. When black-box
dynamic approaches such as Tracts [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] are the best option,
the developer finds that they do allow the testing of model
transformations but they do not track where the problem is in
the implementation, i.e., they reveal that there is a problem
but they do not point to where it is or what is producing it.
      </p>
      <p>
        Furthermore, text-to-model (T2M) and model-to-text (M2T)
transformations are extensively used [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] for code generation
and reverse engineering for the modernization of legacy
applications [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. However, they have received little attention so
far by the research community.
      </p>
      <p>The contribution presented in this paper is twofold. First,
we have extended the Tract approach for M2T and T2M
transformations. We have created a generic metamodel that
represents text repositories and inject the text into a model
that conforms to that metamodel. Once both source and target
domains count on a concrete and well-defined representation,
M2T and T2M transformations are reduced to M2M
transformations. Therefore, Tracts can be used for checking their
correctness.</p>
      <p>Second, we define a mechanism based on matching tables
that permit relating the rules of a model transformation with its
Tracts, i.e., aligning the model transformation implementation
with its specification. By analysing the matching tables, the
rules that cause a fault can be identified, hence realizing
a useful tracking mechanism for locating faults in model
transformations.</p>
      <p>The structure of the paper is as follows. Section II
introduces the concepts in which this work stands and the
related work. Section III presents the core of our contribution:
the extension of Tracts for M2T and T2M transformations
and how the matching tables are computed and interpreted.
Finally, Section IV shows the results we have obtained and
the contributions we have made.</p>
    </sec>
    <sec id="sec-3">
      <title>II. BACKGROUND AND RELATED WORK</title>
      <p>
        The need for systematic verification of model
transformations has been studied in previous works and the challenges it
has to deal with have been outlined [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Many approaches
ranging from lightweight certification to full verification have
been proposed to reason about different kinds of properties
of M2M transformations [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. One of them is the use of
contracts [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>
        Tracts, which are a particular case of contracts, are a
blackbox testing mechanism for M2M transformations. They consist
of a set of constraints on the source and target metamodels,
a set of source-target constraints, and a test suite, i.e., a
collection of source models. They provide modular pieces of
specification, each one focusing on a particular transformation
scenario. This permits each model transformation to be
specified by means of a set of Tracts, each one covering a specific
use case. Usually, they are seen as unit tests, which means that
developers identify the scenarios of interest and define a Tract
for each one. Then, they check whether the transformation
behaves as expected in these scenarios. Other works proposed
alternative ways for defining oracles [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]–[
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], however, they
do not discuss how to apply their approaches for text artifacts.
The most closely related work for testing M2T transformations
is presented in [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Nevertheless, this approach requires the
definition of a functional decomposition diagram for the M2T
transformation as well as the design specifications for the text
produced by the transformation.
      </p>
      <p>
        Tracking guilty transformation rules using a dynamic
approach where constraints are involved has also been subject
to investigations [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. In [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]–[
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], the authors locate
errors using the trace information of the MT executions, i.e.,
determining the relationship between the source and target
elements and the excerpt of the transformation involved. The
dynamic approach is also used in [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] to build slices of
model transformations and in [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] following a white-box
testing approach. All these approaches need to count on input
models while our aim is to statically build more general
traceability models between the specification of the MTs and
their implementations.
      </p>
    </sec>
    <sec id="sec-4">
      <title>III. APPROACH AND UNIQUENESS</title>
      <sec id="sec-4-1">
        <title>A. Extending Tracts for M2T and T2M transformations</title>
        <p>
          In order to test model transformations when text is involved
in one of the domains, either in the source or the target, we
propose an approach that converts the problem to a M2M
transformation testing problem [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. In order to achieve that,
instead of defining a specific grammar or metamodel for each
text artifact, we have opted for creating a generic metamodel
that represents text repositories. Then, the folder structure
and text files are injected to a model conforming to the text
metamodel.
        </p>
        <p>The metamodel is shown in Figure 1. It counts on a
metaclass Repository that represents the entry point to the root
folder containing folders and files or to a file if only one single
artifact is used. Folders just contain a name while files have
in addition an extension as well as a content. The content of
files is represented by lines that are sequentially ordered. A
derived attribute content is used to allow easy access to the
complete content of a file.</p>
        <p>Figure 2 displays on its left-hand side the folder structure
of a Java project while on its right-hand side the content of
one of its Java files. Figure 3 presents an excerpt of the text
model corresponding to the elements that Figure 2 shows and
several lines of the Java file.</p>
        <p>The specification of the transformation to be tested is
composed of a set of Tracts, each one focusing on a particular
property that the developer wants to ensure. The constraints
defined by those Tracts are OCL expressions. Thus, a problem
arises when the developer needs to deal with the text
represented by the lines but realises that the variety of libraries and
operations that OCL provides to manage Strings is reduced
and very restrictive. As the text in the lines may need to be
analysed thoroughly, we have enriched OCL with an operation
called matchesRE() that checks whether a given string
matches a regular expression. Furthermore, we have
introduced some auxiliary functions that are currently provided by
M2T transformation languages such as toFirstUpper()
to end up with more concise OCL constraints than just using
the standard OCL String operation library.</p>
        <p>In order to illustrate what a Tract looks like, let us assume
that we are testing a M2T transformation that generates Java
code from UML models. Let us also assume a very simplified
UML metamodel that only has Packages, Classes and
Properties. All of them have a name and the properties
have a type as well. Furthermore, each package may contain
a set of classes and each class may contain set of properties.
The metamodel is shown in Figure 4.</p>
        <p>The Tract constraint in Listing 1 specifies the correct
behavior that a M2T transformation that transforms each UML
package to a Java package, each UML class to a Java class
and each UML property to a Java attribute must fulfil.</p>
        <p>Listing 1. Tract constraint for the UML2Java example.</p>
        <p>UMLPackage.allInstances-&gt;forAll(upack |</p>
        <p>Folder.allInstances-&gt;exists(folder |
upack.name = folder.name and
upack.classes-&gt;forAll( uclass |
folder.content-&gt;selectByType(File)-&gt;exists( file |
uclass.name = file.name and
uclass.properties.allInstances-&gt;forAll(uprop |
file.lines-&gt;exists( line | line.machtesRE(</p>
        <p>".*"+uprop.type+".*"+uprop.name+".*;")))))))</p>
        <p>
          In order to provide tool support for our proposal, we
have developed a injector (parser) that converts the content
of a text repository into a model that conforms to the text
metamodel shown in Figure 1, and an extractor that takes
models conforming to the text metamodel and produces text
organized in folders. In order to check that a given M2T
transformation fulfils the constraints (such as the one shown
before), we execute the transformation using the Tract test
suite and then, we use the injector for obtaining the output
models conforming to the text metamodel from the output text
generated by the transformation. Then we check the validity
of the constraints as in the case of Tracts defined for M2M
transformations, with our TractsTool [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. TractsTool evaluates
the defined constraints on the source and target models by a
transparent translation to the USE tool [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ].
        </p>
        <p>In the case that the MT to test is a T2M transformation,
the procedure is similar. The test suite is defined by the Tract
as a set of repositories, which need to be transformed first
into a model-based representation using our injector. When the
source constraints are fulfilled, the content of the repository is
transformed by the T2M transformation under test to produce
the output models. The models produced from the repository
and their corresponding output models can then be validated
by TractsTool against the Tracts.</p>
        <p>In this way, we are able to test M2T and T2M
transformations in a similar manner to M2M transformations.</p>
      </sec>
      <sec id="sec-4-2">
        <title>B. Tracking faults in MT implementations</title>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Using Tracts in conjunction with the previously presented</title>
      <p>
        approach, M2M, M2T and T2M transformations can be tested
but once a failure is detected, it is not possible to track why the
transformation is not working or where the problem is located.
The existence of a problem lies in the misalignment between
the model transformation specification and its implementation.
We present a white-box and static analysis to ease the task of
finding the location of the model transformation rules that may
have caused the faulty behavior [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ].
      </p>
      <p>
        We are using Tracts for defining the specification of the
MTs. ATL [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] is the MT language we have chosen for
building its implementatation. ATL is a rule-based language
containing a mixture of declarative and imperative constructs
for defining uni-directional transformations. A rule consists
of an input pattern—that might have a filter condition or
not—which is matched on the source model, and an output
pattern that produces certain elements in the target model for
each match of the input pattern. OCL expressions are used to
calculate the values of target features of the target elements.
      </p>
      <p>Given the set of OCL constraints from the Tracts and the
set of ATL rules from the transformation implementation, the
common part they share is the source and target metamodels,
which means that the same types and features are used. Thus,
we make use of these commonalities to indirectly match
the constraints and the rules by matching their footprints
concerning the source and target metamodels. Our aim is
to construct three tables called matching tables with the
alignments between specification and implementation.</p>
      <p>First of all, we need to extract the footprints (i.e., the
structural elements) from the constraints and rules. Since
metamodels are graphs, OCL expressions are heavily dependent
on their contexts and also on the path used to navigate to the
types that the constraint is checking. That navigation path has
nothing to do with the aim of the constraint. Thus, taking all
the footprints on it into account only introduces noise. This
is why we only consider as relevant the last elements of the
OCL expressions. To consider operations on collections, we
take into account only the footprints inside the body of the
deepest (in the sense of nesting) iterators (forAll, exists, etc.).</p>
      <p>Once the footprints have been extracted, for each pair
constraint/rule, the percentage of overlapping footprints is
calculated. To do so, we also take subtyping into account,
i.e., we consider that two footprints matches if they share the
same type or if one is a subtype of the other. This is important
because some OCL operators used in the Tract constraints and
in the ATL rules (such as allInstances) retrieve all instances
of a certain class, as well as the instances of all its subclasses.
When the information about the footprints is available, the
matching tables are calculated according to three metrics:
constraint coverage (CC), rule coverage (RC) and relatedness
of constraints and rules (RCR). The value for the cell [i; j] is
given by the following formulas:
CCi;j = jCi \ Rj j ; RCi;j = jCi \ Rj j ; RCRi;j = jCi \ Rj j
jCij jRj j jCi [ Rj j</p>
    </sec>
    <sec id="sec-6">
      <title>CC measures the coverage for constraint i by a given rule</title>
      <p>j. We interpret this value for rule traceability, i.e., to find the
rules related to the given constraint. This is, if a constraint
fails, the CC table tells us which rule or rules are more likely
to have caused the faulty behavior. For this reason, the CC
table is to be consulted by rows.</p>
      <p>On the other hand, RC focuses on rules. This metric
calculates the coverage for rule j by a given constraint i.
We use the RC table to express constraint traceability as it
shows what constraints are more closely related to a given
rule. Therefore, it is to be read by columns.</p>
      <p>RCR is related to both constraints and rules so it can be
consulted by rows and by columns. It provides information
about the relatedness of both rules and constraints, without
defining a direction for interpreting the values.</p>
      <p>Let us use the well-known M2M transformation example
Families2Persons1 to show how our approach is applied. The
two metamodels are presented in Figure 5. We have developed
one Tract (Listing 2) that considers only families with exactly
four members: one mother, one father, one daughter and one
son. The first constraint states that all families in the source
model have exactly one daughter and one son. The second
constraint states that all mothers and daughters are transformed
into female persons and the third mandates that all fathers
and sons are transformed into male persons. Finally, the last
constraint checks that the sizes of the source and target models
are equal.</p>
      <p>Listing 2. Tracts for the Families2Persons case study.
-- C1: SRC_oneDaughterOneSon
Family.allInstances-&gt;forAll(f|f.daughters-&gt;size=1 and
f.sons-&gt;size=1)
-- C2: SRC_TRG_MotherDaughter2Female
Family.allInstances-&gt;forAll(fam|Female.allInstances-&gt;
exists(f|fam.mother.firstName.concat(’ ’).concat(
fam.lastName)=f.fullName) xor fam.daughters-&gt;exists(d|
d.firstName.concat(’ ’).concat(fam.lastName)=f.fullName))
-- C3: SRC_TRG_FatherSon2Male
Family.allInstances-&gt;forAll(fam|Male.allInstances-&gt;
exists(m| fam.father.firstName.concat(’ ’).concat(
fam.lastName)=m.fullName xor fam.sons-&gt;exists(s|
m.firstName.concat(’ ’).concat(fam.lastName)=s.fullName))
-- C4: SRC_TRG_MemberSize_EQ_PersonSize
Member.allInstances-&gt;size=Person.allInstances-&gt;size</p>
      <p>The footprints extracted for C1 are Family,
Family.daughters, Family.sons and Member (Member appears
because it is the type of f.daughters and f.sons). For C2,
they are Family, Member, Female, Member.firstName,
Family.lastName, Female.fullName. Note that, in the case of the
navigation path Family.mother.firstName, we will only
consider mother.firstName. The footprints for C3 are the same as
for C2 but replacing Female with Male. Finally, the footprints
for C4 are Member and Person.</p>
      <p>A possible implementation of the transformation in ATL is
given in Listing 3. It comprises two helper functions and two
rules. One of the helpers is used to decide whether a member
is female or not, and the second one is used to compute the
family name of a family member. The first rule, R1, transforms
male members (note the use of the helper isFemale() to filter
the corresponding source objects) into male persons and R2
is analogous, but for female family members.</p>
      <p>Listing 3. Families2Persons ATL Transformation.</p>
    </sec>
    <sec id="sec-7">
      <title>The footprints corresponding to R1 are Member, Male,</title>
      <p>Member.firstName and Male.fullName, while the footprints
for R2 are Member, Female, Member.firstName and
Female.fullName. Note that when a rule calls a helper, the
helper’s footprints are included into the set of rule’s footprints.</p>
      <p>Table I shows the metrics computed for the
Families2Persons example. Note that, for a small example like this,
the metrics provide information that can be easily interpreted
by just looking at the constraints and the rules. Let us suppose
that we have executed the transformation for a certain input
model and checked the satisfaction of the constraints using
TractsTool. Let us assume the outcome given by the tool is
that constraint C2 is not satisfied. Looking at the CC metric,
we can see that it is more likely that the problem is in rule
R2. In case there were several rules with the same probability
in CC, we should look at RCR to decide which one should
be checked first. By looking at RC, we can see that for each
one of the rules, there is always a constraint covering it, what
means that it correctness is being checked by the Tract.</p>
      <p>The testing method we propose is far from fully prove
correctness of the transformation. Nevertheless, it provides
the first step to model transformation testing, which aims at
locating faults as early as possible in a quick and cost-effective
manner. Being aware that our proposal may not work in some
cases, we also provide a method and a tool, called Similarity
Matrix Calculator, for checking whether a transformation is
amenable to be used with it. A similarity matrix gives us an
indication of how rules are related with each other looking at
the common footprints they share. We obtain the mean and
the standard deviation of the rule similarities. The lower both
values are (especially the mean), the fewer types and features
the rules have in common, and thus, the higher the chance for
a successful application of our approach is. However, if the
mean and the standard deviation are far from 0, it is difficult
to distinguish among the rules which is the “guilty” one.</p>
      <p>All the previously mentioned tool support we have
developed, i.e., TractTool, Matching Tables Builder and Similarity
Matrix Calculator, can be downloaded from our website2.</p>
    </sec>
    <sec id="sec-8">
      <title>1http://www.eclipse.org/atl/atlTransformations/#Families2Persons</title>
    </sec>
    <sec id="sec-9">
      <title>2http://atenea.lcc.uma.es/index.php/Main Page/Resources/FaultLocMT</title>
      <p>TABLE II initial components of a benchmark for future improvements</p>
      <p>EVALUATION RESULTS and developments of UML-to-Java code generators.</p>
      <p>TOOL C1 C2 C3 C4 C5 C6 C7 C8 C9 In order to evaluate the second part of our proposal—
APrMgooaseUgiidMcoDLn. XXX XX X XX - XXX XXX XX twhheeprero,bgleivmens atrheedfiasiclluorseesd —in wtheehaTvreacatsn,altyhzeedrutlhees atlhiagtnmcaeunstes
EArchitect X X X X X between specifications and implementations in four different
AB.UOMUoMdeLl XX X- XX XX XX X XX real-world transformation projects. For each one of them
we computed manually the alignments between rules and
constraints. Having the matching tables obtained with our
IV. RESULTS AND CONTRIBUTIONS approach and the real alignments, we are able to compute
two measures to assess its quality: precision and recall. In</p>
      <p>
        In order to evaluate the usefulness of our contract-based the context of our study, precision denotes the fraction of the
mechanism for M2T or T2M transformations, we have selected detected alignments that are in fact correct. Recall indicates
a set of currently available UML tools that provide code gen- the fraction of alignments that have not been missed.
eration facilities to produce source code from UML models. The first case study we selected is a transformation dealing
We have generated the Java code corresponding to a set of with the generation of Entity Relationship (ER) Diagrams
input models and we have checked the result using a set of from UML Class Diagram Models. Second, a project that
Tracts. deals with behavioral models conforming to CPL [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ] that
      </p>
      <p>
        For the evaluation, we defined a set of 9 constraints which are transformed into models conforming to SPL [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ]. This
represent some of the most essential requirements that any transformation [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ] is a relatively complex example available
UML to Java code generator has to fulfil. C1 establishes that from the ATL zoo4. Also from the ATL zoo, we considered
nested packages are transformed into nested folders. C2 checks a project that does not operate on modeling languages but
that the import of packages is supported and C3 that the rather on markup languages. It is the BT2DB transformation
inheritance of a leaf class is not allowed. C4 makes sure that from BibTeX documents into DocBook documents. Finally,
only single inheritance is used in UML and C5 that derived we experimented with a very large transformation called
attributes only result in getter methods. C6 and C7 checks Ecore2Maude which is used by the tool e-Motions [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ] in
that the visibility of attributes and roles is mapped to Java. order to apply some formal reasoning.
C8 watches that no Java keywords are allowed as names in For space reasons, we cannot present the Tract constraints,
UML models and C9 that the names in an UML model have the ATL rules and the matching tables but they are available
to be valid Java identifiers. The constraints as well as all the at our website 5. We have observed that the values obtained
required files to execute the experiment can be found in our for the precision and recall metrics are acceptable in three
website 3. of the projects: UML2ER, CPL2SPL and Ecore2Maude. With
      </p>
      <p>The six UML tools that we selected from industry claimed these accuracy results, we can conclude that our approach
to support code generation from UML class diagrams into works well, since the alignments found statically are quite
Java code. The selected sample covers both commercial tools reliable. Nevertheless, as pointed by the similarity matrix for
and open-source projects. They are ArgoUML v.0.34, Po- the BT2DB example (with a mean of 0:41 and a standard
seidon v.6.0.2., MagicDraw v.16.8., EnterpriseArchitect v.10, deviation of 0:24) our approach is unable to help detect
BOUML v.4.22.2. and Altova UModel. problems in the implementation. We have also computed the</p>
      <p>We defined reference test models based on UML and we similarity matrixes for all the transformations in the ATL zoo
re-modelled them in all of the selected tools. We run the code in order to investigate the applicability of our approach. Out of
generator for each one of the tools and obtainted the Java text the 41 model transformations studied, the mean and standard
corresponding to the UML model. Then we checked the output deviation turned out to be below 0:15 in 21 of them, which
against the Tracts. means that our approach can be used with around half of the</p>
      <p>Table II shows the results of the evaluation. A tick symbol transformations.
(X) means that the test passed for that Tract and a cross We conclude this paper by listing the contributions we
symbol ( ) means that the Tract test failed. Some of the tests have made. First, we have extended Tracts to be used for
were not available for a given tool, e.g., a particular modeling M2T/T2M transformations and have proved its usefulness
defeature is missing, and were not performed. This is indicated tecting errors in current UML-to-Java code generators offered
by a dash (-). We found that no tool performs well even with by well-known UML tools. Second, we have presented a static
respect to the basic UML to Java code generators. Further- approach to trace errors in model transformations and have
more, we discovered that several tools produced incorrect Java proved that our approach is applicable to a large number of
code, even not compilable in some situations. In this sense, the transformations.</p>
      <p>Tracts presenting the basic requirements could be used as the</p>
    </sec>
    <sec id="sec-10">
      <title>3http://atenea.lcc.uma.es/index.php/Main Page/Resources/Tracts/</title>
      <p>UML2Java</p>
    </sec>
    <sec id="sec-11">
      <title>4http://www.eclipse.org/atl/atlTransformations 5http://atenea.lcc.uma.es/index.php/Main Page/Resources/MTB</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Brambilla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          ,
          <article-title>Model-Driven Software Engineering in Practice, ser</article-title>
          .
          <source>Synthesis Lectures on Software Engineering</source>
          . Morgan &amp; Claypool Publishers,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Amrani</surname>
          </string-name>
          , L. Lu´cio, G. Selim,
          <string-name>
            <given-names>B.</given-names>
            <surname>Combemale</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dingel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y. L.</given-names>
            <surname>Traon</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Cordy</surname>
          </string-name>
          , “
          <article-title>A tridimensional approach for studying the formal verification of model transformations,”</article-title>
          <source>in Proc. of the 1st International Workshop on Verification and Validation of Model Transformations (VOLT</source>
          <year>2012</year>
          ),
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.</given-names>
            <surname>Vallecillo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          , L. Burguen˜o,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          , and L. Hamann, “
          <article-title>Formal specification and testing of model transformations,” in Formal Methods for Model-Driven Engineering (SFM), ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>7320</volume>
          . Springer,
          <year>2012</year>
          , pp.
          <fpage>399</fpage>
          -
          <lpage>437</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Vallecillo</surname>
          </string-name>
          , “
          <article-title>Tractable model transformation testing,” in Proc. of ECMFA'11, ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>6698</volume>
          . Springer,
          <year>2011</year>
          , pp.
          <fpage>221</fpage>
          -
          <lpage>236</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Helsen</surname>
          </string-name>
          , “
          <article-title>Feature-based survey of model transformation approaches,” IBM Systems Journal</article-title>
          , vol.
          <volume>45</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>621</fpage>
          -
          <lpage>646</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>H.</given-names>
            <surname>Bruneliere</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Madiot</surname>
          </string-name>
          , “
          <article-title>MoDisco: a generic and extensible framework for model driven reverse engineering</article-title>
          ,”
          <source>in Proceedings of the 25th International Conference on Automated Software Engineering (ASE</source>
          <year>2010</year>
          ). ACM,
          <year>2010</year>
          , pp.
          <fpage>173</fpage>
          -
          <lpage>174</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>B.</given-names>
            <surname>Baudry</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ghosh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Fleurey</surname>
          </string-name>
          , R. France,
          <string-name>
            <given-names>Y. L.</given-names>
            <surname>Traon</surname>
          </string-name>
          , and J.
          <string-name>
            <surname>-M. Mottu</surname>
          </string-name>
          , “
          <article-title>Barriers to systematic model transformation testing,” Communications of the ACM</article-title>
          , vol.
          <volume>53</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>139</fpage>
          -
          <lpage>143</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>R. V. D.</given-names>
            <surname>Straeten</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S. V.</given-names>
            <surname>Baelen</surname>
          </string-name>
          , “
          <article-title>Challenges in modeldriven software engineering,” in Models in Software Engineering, ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>5421</volume>
          . Springer,
          <year>2008</year>
          , pp.
          <fpage>35</fpage>
          -
          <lpage>47</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>B.</given-names>
            <surname>Meyer</surname>
          </string-name>
          , “
          <article-title>Applying design by contract</article-title>
          ,
          <source>” IEEE Computer</source>
          , vol.
          <volume>25</volume>
          , no.
          <issue>10</issue>
          , pp.
          <fpage>40</fpage>
          -
          <lpage>51</lpage>
          ,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>E.</given-names>
            <surname>Cariou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Belloir</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Barbier</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Djemam</surname>
          </string-name>
          , “
          <article-title>OCL contracts for the verification of model transformations</article-title>
          ,
          <source>” ECEASST</source>
          , vol.
          <volume>24</volume>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>E.</given-names>
            <surname>Cariou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Marvie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Seinturier</surname>
          </string-name>
          , and L. Duchien, “
          <article-title>OCL for the specification of model transformation contracts,”</article-title>
          <source>in Proc. of the OCL and Model Driven Engineering Workshop</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>Garc´</surname>
          </string-name>
          ıa-Dom´ınguez,
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I.</surname>
          </string-name>
          <article-title>Medina-Bulo, “EUnit: A unit testing framework for model management tasks,” in Proc. of MODELS'11, ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>6981</volume>
          . Springer,
          <year>2011</year>
          , pp.
          <fpage>395</fpage>
          -
          <lpage>409</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>P.</given-names>
            <surname>Giner</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Pelechano</surname>
          </string-name>
          , “
          <article-title>Test-Driven Development of Model Transformations,”</article-title>
          <source>in Proceedings of the 12th International Conference on Model Driven Engineering Languages and Systems (MODELS</source>
          <year>2009</year>
          )
          <article-title>, ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>5795</volume>
          . Springer,
          <year>2009</year>
          , pp.
          <fpage>748</fpage>
          -
          <lpage>752</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>D.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Rose</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Polack</surname>
          </string-name>
          , “
          <article-title>Unit testing model management operations,” in ICSTW'08</article-title>
          . IEEE,
          <year>2008</year>
          , pp.
          <fpage>97</fpage>
          -
          <lpage>104</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>E.</given-names>
            <surname>Guerra</surname>
          </string-name>
          , “
          <article-title>Specification-driven test generation for model transformations</article-title>
          ,”
          <source>in Proceedings of the 5th International Conference on Theory and Practice of Model Transformations (ICMT</source>
          <year>2012</year>
          ,
          <article-title>ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>7307</volume>
          . Springer,
          <year>2012</year>
          , pp.
          <fpage>40</fpage>
          -
          <lpage>55</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Tiso</surname>
          </string-name>
          , G. Reggio, and
          <string-name>
            <given-names>M.</given-names>
            <surname>Leotta</surname>
          </string-name>
          , “
          <article-title>Unit testing of model to text transformations,”</article-title>
          <source>in Proc. of AMT'14</source>
          ,
          <year>2014</year>
          , pp.
          <fpage>14</fpage>
          -
          <lpage>23</lpage>
          . [Online]. Available: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>1277</volume>
          /2.pdf
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>B.</given-names>
            <surname>Ramesh</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Dhar</surname>
          </string-name>
          , “
          <article-title>Supporting systems development by capturing deliberations during requirements engineering</article-title>
          ,
          <source>” IEEE Transactions on Software Engineering</source>
          , vol.
          <volume>18</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>498</fpage>
          -
          <lpage>510</lpage>
          ,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>F. A. C.</given-names>
            <surname>Pinheiro</surname>
          </string-name>
          and
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Goguen</surname>
          </string-name>
          , “
          <article-title>An object-oriented tool for tracing requirements</article-title>
          ,
          <source>” IEEE Software</source>
          , vol.
          <volume>13</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>52</fpage>
          -
          <lpage>64</lpage>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>M.</given-names>
            <surname>Hibberd</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Lawley</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Raymond</surname>
          </string-name>
          , “
          <article-title>Forensic debugging of model transformations,” in Proc. of MODELS'07, ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>4735</volume>
          . Springer,
          <year>2007</year>
          , pp.
          <fpage>589</fpage>
          -
          <lpage>604</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>V.</given-names>
            <surname>Aranega</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.-M. Mottu</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Etien</surname>
            , and
            <given-names>J.-L.</given-names>
          </string-name>
          <string-name>
            <surname>Dekeyser</surname>
          </string-name>
          , “
          <article-title>Traceability mechanism for error localization in model transformation,”</article-title>
          <source>in Proc. of ICSOFT'09</source>
          . INSTICC Press,
          <year>2009</year>
          , pp.
          <fpage>66</fpage>
          -
          <lpage>73</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          , G. Kappel, J. Scho¨nbo¨ck,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kusel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Retschitzegger</surname>
          </string-name>
          , and W. Schwinger, “
          <article-title>A Petri Net based debugging environment for QVT Relations,”</article-title>
          <source>in Proc. of ASE'09. IEEE</source>
          ,
          <year>2009</year>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>14</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Ujhelyi</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          ´. Horva´th, and D. Varro´, “
          <article-title>Dynamic backward slicing of model transformations,”</article-title>
          <source>in Proc. of ICST'12. IEEE</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>C. A.</given-names>
            <surname>Gonza</surname>
          </string-name>
          <article-title>´lez and</article-title>
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , “
          <article-title>ATLTest: A White-Box Test Generation Approach for ATL Transformations,” in Proc. of MoDELS'12, ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>7590</volume>
          . Springer,
          <year>2012</year>
          , pp.
          <fpage>449</fpage>
          -
          <lpage>464</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          and L. Burguen˜o, “
          <article-title>Testing M2T/T2M transformations,” in Proc. of MODELS'13, ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>8107</volume>
          . Springer,
          <year>2013</year>
          , pp.
          <fpage>203</fpage>
          -
          <lpage>219</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <surname>F.</surname>
          </string-name>
          <article-title>Bu¨ttner, and</article-title>
          <string-name>
            <given-names>M.</given-names>
            <surname>Richters</surname>
          </string-name>
          , “
          <article-title>USE: A UML-based specification environment for validating UML</article-title>
          and OCL,”
          <source>Science of Computer Programming</source>
          , vol.
          <volume>69</volume>
          , pp.
          <fpage>27</fpage>
          -
          <lpage>34</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>L.</given-names>
            <surname>Burguen</surname>
          </string-name>
          ˜o,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Troya</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Vallecillo</surname>
          </string-name>
          , “Static Fault Localization in Model Transformations,
          <source>” IEEE Transactions on Software Engineering</source>
          , vol.
          <volume>41</volume>
          , no.
          <issue>5</issue>
          , pp.
          <fpage>490</fpage>
          -
          <lpage>506</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Allilaire</surname>
          </string-name>
          , J. Be´zivin, and I. Kurtev, “ATL:
          <article-title>A model transformation tool</article-title>
          ,”
          <source>Science of Computer Programming</source>
          , vol.
          <volume>72</volume>
          , no.
          <issue>1-2</issue>
          , pp.
          <fpage>31</fpage>
          -
          <lpage>39</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>J.</given-names>
            <surname>Lennox</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Wu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Schulzrinne</surname>
          </string-name>
          , “
          <article-title>Call Processing Language (CPL): A language for user control of internet telephony services</article-title>
          ,”
          <year>2004</year>
          , http://www.ietf.org/rfc/rfc3880.txt.
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>L.</given-names>
            <surname>Burgy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Consel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Latry</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Lawall</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Palix</surname>
          </string-name>
          , and L. Reveillere, “
          <article-title>Language technology for internet-telephony service creation,”</article-title>
          <source>in Proc. of ICC'06. IEEE</source>
          ,
          <year>2006</year>
          , pp.
          <fpage>1795</fpage>
          -
          <lpage>1800</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          , J. Be´zivin, C. Consel,
          <string-name>
            <surname>I. Kurtev</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Latry</surname>
          </string-name>
          , “
          <article-title>Building DSLs with AMMA/ATL, a Case Study on SPL and CPL Telephony Languages,”</article-title>
          <source>in Proc. of ECOOP Workshop on Domain-Specific Program Development</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>J. E.</given-names>
            <surname>Rivera</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Dura</surname>
          </string-name>
          <article-title>´n, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Vallecillo</surname>
          </string-name>
          , “
          <article-title>A Graphical Approach for Modeling Time-Dependent Behavior of DSLs,”</article-title>
          <source>in Proc. of VL/HCC'09. IEEE</source>
          ,
          <year>2009</year>
          , pp.
          <fpage>51</fpage>
          -
          <lpage>55</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>