<!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>Qualifying chains of transformation with coverage based evaluation criteria</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Francesco Basciani</string-name>
          <email>francesco.basciani@graduate.univaq.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Juri Di Rocco</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Davide Di Ruscio</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ludovico Iovino</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alfonso Pierantonio</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Information Engineering Computer Science and Mathematics University of L'Aquila</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In Model-Driven Engineering (MDE) the development of complex and large transformations can benefit from the reuse of smaller ones that can be composed according to user requirements. Composing transformations is a complex problem: typically smaller transformations are discovered and selected by developers from different and heterogeneous sources. Then the identified transformations are chained by means of manual and error-prone composition processes. Based on our approach, when we propose one or more transformation chains to the user, it is difficult for him to choose one path instead of another without considering the semantic properties of a transformation. In this paper when multiple chains are proposed to the user, according to his requirements, we propose an approach to classify these suitable chains with respect to the coverage of the metamodels involved in the transformation. Based on coverage value, we are able to qualify the transformation chains with an evaluation criteria which gives as an indication of how much information a transformation chain covers over another.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Model-driven engineering (MDE) is a software discipline that employs models for
describing problems in an application domain by means of metamodels. Different
abstraction levels are bridged together by automated transformations which permit source
models to be mapped to target models. In MDE, model transformations play a key role
and in order to enable their reusability, maintainability, and modularity, the
development of complex transformations should be done by composing smaller ones [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The
common way to compose transformations is to chain them [
        <xref ref-type="bibr" rid="ref1 ref2 ref3 ref4 ref5">2,1,3,4,5</xref>
        ], i.e., by
passing models from one transformation to another. This process can be supported by an
infrastructure based on a graph representation able to calculate the possible
transformation compositions going from one model to another. Technically the entire process
is supported by a repository of models, metamodels and model transformations
previously presented in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. This automatic process can be called transformation chaining
and has been treated in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Moreover the possible chains outcome of the discovery in
the model transformations stored in the repository, could be more than one and the user
is responsible for choosing the better one for its purpose. Beyond the metamodel
compatibility property, selecting and chaining model transformations can involve also other
properties like information loss, frequency of use, user rating or metamodel coverage.
All those possible properties could be considered in a model transformation process in
order to facilitate the user in the selection phase, when more than one suitable chains
are proposed to the user, and one of those must be selected.
      </p>
      <p>
        Our work extends the approach defined in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], to support the automatic discovery
and composition of model transformations with respect to user requirements. In
particular developers provide the system with the source models and specify the target
metamodel, by relying on a repository of model transformations, all the possible
transformation chains are calculated and proposed to the user. The extension offered here
comprehends a mechanism to provide a chain transformation evaluation index in order
to guide the user in the chain transformation selection. To this end we define two
properties (that in Section 3 we call Coverage Input and Coverage Output ) on the
transformations which allow us to understand how much information is preserved within
a transformation: with this information we provide a selection criterion when we are
dealing with multiple chains. In this paper, we highlight the process able to calculate
the metamodel coverage, that will be proposed to the user when more than one possible
transformation chains are are pulled out.
      </p>
      <p>This paper starts with a background section where the chaining mechanism is
explained and in Section 3 we propose a chaining classification based on coverage while
providing its formal definition. In Section 4 we explore the problem of having multiple
chains in response to the user requests showing a scenario in which we use the coverage
criteria to qualify them. Related works in Section 5 and Section 6 concludes the paper.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Model transformation chaining: background</title>
      <p>
        Composing model transformations is a difficult problem that can be approached in
two different ways [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]: by chaining separate model transformations and passing
models from one transformation to another (external composition), or by composing two
model transformation definitions into a new model transformation (internal
composition). Even though both methods for composing transformations are important and
complement each other, in this paper we focus on external composition1. Figure 1
shows an explanatory model transformation chain. In particular, T1 is a model
transformation that generates models conforming to the target metamodel MM2 from models
conforming to MM1. Additionally, T2 is a model transformation that generates models
conforming to MM4 from models conforming to the source metamodel MM2. Since the
input metamodel of T2 is also the output metamodel of T1, then these two transformations
1 For readability reasons, hereafter with the term composition we refer to external
composition. Moreover, the terms composition and chaining are used interchangeably.
can be chained. Over the last years, different approaches have been studied to support
the composition of model transformations (e.g., see [
        <xref ref-type="bibr" rid="ref2 ref3 ref4 ref5">2,3,4,5</xref>
        ]). The main activities that
