<!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>On Leveraging UML/OCL for Model Synchronization</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Robert Bill</string-name>
          <email>bill@big.tuwien.ac.at</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Martin Gogolla</string-name>
          <email>gogolla@tzi.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Manuel Wimmer</string-name>
          <email>wimmer@big.tuwien.ac.at</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>TU Wien, Institute for Software, Technology and Interactive</institution>
          ,
          <addr-line>Systems, Favoritenstraße 9-11, A-1110 Wien</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Universität Bremen, Department for Mathematics</institution>
          ,
          <addr-line>and Computer Science, PO Box 330440, D-28334 Bremen</addr-line>
        </aff>
      </contrib-group>
      <fpage>20</fpage>
      <lpage>29</lpage>
      <abstract>
        <p>Modelling complex system often results in di erent but overlapping modelling artifacts which evolve independently. Thus, inconsistencies may arise which lead to unintended e ects on the modelled system. To mitigate this situation, model synchronization is seen as a recurring and crucial maintenance task which requires to restore consistency between multiple models using the most suitable changes. Currently, di erent languages and tools are used for inter-model consistency management than for intra-model consistency where UML/OCL is an accepted solution. Consequently, the result of synchronizing models solely based on inter-model constraints might result into inappropriately evolved models w.r.t. intra-model constraints. In this paper, we present a synchronization model formalized in UML/OCL which covers explicit consistency and change models including costs and which considers both, inter-model and intra-model constraints at the same time. Instances of this synchronization model represent successful synchronization scenarios. In particular, models can be synchronized, also taking into account their predecessor versions, by nding a constraint violation-free extension of a partial model including those instances which may be optimized for minimal cost. We prototypically implemented this approach using a model nder to automatically retrieve synchronized models and the change operations to compute them by completing the partial model. model consistency; model synchronization; model evolution</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>
        Modern systems are inherently much more complex to
design, develop, and maintain than classical systems due
to di erent properties such as size, heterogeneity,
distribution, and multi-disciplinarity. One way to cope with such
complexity is by resorting on model-driven engineering
approaches [
        <xref ref-type="bibr" rid="ref4 ref5">4,5</xref>
        ] and dividing the engineering activities
according to several areas of concerns or viewpoints, each one
focusing on a speci c aspect of the system and allowing di erent
stakeholders to observe the system from di erent
perspectives [
        <xref ref-type="bibr" rid="ref26 ref27">26, 27</xref>
        ]. There are more and more approaches which
