<!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>Towards Analysing Non-Determinism in Bidirectional Transformations ?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Romina Eramo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Romeo Marinelli</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>
        <contrib contrib-type="author">
          <string-name>Gianni Rosa</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Dipartimento di Ingegneria e Scienze dell'Informazione e Matematica Universita` degli Studi dell'Aquila</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In Model-Driven Engineering, the potential advantages of using bidirectional transformations are largely recognized. Despite its crucial function, bidirectionality has somewhat limited success also because of the ambivalence concerning non-bijectivity. In fact, in certain situations more than one admissible solution is in principle possible, despite most of the current languages generate only one model at time, possibly not the desired one. In this paper, we propose to manage non-determinism during the design process. The approach aims to analyze bidirectional transformations with the purpose to detect ambiguities and support designers in solving non-determinism in their specification.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>models. However, the JTL transformation engine is not able to detect non-deterministic
rules, i.e., rules that can give place to multiple solutions, at static-time.</p>
      <p>
        There have been several works analyzing semantic issues and idiosyncrasies of
bidirectional model transformations. [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] emphasizes the need of a clear semantics to grant
developers full control about what the transformation does. The author goes even further
by claiming that a transformation must be deterministic in order to ensure that
developers will find the transformation behavior predictable. However, there exists cases in
which designers are not able to disambiguate their transformations. In fact, they may
lack the information needed beforehand to take appropriate design decisions. Moreover,
very often the non-determinism in a transformation becomes evident only after its
execution, especially if the language implementation resolves latent ambiguity by means
of default strategies whose behavior is unclear to developers.
      </p>
      <p>
        In this paper, we present an approach to statically detect non-determinism in
bidirectional transformations, i.e., without executing them. To this end, Answer Set
Programming (ASP) [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] is exploited to realize a logic environment for the analysis of
bidirectional transformations. In particular, transformations are translated into logical rules
and constraints able to analyze the behavior of the transformation with an emphasis on
non-determinism. The approach aims to support designers in solving non-determinism
in their specifications by detecting the rules that give place to alternative solutions at
design time2.
      </p>
      <sec id="sec-1-1">
        <title>The paper is organized as follows. Section 2 introduces the problem by means of an example. Section 3 describes the static analysis of bidirectional transformation. Sections 4 and 5 present the proposed approach and show it in practice. Section 6 describes related work. Finally, Section 7 draws some conclusion and future work.</title>
        <p>2</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>A motivating example</title>
      <sec id="sec-2-1">
        <title>Non-determinism is a frequent aspect which affects model transformation design and implementation. In this section, we describe how ambiguous mappings in a model transformation may cause multiplicity in the generated solution, i.e., to somewhat a form of uncertainty.</title>
        <p>(a)</p>
        <sec id="sec-2-1-1">
          <title>University</title>
          <p>Person
name {is_primary}</p>
          <p>Worker
working_address</p>
        </sec>
        <sec id="sec-2-1-2">
          <title>Employer</title>
          <p>{persistent}
department</p>
        </sec>
        <sec id="sec-2-1-3">
          <title>Professor</title>
          <p>{persistent}
number_of_publication
(b)</p>
        </sec>
        <sec id="sec-2-1-4">
          <title>University</title>
        </sec>
        <sec id="sec-2-1-5">
          <title>Employer</title>
          <p>PK name
working_address
department</p>
        </sec>
        <sec id="sec-2-1-6">
          <title>Professor</title>
          <p>
            PK name
working_address
department
number_of_publication
Scenario Let us considering a typical round-trip problem based on a non-bijective
class diagram to relational data base (UML2RDBMS) benchmark scenario [
            <xref ref-type="bibr" rid="ref10 ref7">7, 10</xref>
            ]. Only
          </p>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>2 Note that, the proposed analysis environment is general as does not depend on the JTL engine</title>
        <p>persistent classes are mapped to correspondent tables and their attributes to columns in