are typically performed when chaining model transformations are summarized in the
following:
– Specification of model transformation chains: in this activity by considering the
locally available model transformations, chains are specified by means of dedicated
languages. For instance, in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] the authors propose Wires*, a domain-specific
language for the specification and orchestration of ATL transformations only. Another
common way to chain model transformations is to use ANT scripts 2;3;4. In [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]
the authors propose the adoption of feature models to support the design of model
transformation chains. In such a work, transformations are considered as features
that are properly composed as specified in the considered feature models.
– Execution of the specified model transformations chains: in this phase the chains
previously specified are executed on the source models given by the user. The
execution environments of the adopted transformation languages are employed.
      </p>
      <p>
        The first activity is the most complex one and over the last years a number of works
have been presented to support it. The focus was mainly on the following aspects:
– pre- and post-conditions of transformations: when chaining transformations the
conditions of applicability of a transformation (pre-conditions) and the conditions
of validity of the resulting transformation (post-conditions) have to be satisfied.
In [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] the authors propose an approach which adopting Higher-Order
Transformations (HOT), is able to discover hidden chaining constraints between endogenous
transformations by statically analysing the transformation rules.
– commutativity/transformation order: two model transformations are commutative
(or parallel independent) if they can be chained in either order and produce the
same results. In [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] the authors focus on this problem by providing an approach that
permits to statically analyse two transformations and check if they are commutative
or not.
      </p>
      <p>
        In all the works mentioned above, the definition of transformation chains rely on
the concept of compatible metamodels [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] as defined below.
      </p>
      <sec id="sec-2-1">
        <title>Definition 1 (metamodels compatibility). Let MM1 and MM2 be two metamodels,</title>
        <p>then MM1 and MM2 are compatible if MM1 MM2 or MM2 MM1.</p>
        <sec id="sec-2-1-1">
          <title>Definition 2 (transformation composability). Let T1 : MM1 ! MM2 be a model</title>
          <p>transformation from the metamodel MM1 to the metamodel MM2, and let T2 : MM3 !
MM4 be a model transformation from the metamodel MM3 to the metamodel MM4.
Then, T1 and T2 are composable as the sequential application T1; T2 if MM2 MM3.
2 Apache Ant: http://ant.apache.org/
3 Epsilon Workflow: http://www.eclipse.org/epsilon/doc/workflow/
4 ATL-specific launch configurations and ANT tasks: http://wiki.eclipse.org/ATL/Howtos</p>
          <p>
            The main focus of such works is to improve the solution found in like [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ], in which
authors check if two given transformations can be chained or not with respect to the
metamodel compatibility property defined in [
            <xref ref-type="bibr" rid="ref7">7</xref>
            ]. Then, compatibility can be exploited to
manually defining chains and singularly selecting the required transformations [
            <xref ref-type="bibr" rid="ref3 ref8 ref9">9,8,3</xref>
            ].
In [
            <xref ref-type="bibr" rid="ref7">7</xref>
            ] the authors, in response to user requests, define an automatic process in order to
determine the transformation chains. Specifically, they define two activities discovery
of required model transformation (Discovery) and derivation of model transformation
chains (Derivation), that by relying on a graph-based representation of a repository of
artifacts [
            <xref ref-type="bibr" rid="ref6">6</xref>
            ] are able to determine all the paths between the source and target
metamodels, i.e. all the possible chains that meet user requests.
3
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Proposing chaining classification based on coverage</title>
      <p>
        Figure 2 shows an extended version of the process seen in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], by introducing the new
activity 2 . In the previous process there were the activity 1 (that provides a set of
chains that transform a given model into a new one conform to the given target
metamodel) and activity 3 that executes the chosen chain.
      </p>
      <p>The purpose of the new activity 2 is to evaluate a specific transformation chain
in order to facilitate the user chain selection. This evaluation is based on the amount
of preserved information from the transformation. Therefore, with this new evaluation
criteria we enrich the basic selection criteria for a chain with a new one: the coverage
of the transformation with respect to the source and target metamodel.</p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] Vignaga states that
the coverage of a
transformation, with respect to the source
metamodel can be defined as
the quotient between the total
number of distinct source
metaclasses whose instances are used
in a transformation for
producing the target models, and the
total number of metaclasses in the
source metamodels.
      </p>
      <p>Analogously we define the Fig. 2. Model transformations chaining process