allow to de ne di erent views of a system resulting in
partially overlapping models. Unfortunately, this separation of
concerns by using di erent viewpoints, potentially expressed
in di erent domain-speci c modeling languages, comes with
the price of keeping those viewpoints consistent [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Thus,
model synchronization has become an indispensable duty
where inconsistencies between di erent models need to be
resolved in an e cient and correct way.
      </p>
      <p>
        There are already several approaches to handle model
integration based on synchronization [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. However, there is a
recurring pattern in most of these approaches: a dedicated
language is used to de ne a mix of synchronization steps
and inter-model consistency relationships. There are two
potential challenges using such approaches: (i) for
consistency relationship formulation, the intermingling of
consistency relationships and synchronization might make it di
cult to specify how to realize context-dependent resolutions
of inconsistencies in heavily constrained models, and (ii) the
increased mental load for modelers who need to learn a new
synchronization language.
      </p>
      <p>
        In this paper, we propose a new methodology for unifying
inter-model and intra-model constraints for model
synchronization using UML/OCL. We employ OCL in the classical
setting for de ning intra-model constraints and present a
method how to de ne inter-model constraints based on
dedicated UML/OCL models between two models in the spirit of
bi-directional model transformation languages such as QVT
Relations [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] or TGGs [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ]. In order to de ne
generalpurpose and domain-speci c synchronization properties, we
introduce a formalized change model that is the basis for
explicitly modeling such properties based on our UML/OCL
approach. For instance, the use of di erent cost functions for
changes allows the de nition and usage of di erent
synchronization strategies such as least-change and beyond.
Having these ingredients, UML/OCL based model nders can
be employed to compute the model synchronizations taking
into account both inter-model and intra-model constraints
and the stated properties which should be ful lled by the
synchronization. We show this by applying a model nder
for UML/OCL, which has already proven to be usable for
transformations models [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
      </p>
      <p>The remainder of this paper is structured as follows. In
Section 2 we describe the architecture of our
synchronization approach, the types of models we consider, and the
running example of this paper. In Section 3 we formulate
model changes as a UML/OCL model and how to select
the synchronization strategy by associating changes with
cost functions. Subsequently, in Section 4 we describe how
inter-model constraints can be expressed using a consistency
model based on UML/OCL. In Section 5 we discuss the
prototypical implementation of our approach to automatically
nd model synchronizations. Finally, in Section 6 we discuss
related work and conclude with an outlook in Section 7.</p>
    </sec>
    <sec id="sec-2">
      <title>MODEL SYNCHRONIZATION ARCHI</title>
    </sec>
    <sec id="sec-3">
      <title>TECTURE AND RUNNING EXAMPLE</title>
      <p>In this section, we introduce our model synchronization
architecture by-example.
2.1</p>
    </sec>
    <sec id="sec-4">
      <title>Model Synchronization Architecture</title>
      <p>A synchronization problem, as depicted in Figure 1(a)
and (b), occurs when two models, which were potentially
consistent in their current state, are subsequently changed
independently leading to potential inconsistencies. To
synchronize both models, the goal is to nd a suitable set of
changes for both models to make them consistent again. As
there may be a huge amount of di erent change sets to
reestablish consistency, the question also arises which one is
the most appropriate change set for a given situation.
Before we go into details on this aspect, we discuss the general
architecture of our approach, in particular, how we
represent the model synchronization problem by utilizing change
and consistency models.</p>
      <p>Former
MLeftFormer
MConsFormer
MRightFormer</p>
      <p>XLII
fourty-two
sameValue</p>
      <p>Given
MChangeFormer
remove
last "I"
no
change</p>
      <p>Current
MLeftCurrent</p>
      <p>MRightCurrent
(a) generalpattern</p>
      <p>XLI</p>
      <p>Wanted
MChange</p>
      <p>Reconciled</p>
      <p>MLeft
MCons
MRight</p>
      <p>XLI
sameValue
no
change
"two" →
"one"
fourty-two</p>
      <p>fourty-one
(b) concreteexample
Figure 1: Model synchronizing using change models and
consistency models: (a) general pattern and (b) concrete example.</p>
      <p>In the following, we will describe the general architecture
of our synchronization model as depicted in Figure 1. Our
approach synchronizes models by consistently completing a
synchronization model containing the history of the models
(MLeftFormer; MRightFormer; MLeftCurrent and MRightCurrent), the
previous consistency relation MConsFormer, which might not
be a valid consistency relation in the current state, the
previous change set MChangeFormer, the wanted state of the
models MLeft and MRight with a consistency relation MCons
and changes MChange leading to a consistent state. In
general, model nders like the USE ModelValidator1 search
for instances of a metamodel. A model nder can
synchronize models by consistently completing synchronization
models consisting of former and current models with
consistent change and wanted models by adding new objects,
associations and attributes. Since a model nder may
complete the model in many ways, including the application of
delete changes, in the extreme case to delete the complete
model, we also foresee to model change costs to guide the
model nder in the right direction. In the concrete example
shown in Figure 1, the model nder may nd and add two
change objects (no change; \two" ! \one") and two
consistent state objects (XLI; forty-one).</p>
      <p>Summing up, in contrast to many other approaches, we
do not use explicit consistency restoring transformation rules
1https://sourceforge.net/projects/useocl/files/
Plugins/ModelValidator/
for synchronization, but just the declarative consistency
models. Among others, this has the advantage that this approach
is, in principle, not limited to synchronize two models, but
any number of models, with or without circular consistency
dependencies between them. Since both model states are
considered at the same time, the typical problem of
making model A consistent with model B, thus requiring
additional changes in model B which themselves require
additional changes in model A etc. can never occur. Also, we do
not use any model di ng algorithm, but again a fully
declarative change model, i.e., the constraints which have to hold
for a model explaining the di erence between two model
versions. We copy left, right and consistency model two times
to build former and current model while removing all
constraints, including multiplicity constraints. This is done to
ensure that (i) the change model actually describes changes
between model versions and (ii) the model nder can nd a
consistent model extension de ning only the wanted model.</p>
      <p>For completeness reasons please note when integrating left
models and right models into global models, name clashes
may occur. This can be simply avoided by pre- or post xing
names of classes and properties. Since this step is trivial but
might clutter the overall architecture and descriptions, it is
not further discussed throughout the paper.
2.2</p>
    </sec>
    <sec id="sec-5">
      <title>Running Example</title>
      <p>As a running example2, let us consider two viewpoints for
developing and maintaining computer networks as depicted
in Figure 2: (a) the requirements viewpoint and (b) the
implementation viewpoint. The metamodels realizing these
two viewpoints are illustrated in Figure 3. When taking a
closer look on Figure 2, we see that the left model stores
the requirements of a computer network. There are named
machines which provide a certain amount of
communication speed and others which consume a certain expected
amount of data. The right part of Figure 2 contains a
model of the implemented system which does not only
include servers providing data and computers consuming data,
but also routers and cables needed to transfer the data from
servers to computers. There are two types of cables, namely
GlassFiberCables for high-speed connections and
CopperCables for low-speed connections. There are constraints on
the right model to ensure that (i) each server can serve the
cables it is connected to, (ii) each computer gets enough
bandwidth for its needs and (iii) each router does not
produce any data and thus can ful ll the outgoing bandwidth
with the incoming bandwidth and its own processing speed.</p>
      <p>For the given example, the models' consistency
relationship is de ned such that each provider needs a server with
the same name and at least that speed and each consumer
needs a computer with the same name and the same speed
and vice versa.</p>
      <p>In Figure 2, also the evolution scenario for our running
example is shown. It is assumes that the models were changed
independently from each other. In the requirements model,
the provider p1 should be made ready for the future and
gets a higher speed. Thus, its speed attribute was increased
from 3 to 4. At the same time in the implementation model
changes were performed. It was discovered that the
computer w2 was never used and thus it was removed together
2A slightly simpli ed version of the example can
be downloaded from http://cosimo.big.tuwien.ac.at/
findsync/
with its connected cable l4. Now there are two violations
w.r.t. the aforementioned consistency relationship: The
speed of server s1 is not su cient and the consumer c2 has
no correspondence on the right side. Of course, one now
may come up with some reconciliation actions for this small
example. One obvious model synchronization would be to
delete consumer c2 in the requirements model and to set
the speed variable to 4 for server s1. For larger examples,
of course automation support is needed in order to reason
about appropriate synchronizations. How this is realized by
our approach following the previously described architecture
is the content of the following sections.</p>
    </sec>
    <sec id="sec-6">
      <title>3. CHANGE MODEL</title>
      <p>
        Our change model approach consists of an abstract part
which is the same for all modeling languages and a
languagespeci c part which is generated for each used metamodel
individually. In general, we follow the ideas presented in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]
to generate language speci c change models to represent
changes between two models. However, we also go beyond
the ideas presented in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], by providing also the conditions
for nding a valid change model. Thus, we do not only
explicitly model the abstract syntax of change models but also
explicate their semantics in terms of OCL constraints.
      </p>
    </sec>
    <sec id="sec-7">
      <title>3.1 Abstract Change Types</title>
      <p>
        Figure 4 shows the abstract structure of our change model.
There are two types of changes, namely atomic changes and
composite changes [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. An atomic change connects the
original object to the revised object. If an object has been
deleted, there is no revised object. If an object has been
created, there is no original object. If an object is preserved,
there are both original and revised objects. In the change
model, every original object must specify what happens in
the future and every revised object must specify what
happened to it in the past. For set-valued features, the set of
future values must be equal to the set of past values with the
deleted values removed and the created features added. For
bag features, the number of occurrences of a future feature
must be equal to the occurrence count of this feature in the
past object plus the sum of all added feature counts minus
the sum of all deleted feature counts. For ordered features,
the sequence resulting from the deletion of all deleted
elements from the past object feature must be the same as the
sequence resulting from deleting all created elements from
the future object feature which is expressed by inserting
values at speci c list indexes, sorted from bottom to top, to the
common base sequence.
      </p>
      <p>
        A composite change builds higher level changes from lower
level changes [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. For example, type changes cannot be
directly represented with atomic changes. A general cast
combines an atomic delete change and an atomic create change
to express that semantically, the object has not been deleted
and another created, but the object is still the same.
Similarly, a general move combines an atomic feature delete
change and an atomic feature create change for the same
feature and the same value to specify that the feature has
moved and was not deleted and re-added. A feature change
is a composite change de ned by an OCL operation which
takes several parameters and has a postcondition de ning
which changes are done to the object. The last change
type resembles composite changes as proposed in literature
CompositeChange
original futureChange
OriginalObject 0..1 1
      </p>
      <p>0..1
RevisedObject revised</p>
      <p>Figure 4: Abstract change classes.</p>
      <p>FeatureChange
featureChanges *</p>
      <p>MoveChange
* moves</p>
      <p>ChangeModel
AmtoomveicFCrohman1ge 1 m*oavtoemToicChanges</p>
      <p>
        castFrom 0..1 *GecnaestrsalCast
type: {Create,Delete,Preserve} 1 changeFrom
1 pastChange 1changeTo castTo 0..1
(e.g., [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]) while the others could also be semantically
regarded as atomic changes, but are regarded as composite
changes from an implementation point of view. In principle,
such explained changes could be derived (semi-)automatically
for various postconditions [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. If such technologies are used,
only the cost remains to be speci ed.
      </p>
      <p>Currently, these are the only composite changes supported,
but others might be added in the future. Also, it is currently
not possible to let a feature change explain features of
multiple objects.</p>
    </sec>
    <sec id="sec-8">
      <title>3.2 Language-specific Change Language</title>
      <p>Beside the change model itself, the metamodel is
duplicated twice as well where class and feature names are changed
to avoid name clashes. In particular, all model classes and
associations of the previous version might be su xed with
Prev while the metamodel to store current objects and
feature values is su xed with Ori and names do not change for
the synchronized model.</p>
      <p>Two parallel class hierarchies resembling the class
hierarchy of the original metamodel are created. In the
Changehierarchy, all classes are replicated with a Change pre xed
name inheriting from AtomicChange. For every structural
feature in the original class X , two structural features of
the same type T named as the original structural feature
attr plus a su x of Add and Del are created in the
Changeclass as shown in List. 1. They denote which values have
been added or deleted by the change operation. The Add
attribute is derived as values which exist in the revised
model, but not the original model and the Del attribute
is derived as values which exist in the original model, but
not the revised model. Unique features generate a Set type,
non-unique features generate a Bag type. The derived
attributes attrAddCostly and attrDelCostly contain
unexplained addition and deletion changes. Associations are
derived in a similar fashion. To ensure that added and deleted
classes can be derived via set di erence, the change
objects have to be used instead of the original objects, i.e.
revised.attr.futureChange/original.attr.pastChange
is used instead of revised.attr/original.attr.</p>
      <p>List. 1: Change calculation for unordered features.
context ChangeX:
attrAdd: [Set|Bag](T) derived = if revised =
null then [Set|Bag]{} else revised.attr-&gt;
asBag() endif - if original = null then [Set
|Bag]{} else original.attr-&gt;asBag() endif
attrDel: [Set|Bag](T) derived = if original =
null then [Set|Bag]{} else original.attr-&gt;
asBag() endif - if revised = null then [Set|
Bag]{} else revised.attr-&gt;asBag() endif
attrAddExpl: [Set|Bag](T) derived =
featureChanges.attrAddExpl-&gt;union(
castChanges.attrExpl)-&gt;union(movedFrom.</p>
      <p>attrExpl)
attrDelExpl: [Set|Bag](T) derived =
featureChanges.attrDelExpl-&gt;union(
castChanges.attrExpl)-&gt;union(movedTo.</p>
      <p>attrExpl)
attrAddCostly: [Set|Bag](T) derived = attrAdd
attrAddExpl
attrDelCostly: [Set|Bag](T) derived = attrDel
attrDelExpl</p>
      <p>For every ordered structural feature, three additional
features named as the original structural feature plus AddEl,</p>
      <p>DelEl and Same are created in the Change class as shown
in List. 2. The feature *Same contains a base feature value
which is extended by inserting the values in *AddEl to get
the revised feature value and extended by inserting the
values in *DelEl to get the original feature value. The feature
*Same has the same type as the original feature, but *AddEl
and *DelEl are sequences of pairs of (Integer,T). List. 2
shows the connection between all features.</p>
      <p>List. 2: Additional change calculation for ordered features.
context ChangeX:
attrAddEl: Sequence(Tuple{i: Integer, v: \myvar
{T}})
attrDelEl: Sequence(Tuple{i: Integer, v: \myvar
{T}})
attrSame: Sequence(T)
attrMoved: Bag(T) derived = attrAddEl.v
attrAdd
attrMovedExpl: Bag(T) derived = featureChanges.
attrMovedExpl-&gt;union(castChanges.</p>
      <p>attrMovedExpl)
inv orderedSequence: Set{attrAddEl,attrAddEl}-&gt;
forAll(s | s-&gt;isUnique(i) and s-&gt;sortedBy(i
) = s)
inv addToRevised: (revised = null) or (revised.
attr = attrAdd-&gt;iterate(t, full =
&lt;@attrSame | full-&gt;insertAt(t.i, t.v)))
inv delFromOriginal: (original = null) or (
original.attr = attrDel-&gt;iterate(t, full =
&lt;@attrSame | full-&gt;insertAt(t.i, t.v)))</p>
      <p>The sequence *Same is an auxiliary sequence that
represents a common sequence between both ordered features.
The feature attrAddEl contains not only elements which
have been added to the revised feature from the original
feature, but also elements which are not in the common
sequence because they have changed their position. Elements
which are moved are those which are not in the common
sequence but whose value has not been added to the common
bag as well. The constraints guarantee a certain order of
insert applications and ensure that the original and revised
feature value actually can be built as previously described.
Unlike the change object above, these feature values are not
necessarily directly determined by original and revised
objects. In fact, the sequence in the attrSame feature might
be too short; then too many moves are determined.
However, a larger number of moves yields higher costs and thus
a solution with less super uous moves will be preferred.</p>
      <p>Each Change object also has a original and revised
association of the corresponding classes in the original and the
revised model which rede nes the original and revised
association in AtomicChange to ensure the correct type.</p>
      <p>Consider Figure 5 as example for an excerpt of the change
model for atomic changes of our running example. Since
Device contains a name attribute, ChangeDevice contains
two attributes to de ne which names have been added and
deleted. Also, the incoming and outgoing associations are
used to connect to added and deleted cables. The class
ChangeRouter adds two attributes for the maxSpeed. It does
not replicate the name attribute changes since they are
available in the superclass.</p>
      <p>Let us now consider another excerpt of an instance of the
change model as depicted in Figure 6. There are two
original objects, the original cable oc1 and the original router
or1. The cable has been deleted, so the speed attribute
is deleted as well as the incoming connection. The router
just has been taken out of usage, so its name was changed
to routerOld from router. In terms of attribute changes,
this equals the addition of routerOld to the name and the
deletion of router. The speed has not been changed, so no
additions or deletions are de ned there. The fact that all
constraints, including multiplicity constraints, are removed
from all but the target model is indicated by the set-valued
name and speed attributes for the original objects.</p>
      <sec id="sec-8-1">
        <title>Composite changes.</title>
        <p>In the Cast class hierarchy similarities between cast
objects are stored. For every structural feature in the original
class, a structural feature of the same type named as the
original structural feature plus a su x of Expl is created
in the Cast class. It denotes which values are the same in
both objects and is de ned by the intersection of values
between original and revised object and thus explains those
ostensible changes. List. 3 demonstrates the structure of
Cast objects. An invariant ensures that the cast object is
connected to a single object which is deleted and an object
which is added.</p>
        <sec id="sec-8-1-1">
          <title>List. 3: Change calculation for casts</title>
          <p>context CastX:
attrExpl: [Set|Bag](T) derived = castFrom.</p>
          <p>attrDel-&gt;intersection(castTo.attrAdd)
inv changeTypes: changeFrom.type = ChangeType.</p>
          <p>Delete and changeTo.type = ChangeType.Create
Consider Figure 7 for an example of such a cast change
for our running example. The model has only changed by
retyping oo1 from CopperCable to GlassFiberCable. This
is expressed as two changes, namely deleting the
CopperCable and creating a GlassFiberCable with the same values.
Since the speed has not changed, the same value was deleted
for the CopperCable that was added to the
GlassFiberCable. Thus, the cast explains this value change and it is not
considered for costs.</p>
          <p>Similarly, a Move change for a certain aggregation
attribute connects two change objects where an association
to a certain object X was deleted in one object, but created
in another object. However, there is no requirement that
any object must be deleted or created.
oc1:CopperCableOri
speed = {4}
original</p>
          <p>futureChange
cc1:ChangeCopperCable
type = Delete
speedAdd = {}
speedDel = {4}
speedAddExpl = {4}
speedDelExpl = {4}
speedAddCostly = {}
speedDelCostly = {}
rc1:CastCable
speedExpl = {4}
castFrom castTo
changeFrom
nc1:GlassFiberCable
speed = {4}
revised</p>
          <p>pastChange
cc2:ChangeGlassFiberCable
type = Create
speedAdd = {4}
changeTo speedDel = {}
speedAddExpl = {4}
speedDelExpl = {4}
speedAddCostly = {}
speedDelCostly = {}</p>
          <p>In the example depicted in Figure 8, an incoming edge
was moved from the Router or1 to or2. The two router
change objects show that the edge was deleted (cr1) and
added (cr2). The move object m1 connects both changes.
The intersection of incomingAdd for cr2 and incomingDel
of cr1 is cc1, so this is the attribute change explained by
the move object. Thus, it is also explained in both cr1 and
cr2 and no change of incoming is a costly change.</p>
          <p>For every operation O in a class X , a corresponding
FeatureX_O class is created which inherits from FeatureX. This
class contains an attribute for each operation parameter and
it has a bidirectional association to the change class of the
class the operation is de ned in. The postcondition of the
operation X is converted into an invariant of the generated
class by changing the self context of each @pre expression
to the original object of the associated change while other
self contexts are transferred to the revised object of the
associated change. For features changed in the referenced
object, this class contains a T[Add|Del]Expl attribute for
each attribute in the original class. Postconditions which
have the pattern feature = feature@pre-&gt;including([expr])
or feature = feature@pre-&gt;excluding([expr]) are
converted into the invariant T[Add|Del]Expl = Set{[expr]}.
Additionally, invariants are generated to ensure all features
not occurring in any such postcondition are empty. An
invariant is generated to let the cost attribute of the class be
equal the operation result.</p>
        </sec>
        <sec id="sec-8-1-2">
          <title>List. 5: Simple change operation de ned in UML/OCL.</title>
          <p>context Router::disconnectServer(c: Cable)
post disconnectedIncoming: incoming = (</p>
          <p>incoming@pre)-&gt;excluding(c)
post disconnectedOutgoing: outgoing = (</p>
          <p>outgoing@pre)-&gt;excluding(c)</p>
          <p>This example shows a simple operation which just
disconnects a single cable from a router. The postconditions state
that after this operation has been called, the disconnected
cable is not connected to the server any more.</p>
          <p>List. 6: Translation of the change operation of List. 5 into the
synchronization model
class FeatureRouter
attributes</p>
          <p>...
end
class FeatureRouter_disconnectServer &lt;</p>
          <p>FeatureRouter
constraints
inv disconnectedIncoming: incomingDelExpl = Set
{c}
inv disconnectedOutgoing: outgoingDelExpl = Set
{c}
inv noChange: incomingAddExpl = Set{} and ...
end
association
assoc_FeatureRouter_disconnectServer_c
between
FeatureRouter_disconnectServer[*] role</p>
          <p>FeatureRouter_disconnectServer_c</p>
          <p>
            ChangeCable[
            <xref ref-type="bibr" rid="ref1">1</xref>
            ] role c
end
          </p>
          <p>This example is translated as shown in List. 6. For each
postcondition with the speci ed pattern, an invariant is
generated which explains the according changes. The third
invariant guarantees that all other attributes are not changed
due to this operation call. The operation parameter is
translated as association. Like for atomic changes, a parameter
of type Cable is translated to a ChangeCable.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-9">
      <title>3.3 Change Costs</title>
      <p>While the change model describes what has changed, for
synchronization purposes, the severity of changes should be
known. To describe this aspect as well, a cost function is
added to each Change-class. The speci cation of the
exact cost function depends on the synchronization strategy.
In we following, we discuss how di erent synchronization
strategies can be implemented with our approach.</p>
      <sec id="sec-9-1">
        <title>Least change.</title>
        <p>
          The least change [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] strategy cost function sums up the
size of all unexplained add and deletion collections in the
Change objects and adds 1 if the change type is Delete or
Create. If objects have been casted, one change should not
be counted. This function can be easily changed to
support a least creation or least deletion strategy by adding
a higher value instead of 1 to Delete or Create changes.
Positive costs ensure hippocraticness [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ], i.e., that the
synchronization does nothing for consistent models, because
every change would have positive cost while consistent models
would require no change which has no and thus less cost.
        </p>
        <sec id="sec-9-1-1">
          <title>List. 7: Least change cost calculation.</title>
          <p>class ChangeObject
attributes
costObject: Integer derived = if type =</p>
          <p>ChangeType.Create or type = ChangeType.</p>
          <p>Delete then if castTo != null then 0 else 1
endif else 0 endif
end
end
class ChangeCable
attributes
costCable: Integer derived = speedAddCostly-&gt;
size() + speedDelCostly-&gt;size() +
sourceAddCostly-&gt;size() + sourceDelCostly-&gt;
size() + targetAddCostly-&gt;size() +
targetDelCostly-&gt;size()
class CostSummer
attributes
cost = ChangeObject.allInstances().costObject-&gt;
sum() + ChangeCable.allInstances().</p>
          <p>costObject-&gt;sum() + ...
end</p>
          <p>List. 7 shows an excerpt of the implementation of the
least cost strategy for the running example. The cost of
deleting or adding objects is de ned as attribute of the
ChangeObject class. If an object is casted to another object,
the cost is not accounted. The ChangeCable class calculates
the cost by summing up the costs of its direct attributes.
The CostSummer calculates the total costs by summing over
all cost attributes.</p>
        </sec>
      </sec>
      <sec id="sec-9-2">
        <title>Real costs.</title>
        <p>Models might be representations of the real world where
changes induce real costs, e.g., working time for switching
cables or the costs of a new server. Then, it is natural to
use a cost function resembling real costs. These costs will
typically occur as operation costs.</p>
        <p>List. 8: Domain-speci c cost calculation.
context Router::disconnectServer(c: Cable)
body: if c.isKindOf(CopperCable) then 5 else 10
endif
==&gt;
class FeatureRouter_disconnectServer
attributes
cost: Integer derived = if (c.revised.isKindOf(</p>
        <p>CopperCable)) then 5 else 10 endif ...</p>
        <p>List. 8 shows a simple example of operation costs. It
might be more di cult to disconnect glass ber cables than
to disconnect copper cables, so the costs could be twice as
high. Such costs are transformed into an invariant as
explained in the previous section.</p>
      </sec>
      <sec id="sec-9-3">
        <title>Organizational asymmetry.</title>
        <p>If model A is considered more important than another
model B, changes in model A should be avoided. By
assigning much higher costs to changes in the model A, changes in
model A are avoided but enforced in model B. For instance,
this strategy may be also of relevance for the running
example of this paper.</p>
      </sec>
      <sec id="sec-9-4">
        <title>Avoiding undos.</title>
        <p>Usually, a model was modi ed for a good reason. Thus,
the synchronization step should not return to the previous
model version. To achieve that, additional costs can be
introduced if some attributes in the target re-appear: (i) if
they were deleted before or vice versa using the sum of
symmetric di erence sizes of attrAdd and attrDelete of future
and past change objects in the current model, (ii) if objects
are deleted when they were created before by counting
create/delete pairs, and (iii) if objects are created when they
were deleted by counting created objects in the target model
which are similar to deleted objects in the former model.</p>
        <p>List. 9 shows a simple example for avoiding undos. Each
attribute which is reassigned to the same value as before will
induce a cost of 10 because both the old value is added which
should not be the case and the newly set value is deleted. If
an attribute whose value was changed has its value changed
again the cost would only be 5. If an object is deleted which
was created before, the cost increases by 100. Likewise, if
an object is recreated which has the same name as an object
which was deleted, the cost is increased by 200.</p>
        <p>List. 9: Costs for avoiding undos.
class ChangeRouter
attributes
avoidRedoCosts: Integer derived = if original.
pastChange.type = ChangeType.Create then 5*
original.pastChange.speedDel-&gt;intersection(
speedAdd)-&gt;union(original.pastChange.
speedAdd-&gt;intersection(speedDel))-&gt;size()
+...
else if type = ChangeType.Delete then 100 else
0 endif endif + if type = ChangeType.Create
and ChangeRouterOri.allInstances()-&gt;select
(c | c.type = ChangeType.Delete).original-&gt;
select(r | r.name = revised.name) then 200
else 0 endif
end</p>
      </sec>
      <sec id="sec-9-5">
        <title>Retaining existing traces.</title>
        <p>A consistency model might be just descriptive or
prescriptive. In the former case, changes in the consistency model
should have no cost, while in the latter case, consistency
model changes, especially deletions, might have high costs if
the associated objects were not deleted.</p>
        <p>Please note that there are design decisions to take which
synchronization properties to de ne as constraints and which
via costs. For example, undos could not only be avoided
using costs as described in List. 9, but also by just using a
constraint like in List. 10. However, then no
synchronization would be possible at all if con icting model changes
would have been performed which could only be resolved by
undoing a change. This also holds in the case of asymmetric
changes. If a model should never change, this model can just
be used as target models with additional constraints that all
attributes and associations should remain equal.</p>
        <sec id="sec-9-5-1">
          <title>List. 10: Constraints for avoiding undos.</title>
          <p>class ChangeRouter
constraints
inv avoidRedo: if original.pastChange.type =
ChangeType.Create then type &lt;&gt; ChangeType.
Delete and if original.pastChange.type =
ChangeType.Delete then type &lt;&gt; ChangeType.</p>
          <p>Create endif
end</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-10">
      <title>4. CONSISTENCY MODEL</title>
      <p>
        In this section, we will show how inter-model consistency
concerns are modeled with UML/OCL. In general, we
follow the main idea of triple graph grammars (TGGs) [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ] and
triple patterns [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] to build an explicitly modeled structure
between two models. If the models are de ned with
UML/OCL we end up with an uni ed representation for
intraand inter-model concerns.
      </p>
      <p>As we now show in this section, by using UML/OCL it is
possible to describe the interconnection between models by
additional associations, constraints and possibly even
additional other elements such as classes and attributes.</p>
      <p>Since we aim for a non-intrusive addition of
synchronization logic, we assume open models or some form of
module import, at least for de ning new associations. In the
following, @override denotes the extension of the
specied class with attributes and associations contained by the
consistency model. We now show several examples how to
employ UML/OCL to de ne consistency models in terms of
correspondences.</p>
      <sec id="sec-10-1">
        <title>One-to-one correspondences.</title>
        <p>One-to-one correspondences are easily de ned in UML/OCL
by adding an association between the corresponding classes
having as lower and upper bounds 1 on both ends. Figure 9
shows an example where classes correspond based on name
equality. Such constraints can either be added to a class (as
shown in graphical syntax) or added to the association (as
shown in textual syntax) as preferred.</p>
        <p>1 1
@override leftcon rightcon
Consumer
name = rightcon.name
Figure 9: One-to-one correspondence between consumer and
computer in graphical and textual syntax.</p>
      </sec>
      <sec id="sec-10-2">
        <title>One-to-many correspondences.</title>
        <p>One-to-many correspondences can also be expressed by
associations. Figure 10 shows an example where a server in
the requirements model might correspond to a whole cluster
in the implementation model. In particular, the constraint
inv1 speci es that a single cluster provider corresponds to
many nodes if all servers have exactly one router and nothing
else as target of their outgoing cables. Then, all servers
connected to this router constitute the cluster, else a provider
corresponds to a single cluster.</p>
        <p>1..* @override
node Server
let router = cluster.node.outgoing.target in
if router-&gt;one(true) and router-&gt;one(r |
r.oclIsTypeOf(Router)) then
cluster.node = router.incoming.source else
cluster.node-&gt;one(true) endif inv1
Figure 10: One-to-many correspondences between provider and
server in graphical and textual syntax.
association LRCon between</p>
        <p>
          Consumer[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] role leftcon
        </p>
        <p>
          Computer[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] role rightcon
constraints
        </p>
        <p>inv: leftcon.name = rightcon.name
end
association LRSrv between</p>
        <p>
          Provider[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] role cluster
        </p>
        <p>Server[1..*] role node
constraints</p>
        <p>inv: &lt;inv1&gt;
end</p>
      </sec>
      <sec id="sec-10-3">
        <title>Many-to-many correspondences.</title>
        <p>Many-to-many can also be expressed either by using
nary associations of UML or by introducing additional classes
which connect more than one class on both sides by
associations. Figure 11 shows a more complex correspondence
between provider and server. Servers may be either part
of a typical cluster where a service is provided by
multiple servers or part of a virtual cluster, where services may
be assigned to many servers and each server might handle
multiple services.</p>
        <p>@Porovveirdriedre 1s.e.*rvice cluste1r ClusterAssoc c1luster
1..* @override
node Server</p>
        <p>TypicalCluster
service-&gt;one(true) inv1
VirtualCluster * backupprovision</p>
        <p>1 backup</p>
      </sec>
      <sec id="sec-10-4">
        <title>Correspondence dependencies.</title>
        <p>A full consistency model may also contain dependencies
between correspondences modeled as associations. Figure 11
shows that each virtual cluster requires a second virtual
cluster as backup which must provide the all services.</p>
      </sec>
    </sec>
    <sec id="sec-11">
      <title>TOOL SUPPORT BASED ON THE USE</title>
    </sec>
    <sec id="sec-12">
      <title>MODEL VALIDATOR</title>
      <p>The presented synchronization approach has been
prototypically implemented as an USE plugin and can be
downloaded from http://cosimo.big.tuwien.ac.at/findsync.
While the consistency model has to be hand-crafted, the
USE plugin merges the di erent involved models
automatically, generates the change model, and nds the minimum
cost synchronized models. To give an idea about the
complexity of the automatically produced models, consider the
running example of this paper for which the generated model
contains 79 classes, 124 associations, and 379 invariants.</p>
      <p>The costs are currently xed to a constant for each
primitive change operation. Due to limitations in the USE model
validator, some constraints and structures had to be
reformulated and only set-typed features are supported. The
optimization process is run by iteratively nding a model
completion with less cost than the previously found solution.
If the model nder is not able to nd any better solution,
the cost-optimal solution has been found. Bounds have to
be given for the number of instances of each class, thus
costoptimality is only guaranteed with regards to these bounds.
5.1</p>
    </sec>
    <sec id="sec-13">
      <title>Evaluation</title>
      <p>We ran our performance evaluation using a simpli ed
synchronization scenario of the one shown in Figure 2 on a Intel
i5-6500 3.2 GHz machine with 64 GB RAM, running Ubuntu
Linux 16.04. For simplicity reasons, all costs were assumed
to be one.</p>
      <p>3Version '15, available at: http://fmv.jku.at/
lingeling/lingeling-bal-2293bef-151109.tar.gz
4Version 2.2.0, available at: http://minisat.se/
downloads/minisat-2.2.0.tar.gz</p>
      <p>5Version 2.3.1, integrated in the ModelValidator jar,
available at: http://forge.ow2.org/project/download.
php?group_id=228&amp;file_id=17186
Solver</p>
      <p>Table 1 shows the average runtime of three runs to nd any
solution and a cost-minimal solution with di erent solvers.
The runtimes vary greatly with each run, but still some
trends can be observed. The runtimes also indicate that
with the current state of the USE model validator, the
approach cannot be directly used to nd a good synchronized
instances within a reasonable time frame for large models.
Still, we see a huge di erence between solvers. While
lingeling and plingeling are quite fast nding the rst solution
which already provide a good quality, Sat4J requires a longer
time to nd any solution, but this rst solution is nearly
the optimal one. MiniSat had quite some problems for the
studied scenario. It produced did not produce appropriate
solutions and went out of memory without nding the best
solution.</p>
      <p>In addition to computing synchronizations, we see also an
alternative usage scenario for the presented approach. It can
be also used to validate whether an existing synchronization
found by another tool is a valid synchronization by using
the validation capabilities of OCL. Here, the full approach
can be used since USE is able to check all constraints used
in the approach.</p>
      <p>In the evaluation, we have only shown the general
feasibility of the approach, but not that it is fast enough for
larger instances. We assume that faster, maybe heuristic
model nding approaches may signi cantly improve the
performance but we do not have any concrete evidence for this
yet. Thus, we can not claim that the performance can be
actually improved in order that the approach scales to the
synchronization of larger real-world models in the matter of
minutes.</p>
      <p>
        While transformation models using UML/OCL have been
already introduced back in 2006 [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], to the best to our
knowledge, the model synchronization aspect has not been
considered in such type of models. However, since model
synchronization is an important topic in model-driven engineering,
there is already a great variety of approaches to support
di erent synchronization scenarios. For example, there is
speci c work on model synchronization by specifying how
to deal with inconsistencies [
        <xref ref-type="bibr" rid="ref11 ref14 ref2">2, 11, 14</xref>
        ] and by using
bidirectional transformation languages. For instance, triple graph
grammars [
        <xref ref-type="bibr" rid="ref20 ref30">20, 30</xref>
        ] are often employed for model
synchronization scenarios such as reported in [
        <xref ref-type="bibr" rid="ref1 ref15 ref17">1, 15, 17</xref>
        ]. In a similar
fashion, QVT Relational [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ] allows synchronization, also
in conjunction with unidirectional transformation languages
such as ATL [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. Furthermore, there are other, mostly
rule-based, approaches available (cf. [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] for a survey). One
bene t of our approach when comparing it to existing work
is that we make use of an explicit change model which allows
to adjust the synchronization strategy in a domain-speci c
way.
      </p>
      <p>
        There are also some existing approaches using constraint
solving for model synchronization such as the Janus
Transformation Language (JTL) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], also with compressed state
space [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], and the CARE approach [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ]. JTL [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] is using
answer set programming (ASP) to nd a synchronized
result. In contrast to JTL, we do not map a relation-based
language into ASP, but we aim to describe everything with
UML/OCL. In addition, we also provide a method to
prefer certain change results over others by having cost models
attached to change models. In previous work, we have
presented CARE [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ], an approach using a constraint solver
(ASP) to re-synchronize models with their evolving
metamodels. However, CARE is a speci c approach for the
metamodel/model co-evolution problem. The approach
presented in this paper may be also employed in the future
to reproduce the results of the CARE approach. An
alternative approach for metamodel/model co-evolution is
presented in [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ] where the variability of di erent model
migration solutions is formalized as a feature model. We see
this research direction as an interesting line for future work
as this would allow to concisely report equally good model
synchronization solutions, i.e., having the same cost, to the
user.
      </p>
      <p>
        There have been many change models proposed in the
literature, e.g., [
        <xref ref-type="bibr" rid="ref31 ref34 ref6 ref9">6, 9, 31, 34</xref>
        ]. However, to the best of our
knowledge, we do not know any constraint-based approach
to de ne change models.
      </p>
    </sec>
    <sec id="sec-14">
      <title>CONCLUSION AND FUTURE WORK</title>
      <p>In this paper, we have shown how to transform the
problem of model synchronization into the problem of de ning
a suitable consistency model and a change model with
UML/OCL. This can be used to check whether a given
synchronization strategy was performed successfully and to nd
synchronization strategies by model completion. As the
evaluation has shown, the approach can be used to build an
incremental transformation which is used for our approach
itself. The approach has also been prototypically implemented
which shows that automation is feasible.</p>
      <p>
        In the future, we need to further develop both the
conceptual approach and the implementation. Sometimes, you
explicitly require a change in a model if a speci c change
happened in another model [
        <xref ref-type="bibr" rid="ref35">35</xref>
        ]. Within this approach,
this would correspond to a consistency model constraining
change objects. A sensible consistency model or an
alternative representation translated into a consistency model for
that has to be found. The approach could be adapted to
support metamodel/model co-evolution by (i) translating the
metamodel to a model a consistency relation between this
generated model and the model to co-evolve or (ii) allowing
the target metamodel to di er from the source metamodel.
The rst approach would be more general since it would not
only cover model evolutions based on metamodel changes
but may also cover metamodel evolutions based on model
changes, but at the same time more challenging since OCL
constraints would have to be translated into a model and
interpreted using OCL. Thus, we are currently evaluating
the latter approach.
      </p>
      <p>
        The performance and scalability of the implementation
has to be assessed in order to increase its practical
usefulness. Including optimization strategies in the USE model
validator for this problem, which has been done in the past
for similar problems, may increase the performance by
orders of magnitude and make this approach usable in practice.
Also, we need to evaluate in which cases, if any, a suitable
cost de nition could let our approach nd least surprising
changes [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
    </sec>
    <sec id="sec-15">
      <title>ACKNOWLEDGMENTS</title>
      <p>Acknowledgment: This work has been funded by the
Vienna Business Agency (Austria) within the COSIMO project
(grant number 967327) and by the Christian Doppler
Forschungsgesellschaft, the Federal Ministry of Economy, Family
and Youth and the National Foundation for Research,
Technology and Development, Austria.
9.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A.</given-names>
            <surname>Anjorin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Deckwerth</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Schu</surname>
          </string-name>
          <article-title>rr. E cient Model Synchronization with View Triple Graph Grammars</article-title>
          .
          <source>In Proceedings of the European Conference on Modelling Foundations and Applications (ECMFA)</source>
          , volume
          <volume>8569</volume>
          <source>of LNCS</source>
          , pages
          <volume>1</volume>
          {
          <fpage>17</fpage>
          . Springer,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>G.</given-names>
            <surname>Bergmann</surname>
          </string-name>
          , I. Rath, G. Varro, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Varro</surname>
          </string-name>
          .
          <article-title>Change-driven model transformations - change (in) the rule to rule the change</article-title>
          .
          <source>SoSyM</source>
          ,
          <volume>11</volume>
          (
          <issue>3</issue>
          ):
          <volume>431</volume>
          {
          <fpage>461</fpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J.</given-names>
            <surname>Bezivin</surname>
          </string-name>
          , F. Buttner,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          ,
          <string-name>
            <surname>I.</surname>
          </string-name>
          <article-title>Kurtev, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Lindow</surname>
          </string-name>
          .
          <article-title>Model transformations? transformation models</article-title>
          !
          <source>In Proceedings of the International Conference on Model Driven Engineering Languages and Systems (MODELS)</source>
          , volume
          <volume>4199</volume>
          <source>of LNCS</source>
          , pages
          <volume>440</volume>
          {
          <fpage>453</fpage>
          . Springer,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J.</given-names>
            <surname>Bezivin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <surname>U.</surname>
          </string-name>
          <article-title>A mann, B</article-title>
          .
          <string-name>
            <surname>Rumpe</surname>
            , and
            <given-names>D. C.</given-names>
          </string-name>
          <string-name>
            <surname>Schmidt</surname>
          </string-name>
          .
          <article-title>Manifesto - model engineering for complex systems</article-title>
          .
          <source>CoRR, abs/1409.6591</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <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</article-title>
          . Morgan &amp; Claypool,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>E. J.</given-names>
            <surname>Burger</surname>
          </string-name>
          .
          <article-title>Flexible views for view-based model-driven development</article-title>
          .
          <source>In Proceedings of the 18th International Doctoral Symposium on Components and Architecture</source>
          , pages
          <volume>25</volume>
          {
          <fpage>30</fpage>
          . ACM,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Cheney</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Gibbons</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>McKinna</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and P.</given-names>
            <surname>Stevens</surname>
          </string-name>
          .
          <article-title>Towards a principle of least surprise for bidirectional transformations</article-title>
          .
          <source>In Proceedings of the 4th International Workshop on Bidirectional Transformations co-located with Software Technologies: Applications and Foundations</source>
          ,
          <string-name>
            <surname>STAF</surname>
          </string-name>
          <year>2015</year>
          , L'Aquila, Italy, July
          <volume>24</volume>
          ,
          <year>2015</year>
          ., pages
          <volume>66</volume>
          {
          <fpage>80</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <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 Proceedings of the International Conference on Software Language Engineering (SLE)</source>
          , volume
          <volume>6563</volume>
          <source>of LNCS</source>
          , pages
          <volume>183</volume>
          {
          <fpage>202</fpage>
          . Springer,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.</given-names>
            <surname>Cicchetti</surname>
          </string-name>
          ,
          <string-name>
            <surname>D.</surname>
          </string-name>
          <article-title>Di Ruscio, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          .
          <article-title>A metamodel independent approach to di erence representation</article-title>
          .
          <source>Journal of Object Technology</source>
          ,
          <volume>6</volume>
          (
          <issue>9</issue>
          ):
          <volume>165</volume>
          {
          <fpage>185</fpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>J. de Lara</surname>
            , E. Guerra, and
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Bottoni</surname>
          </string-name>
          .
          <article-title>Triple patterns: Compact speci cations for the generation of operational triple graph grammar rules</article-title>
          .
          <source>ECEASST</source>
          ,
          <volume>6</volume>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>R.</given-names>
            <surname>Eramo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Romero</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Vallecillo</surname>
          </string-name>
          .
          <article-title>Change management in multi-viewpoint system using ASP</article-title>
          .
          <source>In Workshops Proceedings of the International IEEE Enterprise Distributed Object Computing Conference (EDOCW)</source>
          , pages
          <fpage>433</fpage>
          {
          <fpage>440</fpage>
          . IEEE,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <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>
            <given-names>G.</given-names>
            <surname>Rosa</surname>
          </string-name>
          .
          <article-title>Managing uncertainty in bidirectional model transformations</article-title>
          .
          <source>In Proceedings of the ACM SIGPLAN International Conference on Software Language Engineering (SLE)</source>
          , pages
          <fpage>49</fpage>
          {
          <fpage>58</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>A.</given-names>
            <surname>Finkelstein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Gabbay</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Hunter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kramer</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Nuseibeh</surname>
          </string-name>
          .
          <article-title>Inconsistency handling in multi-perspective speci cations</article-title>
          .
          <source>In Proceedings of the 4th European Software Engineering Conference (ESEC)</source>
          , volume
          <volume>717</volume>
          <source>of LNCS</source>
          , pages
          <volume>84</volume>
          {
          <fpage>99</fpage>
          . Springer,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>A.</given-names>
            <surname>Finkelstein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Gabbay</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Hunter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kramer</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Nuseibeh</surname>
          </string-name>
          .
          <article-title>Inconsistency handling in multi-perspective speci cations</article-title>
          .
          <source>IEEE Trans. Software Eng.</source>
          ,
          <volume>20</volume>
          (
          <issue>8</issue>
          ):
          <volume>569</volume>
          {
          <fpage>578</fpage>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>H.</given-names>
            <surname>Giese</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Wagner</surname>
          </string-name>
          .
          <article-title>From model transformation to incremental bidirectional model synchronization</article-title>
          .
          <source>SoSyM</source>
          ,
          <volume>8</volume>
          (
          <issue>1</issue>
          ):
          <volume>21</volume>
          {
          <fpage>43</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          , L. Hamann, and
          <string-name>
            <given-names>F.</given-names>
            <surname>Hilken</surname>
          </string-name>
          .
          <article-title>On static and dynamic analysis of UML and OCL transformation models</article-title>
          .
          <source>In Proceedings of the Workshop on Analysis of Model Transformations co-located with ACM/IEEE 17th International Conference on Model Driven Engineering Languages &amp; Systems (MoDELS</source>
          <year>2014</year>
          ), pages
          <fpage>24</fpage>
          {
          <fpage>33</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>F.</given-names>
            <surname>Hermann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Ehrig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Ermel</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Orejas</surname>
          </string-name>
          .
          <article-title>Concurrent Model Synchronization with Con ict Resolution Based on Triple Graph Grammars</article-title>
          .
          <source>In Proceedings of the International Conference on Fundamental Approaches to Software Engineering (FASE)</source>
          , volume
          <volume>7212</volume>
          <source>of LNCS</source>
          , pages
          <volume>178</volume>
          {
          <fpage>193</fpage>
          . Springer,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hidaka</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tisi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Hu</surname>
          </string-name>
          .
          <article-title>Feature-based classi cation of bidirectional transformation approaches</article-title>
          .
          <source>SoSyM</source>
          ,
          <volume>15</volume>
          (
          <issue>3</issue>
          ):
          <volume>907</volume>
          {
          <fpage>928</fpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>M.</given-names>
            <surname>Javed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y. M.</given-names>
            <surname>Abgaz</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Paul</surname>
          </string-name>
          .
          <article-title>Composite ontology change operators and their customizable evolution strategies</article-title>
          .
          <source>In Proceedings of the 2nd Joint Workshop on Knowledge Evolution and Ontology Dynamics (EvoDyn)</source>
          , pages
          <fpage>1</fpage>
          <lpage>{</lpage>
          12. CEUR-WS.org,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>E.</given-names>
            <surname>Kindler</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Wagner</surname>
          </string-name>
          .
          <article-title>Triple graph grammars: Concepts, extensions, implementations, and application scenarios</article-title>
          .
          <source>Technical report, tr-ri-07-284</source>
          , University of Paderborn,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>P.</given-names>
            <surname>Langer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Brosch</surname>
          </string-name>
          , M. Herrmannsdorfer, M. Seidl,
          <string-name>
            <given-names>K.</given-names>
            <surname>Wieland</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Kappel</surname>
          </string-name>
          .
          <article-title>A posteriori operation detection in evolving software models</article-title>
          .
          <source>Journal of Systems and Software</source>
          ,
          <volume>86</volume>
          (
          <issue>2</issue>
          ):
          <volume>551</volume>
          {
          <fpage>566</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>N.</given-names>
            <surname>Macedo</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Cunha</surname>
          </string-name>
          .
          <article-title>Least-change bidirectional model transformation with QVT-R and ATL</article-title>
          .
          <source>SoSyM</source>
          , pages
          <volume>1</volume>
          {
          <fpage>28</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>N.</given-names>
            <surname>Macedo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Tiago</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Cunha</surname>
          </string-name>
          .
          <article-title>A feature-based classi cation of model repair approaches</article-title>
          .
          <source>CoRR, abs/1504.03947</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>P.</given-names>
            <surname>Niemann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Hilken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Wille</surname>
          </string-name>
          .
          <article-title>Assisted generation of frame conditions for formal models</article-title>
          .
          <source>In Proceedings of the Design, Automation &amp; Test in Europe Conference &amp; Exhibition (DATE)</source>
          , pages
          <fpage>309</fpage>
          {
          <fpage>312</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25] Object Management Group.
          <source>Meta Object Facility (MOF) 2</source>
          .0 Query/View/Transformation Speci cation. http://www.omg.org/spec/QVT/1.0/.
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>J. E.</given-names>
            <surname>Rivera</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Romero</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Vallecillo</surname>
          </string-name>
          .
          <article-title>Behavior, time and viewpoint consistency: Three challenges for MDE</article-title>
          .
          <source>In Models in Software Engineering, Reports and Revised Selected Papers of Workshops and Symposia at MODELS</source>
          <year>2008</year>
          , pages
          <fpage>60</fpage>
          {
          <fpage>65</fpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Romero</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Vallecillo</surname>
          </string-name>
          .
          <article-title>Well-formed rules for viewpoint correspondences speci cation</article-title>
          .
          <source>In Workshops Proceedings of the 12th International IEEE Enterprise Distributed Object Computing Conference (ECOCW)</source>
          , pages
          <fpage>441</fpage>
          {
          <fpage>443</fpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>D. D. Ruscio</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Etzlstorfer</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Iovino</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Pierantonio</surname>
            , and
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Schwinger</surname>
          </string-name>
          .
          <article-title>Supporting variability exploration and resolution during model migration</article-title>
          .
          <source>In Proceedings of the 12th European Conference on Modelling Foundations and Applications (ECMFA)</source>
          , volume
          <volume>9764</volume>
          <source>of LNCS</source>
          , pages
          <volume>231</volume>
          {
          <fpage>246</fpage>
          . Springer,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>J.</given-names>
            <surname>Schoenboeck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kusel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Etzlstorfer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Kapsammer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Schwinger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Wischenbart</surname>
          </string-name>
          .
          <article-title>CARE: A Constraint-based Approach for Re-Establishing Conformance Relationships</article-title>
          .
          <source>In Proceedings of the 10th Asia-Paci c Conference on Conceptual Modelling (APCCM)</source>
          , pages
          <fpage>19</fpage>
          {
          <fpage>28</fpage>
          . Australian Computer Society,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>A.</given-names>
            <surname>Schu</surname>
          </string-name>
          <article-title>rr. Speci cation of graph translators with triple graph grammars</article-title>
          .
          <source>In Proceedings of the 20th International Workshop on Graph-Theoretic Concepts in Computer Science (WG)</source>
          , pages
          <fpage>151</fpage>
          {
          <fpage>163</fpage>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>C.</given-names>
            <surname>Seidl</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Schaefer</surname>
          </string-name>
          , and
          <string-name>
            <surname>U.</surname>
          </string-name>
          <article-title>A mann. Deltaecore - A model-based delta language generation framework</article-title>
          .
          <source>In Proceedings of Modellierung</source>
          , pages
          <volume>81</volume>
          {
          <fpage>96</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>P.</given-names>
            <surname>Stevens</surname>
          </string-name>
          .
          <article-title>Towards an algebraic theory of bidirectional transformations</article-title>
          .
          <source>In Proceedings of the 4th International Conference on Graph Transformations (ICGT)</source>
          , pages
          <fpage>1</fpage>
          {
          <fpage>17</fpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <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>9</volume>
          (
          <issue>1</issue>
          ):7{
          <fpage>20</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>G.</given-names>
            <surname>Taentzer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Ermel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Langer</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          .
          <article-title>A fundamental approach to model versioning based on graph modi cations: from theory to implementation</article-title>
          .
          <source>SoSyM</source>
          ,
          <volume>13</volume>
          (
          <issue>1</issue>
          ):
          <volume>239</volume>
          {
          <fpage>272</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Moreno</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Vallecillo</surname>
          </string-name>
          .
          <article-title>Viewpoint co-evolution through coarse-grained changes and coupled transformations</article-title>
          .
          <source>In Proceedings of the International Conference on Objects, Models</source>
          , Components,
          <source>Patterns (TOOLS)</source>
          , volume
          <volume>7304</volume>
          <source>of LNCS</source>
          , pages
          <volume>336</volume>
          {
          <fpage>352</fpage>
          . Springer,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>