the tables, including inherited attributes. In order to preserve all the information of the
source diagram, attributes of non-persistent classes have to be distributed over those
tables stemming from persistent classes which access non-persistent ones.</p>
        <p>The UML model in Fig. 1(a) shows the package university that is composed
of an inheritance hierarchy of classes, whereas the correspondent schema is depicted
in Fig. 1(b). Let us suppose that the generated model is manually modified (e.g., for
satisfying new requirements) as depicted in Fig. 2(a): a new column email has been
added in the table employer. This gives place to an interesting situation since such
modifications can be reflected to the source model in Fig. 1(a) in three alternative ways:
the attribute (corresponding to the manually added column) can be a member of the
class employer or with each of parent classes worker and person, as in Fig. 2(b).</p>
      </sec>
      <sec id="sec-2-3">
        <title>Consequently, although not shown in the figure, starting from each of this alternatives, every subclass will inherit the attribute. Thus, more than one source model propagating the changes exist.</title>
      </sec>
      <sec id="sec-2-4">
        <title>Implementation The UML2RDBMS bidirectional transformation, which relates class</title>
        <p>diagrams and relational database models, has been implemented by means of the Janus</p>
      </sec>
      <sec id="sec-2-5">
        <title>Transformation Language (JTL) [6].</title>
        <p>In Listing 1.1 we report a fragment of the transformation which is expressed in the
textual concrete syntax of JTL and applied on models given by means of their Ecore
representation within the EMF framework3. In particular, the following relations are defined:</p>
      </sec>
      <sec id="sec-2-6">
        <title>a) Class2Table, which relates classes and tables in the two different metamodels, b) At</title>
        <p>tribute2Column, which relates attibutes and columns in the two different metamodels
and c) SuperAttribute2Column, which relates attributes of the parent class to columns
of the corresponding child table. The when and where clause specify conditions on the
relation. In particular, the when clause in Line 18 allow to navigate the parent classes of
each attribute, then the where clause in Line 19 generates the correspondent columns.</p>
      </sec>
      <sec id="sec-2-7">
        <title>These relations are bidirectional, in fact both the contained domains are specified with the construct enforce.</title>
      </sec>
      <sec id="sec-2-8">
        <title>The forward application of the transformation is illustrated in Fig. 1, where the</title>
        <p>UML model is mapped to the correspondent RDBMS model. As aforementioned the</p>
      </sec>
      <sec id="sec-2-9">
        <title>3 http://www.eclipse.org/modeling/emf/</title>
        <p>transformation is non-injective. The back propagation of the changes showed in Fig. 2
gives place to the following situation: the transformation execution produces a set of
three models each one represents a different solution where the column email belongs
to each of the three different classes of the hierarchy. In particular, the modified RDBMS
target model in Fig. 2(a) is mapped back to the UML source models in Fig. 2(b).</p>
        <p>Such non-determinism can be resolved by specifying in the transformation that any
new column of the table must be mapped to the corresponding attribute of the class
from which the table is generated (for instance, the new column email of the table
employer is mapped to the attribute email of the class employer).</p>
      </sec>
      <sec id="sec-2-10">
        <title>Thus, the considered piece of transformation can be made deterministic by accommodating the mentioned refinement. However, when size and complexity of metamodels and transformations grow, the designer should be supported by an automated tool capable of detecting the ”guilty” rules in the transformations.</title>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3 Static analysis of bidirectional transformations</title>
      <sec id="sec-3-1">
        <title>Typically, bidirectional transformations are specified by a collection of rules which de</title>
        <p>
          fine mapping from source to target metamodel elements, and viceversa. By
considering existing relational languages [
          <xref ref-type="bibr" rid="ref16 ref6">16, 6</xref>
          ], mappings among metamodel elements are
expressed as relations that are executed in both the directions. In this context,
transformations are models as well, therefore amenable to model operations.
        </p>
        <p>
          Analysis of model transformations can be used for a wide range of assessments