coverage of a model
transformation with respect to its input metamodel (respectively output metamodel) as the ratio
between the number of elements of the transformation that refer to the input metamodel
(respectively output metamodel) with the total number of elements of the input
metamodel itself (respectively metamodel output).</p>
      <p>
        Metamodels / Transformation coverage checks which parts of a source (or target)
metamodel are referenced by a given model transformation [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. In this work, by
analyzing the elements that compose the metamodels and transformations, we propose to
use the value of coverage between the input and output metamodels and the
transformation to classify the accuracy of the transformation we are choosing in the chaining
process. This is one of the possible criteria that can be used to evaluate transformations
during the chaining process.
      </p>
      <p>In the following we focus on how the coverage of an ATL model transformation
is calculated with respect to its input and output metamodels. To obtain the
coverage values (one for the input, Coverage Input , and one for the output, Coverage
Output ) the relationship between the number of elements of the input metamodel of the
model transformation (nElemInT (inputM M; T )) (respectively output metamodel,
nElemInT (outputM M; T )) on the number of elements of the input metamodel itself
(nElemInM M (inputM M )) (respectively output metamodel,
nElemInM M (outputM M )) is evaluated. More formally:</p>
      <sec id="sec-3-1">
        <title>Definition 3 (Elements in a class). Let c 2 C be a metaclass, let nAttribute : C !</title>
        <p>N, nRef erence : C ! N, nInheritsAttribute : C ! N, nInheritsRef erence :
C ! N be functions that given a metaclass return the number of its attributes, the
number of its references, the number of its inherits attributes and the number of its
inherits references, respectively. Then nElemInClass : C ! N is defined as
nElemInClass(c) = nAttribute(c) + nRef erence(c) +
nInheritsAttribute(c) + nInheritsRef erence(c)</p>
        <p>We are counting the number of elements in a class in terms of attributes and
references (both inherited and non-inherited).</p>
        <sec id="sec-3-1-1">
          <title>Definition 4 (Elements in a package). Let P be a set of all packages and C a set</title>
          <p>of classes in metamodel. Let p 2 P be a package, let classN otAbstract : C !
C0; C0 C, a function that given a package returns a set of its non-abstract class, let
subP ackage : P ! P 0; P 0 P be a function that given a package returns a set of its
sub packages then nElemInP ackage : P ! N is defined as
nElemInP ackage(p) = Ps2subP ackage(p) nElemInP ackage(s) +
Pc2classNotAbstract(p) nElemInClass(c)</p>
          <p>We are counting the number of elements in a package (and its sub-packages) and its
non-abstract classes.</p>
        </sec>
        <sec id="sec-3-1-2">
          <title>Definition 5 (Elements in a metamodel). Let M M be a set of metamodels and let P</title>
          <p>be a set of packages. Let mm 2 M M be a metamodel, let packageSet : M M ! P be
a function that given a metamodel returns a set of its packages, then nElemInM M :
M M ! N is defined as
nElemInM M (mm) = Pp2packageSet(mm) nElemInP ackage(p)
We are counting the number of elements contained in a metamodel looking among
its packages.</p>
        </sec>
        <sec id="sec-3-1-3">
          <title>Definition 6 (Number of covered elements). Let C be a set of metaclasses , let A be</title>
          <p>a set of attributes, let R a set of references, let T a set of transformations, let O a set of
output pattern, let I be a set of input pattern, let B be a set of bindings, let outP attern :
T ! O be a function that given an transformation returns a set of all output pattern,
let inP attern : T ! I be a function that given an transformation returns a set of all
input pattern, let bindings : T ! B be a function that given a transformation returns
a set of all bindings, let ref erencedElement : B ! A [ R be a function that given
a binding returns a attribute or reference referenced by binding, let t 2 T be a
transformation, let mm1 2 M M be a metamodels, let isInM M Class : C; M M ! f0; 1g
be a function that given a mataclass and a metamodel returns 1 if i are contained
in M M , 0 otherwise, let isInM M Attribute : A; C ! f0; 1g be a function that
given an attribute and a metaclass returns 1 if i are contained in M M , 0 otherwise,
let isInM M Ref : R; C ! f0; 1g be a function that given a reference and a
metaclass returns 1 if i are contained in M M , 0 otherwise, let distinctM etaclassInOp :
T ! fc 2 Cj9op 2 outP attern(T ) ^ c = op:ref erredElementsg be a
function that given a transformation returns a set of distinct metaclasses referenced by
an out pattern, let distinctM etaclassInIp : T ! fc 2 Cjip 2 inP attern(T ) ^
c = op:ref erredElementsg be a function that given a transformation returns a
set of distinct metaclasses referenced by an in pattern, let distinctAttBindings :
T ! fa 2 A j 9b 2 bindings(T ) ^ a = ref erencedElement(b)g be a
function that given a transformation returns a set of distinct attribute referenced by a
binding, let distinctRef Bindings : T ! fr 2 Rj9b 2 bindings(T ) ^ r =
ref erencedElement(b)g be a function that given a transformation returns a set of
distinct reference referenced by an binding then nElemInT : T; M M ! N is defined
as
nElemInT : (mm1; t) = Pi2distinctMetaclassInOp(T ) isInM M Class(i; M M ) +
Pi2distinctMetaclassInIp(T ) isInM M Class(i; M M ) +
Pi2distinctAttrInBindings(T ) isInM M Attribute(i; M M ) +
Pi2distinctRefInBindings(T ) isInM M Ref erence(i; M M )</p>
          <p>We are counting how many elements of the metamodel, provided as input to the
function (which can be either the source metamodel that the target metamodel), are
covered by the transformation.</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>Definition 7 (Transformation coverage). Let mm1 2 M M be a metamodels, let t 2</title>
        <p>T be a transformation, then tCoverage : (M M; T ) ! [0; 1] defined as
tCoverage(mm1; t) =
nElemInT (mm1; t)
nElemInM M (mm1)</p>
        <p>With this formula we calculate the coverage of a transformation. Depending on
whether we provide as input of the function the source or the target metamodel, we will
have as a result, respectively, the input or output coverage.
How the coverage of a chain is calculated Starting from the graph in Fig. 3,
representing our repository, and the inputs provided by the user (see Fig. 2) through a
breadthfirst search (BFS), the system retrieves all the paths. Each retrieved path starting from
the node that represents the metamodel provided as input, arrives at target metamodel
still supplied by the user. It is important to remark that at this stage the coverage values
on the edges are not yet considered.</p>
        <p>Once the list of paths between source and target is obtained, the chain coverage is
calculated and this is done through the formula derived from the following definition:
Definition 8 (Chain Coverage). Let T C be a set of transformation chains, let M M
be a set of metamodels, let T be a set of transformations, let t 2 T be a
transformation, let ct 2 T C be a chain transformation, let sourceM M : T ! M M be a
function that given a transformation return the source metamodel, let targetM M :
T ! M M be a function that given a transformation return the target metamodel then
chainCoverage : T C ! [0; 1] is defined as
chainCoverage(ct) = Qt2transformationChain(ct) tCoverage(t; sourceM M (t))
tCoverage(t; targetM M (t))
With this formula we take into account on the one hand the values of coverage in a
chain and on the other hand we take into account the length of the same (having values
between 0 and 1). Once we determined these values (for each insertion and/or deletion
of a model transformation) they are retained as weights on edges in the graph structure
(you can see an example in Fig. 3).
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Dealing with multiple chains</title>
      <p>The sub-activities Discovery and Derivation of activity 1 in Fig. 2 might give place to
different possible chains among which the user must choose.</p>
      <p>and before going ahead with executing activity, users have to select one of them.</p>
      <p>
        As said before, possible path of chaining can be distinguished based on different
parameters and with this work we focus on the coverage of the transformation respect to
the source and target metamodel.
Based on the
framework proposed in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]
and taking advantage
of all its services in
support of the
chaining mechanism, what
we do is to enhance the Fig. 3. Graph structure of metamodels and model transformations
representation graph for with Coverage Input and Coverage Output on edges
the maintenance of the
artifacts, adding values
at the beginning (Coverage Input ) and the end (Coverage Output ) of an arc which
represents a transformation.
      </p>
      <p>In other words an edge represents a transformation from source metamodel to the
target in the repository, and the coverage in input/output represents the ratio between
elements in the source/target metamodels and the elements consumed/produced by the
transformation respectively.</p>
      <p>Let us suppose that the user gives as input an XML model and requests to generate a
target Persons model. According to the available transformations in the repository, the
result of activity 1 is the list of the chains, which in the example are these two:
(1) XM L2F amilies ! F amilies2P ersons
(2) XM L2Book ! Book2P ublication ! P ublication2P ersons</p>
      <p>The model transformation Families2Persons is shown in Fig. 4.a, it is the second
transformation composing the chain (1) that has been retrieved. This transformation
has Families metamodel as source, represented in Fig. 4.b and Persons metamodel as
target, depicted in Fig. 4.c.</p>
      <p>This list of chains is processed by the activity 2 (Evaluation). We calculate how
much the model transformation actually ”covers” the elements of the source and target
metamodel and we obtain Table. 1, summarizing the values that the system extrapolates
by analyzing the source and target metamodels, and the model transformation.</p>
      <p>The process to assign the coverage values to the existing transformations in the
repository can be summarized as:
Metamodels static analysis ! Transformation static analysis ! Coverage Calculation</p>
      <p>The system firstly extract from the static analysis of metamodels and transformation,
the Matched Rules in the transformation and its related source and target patterns:
nElemInMM(Families)
Classes Abstracts StructuralFeatures InheritedStructuralFeatures Attributes References
nElemInMM(Persons)
Classes Abstracts StructuralFeatures InheritedStructuralFeatures Attributes References
12
4
The result that comes out from this activity of ”evaluation” suggest that could be
convenient to invoke a chain like XML2Families ! Families2Persons, that has a coverage
value higher than the other one. After the user’s selection, activity 3 can start, i.e. the
execution of the chain.</p>
    </sec>
    <sec id="sec-5">
      <title>Related work</title>
      <p>Increasingly, model transformation chaining has been a current topic of research and it
has been treated from different perspectives.</p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] the authors present a convenient approach to design highly flexible chains
from existing independent model transformations. The main difference with the
presented approach is the design part that in our case is automatically calculated by the
engine in discovery mode. They propose to artificially change the input and output of
transformations in order to recover the compatibility of the involved metamodels. The
work in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] is an extension of what is presented in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] where the authors address the
problem of identifying conflicts between transformations, and checking if two
transformations are commutative or not.
      </p>
      <p>
        A language for defining composition of transformations is given in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. To support
