<!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>
      <journal-title-group>
        <journal-title>Bergen, Norway (online).
" luca.beurer-kellner@inf.ethz.ch (L. Beurer-Kellner);
Jens.vonPilgrim@haw-hamburg.de (J. v. Pilgrim);
timo.kehrer@informatik.hu-berlin.de (T. Kehrer)</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Round-trip migration of object-oriented data model instances</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Luca Beurer-Kellner</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jens von Pilgrim</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Timo Kehrer</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Database Service V.</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Database Service V.</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Database Service V.</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>ETH Zürich</institution>
          ,
          <addr-line>Zürich</addr-line>
          ,
          <country country="CH">Switzerland</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>HAW Hamburg</institution>
          ,
          <addr-line>Hamburg</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Humboldt-Universität zu Berlin</institution>
          ,
          <addr-line>Berlin</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2021</year>
      </pub-date>
      <volume>000</volume>
      <fpage>0</fpage>
      <lpage>0001</lpage>
      <abstract>
        <p>The communication of web-based services is typically organized through public APIs which rely on a common data model shared among all system components. To accommodate new or changing requirements, a common approach is to plan data model changes in a backward compatible fashion. While this relieves developers from an instant migration of the system components including the data they are operating on, it causes serious maintenance problems and architectural erosion in the long term. We argue that an alternative solution to this problem is to use a translation layer serving as a round-trip migration service which is responsible for the forth-and-back translation of object-oriented data model instances of diferent versions. However, the development of such a round-trip migration service is not yet properly supported by existing technologies. In this challenge, we focus on the key task of developing the required migration functions, framing this as a model transformation problem.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Web development</kwd>
        <kwd>API and data model evolution</kwd>
        <kwd>translation layer</kwd>
        <kwd>round-trip migration</kwd>
        <kwd>model transformation</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        1. Introduction migrate the existing data using tools such as Liquibase1.
Once the migration has been performed, components
Context: In web development, the communication of relying on version 1 of the data model are replaced by
web-based services is typically organized through pub- their updated successor versions.
lic APIs which rely on a common data model shared In practice, however, not all the afected components
among all system components. Over time, the shared can be migrated instantly and at the same time [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. A
data model must be changed to accommodate new or common workaround is to plan data model changes in
changing requirements, and the system components (i.e., a backward compatible fashion. However, this severely
services) including the data they are operating on must hampers flexibility when evolving the data model, and
be migrated. This API evolution problem is a well-known essentially comes at the cost of architectural erosion,
inchallenge for web APIs [
        <xref ref-type="bibr" rid="ref1 ref2 ref3">1, 2, 3</xref>
        ]. creased maintenance eforts and technical debt. A more
      </p>
      <p>Figure 1 illustrates this problem by means of a typical flexible solution would be to operate components relying
example of a distributed system exposing a three-tier on diferent data model versions at the same time and to
architecture with a client, a service and a database layer. use a translation layer serving as round-trip migration
The API and its underlying data model are evolved from service being responsible for the forth-and-back
translaversion 1 (red, not striped) to version 2 (green, striped), tion of object-oriented data model instances of diferent
which may lead to diferent architectural evolution sce- versions. The evolution scenarios ➋, ➌ and ➍ use such a
narios, depending on the temporal order of updating the
involved components. Ideally, all components are up- 1https://www.liquibase.org/
dated simultaneously (scenario ➊). When performed in
an online fashion, we need a translation layer (TL) to 1
TL 1</p>
      <p>V.1 V.2
API V.1</p>
      <p>API V.2</p>
      <p>API V.1</p>
      <p>API V.1</p>
      <p>TL 2
V.1 V.2
TL 3
V.1 V.2
TL 4</p>
      <p>V.1 V.2</p>
      <p>
        API V.2
Service V.2
round-trip migration service to migrate and migrate back changes in methods or endpoints in HTTP are out of
shared data model instances on demand. Architecturally, scope. Protocol changes (e.g., change of message format,
this allows for greater flexibility than the aforementioned authentication, rate limit) as mentioned in Wang et al.
solutions. It leaves open a wide variety of design deci- [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] are also not considered here. Finally, we focus on a
sions, regarding the use of diferent data model versions single round-trip migration at a time and do not consider
as well as the location of the translation layer (client-side, concurrent operations.
server-side, in the database system, etc.). We frame the development of migration functions as
      </p>
      <p>Research Gap: Although it seems to be an attractive a transformation problem that abstracts from
technosolution to deal with data model evolution, the develop- logical details. While the shared data model is typically
ment of a round-trip migration layer which is responsible defined through Web API specification languages, we
for the the forth-and-back translation of object-oriented choose a more simple and explicit representation using
data model instances of diferent versions is not yet prop- an object-oriented modeling approach. Conceptually, we
erly supported by existing technologies. consider object-oriented data models and instances as</p>
      <p>
        Frameworks such as Google’s Protocol Bufers 2, graphs, serving as basis for the problem definition which
Apache Thrift3 or Apache Avro4 support versioning of we present more formally in Section 2. Next, in Section 3,
the whole API and provide annotations in order to change we give a set of selected data model evolution scenarios
an API in a backwards compatible way. On a more fine- and the corresponding round-trip migration tasks which
grained level, UpgradeJ [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] extends Java to support ver- are to be solved within this challenge. In Section 4, we
sioned type declarations. It allows for upgrading to new present criteria for evaluating the submitted solutions.
versions dynamically at run-time, however, the revised Finally, Section 5 presents a simple reference solution,
class must have at least the fields and method signatures serving as baseline for more sophisticated solutions based
as the original one. Dmitriev et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] discuss evolu- on model transformation concepts and technologies.
tion techniques for the PJama persistence framework. An evaluation framework which may be used by
soluProgrammers can write migration functions which are tion providers and which comprises a set of experimental
embedded by means of static methods. However, there subjects is briefly described in Appendix A. The
frameis no dedicated support for implementing round-trip mi- work as well as a reference solution for this case may be
grations. found at https://github.com/lbeurerkellner/ttc2020.
      </p>
      <p>
        Traditional research on data model evolution and in- Relation to Previous TTC Cases: At the 2017