including the satisfaction of specific requirements, verifications/validation, and
performance analysis. Existing approaches and tools involve testing (e.g., test case
generation for model transformations), or analysis performed on executing programs (e.g.,
run-time monitoring) [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. In contrast, static analysis is performed without actually
executing the model transformation or generating test cases; in fact, it is performed on
some (abstract) version of the transformation code with the scope to allow designer to
understand and review the code at design-time.
        </p>
        <p>Non-determinism is a critical aspect in bidirectionality. Thus, detecting the
ambiguous fragments of a transformation at design-time may prevent unwanted behaviors like
a severe increase of the solution space. At this scope, it is of paramount relevance to
support the designer in understanding which rule is ambiguous and how to refactor the
transformation in order to reduce non-determinism. This is intrinsically difficult as it
not unusual that the backward (forward) execution of an seemingly deterministic
forward (backward) transformation generates more than one alternative. The challenge
consists of precisely identifying those combinations of rules which are responsible of
the solution multiplicity.</p>
        <p>The analysis is performed by considering not only the behavior of individual
statements and declarations, but rather including the complete transformation. Information
obtained from the analysis are used for detecting possible coding ambiguities. In
particular, the approach aims to detect so-called non-deterministic portions of the
transformation represented by collections of rules that if executed together may cause multiple
alternative solutions. Please note how the degree of non-determinism of a single
fragment depends on the model instance given as input.</p>
        <p>
          In this paper, we propose to use the Answer Set Programming (ASP) [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] to
analyze bidirectional transformation. ASP is a form of declarative programming oriented
towards difficult (primarily NP-hard) search problems and based on the stable model
(answer set) semantics of logic programming. Then the ASP solver4 finds and
generates, in a single execution, all the possible models which are consistent with the logic
rules by a deductive process. The proposed ASP-based engine is able to analyze the
model transformation specification and verify non-determinism conditions expressed
by means of rules and constraints. The environment has been implemented as a set of
plug-ins of the Eclipse framework and mainly exploits EMF5 as illustrated in the next
section.
4
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Description of the approach</title>
      <p>(1) Translation of the transformation into the analysis notation
A model transformation consists of a set of rules which define mapping among element
types of the involved left- and right-metamodels. Generally, a rule is constrained with
pre- and post-conditions that limit its applicability and behavior. This step defines a</p>
      <sec id="sec-4-1">
        <title>4 http://www.dlvsystem.com/</title>
      </sec>
      <sec id="sec-4-2">
        <title>5 http://www.eclipse.org/modeling/emf/</title>
        <p>
          characterization that permits to capture only the information which is relevant for
performing the analysis (neglecting irrelevant details which are not pertinent to our
purpose). The notation used for representing the elicited information is the Transformation
Analysis Language (see Fig. 3). Each rule is represented by means of two sets
containing the left- and right-patterns, respectively. Whereas, each pattern is represented by a
class and values for any of its properties and references. As defined in OCL6, a pattern
can be viewed as a set of variables, and a set of constraints that model elements bound to
those variables must satisfy to qualify as a valid binding of the pattern. In other words, a
pattern can be considered a template for objects and their properties that must be located
in a candidate model to satisfy the rule. The model representing the bidirectional model
transformation (Bidirectional Transformation Model in Fig. 3) must be translated into
the corrisponding model for the analysis (Transformation Analysis Model) by means of
a semantic anchoring [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] able to translate rules and constraints as set of patterns.
        </p>
        <p>STEP  1 </p>
        <p>STEP  2 
Bidirec'onal  
Transforma'on  </p>
        <p>Language  </p>
        <p>C2 
Bidirec'onal  
Transforma'on  </p>
        <p>Model  </p>
        <p>Transforma'on  
Analysis  Language  </p>
        <p>C2 
traslate  </p>
        <p>Transforma'on  
Analysis  Model  
e 
d
o
c
n
e
input 
annotate  </p>
        <p>ASP  Transf.    
Analysis  Model </p>
        <p>ASP  Analysis  </p>
        <p>Result  Model 
IN </p>
        <p>OUT </p>
        <p>Logical  Analysis  
ASP  rules  and  constraints </p>
        <p>ASP  solver  
Once the analysis models are generated by abstracting from the concrete
transformations, they need to be translated into ASP in order to be analyzed. The analysis models
and the metamodels involved in the transformations are consistently consistently
encoded as a knowledge base, whereas the properties which are required to be checked
are translated in constraints and verified by ASP rules. As aforementioned the scope
of the analysis is to provide an automated detection of non-deterministic rules. In
particular, it generate sets of logically related rules whose simultaneous applications
may generate multiple admissible solutions. When the ambiguous rules are marked
by the analysis process, the designer can refactor the initial specification by resolving
the non-determinism. In Listing 1.2 a fragment of the ASP rules for the detection of
non-deterministic code is presented. In particular, the rule in Lines 1-4 deduces pairs
of equal domains by comparing patterns and predicates of each domain. The rule in
Lines 6-9 deduces non-deterministic relations; in particular, for each transformation
direction, relations with equal domains are detected. Finally, the rule in Lines 11-13
6 http://http://www.omg.org/spec/OCL/
deduces pair of ambiguous relations which cause non-determinism if simultaneously
executed.
1 are_equal_domains(ID1, ID2, Dom)
:2 have_equal_patterns(ID1, ID2, Dom, MC, MCName),
3 have_equal_predicates(ID1, ID2, Dom, MC, MCName),
4 not have_different_patterns(ID1, ID2, Dom).
5
6 non_deterministic_relation(ID, RelName, DomLeft)
:7 are_equal_domains(ID, ID2, DomRight),
8 relation_name(ID, RelName),
9 tranformation_model(DomRight), tranformation_model(DomLeft), DomRight != DomLeft.
10
11 are_ambiguous_relations(ID1, ID2, DomLeft)
:12 are_equal_domains(ID1, ID2, DomRight),
13 tranformation_model(DomRight), tranformation_model(DomLeft), DomRight != DomLef</p>
      </sec>
      <sec id="sec-4-3">
        <title>Listing 1.2: A fragment of the ASP rules and constraints for the analysis</title>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5 Running the approach</title>
      <p>In this section, we present an application of the proposed approach to the UML2RDBMS
example presented in Sect. 2. The goal is to illustrate how to use of the approach in
practice by exploiting the developed environment. In particular, we analyze the JTL
implementation of the UML2RDBMS transformation7. First, the bidirectional
transformation is translated into the analysis model. Then, the analysis is executed to highlight
those rules which may be responsible of non-determinism.</p>
      <p>(a)</p>
      <p>(b)
(1) Translating UML2RDBMS into the analysis language
Starting from the specification of the UML2RDBMS transformation by means of JTL
described in Sect. 2 (see Listing 1.1), the corresponding JTL model in Ecore is
represented in Fig. 4(a). As aforesaid, in JTL the mapping between candidate models are</p>
      <sec id="sec-5-1">
        <title>7 The implementation is available at http://jtl.di.univaq.it/</title>
        <p>represented by means of a set of relations defined by two domain patterns. Each
relation includes a pair of when and where predicates which specify the pre- and
postconditions that must be satisfied by the elements of the candidate models.</p>
        <p>The JTL model in Fig. 4(a) is translated into the correspondent analysis model
in Fig. 4(b) by means of an automated model-to-model transformation implemented
in ATL. In particular, all the mapping rules (including pre- and post- conditions) of
the source JTL model are translated in the corresponding sets of patterns of the
target analysis model. For instance, let us consider the Class2Table relation, then every
predicate belongs to the UML or RDBMS domain pattern, is represented by an OCL
expression, and is evaluated as follows: (i) each Object Template Expression is
transformed in a named Pattern of the analysis model; (ii) each statement is evaluated
and transformed in a correspondent predicate; finally (iii) each condition is considered
as a pattern and added to the correspondent Domain in the analysis model.
(2) Executing the analysis of the UML2RDMBMS transformation
The transformation analysis model, generated during the previous step is entered into
the ASP-based engine. In order to perform the analysis, model transformation and the
involved metamodels have to be encoded in the ASP language. For instance, in Listing
1.3 a fragment of the ASP encoding of the analysis models in Fig. 4(b) is showed. In
particular, it declares the class2table relation with an identifier 1 (in Lines 1) and
the correspondent patterns and predicates for the domain UML (in Lines 2-10) and the
patterns and predicates for the domain RDBMS (in Lines 11-17), as well.
1 relation_name(1, class2table).
2 relation_domain(1, uml).
3 relation_pattern(1, uml, c, class).
4 relation_predicate(1, uml, c, is_persistent, true).
5 relation_predicate(1, uml, c, name, cn).
6 relation_predicate(1, uml, c, attrs, attr).
7 relation_pattern(1, uml, attr, attribute).
8 relation_predicate(1, uml, attr, name, an).
9 relation_predicate(1, uml, attr, owner, c). % added from where
10 relation_predicate(1, uml, attr, is_primary, false). % added from where
11 relation_domain(1, rdbms).
12 relation_pattern(1, rdbms, t, table).
13 relation_predicate(1, rdbms, t, name, cn).
14 relation_predicate(1, rdbms, t, cols, col).
15 relation_pattern(1, rdbms, col, column).
16 relation_predicate(1, rdbms, col, name, an).
17 relation_predicate(1, rdbms, col, owner, t).</p>
      </sec>
      <sec id="sec-5-2">
        <title>Listing 1.3: A fragment of the analysis model encoded in ASP</title>
        <p>Starting from the ASP encoding, the analysis is now able to detect the non-deterministic
rules. In particular, the analysis outcome consists of a number of rule sets; each of
which includes logically related relations whose simultaneous applications may
generate multiple solutions. For instance, Listing 1.4 shows a fragment of the result of the
analysis executed on the UML2RDBMS specification (in Listing 1.1). In particular,
when the transformation is executed in the RDBMS-to-UML direction, the set of
nondeterministic relations class2table, superAttribute2column and
superAttribute2column is detected. In particular, in the scenario described in Sect. 2, more than
one alternative solutions can be obtained because of the simultaneous executions of the
three ambiguous mappings.
1 %%%% Analysis Model
2 %%%% sets of non-deterministic relations (UML to RDBMS direction):
3 []
4 %%%% sets of non-deterministic relations (RDBMS to UML direction):
5 [(1,class2table), (3,superAttribute2column), (5,superAttribute2column)]
6 [(..), (...)]</p>
      </sec>
      <sec id="sec-5-3">
        <title>Listing 1.4: A fragment of the output of the analysis</title>
      </sec>
      <sec id="sec-5-4">
        <title>The final goal of such analysis is to convey to the transformation implementor enough information to perform a refinement which resolves the non-determinism. In this respect, the ”guilty” rules are opportunely marked in such a way the sets of rules responsible of the non-determinism sources can be easily recognized by the designer.</title>
        <p>6</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Related work</title>
      <p>
        Non-determinism is a recurrent aspect affecting model transformation design and
implementation. As said, most of the current languages (e.g.,[
        <xref ref-type="bibr" rid="ref11 ref14 ref15 ref16 ref17 ref19 ref3">11, 17, 3, 19, 16, 14, 15</xref>
        ] are
able to generate only one model at time; in this way even if the transformation is
nonbijective the solution is normally identified according to details which are often
unknown to the designer rendering such approached unpredictable and therefore
unpractical. Existing declarative approaches [
        <xref ref-type="bibr" rid="ref12 ref6">6, 12</xref>
        ] cope with the non-bijectivity by
generating sets of models at once, i.e., all the admissible solutions of a transformation are
generated as a solution set. Among them, JTL [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] is specifically tailored to support
bidirectionality and change propagation. In [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], the authors propose to use Alloy and
follows the predictable principle of least change [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], by using a function that
calculates the distance between instances reducing the generated models. Non-determinism
is also considered in BiFlux [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], which adopts a novel ”bidirectional programming by
update” paradigm, where a program succinctly and precisely describes how to update
a source document with a target document, such that there is a unique inverse source
query for each update program. Within the Triple Graph Grammars, PROGRES [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]
considers non-deterministic cases by demanding user intervention to rule execution in
order to choose the desired behavior.
      </p>
      <p>
        Existing approaches and tools involve testing (e.g., test case generation for model
transformations), or analysis performed only on executing programs (e.g., run-time
monitoring) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. In contrast, in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] the author propose an approach to analyze model
transformation specification represented in Alloy. The simulation produces a set of
random instances that conform to the well-formedness rules and eventually that satisfy
certain properties. Furthermore, existing functional approaches perform model
transformation analysis [
        <xref ref-type="bibr" rid="ref11 ref17">11, 17</xref>
        ], in order to evaluate the transformation validity (generally,
in terms of correctness) before its execution.
7
      </p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion and Future Work</title>
      <sec id="sec-7-1">
        <title>In this paper, we have proposed an approach to detect non-determinism in bidirectional</title>
        <p>transformations at static-time, i.e., without executing the transformation. The intention
is to provide transformation implementors with a tool capable of analyzing
transformations in order to return feedback which could resolve potential non-determinism. The
approach has been demonstrated on a small yet significant case study implemented in</p>
      </sec>
      <sec id="sec-7-2">
        <title>JTL. Despite the analysis is completely independent from JTL, in order to make the</title>
        <p>approach completely language-independent additional implementation efforts are
required which we intend to do in the near future. Furthermore, the logical foundation
of the engine makes possible the verification of different formal properties by
translating them in ASP, with the scope to provide a mean for improving the quality of model
transformation specifications.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>K.</given-names>
            <surname>Anastasakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Bordbar</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Ku</surname>
          </string-name>
          <article-title>¨ster. Analysis of model transformations via Alloy</article-title>
          . In ModeVVa'
          <volume>07</volume>
          , pages
          <fpage>47</fpage>
          -
          <lpage>56</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>S. M.</given-names>
            <surname>Becker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Herold</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Lohmann</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Westfechtel</surname>
          </string-name>
          .
          <article-title>A graph-based algorithm for consistency maintenance in incremental and interactive integration tools</article-title>
          .
          <source>Software and System Modeling</source>
          ,
          <volume>6</volume>
          (
          <issue>3</issue>
          ):
          <fpage>287</fpage>
          -
          <lpage>315</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>A.</given-names>
            <surname>Bohannon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. N.</given-names>
            <surname>Foster</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. C.</given-names>
            <surname>Pierce</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pilkiewicz</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Schmitt</surname>
          </string-name>
          . Boomerang:
          <article-title>Resourceful lenses for string data</article-title>
          .
          <source>In POPL 2008</source>
          , pages
          <fpage>407</fpage>
          -
          <lpage>419</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>G.</given-names>
            <surname>Callow</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Kalawsky</surname>
          </string-name>
          .
          <string-name>
            <given-names>A Satisficing</given-names>
            <surname>Bi-Directional Model Transformation</surname>
          </string-name>
          <article-title>Engine using Mixed Integer Linear Programming</article-title>
          .
          <source>JOT</source>
          ,
          <volume>12</volume>
          (
          <issue>1</issue>
          ):1:
          <fpage>1</fpage>
          -
          <lpage>43</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>K.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sztipanovits</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Abdelwalhed</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E.</given-names>
            <surname>Jackson</surname>
          </string-name>
          .
          <article-title>Semantic Anchoring with Model Transformations</article-title>
          .
          <source>In ECMDA-FA</source>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>A.</given-names>
            <surname>Cicchetti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. Di</given-names>
            <surname>Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Eramo</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          .
          <article-title>JTL: a bidirectional and change propagating transformation language</article-title>
          .
          <source>In SLE10</source>
          , pages
          <fpage>183</fpage>
          -
          <lpage>202</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. N.</given-names>
            <surname>Foster</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Hu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>La</surname>
          </string-name>
          <article-title>¨mmel, A. Schu¨rr, and</article-title>
          <string-name>
            <given-names>J. F.</given-names>
            <surname>Terwilliger</surname>
          </string-name>
          .
          <article-title>Bidirectional Transformations: A Cross-Discipline Perspective - GRACE meeting</article-title>
          .
          <source>In Procs. of ICMT2009.</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>R.</given-names>
            <surname>Eramo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          , and
          <string-name>
            <surname>G. Rosa.</surname>
          </string-name>
          <article-title>Uncertainty in bidirectional transformations</article-title>
          .
          <source>In Procs. of MiSE</source>
          <year>2014</year>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>M.</given-names>
            <surname>Gelfond</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Lifschitz</surname>
          </string-name>
          .
          <article-title>The Stable Model Semantics for Logic Programming</article-title>
          .
          <source>In Procs of ICLP</source>
          , pages
          <fpage>1070</fpage>
          -
          <lpage>1080</lpage>
          , Cambridge, Massachusetts,
          <year>1988</year>
          . The MIT Press.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. T. Hettel,
          <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>
          . Model Synchronisation:
          <article-title>Definitions for Round-Trip Engineering</article-title>
          . In Procs.
          <source>of ICMT</source>
          <year>2008</year>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>S.</given-names>
            <surname>Hidaka</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Hu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Inaba</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Kato</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Nakano</surname>
          </string-name>
          .
          <article-title>Groundtram: An integrated framework for developing well-behaved bidirectional model transformations</article-title>
          .
          <source>In ASE</source>
          <year>2011</year>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>N.</given-names>
            <surname>Macedo</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Cunha. Implementing QVT-R Bidirectional Model</surname>
          </string-name>
          <article-title>Transformations Using Alloy</article-title>
          .
          <source>In FASE</source>
          , pages
          <fpage>297</fpage>
          -
          <lpage>311</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>N.</given-names>
            <surname>Macedo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Pacheco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Cunha</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. N.</given-names>
            <surname>Oliveira</surname>
          </string-name>
          .
          <article-title>Composing least-change lenses</article-title>
          .
          <source>ECEASST</source>
          ,
          <volume>57</volume>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>14. MediniQVT. http://projects.ikv.de/qvt/.</mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>15. ModelMorf. http://www.tcs-trddc.com/modelmorf/.</mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Object Management</surname>
          </string-name>
          <article-title>Group (OMG)</article-title>
          .
          <source>MOF 2.0 QVT Final Adopted Specification v1.1</source>
          ,
          <year>2011</year>
          . OMG Adopted Specification formal/2011-01-01.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>H.</given-names>
            <surname>Pacheco</surname>
          </string-name>
          and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Hu</surname>
          </string-name>
          .
          <article-title>Biflux: A bidirectional functional update language for XML</article-title>
          .
          <source>In BIRS workshop: Bi-directional transformations (BX)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>D.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          . Guest Editor's Introduction:
          <string-name>
            <surname>Model-Driven Engineering</surname>
          </string-name>
          . Computer,
          <volume>39</volume>
          (
          <issue>2</issue>
          ):
          <fpage>25</fpage>
          -
          <lpage>31</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19. A.
          <string-name>
            <surname>Schu</surname>
          </string-name>
          <article-title>¨rr. Specification of Graph Translators with Triple Graph Grammars</article-title>
          .
          <source>In in Proc. of WG94</source>
          . Springer,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <given-names>S.</given-names>
            <surname>Sendall</surname>
          </string-name>
          and
          <string-name>
            <given-names>W.</given-names>
            <surname>Kozaczynski</surname>
          </string-name>
          . Model Transformation:
          <article-title>The Heart and Soul of Model-Driven Software Development</article-title>
          .
          <source>IEEE Software</source>
          ,
          <volume>20</volume>
          (
          <issue>5</issue>
          ):
          <fpage>42</fpage>
          -
          <lpage>45</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <given-names>P.</given-names>
            <surname>Stevens</surname>
          </string-name>
          .
          <article-title>Bidirectional model transformations in QVT: semantic issues and open questions</article-title>
          .
          <source>SOSYM</source>
          ,
          <volume>8</volume>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>