the concrete realization of transformation chains they propose a language to allow the
concatenation of transformation components. A recent work [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] uses feature models to
classify model transformations. Based on these feature models, automated techniques
help the designer to generate executable chain of transformations. Another interesting
work has been exposed in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] where transformation chaining is called orchestration.
This paper introduces a graphical executable language for the orchestration of ATL
transformations, which provides appropriate mechanisms to enable the modular and
compositional specification and execution of complex model transformations chains.
The work presented in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] describes an approach to designing large model
transformations for large languages, based on the principle of separation of concerns. Chains are
built by linking output parameters to input ones through connectors. Differently from
such works we do not require the specification of transformation chains that in our
approach are automatically derived with respect to the request of the user and to the
transformations, which are stored in a dedicated repository.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] the authors propose a mechanism of module superimposition to compose
small and reusable transformations. The idea is to overlay several transformation
definitions on top of each other and then execute them as one transformation. Differently
from our work, the approach in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] is specific for ATL and it is an internal composition
approach. The work proposed in this paper is an external composition technique and it
is independent from the used model transformation language. Vignaga [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] describes
a number of metrics for ATL model transformations, described according to the ATL
metaclass to which they apply. In this paper and also in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] the coverage is treated and
the formula exposed has been reused also in our work.
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Discussion and conclusions</title>
      <p>
        In this paper we present an improvement of the approach seen in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] that support model