edistance migration has its roots in the database systems tion of the Transformation Tool Contest, the “Families
community. Here, schema evolution generally refers to to Persons Case” [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] has been presented. It models a
the process of facilitating the modification of a database well-known bidirectional transformation problem which
schema without loss of existing data or compromising is closely related to the underlying problem of our case.
data integrity [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. The main aim, however, is to merely up- However, coming from a more practical setting, we want
date instance data in response to schema changes, which to emphasize diferent aspects. As it will become
apparinherently difers from round-trip migrating instances ent from our evolution scenarios presented in Section
between diferent versions of an API. 3, our background is mostly motivated by the features
      </p>
      <p>
        The same limitation applies to more recent work in of modern web-development languages (e.g., the use of
model-driven engineering. Here, multiple approaches optional fields in Section 3.3) as well as the development
have been proposed addressing the migration of instance process of web applications in general (e.g., our
evaluamodels in response to meta-model changes, referred to as tion criterion re-usability in Section 4.4).
meta-model evolution and model co-evolution [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Their
goal, however, similar to schema evolution, is to merely
update instance models in response to meta-model evo- 2. Problem Definition
lution. Nonetheless, a multitude of techniques that have
been proposed in the context of model evolution and In this section, we introduce our conceptual,
technologymodel transformation may serve as a proper basis for the independent notion of object-oriented data models and
specification of round-trip migrations. instances, and then present properties which we would
      </p>
      <p>Challenge in a Nutshell: In this challenge, we focus ideally expect from round-trip migrations.
on the key task of developing migration functions which
are needed by a round-trip migration service. We only 2.1. Data Models and Instances
consider API changes afecting the shared data model,
while other aspects of API evolution such as signature
Graphs are a natural means to conceptually define
objectoriented data models and instances. For the sake of being
compatible with the majority of available model
transformation technologies, our notion of a graph can be
2https://developers.google.com/protocol-bufers
3https://thrift.apache.org
4https://avro.apache.org
transferred to model representations which are based on ent data models to communicate with each other, a
the essential MOF (EMOF) standard being defined by the translation layer is responsible for migrating instances
OMG5. Specifically, a graph  = ( ,  , , ) forth and back. Formally, a translation layer is a tuple
consists of two disjoint sets  and  containing  = (1, 2, , ) where 1 and 2 denote the data
the nodes and the edges of the graph, respectively. Ev- models the layer translates from and to via migration
ery edge represents a directed connection between two functions  : ℳ1 → ℳ2 and  : ℳ2 → ℳ1,
respecnodes, which are called the source and target nodes tively. Given an instance 1 ∈ ℳ1, we refer to the
of the edge, formally represented by source and tar- consecutive application of  and  to 1, i.e., ( (1)),
get functions ,  :  →  . Given two as the round-trip migration of 1 via 2. Likewise, since
graphs  and , a pair of functions ( ,  ) with translation layers are supposed to work symmetrically in
 :  →  and  :  →  forms a graph either direction, given an instance 2 ∈ ℳ2,  ((2))
morphism  :  →  if it maps the nodes and edges of denotes the round-trip migration of 2 via 1. The
 to those of  in a structure-preserving way, i.e., ∀ ∈ round-trip migration of an instance 1 via 2 (resp.
 :  (()) =  ( ()) ∧  (()) = 2 via 1) is called successful if ( (1)) = 1 (resp.
 ( ()).  ((2)) = 2). A translation layer  is considered</p>
      <p>
        An object-oriented data model is conceptually con- successfully round-trip-migrating if the following
condisidered as a distinguished graph referred to as type tions hold:
graph  , while an instance of this data model is formally
treated as an instance graph  typed over  . Formally, a ∀ 1 ∈ ℳ1 : ( (1)) = 1 (1)
type graph  = ( ,  ,  ,  , , ) is a special ∀ 2 ∈ ℳ2 :  ((2)) = 2 (2)
graph whose nodes and edges are representing types, and
which comprises the definition of a node type hierarchy
 ⊆  ×  , which must be an acyclic relation, and a
set  ⊆  identifying abstract node types. The typing
relation between instances and data models may be
formalized by a special graph morphism  :  → 
relating an instance graph  with its associated type graph
 [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. The way we handle attributes and attribute
declarations follows the definition of attributed graphs given
in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. The main idea of formalizing node attributes in
an instance graph is to consider them as edges of a
special kind referring to data values. Analogously, attributes
declared by node types of a type graph are represented
as special edges referring to data type nodes.
      </p>
      <p>In order to avoid going into any technical details of
model transformation approaches yet, we will take an
extensional view on data models. That is, speaking about
a data model  , then ℳ refers to the (infinite) set of
data model instances which are properly typed over  .</p>
      <p>In practice, round-trip migrations as introduced above
will barely happen since, more often than not, a
component will not directly return an instance it just received
but rather apply some modification to the instance
before returning it. Given two data models 1 and 2,
a round-trip migration with modification of an instance
1 ∈ ℳ1 via 2 is a consecutive application of
functions  ∘ 2 ∘  (1) = (2( (1))) where, like above,
 and  are migration functions from 1 to 2 and
2 to 1, respectively, and 2 : ℳ2 → ℳ2 is an
instance modification function performing the
modification of the migrated instance  (1) ∈ ℳ2. Due
to the modification of  (1), the original definition of
a successful round-trip migration is not suitable
anymore. The result of migrating back the modified
instance 2( (1)) ∈ ℳ2 is not expected to be the
original instance 1. Intuitively, the result is rather
expected to be a modification 1(1) of instance 1
where 1 : ℳ1 → ℳ1 represents the corresponding
comodification of 2 on data model 1. A translation layer
2.2. Round-Trip Migration Functions  = (1, 2, , ) which handles round-trip
migraWe diferentiate the migration and the modification of tions between data models 1 and 2 is called
successinstances. Given two data models 1 and 2 with fully round-trip migrating with modification if there are
1 ̸= 2, a total function  : ℳ1 → ℳ2 is con- co-modifications 1 : ℳ1 → ℳ1 and 2 : ℳ2 → ℳ2
sidered a migration function from 1 to 2. Given two such that the following conditions hold:
imnisgtarantceedsto1∈2 iℳf1(an1d) =2∈2.ℳOn2,thweecsoanytrtahrayt, giv1eins ∀ 1 ∈ ℳ1 : (2( (1))) = 1(1) (3)
a single data model  , a total function  : ℳ → ℳ ∀ 2 ∈ ℳ2 :  (1((2))) = 2(2) (4)
is considered an instance modification function . Given
two instances  and ′ typed over  , we say that  is 3. Selected Evolution Scenarios
modified to become ′ if () = ′.</p>
      <p>To allow two components which depend on
difer5https://www.omg.org/spec/MOF</p>
      <p>In the following sections 3.2 through 3.4, we introduce a
selection of diferent cases of data model evolution and
according round-trip migration scenarios. Data models
:Person
name = "Alice"</p>
      <p>:Person
name = "Alice"
and instances are represented using UML class and object Person instance does not provide a concrete value for
diagram notations, respectively. Each scenario comprises this field. The more complicated case, however, is the
two versions of a data model that demonstrate the ap- 2 ↦→ 1 ↦→ 2 round-trip migration since it needs to
plication of typical edit operations on object-oriented access a previous revision of the migrated object during a
data models in a minimal context. Each scenario can later stage in the round-trip migration. Here, the value of
be interpreted from two perspectives, i.e., from 1 to ifeld age should be recovered from the original Person
2, or vice versa. The respective edit operations which instance. In the context of traditional bidirectional
transcan be observed in both cases are inverse to each other. formation, this can be considered as a standard scenario
We discuss round-trip migrations in both directions, us- which we use as a warm-up task of our round-trip
miing the shorthand notations 1 ↦→ 2 ↦→ 1 and gration case.
2 ↦→ 1 ↦→ 2 , respectively.</p>
      <p>For each of these round-trip migration scenarios, the 3.2. Rename Field
task is to specify the required migration functions,
referred to as migrate and migrate back in the sequel. That In this evolution scenario, the name of a field is changed.
is, each of the four data model evolution scenarios yields The most simple reason for this kind of change is to
imtwo tasks which we ask to be solved by solution providers, prove the wording in the data model to better reflect the
summing up to a total number of eight tasks for the entire terminology of a domain of interest. A more challenging
case. Since all of these tasks are independent from each change is to slightly update the meaning of a field, as it is
other, participants may address a subset of them. the case in our evolution scenario presented in Figure 2
(left). Here, the field age in 1 is changed to ybirth in
3.1. Create/Delete Field 2, now capturing a Person’s year of birth instead of
its current age.</p>
      <p>In this scenario, a new field is added to (removed from) The migration functions which are to be developed for
a class of the data model, as illustrated in Figure 3 (left). this scenario should account for this semantic change
We assume this field to be functionally independent from and convert between proper values of fields age and
any other field of the same class. ybirth. As illustrated in Figure 2 (right), we assume the</p>
      <p>As illustrated in Figure 3 (right), in a 1 ↦→ 2 ↦→ current date as a basis for the conversions in both
direc1 round-trip migration, the new field age should be tions. In this case, the change in the semantics of age and
set to some suitable default value since the original ybirth requires the integration of some user-defined</p>
      <p>:Person
age = 25
arithmetic operation during transformation. Purely struc- data model shown in Figure 4 (left). The latter case is
tural approaches often lack this feature, even though in represented by the default notation used for all other
our context of Web APIs this is an important requirement. fields, meaning that the field is a mandatory one.
The key issue here is to deal with potential
null3.3. Declare Field Optional/Mandatory values in 2 and their corresponding default values in
1. This is rather straightforward in a 1 ↦→ 2 ↦→
In this scenario, the multiplicity of a field is generalized 1 round-trip migration, as illustrated in Figure 4. Here,
(specialized) from 1 to 0..1 (0..1 to 1). The former case null-values in 2 may occur due to a modification of
means that the field is declared to be optional, as indicated the migrated instance, and they should be translated to a
by the notation [?] attached to field name in 2 of the default value in 1. The 2 ↦→ 1 ↦→ 2 round-trip
migration is more complicated. Here, we have to check according round-trip migration scenarios are supported,
whether a default value has been synthesized during mi- the more expressive is the transformation approach.
gration or through an explicit modification. In the former To turn this intuition into a measurable evaluation
case, as illustrated by the upper right example shown in criterion, we assess the correctness of each task by
proFigure 4, a synthesized default value is migrated back to viding sets of associated tests. A test case comprises pairs
a null-value. In the latter case, illustrated by the lower of instances serving as input and as expected output of
right example shown in Figure 4, the default value is the a round-trip migration. For each of the tasks presented
result of an explicit modification in 1, which should be in Section 3, a first test case is derived from the example
migrated back to a default value instead of a null-value presented in that section. A second test case is added in
in 2. This evolution scenario is of special interest to order to prevent literal encodings of solutions (except for
us, since optional fields are a common pattern used in the taks presented in Section 3.3, which already has two
the design and evolution of Web APIs. associated test cases. A task is considered to be solved
correctly if it passes all tests.
3.4. Multiple Edits All tasks are scored by means of the provided test cases.
A point is given for each passing test case, and points
In this evolution scenario, we combine two edit opera- are summarized over all test cases. This means that all
tions which we have already considered before. As we tasks are scored evenly between zero and two points.
can see in Figure 5 (left), from an 1 to 2 perspective, Zero means the task has not been tackled at all, one point
the field age of class Dog has been deleted, which corre- indicates a partial solution, and two points mean that the
sponds to the edit operation considered in the evolution task has been solved and the transformation has been
scenario presented in Section 3.1. At the same time, the implemented correctly.
name and semantics of field age of the referenced class
Person has been changed to ybirth, as in the evolution 4.2. Comprehensibility
scenario presented in Section 3.2.</p>
      <p>The corresponding 1 ↦→ 2 ↦→ 1 and 2 ↦→ Specifications of migration functions should be
compre1 ↦→ 2 round-trip migrations are illustrated in Fig- hensible in order to be maintainable and to allow for
ure 5 (right). Their specification can be considered as better manual validation. Our idea of evaluating
solua combination of the migration functions required for tions is to compare their comprehensibility with that of
the evolution scenarios presented in Section 3.2 and Sec- the provided reference solution (see Section 5). For each
tion 3.1. The main aim of this scenario is to call for task, the comprehensibility of the reference solution is
solutions that support some form of re-usability (see Sec- scored by one point. Better, equal and worse
comprehention 4). sibility of a submitted solution are acknowledged by two,
one and zero points, respectively.</p>
      <p>
        We acknowledge that such a classification is highly
bi4. Evaluation Criteria ased by subjective preferences. Developers being familiar
with model transformation languages such as Henshin
To evaluate the quality of the proposed solutions, we give or ATL most likely prefer a declarative or
declarativea set of quality characteristics which we consider to be rel- imperative style, while mainstream web developers will
evant for the specification of round-trip migrations. We most likely prefer a purely imperative style of writing
draw inspirations from previous work on defining qual- migrations. More objective measures such as code
metity attributes of model transformations [
        <xref ref-type="bibr" rid="ref12 ref13 ref14 ref15">12, 13, 14, 15</xref>
        ]. rics, as proposed by Götz et al. [
        <xref ref-type="bibr" rid="ref16 ref17">16, 17</xref>
        ] to compare size
We refine each quality characteristic into measurable at- and complexity of model transformations written in Java
tributes for each of the tasks presented in Section 3. To and ATL, are hardly applicable to compare
transformaobtain concrete measures for their solutions, participants tions which are written in languages that follow diferent
are kindly invited to use the evaluation framework pro- paradigms (which is to be expected for the diferent
soluvided with the case resources (see Appendix A). This tions of this case).
way, some of the measures can be obtained in a semi- To that end, we see two options for assessing the
comautomated manner. prehensibility of solutions, both of which involve a
human in the loop. In the ofline variant, we will use two
4.1. Expressiveness distinct groups of students to evaluate a solution by
anA first important and rather obvious quality characteristic swering a survey, similar to [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. One group of students
is the expressiveness of the transformation language and will have a background on model transformation
lansystem being used to specify and execute round-trip mi- guages, while the other group is supposed to have only
grations. Intuitively, the more data model evolution and (basic) programming skills (in Java). The second variant
is to conduct a live evaluation with the TTC participants.
      </p>
    </sec>
    <sec id="sec-2">
      <title>4.3. Bidirectionality</title>
    </sec>
    <sec id="sec-3">
      <title>4.5. Performance</title>
      <p>
        Bidirectional transformations (BX) [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] appear to be an Finally, we evaluate the proposed solutions with regards
attractive solution to our problem as they support to to runtime performance. While the functional
correctsynthesize migration functions in both directions from ness of round-trip migrations is an important step
toa single specification. Such single specifications may wards a valid solution, the Web API context also requires
be symmetric as, e.g., in the case of triple graph gram- eficient solutions. The implementation of a more
commars [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], or asymmetric as, e.g., in the case of putback- plex translation layer would be out of the scope of this
based bidirectional programming [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. challenge. Therefore, as a limited evaluation of the
run
      </p>
      <p>Within this challenge, we do not insist on any particu- time characteristics of the proposed solutions, we
repeatlar mechanism for specifying bidirectional transforma- edly run the round-trip migrations required to support
tions, and all mechanisms are ranked equally. All tasks the evaluation scenarios described in Section 3 for a large
and extension tasks are scored evenly with zero (no bidi- number of iterations and measure their execution time. In
rectionality) or one point (support for bidirectionality). general however, we consider runtime performance a
secondary evaluation criterion. Hence, diferences among
4.4. Re-usability proposed solutions with regards to runtime performance
shall only serve as a tie-breaker among solutions which
score equally for the other four criteria.</p>
      <p>As with any other kind of software, re-use mechanisms
are an indispensable means to increase the productivity
and quality of model transformations. To that end,
numerous re-use mechanisms for model transformations 5. Reference Solution
have been proposed in the literature, a survey may be
found in [22]. We evaluate re-usability by means of To provide a reference solution for this case, we
imthe “Multiple Edits” evolution scenario presented in Sec- plemented all the migration functions which are
retion 3.4 since it subsumes the scenarios presented in quired to support the 8 round-trip migration tasks
arissections 3.2 and 3.1. ing from our four data model evolution scenarios
pre</p>
      <p>One possible option is to achieve re-usability by means sented in Section 3 in Java. Its integration into the
evaluof delegation. Specifically, when developing migration ation framework presented in Appendix A is illustrated
functions supporting the round-trip migration of Dog in Figure 7 (bottom). Each task is realized by a
coninstances, this could be achieved by, e.g., delegating the crete subclass of class AbstractTask, each of which
migration of the referenced Person instances to migra- is being instantiated by the concrete task factory called
tion functions which have been already defined. JavaTaskFactory. None of the migrations is delegated</p>
      <p>Another possible re-use mechanism could be to ab- to a dedicated model transformation system, but the
mistract from the concrete data models and to specify the re- gration functions migrate and migrateBack are
diquired migration functions in a generic manner, focusing rectly implemented in Java.
on the conceptual parts of the respective edit operations.</p>
      <p>The generic migration functions would then be instan- Qualitative evaluation results Table 1 summarizes
tiated for the concrete data model used in this scenario. the qualitative evaluation results for our Java-based
refThis is similar to the extraction of core transformation erence solution, namely for the criteria expressiveness,
concepts that generalize over several meta-models [23]. comprehensibility, bidirectionality and re-usability. On
In the context of Web APIs, we see this as a core re- the one hand, it is not surprising that a general purpose
quirement of a feasible transformation approach. In our programming language like Java is expressive enough to
setting, the continuous evolution of a data model also
implies the continuous development of a corresponding
migration layer. From a software engineering point of 40000 Total Transformation Runtime
view, a transformation approach should therefore pro- 35000
vide support for re-usability. More specifically, s single 30000
change to the data model should require only one corre- )(sm25000
sponding change to the migration layer, which implies item20000
that existing migration code can be re-used. unR1105000000</p>
      <p>We do not insist on any particular re-use mechanism, 5000
and all re-use mechanisms are ranked equally. Support 0
for re-usability is acknowledged by four points, while no 0 250000 500000 75000N0o. o1f0R0e0p0e0t0itio1n2s50000 1500000 1750000 2000000
points are given if the specification has been developed Figure 6: Performance results of our provided reference
sofrom scratch. lution.</p>
      <p>Evolution Scenario / Task
Create/Delete Field</p>
      <p>Task_1_M1_M2_M1</p>
      <p>Task_1_M2_M1_M2
Rename Field</p>
      <p>Task_2_M1_M2_M1</p>
      <p>Task_2_M2_M1_M2
Declare Field Optional/Mandatory</p>
      <p>Task_3_M1_M2_M1</p>
      <p>Task_3_M2_M1_M2
Multiple Edits</p>
      <p>Task_4_M1_M2_M1
Task_4_M2_M1_M2
correctly solve all the tasks provided with this case. Thus, One of the next steps to further extend this challenge
the reference solution achieves the maximum score in could be to study more evolution scenarios than the four
this category, i.e., two points per task summarizing to 16 considered in this paper. Moreover, we could think of
points in total. On the other hand, bidirectionality and a (semi-)automated specification of the required
roundre-usability are not supported at all. trip migration functions. Again, we are convinced that
technologies from the field of model-driven
engineerPerformance results Figure 6 illustrates the runtime ing, notably techniques for model matching [31, 32] and
characteristics of our reference solution in terms of the diferencing [ 33], can serve as starting point for such
performance test of our evaluation framework (see Ap- automation.
pendix A). These results were obtained on a Mid-2014
MacBook Pro with an Intel Core i5 processor running at References
2,6 GHz and 8 gigabytes of main memory. As expected,
the time consumed to perform the round-trip migrations
grows linearly with the number of iterations. It takes
about 40 seconds to perform all the 2 million iterations
of our performance test.</p>
      <sec id="sec-3-1">
        <title>6. Summary and Outlook</title>
        <p>In this paper, we outlined our vision of a so-called
translation layer which supports the communication of
webbased services in diferent, incompatible versions. One of
the key tasks of implementing such a translation layer is
to support the round-trip migration of instances of
objectoriented data models in diferent versions. In this
challenge description, we phrased this as a model
transformation problem which, in contrast to previous TTC cases
on the same topic, is driven by the needs and specifics of
our application context. We are convinced that modern
model transformation technologies such as Henshin [24],
VIATRA [25] or ATL [26] are capable of solving the
challenge in an elegant way. In particular, solutions to the
TTC 2017 “Families to Persons Case” [27, 28, 29, 30] may
be adapted to our case with moderate efort.
«enumeration»</p>
        <p>TaskInfo
TASK_1_M1_M2_M1
TASK_1_M2_M1_M2
...</p>
        <p>TASK_4_M2_M1_M2</p>
        <p>AllFunctionalTests
task_1_M1_M2_M1()
task_1_M2_M1_M2()
...
task_4_M2_M1_M2()</p>
        <p>PerformanceTests
testPerformance()
«abstract»
AbstractBenchmarkTests
init()
«use»
«use»
«abstract»</p>
        <p>AbstractTaskFactory
createTask(TaskInfo info, EPackage M1, EPackage M2)
«instantiate»
«abstract»</p>
        <p>AbstractTask
AbstractTask(EPackage M1, EPackage M2)
migrate(EObject instance) : EObject
migrateBack(EObject instance) : EObject
JavaTaskFactory</p>
        <p>Task_1_M1_M2_M1 Task_1_M2_M1_M2
Task_4_M2_M1_M2 Task_4_M2_M1_M2</p>
      </sec>
      <sec id="sec-3-2">
        <title>A. Evaluation Framework</title>
        <p>the model comparison tool EMF Compare [34].</p>
        <p>A performance test is provided by the class
General architecture Tests in our evaluation frame- PerformanceTests. There is only one test method,
work may be run as JUnit tests. The abstract class called testPerformance(), which proceeds as follows:
AbstractBenchmarkTests serves as a base class for Similarly, to the functional test cases, the test relies on the
all concrete tests (see below), doing some basic initializa- correct implementation of the AbstractTaskFactory
tion. As illustrated by the architectural overview shown and AbstractTask. During performance testing, all
in Figure 7, the class AbstractBenchmarkTests takes test cases provided for the four evaluation scenarios are
the client role of an implementation of the Abstract Fac- executed repeatedly. That is, a full round-trip migration,
tory design pattern, the classes AbstractTaskFactory involving calls to migrate and migrateBack is
perand AbstractTask are supposed to encapsulate con- formed. After a certain number of warm-up iterations,
crete solutions. That is, for each of the eight tasks pre- this test loop is repeated for a total of 2 million repetitions.
sented in Section 3, solution providers who want to use The test method measures execution with the increasing
our evaluation framework are asked to provide a con- number of repetitions and stores the results into the file
crete subclass of AbstractTask which is to be instanti- results.csv at the root of the solution’s bundle. See
ated by a concrete subclass of AbstractTaskFactory. the provided code repository of the evaluation
frameThe class AbstractTask defines the signatures of the work regarding plotting scripts for the resulting data.
two central migration functions called migrate and
migrateBack, respectively. The idea is that migrate
and migrateBack then delegate the actual transforma- Registration of a concrete task factory In order to
tion task to the model transformation system used in a register a concrete subclass of AbstractTaskFactory,
concrete solution. solution providers may use the Eclipse extension point
mechanism. Concrete task factories can be registered
Functional tests vs. performance tests All test through a dedicated extension point6. Please note
cases for assessing the correctness of each of the that, in this case, the classes AllFunctionalTests
eight tasks presented in Section 3 may be run as and PerformanceTests need to be run as JUnit
PlugJUnit tests which are collected in the Java class In Test. Alternatively, solution providers may
subcalled AllFunctionalTests. Each test method, i.e., class AllFunctionalTests and PerformanceTests
task_1_M1_M2_M1() through task_4_M2_M1_M2(), which can be then run as a normal JUnit test. In this case,
executes a particular task and checks whether for a given the init method of these concrete subclasses must take
input models the obtained output model looks as ex- care of instantiating the concrete task factory. Our
refpected. Checking the equivalence of an actual and
expected round-trip migration result is performed using
erence solution (see Section 5) implements both options
for the sake of illustration.</p>
        <p>Test data Finally, since many model transformation
tools available in the model transformation research
community are based on the Eclipse Modeling technology
stack, we provide implementations of the data models
used in the evolution scenarios presented in Section 3
in EMF Ecore. Consequently, instances serving as test
data for assessing the correctness of transformation tasks
are represented as EMF instances (often referred to as
instance models in the EMF community).</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Keivanloo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zou</surname>
          </string-name>
          ,
          <article-title>How do developers react to RESTful API evolution?</article-title>
          ,
          <source>in: Intl. Conf. on Service-Oriented Computing</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>E.</given-names>
            <surname>Wittern</surname>
          </string-name>
          , Web APIs - Challenges, Design Points, and Research Opportunities, in: Intl.
          <source>Workshop on API Usage and Evolution</source>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>S.</given-names>
            <surname>Sohan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Anslow</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Maurer</surname>
          </string-name>
          ,
          <article-title>A case study of web API evolution</article-title>
          , in: IEEE World Congress on Services,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>T.</given-names>
            <surname>Espinha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Zaidman</surname>
          </string-name>
          , H.-G. Gross,
          <article-title>Web API growing pains: Stories from client developers and their code</article-title>
          ,
          <source>in: Intl. Conf. on Software Maintenance, Reengineering, and Reverse Engineering</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>G.</given-names>
            <surname>Bierman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Parkinson</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. Noble,</surname>
          </string-name>
          <article-title>UpgradeJ: Incremental typechecking for class upgrades</article-title>
          ,
          <source>in: European Conference on Object-Oriented Programming</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Dmitriev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Atkinson</surname>
          </string-name>
          ,
          <article-title>Evolutionary data conversion in the PJama persistent language</article-title>
          ,
          <source>in: Intl. Workshop on Object Oriented Databases</source>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>E.</given-names>
            <surname>Rahm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. A.</given-names>
            <surname>Bernstein</surname>
          </string-name>
          ,
          <article-title>An online bibliography on schema evolution</article-title>
          ,
          <source>ACM Sigmod Record</source>
          <volume>35</volume>
          (
          <year>2006</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>R.</given-names>
            <surname>Hebig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. E.</given-names>
            <surname>Khelladi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Bendraou</surname>
          </string-name>
          , Approaches [22]
          <string-name>
            <given-names>A.</given-names>
            <surname>Kusel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Schönböck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Kappel, to co-evolution of metamodels and models: A sur-</article-title>
          <string-name>
            <surname>W. Retschitzegger</surname>
          </string-name>
          , W. Schwinger,
          <article-title>Reuse in modelvey, IEEE Transactions on Software Engineering to-model transformation languages: are we there 43 (</article-title>
          <year>2017</year>
          ). yet?,
          <source>Software &amp; Systems Modeling</source>
          <volume>14</volume>
          (
          <year>2015</year>
          )
          <fpage>537</fpage>
          -
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.</given-names>
            <surname>Anjorin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Buchmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Westfechtel</surname>
          </string-name>
          , The fam-
          <volume>572</volume>
          .
          <article-title>ilies to persons case</article-title>
          ,
          <source>in: Proceedings of the 10th</source>
          [23]
          <string-name>
            <given-names>S.</given-names>
            <surname>Sen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Moha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Mahé</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Barais</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Baudry</surname>
          </string-name>
          ,
          <source>Transformation Tool Contest at STAF</source>
          <year>2017</year>
          ,
          <year>2017</year>
          . J.
          <string-name>
            <surname>-M. Jézéquel</surname>
          </string-name>
          , Reusable model transformations,
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>E.</given-names>
            <surname>Biermann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Ermel</surname>
          </string-name>
          , G. Taentzer, Formal founda-
          <source>Software &amp; Systems Modeling</source>
          <volume>11</volume>
          (
          <year>2012</year>
          )
          <fpage>111</fpage>
          -
          <lpage>125</lpage>
          . tion of consistent EMF model transformations by [24]
          <string-name>
            <given-names>D.</given-names>
            <surname>Strüber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Born</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. D.</given-names>
            <surname>Gill</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Groner</surname>
          </string-name>
          , T. Kehrer, algebraic graph transformation, Software &amp; Sys
          <string-name>
            <surname>- M. Ohrndorf</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Tichy</surname>
          </string-name>
          ,
          <source>Henshin: A usabilitytems Modeling</source>
          <volume>11</volume>
          (
          <year>2012</year>
          ).
          <article-title>focused framework for EMF model transformation</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>R.</given-names>
            <surname>Heckel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Küster</surname>
          </string-name>
          , G. Taentzer,
          <article-title>Confluence development</article-title>
          , in: Intl. Conf.
          <article-title>on Graph Transformaof typed attributed graph transformation systems</article-title>
          , tion, Springer,
          <year>2017</year>
          , pp.
          <fpage>196</fpage>
          -
          <lpage>208</lpage>
          . in: Intl.
          <source>Conf. on Graph Transformation</source>
          , Springer, [25]
          <string-name>
            <given-names>D.</given-names>
            <surname>Varró</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Balogh</surname>
          </string-name>
          ,
          <source>The model transformation 2002</source>
          , pp.
          <fpage>161</fpage>
          -
          <lpage>176</lpage>
          .
          <article-title>language of the VIATRA2 framework</article-title>
          , Science of
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>E.</given-names>
            <surname>Syriani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Gray</surname>
          </string-name>
          , Challenges for addressing quality
          <source>Computer Programming</source>
          <volume>68</volume>
          (
          <year>2007</year>
          )
          <fpage>214</fpage>
          -
          <lpage>234</lpage>
          .
          <article-title>factors in model transformation</article-title>
          , in: Intl. Conf. on [26]
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Kurtev</surname>
          </string-name>
          ,
          <article-title>Transforming models with Software Testing, Verification and Validation</article-title>
          , IEEE, ATL, in: Intl.
          <source>Conf. on Model Driven Engineering</source>
          <year>2012</year>
          , pp.
          <fpage>929</fpage>
          -
          <lpage>937</lpage>
          .
          <source>Languages and Systems</source>
          , Springer,
          <year>2005</year>
          , pp.
          <fpage>128</fpage>
          -
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>C. M. Gerpheide</surname>
            ,
            <given-names>R. R.</given-names>
          </string-name>
          <string-name>
            <surname>Schifelers</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Serebrenik</surname>
            ,
            <given-names>A</given-names>
          </string-name>
          138.
          <article-title>bottom-up quality model for QVTO</article-title>
          , in: Int. Con- [27]
          <string-name>
            <given-names>G.</given-names>
            <surname>Hinkel</surname>
          </string-name>
          ,
          <article-title>An NMF solution to the families to perference on the Quality of Information</article-title>
          and Commu- sons
          <source>case at the TTC</source>
          <year>2017</year>
          , in: TTC@STAF, volume nications Technology, IEEE,
          <year>2014</year>
          , pp.
          <fpage>85</fpage>
          -
          <lpage>94</lpage>
          .
          <year>2026</year>
          of CEUR Workshop Proceedings,
          <year>2017</year>
          , pp.
          <fpage>35</fpage>
          -
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>K.</given-names>
            <surname>Lano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Maroukian</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. Y.</given-names>
            <surname>Tehrani</surname>
          </string-name>
          ,
          <source>Case study: 39</source>
          . Fixml to Java, C# and C++, in: TTC@STAF,
          <year>2014</year>
          , [28]
          <string-name>
            <given-names>A.</given-names>
            <surname>Zündorf</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Weidt</surname>
          </string-name>
          , The sdmlib solution to the pp.
          <fpage>2</fpage>
          -
          <lpage>6</lpage>
          .
          <article-title>TTC 2017 families 2 persons case</article-title>
          , in: TTC@STAF,
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>S.</given-names>
            <surname>Getir</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. A.</given-names>
            <surname>Vu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Peverali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Strüber</surname>
          </string-name>
          , T. Kehrer, volume
          <volume>2026</volume>
          <source>of CEUR Workshop Proceedings</source>
          ,
          <year>2017</year>
          ,
          <article-title>State elimination as model transformation problem</article-title>
          , pp.
          <fpage>41</fpage>
          -
          <lpage>45</lpage>
          . in: TTC@STAF,
          <year>2017</year>
          , pp.
          <fpage>65</fpage>
          -
          <lpage>73</lpage>
          . [29]
          <string-name>
            <given-names>T.</given-names>
            <surname>Horn</surname>
          </string-name>
          ,
          <article-title>Solving the TTC families to persons case</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>S.</given-names>
            <surname>Götz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tichy</surname>
          </string-name>
          , T. Kehrer,
          <article-title>Dedicated model trans- with funnyqt</article-title>
          ,
          <source>in: TTC@STAF</source>
          , volume
          <volume>2026</volume>
          <source>of formation languages vs. general-purpose languages: CEUR Workshop Proceedings</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>47</fpage>
          -
          <lpage>51</lpage>
          .
          <article-title>A historical perspective on ATL vs</article-title>
          . Java., in: MOD- [30]
          <string-name>
            <given-names>L.</given-names>
            <surname>Samimi-Dehkordi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Zamani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. K.</given-names>
            <surname>Rahimi</surname>
          </string-name>
          , SolvELSWARD,
          <year>2021</year>
          , pp.
          <fpage>122</fpage>
          -
          <lpage>135</lpage>
          .
          <article-title>ing the families to persons case using evl+strace,</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>S.</given-names>
            <surname>Höppner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Kehrer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tichy</surname>
          </string-name>
          , Contrasting dedi- in
          <source>: TTC@STAF</source>
          , volume
          <volume>2026</volume>
          <source>of CEUR Workshop cated model transformation languages vs. general Proceedings</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>54</fpage>
          -
          <lpage>62</lpage>
          .
          <article-title>purpose languages: A historical perspective</article-title>
          on ATL [31]
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. Di</given-names>
            <surname>Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          ,
          <string-name>
            <surname>R. F. vs.</surname>
          </string-name>
          <article-title>Java based on complexity and size, Software and Paige, Diferent models for model matching: An Systems Modeling (</article-title>
          <year>2021</year>
          ).
          <article-title>To appear. analysis of approaches to support model diferenc-</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>A.</given-names>
            <surname>Nugroho</surname>
          </string-name>
          ,
          <article-title>Level of detail in UML models and ing</article-title>
          , in: ICSE Workshop on Comparison and
          <article-title>Verits impact on model comprehension: A controlled sioning of Software Models</article-title>
          ,
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          ,
          <year>2009</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          . experiment, Information and Software Technology [32]
          <string-name>
            <given-names>T.</given-names>
            <surname>Kehrer</surname>
          </string-name>
          , U. Kelter,
          <string-name>
            <given-names>P.</given-names>
            <surname>Pietsch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          ,
          <source>Adapt51</source>
          (
          <year>2009</year>
          )
          <fpage>1670</fpage>
          -
          <lpage>1685</lpage>
          .
          <article-title>ability of model comparison tools</article-title>
          , in: Intl. Conf. on
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <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>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Hu</surname>
          </string-name>
          ,
          <source>Feature-based Automated Software Engineering, ACM</source>
          ,
          <year>2012</year>
          , pp.
          <source>classification of bidirectional transformation ap- 306-309</source>
          . proaches,
          <source>Software &amp; Systems Modeling</source>
          <volume>15</volume>
          (
          <year>2016</year>
          ) [33]
          <string-name>
            <given-names>T.</given-names>
            <surname>Kehrer</surname>
          </string-name>
          , U. Kelter,
          <string-name>
            <given-names>G.</given-names>
            <surname>Taentzer</surname>
          </string-name>
          ,
          <article-title>A rule-based ap907-928. proach to the semantic lifting of model diferences</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>A.</given-names>
            <surname>Schürr</surname>
          </string-name>
          ,
          <article-title>Specification of graph translators with in the context of model versioning</article-title>
          , in: Intl. Conf.
          <article-title>triple graph grammars</article-title>
          ,
          <source>in: Intl. Workshop on on Automated Software Engineering, IEEE</source>
          ,
          <year>2011</year>
          , Graph-Theoretic Concepts in
          <source>Computer Science</source>
          , pp.
          <fpage>163</fpage>
          -
          <lpage>172</lpage>
          . Springer,
          <year>1994</year>
          , pp.
          <fpage>151</fpage>
          -
          <lpage>163</lpage>
          . [34]
          <string-name>
            <given-names>C.</given-names>
            <surname>Brun</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pierantonio</surname>
          </string-name>
          , Model diferences in the
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>H.-S.</given-names>
            <surname>Ko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Zan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Hu</surname>
          </string-name>
          ,
          <article-title>Bigul: a formally veri- eclipse modeling framework, UPGRADE, The Euifed core language for putback-based bidirectional ropean Journal for the Informatics Professional 9 programming</article-title>
          , in: SIGPLAN Workshop on Partial (
          <year>2008</year>
          )
          <fpage>29</fpage>
          -
          <lpage>34</lpage>
          . Evaluation and
          <string-name>
            <given-names>Program</given-names>
            <surname>Manipulation</surname>
          </string-name>
          ,
          <year>2016</year>
          , pp.
          <fpage>61</fpage>
          -
          <lpage>72</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>