<!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>A Generic Framework for Analyzing Model Co-Evolution</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Sinem Getir</string-name>
          <email>sinem.getir@informatik.uni-stuttart.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michaela Rindt</string-name>
          <email>mrindt@informatik.uni-siegen.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Timo Kehrer</string-name>
          <email>kehrer@informatik.uni-siegen.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Reliable Software Systems, University of Stuttgart</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Software Engineering Group, University of Siegen</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>12</fpage>
      <lpage>21</lpage>
      <abstract>
        <p>Iterative development and changing requirements lead to continuously changing models. In particular, this leads to the problem of consistently co-evolving different views of a model-based system. Whenever one model undergoes changes, related models should evolve with respect to this change. Domain engineers are faced with the huge challenge to find proper co-evolution rules which can be finally used to assist developers in the co-evolution process. In this paper, we propose an approach to learn about co-evolution steps from a given co-evolution history using an extensive analysis framework. We describe our methodology and provide the results of a case study on the developed tool support.</p>
      </abstract>
      <kwd-group>
        <kwd>Model-driven engineering</kwd>
        <kwd>model evolution</kwd>
        <kwd>multi-view modeling</kwd>
        <kwd>model co-evolution</kwd>
        <kwd>model synchronization</kwd>
        <kwd>model differencing</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>The multi-view paradigm is a well-established methodology to manage
complexity in the construction of large-scale software systems. In Model-driven
Engineering (MDE), this paradigm leads to the concept of multi-view modeling; different
modeling notations are used to describe different aspects such as structure,
behavior, performance, reliability etc. of a system.</p>
      <p>
        Iterative development and changing requirements lead to continuously