transformations chaining. Starting from a user request consisting of a source model,
and the specification of a target metamodel, the system is able to calculate the
possible chains satisfying the user request according to the transformation available in a
proposed transformation repository. The main strengths of our approach are related to
the possibility of qualifying the chains with the coverage that helps the user to choose
a chain among all the others that the system is able to retrieve. This is done by
analyzing all the elements that compose both metamodels (input and target) of a model
transformation and the model transformation itself. With this technique, in some way,
we are going to evaluate how much information is preserved or lost when you make a
single transformation and consequently how much it preserves or how much is lost in
the whole chain. We are aware that in order to better characterize the concept of
information loss we should consider in a different way both the models in input and output
of a transformation. This, however, will be investigated in the next works.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Etien</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aranega</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Blanc</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          :
          <article-title>Chaining Model Transformations</article-title>
          .
          <source>In: Proceedings of the First Workshop on the Analysis of Model Transformations. AMT '12</source>
          , New York, NY, USA, ACM (
          <year>2012</year>
          )
          <fpage>9</fpage>
          -
          <lpage>14</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Etien</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Muller</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Legrand</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Blanc</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          :
          <article-title>Combining Independent Model Transformations</article-title>
          .
          <source>In: Proceedings of the 2010 ACM Symposium on Applied Computing. SAC '10</source>
          , New York, NY, USA, ACM (
          <year>2010</year>
          )
          <fpage>2237</fpage>
          -
          <lpage>2243</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Vanhooff</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Van Baelen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hovsepyan</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Joosen</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Berbers</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Towards a Transformation Chain Modeling Language</article-title>
          . In Vassiliadis, S.,
          <string-name>
            <surname>Wong</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hmlinen</surname>
          </string-name>
          , T., eds.: Embedded Computer Systems: Architectures, Modeling, and
          <string-name>
            <surname>Simulation</surname>
          </string-name>
          . Volume
          <volume>4017</volume>
          of Lecture Notes in Computer Science. Springer Berlin Heidelberg (
          <year>2006</year>
          )
          <fpage>39</fpage>
          -
          <lpage>48</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Etien</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Muller</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Legrand</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          :
          <article-title>Localized model transformations for building large-scale transformations</article-title>
          .
          <source>Software Systems Modeling</source>
          (
          <year>2013</year>
          )
          <fpage>1</fpage>
          -
          <lpage>25</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Wagelaar</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Composition Techniques for Rule-Based Model Transformation Languages</article-title>
          . In
          <string-name>
            <surname>Vallecillo</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gray</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pierantonio</surname>
          </string-name>
          , A., eds.
          <source>: Theory and Practice of Model Transformations. Volume 5063 of Lecture Notes in Computer Science</source>
          . Springer Berlin Heidelberg (
          <year>2008</year>
          )
          <fpage>152</fpage>
          -
          <lpage>167</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Basciani</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Di</surname>
            <given-names>Rocco</given-names>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Di</given-names>
            <surname>Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <surname>D.</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Di</given-names>
            <surname>Salle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Iovino</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Pierantonio</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          :
          <article-title>MDEForge: an extensible Web-based modeling platform</article-title>
          .
          <source>CloudMDE</source>
          <year>2014</year>
          (
          <year>2014</year>
          )
          <fpage>66</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Basciani</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Di Ruscio</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Iovino</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pierantonio</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Automated chaining of model transformations with incompatible metamodels</article-title>
          .
          <source>In: Model-Driven Engineering Languages and Systems</source>
          . Springer (
          <year>2014</year>
          )
          <fpage>602</fpage>
          -
          <lpage>618</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Rivera</surname>
            ,
            <given-names>J.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ruiz-Gonzalez</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lopez-Romero</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bautista</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vallecillo</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Orchestrating ATL Model Transformations</article-title>
          .
          <source>In: Proc. of MtATL</source>
          <year>2009</year>
          , Nantes, France (
          <year>2009</year>
          )
          <fpage>34</fpage>
          -
          <lpage>46</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Aranega</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Etien</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mosser</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>Using Feature Model to Build Model Transformation Chains</article-title>
          .
          <source>In: Proceedings of the 15th International Conference on Model Driven Engineering Languages and Systems. MODELS'12</source>
          , Berlin, Heidelberg, Springer-Verlag (
          <year>2012</year>
          )
          <fpage>562</fpage>
          -
          <lpage>578</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Chenouard</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Automatically Discovering Hidden Transformation Chaining Constraints</article-title>
          . In Schrr,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Selic</surname>
          </string-name>
          , B., eds.:
          <source>Model Driven Engineering Languages and Systems. Volume 5795 of Lecture Notes in Computer Science</source>
          . Springer Berlin Heidelberg (
          <year>2009</year>
          )
          <fpage>92</fpage>
          -
          <lpage>106</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <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</source>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>S.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Carrington</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Verifying metamodel coverage of model transformations</article-title>
          .
          <source>In: Software Engineering Conference</source>
          ,
          <year>2006</year>
          . Australian. (
          <year>2006</year>
          ) 10 pp.-
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Rivera</surname>
            ,
            <given-names>J.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ruiz-Gonzalez</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lopez-Romero</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bautista</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vallecillo</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Orchestrating ATL Model Transformations</article-title>
          .
          <source>In: Proc. of MtATL</source>
          <year>2009</year>
          , Nantes, France (
          <year>2009</year>
          )
          <fpage>34</fpage>
          -
          <lpage>46</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Wagelaar</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Van Der Straeten</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Deridder</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Module superimposition: a composition technique for rule-based model transformation languages</article-title>
          .
          <source>Software &amp; Systems Modeling</source>
          <volume>9</volume>
          (
          <year>2010</year>
          )
          <fpage>285</fpage>
          -
          <lpage>309</lpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>