changing models. Consequently, this entails the special challenge to consistently
coevolve different views of a system [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. In practice, this challenge usually appears
as a synchronization problem; different (sub-)models, each of them representing
a dedicated view on the system, are usually edited independently of each other.
This occurs if they are assigned to different developers or due to the fact that a
developer concentrates on a single aspect at a specific point of time [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Thus,
changes to one model must be propagated to all related models in order to keep
the views synchronized and to avoid inconsistencies.
      </p>
      <p>
        We assume a setting as shown by the bottom-left part of Figure 1, the
terminology is partly adopted from related work on model synchronization and model
co-evolution [
        <xref ref-type="bibr" rid="ref5 ref6">5, 6</xref>
        ]: A source model Msrc,n is related to a target model Mtgt,n
via traces. A source model is the model that undergoes changes and a target
model is the model to which these changes have to be propagated. Finally, a
trace is a relationship between elements in these two different models. Forward
propagation (fwPrpg ) denotes the migration of the target model in response to
changes occurring in the source model. Backward propagation (bwPrpg ) denotes
the migration of the source model in response to changes occurring in the
target model. We refer to both kinds of propagations as co-evolution steps. From
a technical point of view, co-evolution steps can be (semi-)automated via
bidirectional model transformations. We call the transformation rules from which
propagation rules can be derived as co-evolution rules.
      </p>
      <p>
        However, due to the multitude of different modeling notations, the manual
specification of co-evolution rules is a tedious and challenging task. Domain
engineers, who have to find proper co-evolution rules, are faced with two essential
questions: (1) Do certain changes on a source model correlate with changes on
the target model? (2) If so, how are the changes coupled with each other? There
are several domains for which no simple and straightforward co-evolution exists.
The only viable solution is to pre-define possible co-evolution rules which can be
offered to developers as possible options. For instance, this is the case for software
architecture and quality of service models [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. In Section 2, we introduce software
architecture models and state charts as another example of co-evolving models
which demonstrates the aforementioned research questions. We use the same
example to serve as a running example throughout the paper.
      </p>
      <p>This paper reports on our ongoing work on the semi-automated co-evolution
of models of arbitrary source and target domains. The general process is
illustrated by Figure 1. We propose to observe the co-evolution history in order to
learn about developer decisions and to finally predict the co-evolution steps with
a certain degree of probability. The more evolution steps are analyzed, the more
accurate prediction results are expected. The contribution of this paper is the
coevolution analysis framework which serves as a foundation for this co-evolution
process. The analysis results can be used to generate co-evolution rules for a
recommender system to interactively support model co-evolution. We describe our
approach in Section 3. Tool support and early evaluation results which
demonstrate the feasibility of our approach are briefly discussed in Section 4. Related
work is analyzed in Section 5. We draw some conclusions and give an outlook
on future work in Section 6.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Co-Evolution of Multi-View</title>
    </sec>
    <sec id="sec-3">
      <title>Models</title>
      <p>Component diagrams and state charts are widely used notations to model
structure and behavior in component-based software engineering. Intuitively, there
are several relations between model elements of both views. For example, every
state usually has a relation to a component, not necessarily the other way round.
Transitions between states somehow reflect the interfaces and connections of the
corresponding components in the component diagram. The hierarchy of
composite states is expected to correspond to the hierarchical structure of components
and their respective sub-components. Despite those rather intuitive relationships,
consistently co-evolving both views is not a straight forward process, which is
illustrated by the following example.</p>
      <p>Customer</p>
      <p>Reservation
Payment</p>
      <p>Booking
Cancellation</p>
      <p>Trace
Trace
Trace
Trace</p>
      <p>Check Room
[Available/Yes]
3
2
[Available/No]</p>
      <p>Reservation
Book Room</p>
      <p>Pay the bill
1</p>
      <p>6 ?
Cancel
4
5
components, namely Customer, Booking and Payment. Relations between
corresponding states and components are explicitly given by trace links. The system
evolves at some point of time because it requires a new function to cancel a
reservation process. In general, we assume that models are edited by means of
a set of language-specific edit operations. An edit step invokes an edit operation
and supplies appropriate actual parameters, which are also referred to as
arguments. In our example, the revised version of the component model is obtained
in three edit steps, namely the creation of the component Cancellation and two
connectors. The new component and its connections to other components are
highlighted in Figure 2 by doubled lines.</p>
      <p>State chart elements printed in doubled lines indicate the developer’s
intention of co-evolution steps in response to the changes in the component diagram
(1,2). We discuss several additional co-evolution steps which are possible on the
state chart (Mtgt) in response to the changes in the component diagram (Msrc).
Note that these co-evolution steps are only assumptions which are based on
domain knowledge, they are not meant to be a result of an empirical analysis.</p>
      <p>Elements printed in dotted lines represent expected co-evolution steps which
are, however, not intended by the user (3,4,5). Finally, a dotted line with spiral
indicates an unexpected co-evolution step which is nonetheless intended by the
user (6). We do not claim the set of possible options (1)-(6) to be complete.
Nevertheless, it demonstrates the huge challenge of predicting the proper
coevolution steps:
– As the component Cancellation is added as a sub-component of reservation,
a new state called Cancel is expected to be created as a sub-state of the
corresponding composite state Reservation.
– The creation of transition (1) is expected due to the creation of port and
interface relations of the corresponding components in the component model.
– Although there is no explicit relation between the components Cancellation
and Customer, the creation of transition (2) is expected. Because the newly
created relation between the composite component Reservation and the
toplevel component Customer, as a result of the creation of Cancellation.
However, the new component may lead to an interaction between the components
Booking and Customer indirectly via interfaces as well, therefore we should
also consider the transition (3) with a small expectation.
– The required information for the proposed transitions (4) and (5) cannot be
gathered from the component diagram. However, taking general state chart
semantics into account, they can be presented to the developer as a possible
option.
– Finally, we point out transition (6). The developer wants to create a loop
between the states Book Room and Cancel which cannot be clearly
anticipated from the component diagram since we observe only one direction for
communication. Nonetheless, this option can be offered to the developer with
a low probability.</p>
      <p>We can conclude that each edit step on the component model may lead to
many arbitrary co-evolution steps on the state chart. Some forward propagations
can be expected with a high probability based on the changes in the component
diagram, others can only be offered as a set of possible choices.
3</p>
    </sec>
    <sec id="sec-4">
      <title>Co-Evolution Analysis Framework</title>
      <p>In Section 2, we have demonstrated a running example as a motivation of our
analysis framework. We have presented possible co-evolution steps and observed
that there are highly expected, less expected and unexpected changes for state
charts when the component diagram evolves.</p>
      <p>To study such changes and their relations, our co-evolution analysis
framework takes a co-evolution history as illustrated by Figure 1 as input. Each pair
of successive versions i → i + 1 from the given history is referred to as evolution
scenario evi→i+1. We assume that the co-evolution history includes consistent
views for every evolution scenario. We further assume a model differencing
engine to be available, which, given a set of possible edit operations for instances
of a meta-model M M and successive model versions Mi and Mi+1, calculates a
difference diff(Mi, Mi+1). A difference diff(Mi, Mi+1) is defined to be a partially
ordered set of edit steps s1 . . . sk. We finally offer two kinds of analysis
functions; the correlation analysis is described in Section 3.1, the additional coupling
analysis is presented in Section 3.2.
3.1</p>
      <p>Correlation Analysis
We use the well-known Pearson correlation coefficient to assess the dependency
between edit operations which are applicable to the source and target models.
The basic processing steps of our correlation analysis are shown by Figure 3.
For each evolution scenario evi→i+1 of the co-evolution history, we first compute
the differences diff(Msrc,i,Msrc,i+1) and diff(Mtgt,i,Mtgt,i+1). Subsequently, we
count the edit steps contained by each of the obtained differences and group
them by evolution scenarios and edit operations invoked by the respective edit
steps. The sets of edit operations, which are available for instances of M Msrc
and M Mtgt, are given as additional input parameters of the correlation analysis.</p>
      <p>Based on the calculated differences, we basically construct two matrices. For
source model changes, we construct an e-×-s matrix where e denotes the number
of evolution scenarios in the history (i.e., e = n−1), s denotes the number of edit
operations available for instances of M Msrc. A variable ai,j (i ∈ {1, ..., e}, j ∈
{1, ..., s}) represents the number of edit steps of type j (i.e. edit steps invoking
edit operations represented by j, e.g. createComponent in our running example)
in evolution scenario i. Analogously, an e-×-t matrix is being constructed for
target model changes, where t denotes the number of edit operations available
for instances of M Mtgt.</p>
      <p>Let X = hx1, x2, ..., xei be a column vector of the e-×-s matrix, and Y =
hy1, y2, ..., yei be a column vector of the e-×-t matrix. Then we can compute the
Pearson correlation coefficient rX,Y for each combination of column vectors X
and Y in order to quantify the linear relationship between edit operations that
have been applied to the source and target models.
The correlation analysis has the advantage that it only requires the source and
target models of each evolution scenario evi→i+1. Thus, this approach can also
be applied to study the co-evolution history in cases where no explicit trace
links between the observed source and target model exist. However, a
correlation between edit operations does not imply that the respective edit steps are
actually coupled. In other words, they can have a dependency by coincidence
such that none of the involved arguments are actually related by a trace. Hence,
we also provide a second analysis function which is capable of identifying coupled
changes. Such an analysis can provide knowledge about user’s modeling
intentions enhancing correlation analysis results, for example learning of the loop
intention by the user, as provided in Figure 2 with transition (6).
In general, a coupled change identifies a pair of edit steps which have
happened in the same evolution scenario. It also identifies the changed model
elements which are connected (either directly or indirectly) to each other and were
not just coincidentally changed in the same evolution scenario. We assume here
that trace links identify related model elements of the source and target model.
These are, together with the model differences for each evolution scenario,
provided as additional input parameters of the coupling analysis (see Figure 4).</p>
      <p>Let args(s) be the set of arguments of an edit step s. Basically, a pair of edit
steps (ssrc, stgt) is considered to be a coupled change, if we can find a pair of
arguments (asrc, atgt), with asrc ∈ args(ssrc) and atgt ∈ args(stgt), which are
connected via a trace link.</p>
      <p>Additionally, domain-specific trace impact
patterns can be specified as optional inputs of Trace
the coupling analysis. These patterns allow
to extend the search for coupled edit steps cc st
to the “neighborhood” of elements which are
directly connected by a trace link. Consider Trace
for instance our running example shown in
Figure 2. Here, trace links are only provided
for related states and components. However, Fig. 5. Example of a trace impact
component connectors and state transitions pattern
are also to be considered as related if the connected components/states are
related. This can be specified by a trace impact pattern as shown in Figure 5, i.e.
the component connector labelled as cc and the state transition labelled as st
are implicitly related. Consequently, a pair of edit steps modifying occurrences
of cc and st, respectively, are to be considered as coupled.</p>
      <p>Coupled changes are summarized over all evolution scenarios of the history
as follows: We construct a s-×-t matrix where s denotes the number of edit
operations available for instances of M Msrc and t denotes the number of edit
operations available for instances of M Mtgt. A variable ai,j (i ∈ {1, ..., s}, j ∈
{1, ..., t}) is computed as the fraction of coupled edit steps of types i and j (i.e.
edit steps invoking edit operations represented by i and j, respectively) with
respect to all edit steps of type i being observed in the source model history.
4</p>
    </sec>
    <sec id="sec-5">
      <title>Tool Support</title>
      <p>
        We have prototypically implemented the analysis framework proposed in
Section 3 on the widely used Eclipse Modeling Framework (EMF) and the model
differencing engine SiLift [
        <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
        ]. It is made available to the general public at the
SiLift website1 in order to enable other researchers to study the co-evolution of
any EMF-based models.
      </p>
      <p>
        Adaption of the generic framework. In order to adapt the generic framework to
new modeling languages, i.e., to adapt it to a given source and target domain,
one has to configure the SiLift differencing tool chain. Primarily, suitable edit
operations for the source and target domain have to be provided. In SiLift, we
use the model transformation language and system Henshin [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] to implement
edit operations as declarative transformation rules, to which we refer to as edit
1 http://pi.informatik.uni-siegen.de/Projekte/SiLift/coevolution.php
rules. Domain engineers can make use of the EMF-based meta-tool SERGe
(SiDiff Edit Rule Generator) [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] in order to generate basic edit rules, which can be
derived from M Msrc and M Mtgt, respectively. Basic edit rules can be
complemented by semantically rich complex edit rules such as refactoring operations.
Typically, many complex edit rules can be composed of basic edit rules generated
by SERGe.
      </p>
      <p>
        Optionally, a set of trace impact patterns can be specified as additional input
for the coupling analysis. Trace impact patterns are also specified in Henshin.
We refer to these pattern specifications as trace impact rules. Trace impact rules
do not implement in-place transformations, but serve as specifications of graph
patterns which are to be found by the Henshin matching engine. Obviously, trace
impact rules have to be specified manually by a domain engineer.
PPU Case Study. In order to demonstrate the feasibility of our approach, we
have adapted the analysis framework to be used in the PPU(Pick and Place
Unit) case study [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], which provides several evolution scenarios of a laboratory
plant. In our previous work [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], we modeled each of the scenarios from two
different viewpoints using two types of modeling languages: A simple architecture
description language (SA) was used to model the system architecture, fault trees
(FT) were used to model undesired system states and their possible causes.
      </p>
      <p>
        All configuration artifacts which are needed to adapt the analysis framework
to SA and FT models are available at the EnSure website2. In summary, we
identified 82 edit rules available for FT models, 69 of them could be generated
with SERGe. For SA models, we identified 42 suitable edit rules of which only
one had to be specified manually, all other 41 edit rules could be generated with
SERGe. In addition, we specified 6 trace impact rules serving as additional input
of the coupling analysis. Consequently, we were able to automatically generate
the results that have been produced by a manual analysis in our previous work
[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
5
      </p>
    </sec>
    <sec id="sec-6">
      <title>Related work</title>
      <p>
        Most approaches to model co-evolution address the migration of different types of
MDE artifacts in response to meta-model adaptions. MDE artifacts which have
to be migrated are, for example, instance models [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], model transformations [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ],
or syntactic and semantic constraints [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        Only a few approaches address the evolution of multi-view models, which is
most often considered as a model synchronization problem. Solutions are often
based on the principle of bidirectional model transformations which are used to
derive incremental change propagation rules, e.g., [
        <xref ref-type="bibr" rid="ref16 ref5 ref6">5, 16, 6</xref>
        ]. Among them, the
approaches of Giese et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and Hermann et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] are based on Triple Graph
Grammars (TGGs). TGG rules describe correspondences between elements of
source and target models together with the according forward and backward
2 http://www.iste.uni-stuttgart.de/rss/projects/ensure/co-evolution
editing behavior. Bergmann et al. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] present a novel type of model
transformation to which they refer to as change-driven transformations. Change-driven
transformations are directly triggered by complex model changes and thus can
be utilized to specify sophisticated co-evolution patterns. A similar approach is
presented by Wimmer et al. [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
      <p>In contrast to our approach, TGG rules and change-driven transformations
must be specified manually, whereas we intend to generate our co-evolution
rules. In fact, we believe that existing approaches based on TGGs, change-driven
transformations or similar techniques, can be also supported by our co-evolution
analysis framework. Up to the best of our knowledge, we are not aware of any
approach providing a framework to empirically study co-evolution by analyzing
the history of co-evolving models.
6</p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion and Future Work</title>
      <p>Many approaches for consistently co-evolving models and other related MDE
artifacts have been proposed recently. Some are tailored to fixed source and
target domains while others are more generic and adaptable.</p>
      <p>However, correlation and coupling of changes has not been researched
indepth for many types of co-evolving (sub-)models. In order to close this research
gap, we focus on establishing a co-evolution analysis framework to analyze the
history of co-evolving models of arbitrary types. This will provide the foundation
for synthesizing co-evolution rules in an automated way. Although the analysis
framework still needs some configuration data as input, we conclude from the
PPU case study that this adaption to a dedicated source and target domain can
be done with moderate effort. Currently, the co-evolution rules which we finally
intend to use as input of a co-evolution framework (see Figure 1) still have to
be manually synthesized based on the information which is produced by the
analysis framework. Larger case studies are needed to evaluate how far we can
push the generation of co-evolution rules and how much training data is needed
to derive appropriate co-evolution rules.</p>
      <p>On the one hand, these co-evolution rules can be used to configure existing
model synchronization frameworks in cases of domains where the co-evolution
process can be fully automated. On the other hand, co-evolution rules serve
as basis for a recommender system, which is able to handle semi-automated
co-evolution of models. The latter one is subject to our future work.
Acknowledgments. This work is supported by the DFG (German Research
Foundation) under the Priority Programme SPP1593: Design For Future -
Managed Software Evolution. The authors would like to thank Andr´e van Hoorn,
Matthias Tichy and Lars Grunske for the initial discussions and valuable
reviews.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Arendt</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Biermann</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jurack</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krause</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taentzer</surname>
          </string-name>
          , G.:
          <article-title>Henshin: advanced concepts and tools for in-place emf model transformations</article-title>
          .
          <source>In: Intl. Conf. on Model Driven Engineering Languages and Systems</source>
          , pp.
          <fpage>121</fpage>
          -
          <lpage>135</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Bergmann</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          , R´ath, I., Varro´,
          <string-name>
            <surname>G.</surname>
          </string-name>
          , Varro´,
          <string-name>
            <surname>D.</surname>
          </string-name>
          :
          <article-title>Change-driven model transformations - change (in) the rule to rule the change</article-title>
          .
          <source>Software and System Modeling</source>
          <volume>11</volume>
          (
          <issue>3</issue>
          ),
          <fpage>431</fpage>
          -
          <lpage>461</lpage>
          (
          <year>2012</year>
          ), http://dx.doi.org/10.1007/s10270-011-0197-9
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Demuth</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lopez-Herrejon</surname>
            ,
            <given-names>R.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Egyed</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Supporting the co-evolution of metamodels and constraints through incremental constraint management</article-title>
          .
          <source>In: Intl. Conf. on Model Driven Engineering Languages and Systems</source>
          . pp.
          <fpage>287</fpage>
          -
          <lpage>303</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Getir</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Van Hoorn</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grunske</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tichy</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>Co-evolution of software architecture and fault tree models: An explorative case study on a pick and place factory automation system</article-title>
          .
          <source>In: Intl. Workshop on Non-functional Properties in Modeling: Analysis, Languages, Processes</source>
          . pp.
          <fpage>32</fpage>
          -
          <lpage>40</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Giese</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wagner</surname>
          </string-name>
          , R.:
          <article-title>Incremental model synchronization with triple graph grammars</article-title>
          .
          <source>In: Int. Conf. on Model Driven Engineering Languages and Systems</source>
          , pp.
          <fpage>543</fpage>
          -
          <lpage>557</lpage>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. Hermann,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Ehrig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            ,
            <surname>Orejas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Czarnecki</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            ,
            <surname>Diskin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            ,
            <surname>Xiong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            ,
            <surname>Gottmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Engel</surname>
          </string-name>
          ,
          <string-name>
            <surname>T.</surname>
          </string-name>
          :
          <article-title>Model synchronization based on triple graph grammars: correctness, completeness and invertibility</article-title>
          .
          <source>Software &amp; Systems</source>
          Modeling pp.
          <fpage>1</fpage>
          -
          <lpage>29</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. Herrmannsd¨orfer,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Wachsmuth</surname>
          </string-name>
          , G.:
          <article-title>Coupled evolution of software metamodels and models</article-title>
          .
          <source>In: Evolving Software Systems</source>
          , pp.
          <fpage>33</fpage>
          -
          <lpage>63</lpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Kehrer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kelter</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taentzer</surname>
          </string-name>
          , G.:
          <article-title>A rule-based approach to the semantic lifting of model differences in the context of model versioning</article-title>
          .
          <source>In: Intl. Conf. on Automated Software Engineering</source>
          . pp.
          <fpage>163</fpage>
          -
          <lpage>172</lpage>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Kehrer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kelter</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taentzer</surname>
          </string-name>
          , G.:
          <article-title>Consistency-preserving edit scripts in model versioning</article-title>
          .
          <source>In: Intl. Conf. on Automated Software Engineering</source>
          . pp.
          <fpage>191</fpage>
          -
          <lpage>201</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kehrer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rindt</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pietsch</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kelter</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          :
          <article-title>Generating edit operations for profiled UML models</article-title>
          .
          <source>In: Intl. Workshop on Models and Evolution</source>
          . pp.
          <fpage>30</fpage>
          -
          <lpage>39</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Legat</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Folmer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vogel-Heuser</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Evolution in industrial plant automation: A case study</article-title>
          .
          <source>In: Proc. of IECON</source>
          <year>2013</year>
          . IEEE (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Mens</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wermelinger</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ducasse</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Demeyer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hirschfeld</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jazayeri</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>Challenges in software evolution</article-title>
          .
          <source>In: Intl. Workshop on Principles of Software Evolution</source>
          . pp.
          <fpage>13</fpage>
          -
          <lpage>22</lpage>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Ruhroth</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          , Ga¨rtner,
          <string-name>
            <given-names>S.</given-names>
            , Bu¨rger, J., Ju¨rjens, J.,
            <surname>Schneider</surname>
          </string-name>
          ,
          <string-name>
            <surname>K.</surname>
          </string-name>
          :
          <article-title>Versioning and evolution requirements for model-based system development</article-title>
          .
          <source>In: Intl. Workshop on Comparison and Versioning of Software Models</source>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Taentzer</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mantz</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lamo</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Co-transformation of graphs and type graphs with application to model co-evolution</article-title>
          . In: Graph Transformations, pp.
          <fpage>326</fpage>
          -
          <lpage>340</lpage>
          . Springer (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moreno</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vallecillo</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Viewpoint co-evolution through coarsegrained changes and coupled transformations</article-title>
          . In: Objects, Models, Components, Patterns - 50th
          <source>International Conference, TOOLS 2012</source>
          , Prague, Czech Republic, May
          <volume>29</volume>
          -31,
          <year>2012</year>
          . Proceedings. pp.
          <fpage>336</fpage>
          -
          <lpage>352</lpage>
          (
          <year>2012</year>
          ), http://dx.doi.org/10.1007/ 978-3-
          <fpage>642</fpage>
          -30561-0_
          <fpage>23</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Xiong</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Song</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hu</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Takeichi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Synchronizing concurrent model updates based on bidirectional transformation</article-title>
          .
          <source>Software &amp; Systems Modeling</source>
          <volume>12</volume>
          (
          <issue>1</issue>
          ),
          <fpage>89</fpage>
          -
          <lpage>104</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>