<!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>An Adaptable Tool Environment for High-level Differencing of Textual Models</article-title>
      </title-group>
      <contrib-group>
        <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>
        <contrib contrib-type="author">
          <string-name>Christopher Pietsch</string-name>
          <email>cpietsch@informatik.uni-siegen.de</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Udo Kelter</string-name>
          <email>kelter@informatik.uni-siegen.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Daniel Stru¨ber</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Steffen Vaupel</string-name>
          <email>svaupel@informatik.uni-marburg.de</email>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Philipps-Universita ̈t Marburg</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Siegen</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>62</fpage>
      <lpage>72</lpage>
      <abstract>
        <p>The use of textual domain-specific modeling languages is an important trend in model-driven software engineering. Just like any other primary development artifact, textual models are subject to continuous change and evolve heavily over time. Consequently, MDE tool chain developers and integrators are faced with the task to select and provide appropriate tools supporting the versioning of textual models. In this paper, we present an adaptable tool environment for high-level differencing of textual models which builds on our previous work on structural model versioning. The approach has been implemented within the SiLift framework and is fully integrated with the Xtext language development framework. We illustrate the adaptability and practicability of the tool environment using a case study which is based on a textual modeling language for simple web applications.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Model-driven engineering (MDE) is a software development methodology which
has gained a lot of interest in many application domains. Besides the MDA
initiative and related standards promoted by the OMG, the use of textual
domainspecific modeling languages (DMSLs) has emerged as an important trend in
modern MDE. Textual DSMLs typically have a small scope and formalize the
key concepts of a particular domain of interest. Just like any other primary
development artifact, textual models are subject to continuous change and heavily
evolve over time. Consequently, appropriate tools supporting standard
versioning tasks are strongly required, the calculation of a difference between versions
of a model being the most fundamental service.</p>
      <p>
        Selecting a proper versioning tool environment often leads to cost/benefit
considerations: On the one hand, one can use off-the-shelf line-based difference
tools. This option is attractive since these tools are generic in the sense that
they can operate with any kind of textual documents. However, differences are
reported on a low level of abstraction and often fail to report complex model
changes in a meaningful way. On the other hand, there are sophisticated
approaches to structural differencing and merging whose advantages over the
classical line-based proceeding are undisputed [
        <xref ref-type="bibr" rid="ref12 ref25">25,12</xref>
        ]. However, virtually all of these
solutions come at a price: many tool components have to be re-implemented for
each modeling language anew. Considering the large number of different DSMLs
which have to be supported, this often leads to a prohibitive effort.
      </p>
      <p>
        In this paper, we present a flexible tool environment for high-level
differencing of textual models which can be adapted to a new language with moderate
effort. The approach builds on our previous work on structural model versioning
[
        <xref ref-type="bibr" rid="ref16 ref17 ref18">18,17,16</xref>
        ], which was motivated and has been developed in the context of visual
modeling languages. The typical effort to configure a differencing tool ranges
between 1 and 10 days, depending on the size of the meta-model. In this paper,
we focus on the technical extensions required to support textual models. We
argue that a difference tool which is tailored to a given DSML provides significant
improvements over existing line-based difference tools. In particular, complex
restructurings on a model can be detected, and changes are therefore reported
on a higher level of abstraction.
      </p>
      <p>
        The approach has been implemented within the SiLift framework [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. It
uses several tool components which are based on the Eclipse Modeling
Framework (EMF) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and is fully integrated with the Xtext language development
framework [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ]. We illustrate the practicability and adaptability of the tool
environment using a case study which is based on a textual modeling language for
simple web applications.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Case Study and Motivating Example</title>
      <p>In this section, we introduce the case study which will be used to illustrate our
approach. The textual modeling language called SWML is introduced in Sec. 2.1.
A scenario which describes typical restructurings and improvements on a sample
SWML model is described in Sec. 2.2.
2.1</p>
      <sec id="sec-2-1">
        <title>SWML: Simple Web Modeling Language</title>
        <p>
          The Simple Web Modeling Language (SWML) is a textual DSML which aims at
defining platform-independent models for a specific kind of web applications. The
language has been originally introduced in [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], which also describes a
transformation tool chain for generating web applications using standard web development
technologies. In this paper, we use the SWML as defined in [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. In order to keep
the paper self-contained, we give an informal description of the SWML abstract
syntax:
        </p>
        <p>
          A WebModel consists of two parts: the DataLayer and the HypertextLayer. The
data layer models the application data following basic principles which are known
from entity-relationship modeling. An Entity (which is actually an entity type)
may have Attributes and References (reference types) to other entity types.
Predefined SimpleTypes can be used in attribute declarations. The hypertext layer
defines how to present the data using web pages. A Page is either a StaticPage
having a fixed content, or a DynamicPage which presents data related to a
dedicated entity type. There are two types of dynamic pages: an IndexPage lists the
instances of a certain entity type, while a DataPage shows concrete information
on a specific entity. The structure of the hypertext layer can be modeled by Links
connecting two pages. One of the pages can be declared to be the starting page
of the application.
SWML models can be conveniently defined using a textual notation. An example
model called VehicleRentalCompany taken from [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] is shown in Fig. 1. Version v1
on the left comes from an early development stage and is used in [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] to illustrate
and evaluate quality assurance techniques on textual models. Using metrics and
smells as indicators for quality issues concerning the quality aspect completeness,
model version v1 is improved to become version v2 on the right-hand side of Fig. 1
by applying the following refactorings and manual changes:
1. The smell “No Dynamic Page” for entity type Customer is eliminated by the
application of refactoring “Insert Dynamic Pages”: Two dynamic pages (an
index page and a data page) referencing entity type Customer are inserted
into the hypertext layer. Moreover, the inserted data page is linked by the
index page which is in turn linked by the starting page.
2. The smell “Missing Data Page” for index page agencyindex is eliminated by
the application of refactoring “Add Data Page to Index Page”: A data page
which shows Agency entities and which is linked by the index page agencyindex
is inserted.
3. In order to eliminate the smell ”Empty Entity“, a new reference address is
inserted for entity type Agency.
4. Finally, some missing information is supplemented: A new entity type
BankAccount which is referenced by entity type Customer is added to the data layer.
Moreover, an attribute postalcode is inserted for entity type Address, attributes
manufacturer and power are inserted for entity type Car.
        </p>
        <p>
          The result of comparing the initial model v1 and its improved revision v2
using the Eclipse built-in textual diff utility is shown in Fig. 1. Similar results are
obtained using other graphical difference tools such as Meld [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] or KDiff3 [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ].
The textual output produced by the UNIX diff utility [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] reports 8 deletions
and 23 insertions of lines of text. These examples illustrate that the line-based
approach fails to explain the improvements on our sample SWML model in an
adequate way.
3
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>High-level Differencing of Textual Models</title>
      <p>In this section, we briefly review our approach to high-level model differencing.
Next, we describe how to extend the approach and tooling to textual models and
finally present our reference implementation which is based on standard Eclipse
Modeling technologies and fully integrated with Xtext.
3.1</p>
      <sec id="sec-3-1">
        <title>Approach</title>
        <p>
          In [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], we introduce an approach to high-level differencing which works on
a structural representation of two model versions v1 and v2 which are to be
compared. A model is conceptually regarded as typed, attributed, directed graph
which is known as the abstract syntax graph (ASG) of this model. The difference
calculation basically proceeds in three steps:
1. Initially, a matching procedure identifies corresponding nodes and edges which
are considered to be ”the same“ elements in v1 and v2.
2. Subsequently, a low-level difference is derived. Elements not involved in a
correspondence are considered to be deleted or created, each non-identical
attribute value of corresponding elements is considered to be updated.
3. Finally, an operation detection algorithm recognizes executions of edit
operations in the low-level difference. The available edit operations are provided
as additional input parameter, each operation has to be formally specified as
a transformation rule in the model transformation language Henshin [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
        <p>Similar to the UNIX diff utility, a calculated difference Δ(v1, v2) is a
description of how model v1 can be edited to become revision v2 in a step-wise
manner. However, the available edit operations are defined on the ASG which
enables us to report edit steps on a much higher level of abstraction. In principle,
any language-specific restructuring operation can be supported as long as it can
be specified in a Henshin transformation rule. In other words, we consider the
effect of an edit step as an in-place model transformation which is formally
specified as a declarative transformation rule to which we refer as edit rule. Thus,
the set of available edit operations can be specifically tailored for a given
modeling language. An example edit rule for SWML models is briefly explained in
Appendix B.</p>
        <p>
          Since the approach presented in [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ] has been developed in the context of
visual modeling languages, it assumes the allowed types of nodes and edges of
an ASG to be defined by a meta-model. Nonetheless, although our approach
typically starts with a meta-model, it can be applied to textual DSMLs, too. We
only require a procedure which converts the grammar into a meta-model, e.g. as
presented in [
          <xref ref-type="bibr" rid="ref2 ref28 ref6">2,28,6</xref>
          ].
3.2
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Tool Architecture</title>
        <p>An overview of the core components of a difference tool which implements our
approach is shown in Fig. 2a. Exchangeable components which are typically
provided by an existing MDE environment are colored in light gray.</p>
        <p>The Difference Calculator calculates a difference in a step-wise manner
according to our conceptual approach. Consequently, the sub-components Matcher,
Difference Derivator and Operation Detection Engine are arranged in a pipeline. A
calculated difference is presented to developers in an interactive Difference Presentation
GUI as shown in Fig. 3. A control window on the left lists the edit steps. The
effect of an edit step is explained on the basis of the concrete syntax. To that
end, the original and changed model are displayed in their standard editor on
the right. Selecting an edit step in the control window causes the context of this
edit step to be highlighted in the respective editor windows. In principle, the
GUI can be integrated with any model editor. We only require that the editor
offers an API such that external representation of a model element, i.e. certain
characters, lines of text or text blocks, can be highlighted.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Integration with the Xtext Language Development Framework</title>
        <p>
          An EMF-based reference implementation of our approach is available within the
model versioning framework SiLift [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ]. In this work, we extend the SiLift
framework by an integration with the widely used language development environment
Xtext [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ]. A download option is provided at the accompanying web site of this
paper [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
        </p>
        <p>The adaptation of the algorithmic components is straightforward since an
Ecore-based meta-model can be automatically generated by Xtext. The
integration of the difference presentation GUI is illustrated in Fig. 2b. The GUI
is loosely coupled with generated Xtext editors via the Eclipse Selection Service.
All SiLift sub-windows implement the ISelectionProvider interface and thus report
which conceptual model elements are currently selected. The selection service
notifies registered ISelectionListeners about selection changes induced by a selection
Model
Editor</p>
        <p>Difference
Presentation</p>
        <p>GUI
Difference Calculator</p>
        <p>Matcher</p>
        <p>Difference</p>
        <p>Derivator
SiLift Component</p>
        <p>Existing MDE
Tool Component</p>
        <p>Operation
Detection</p>
        <p>Engine
Edit Operations</p>
        <p>SiLift GUI component
(implements ISelectionProvider)
selection changed</p>
        <p>Eclipse Selection Service</p>
        <p>notify</p>
        <p>Xtext document marker
(implements ISelectionListener)
create marker(s)</p>
        <p>Xtext-based editor
(a) Core difference tool components
(b) Integration with Xtext
provider. Our selection listener implementation is based on the Eclipse marker
framework which can be used to highlight text fragments in textual Eclipse
editors. In order to get the position of a conceptual model element within the
textual representation of a model, we utilize the Xtext contribution to the EMF
adapter mechanism: For each EObject which originates from an Xtext resource,
we get an adapter for this EObject providing access to the corresponding node
of the Xtext parse tree. The nodes in a parse tree provide the required position
information.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Adaptation and Application to SWML</title>
      <p>In this section, we outline the adaptation of our tool environment to the SWML.
An overview of the difference calculation configuration is given in Sec. 4.1.
Finally, Sec. 4.2 presents the results of applying our difference tool which uses this
configuration to the example change scenario of Sec. 2.2.
4.1</p>
      <sec id="sec-4-1">
        <title>Configuration of the Difference Calculation</title>
        <p>Two of the core differencing components of Fig. 2a have to be adapted to SWML,
the matcher and the operation detection engine.</p>
        <p>
          To determine corresponding elements in SWML models, we implemented a
signature-based matching strategy [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] using the Epsilon Comparison Language
(ECL) [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. ECL is a domain-specific language for developing highly customized
model comparison rules, our SWML matching configuration can be found in the
Appendix A. Singleton objects of types WebModel, DataLayer, HypertextLayer are
matched immediately. Names of named model elements (Entity, Attribute, etc.)
are used as unique signature values, i.e. correspondences are established between
equally named elements having the same type. Finally, Link objects representing
hyperlinks between web pages are matched if they connect the same pages, i.e.
if the source and target pages of two links are matched.
        </p>
        <p>
          The specification of edit rules is supported by one of our meta-tools known as
SiDiff Edit Rule Generator (SERGe) [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ]. SERGe derives sets of basic edit rules
from a given meta-model with multiplicity constraints. These sets are complete
in the sense that all kinds of edit rules, i.e. create, delete, move and change
operations, are contained for every node type, edge type and attribute defined
by the meta-model. For SWML, 29 basic edit rules have been generated. In
addition, we manually specified 9 complex edit rules, 5 refactorings which could
be re-used from the EMF Refactor tool environment [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], and 4 evolutionary edit
operations which facilitate frequently recurring editing tasks. As an example, the
edit rule for refactoring ”Add Data Page to Index Page“, which is applied in step
2 of our motivating example of Sec. 2.2, is shown in Appendix B. The complete
set of edit rules is included in the SWML configuration, which is available from
the Eclipse update site at [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
indicated by 1 in Fig. 3) and the new link to this page from the index page
agencyindex (s. marker 2 in Fig. 3) are easy to see in the lower editor window
which shows version v2. In the upper editor window showing version v1, we can
see the context of the respective changes, e.g., data page agencydata has been
inserted in the hypertext layer. In a similar way, one can interactively inspect
the other refactoring ”Insert Dynamic Pages“ (s. change 1 in Sec. 2.2) and the
evolutionary edit steps representing changes 3 and 4 of the change scenario of
Sec. 2.2.
5
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Related Work</title>
      <p>In this section, we briefly review related work regarding the two main aspects
of model difference tools addressed in this paper, namely i) the adaptability
to a new language, and ii) the integration with an MDE environment, thereby
putting a special emphasis on EMF technologies.</p>
      <p>
        Many approaches and tools to model differencing have been proposed
recently, surveys can be found in [
        <xref ref-type="bibr" rid="ref13 ref3">13,3</xref>
        ]. Similar to ours, virtually all of them
work on a structural representation of models. However, only a few of them
are adaptable to a new modeling language and almost all of them use primitive
graph operations such as creating/deleting single nodes/edges as edit operations
for ASGs. The recognition of complex changes such as language-specific
refactorings seems to be supported only by few approaches, e.g. [
        <xref ref-type="bibr" rid="ref21 ref22 ref29">21,22,29</xref>
        ]. A detailed
review of how these approaches differ from ours can be found in [
        <xref ref-type="bibr" rid="ref18 ref19">18,19</xref>
        ]. To the
best of our knowledge, none of them has yet been adapted to textual DSMLs,
which is the main contribution of the tool environment presented in this paper.
      </p>
      <p>
        A dedicated difference presentation GUI is offered by only a few EMF-based
difference tools for models. EMF Compare [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], the currently most widely used
differencing tool for EMF-based models, displays two versions of a model in
parallel in their abstract syntax tree representation. A similar approach is
implemented in EMF Diff/Merge [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and the RSA tool suite [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. The parallel
display largely fails to present complex model changes. Again, to the best of our
knowledge, none of the existing EMF tools can be used with Xtext editors in an
integrated way.
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion and Future Work</title>
      <p>
        In this paper, we presented concepts and a tool environment to flexibly specify
and recognize complex changes in textual models. The tooling, called SiLift, is
based on EMF and tightly integrated with the widely used Xtext framework. It
enables developers to understand complex structural changes in textual models
and is an attractive alternative to traditional line-based difference tools.
Moreover, the obtained differences can be converted to executable edit scripts [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]
serving as a basis for model patching and structural merging [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ].
      </p>
      <p>Obviously, the proposed solutions become more powerful from a practical
point of view if they are tightly integrated into an existing version control system
such as Git or Subversion. We leave such an integration for future work.</p>
    </sec>
    <sec id="sec-7">
      <title>Acknowledgments</title>
      <p>This work was partially supported by the DFG (German Research Foundation)
under the Priority Programme SPP1593: Design For Future - Managed
Software Evolution. Moreover, the authors would like to thank Thorsten Arendt for
providing us the quality assurance scenario of the SWML case study.</p>
      <p>SWML Matching Configuration Implemented in ECL
rule WebModel2WebModel
match l e f t : L e f t ! WebModel
with r i g h t : Right ! WebModel {
compare {</p>
      <p>return t r u e ;
}
}
}
}
// Same f o r DataLayer and H y p e r t e x t L a y e r
// . . .
rule E n t i t y 2 E n t i t y
match l e f t : L e f t ! E n t i t y
with r i g h t : Right ! E n t i t y {
compare {
return l e f t . name = r i g h t . name ;
rule Link2Link
match l e f t : L e f t ! Link
with r i g h t : Right ! Link {
compare {</p>
      <p>return l e f t . srcMatches ( r i g h t ) and l e f t . tgtMatches ( r i g h t ) ;
}
operation Link srcMatches ( o t h e r : Link ) : Boolean {
return s e l f . e C o n t a i n e r . name = o t h e r . e C o n t a i n e r . name ;
}
operation Link tgtMatches ( o t h e r : Link ) : Boolean {
return s e l f . t a r g e t . name = o t h e r . t a r g e t . name ;
}
B</p>
      <p>Listing A-1: SWML Matching Configuration Implemented in ECL</p>
    </sec>
    <sec id="sec-8">
      <title>Refactoring ”Add Data Page to Index Page“</title>
    </sec>
    <sec id="sec-9">
      <title>Implemented in Henshin</title>
      <p>Rule addDataPageToIndexPage(selectedEObject, entityname, New_DataPage, New_Link)
«preserve»
selectedEObject:IndexPage
«preserve»</p>
      <p>entity
«preserve»
:Entity
name=entityname
«create»
entity
links
«create»
New_DataPage:DataPage
name=entityname + "Data"</p>
      <p>pages
«create»</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. Accompanying materials for this paper: http://pi.informatik.uni-siegen.de/projects/SiLift/ocl2015.php;
          <year>2015</year>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Alanen</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Porres</surname>
            ,
            <given-names>I.:</given-names>
          </string-name>
          <article-title>A relation between context-free grammars and meta object facility metamodels</article-title>
          ;
          <source>Technical Report No. 606</source>
          ,
          <string-name>
            <surname>Turku</surname>
            <given-names>Centre</given-names>
          </string-name>
          for Computer Science; 2004
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Altmanninger</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Seidl</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <given-names>A</given-names>
            <surname>Survey On Model Versioning</surname>
          </string-name>
          Approaches; p.
          <fpage>271</fpage>
          -
          <lpage>304</lpage>
          <source>in: Intl. Journal of Web Information Systems</source>
          <volume>5</volume>
          :
          <fpage>3</fpage>
          <string-name>
            <surname>;</surname>
          </string-name>
          <fpage>2009</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <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>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>Henshin: Advanced Concepts and Tools for In-Place EMF Model Transformations</article-title>
          ; in
          <source>: Proc. MoDELS</source>
          <year>2010</year>
          , LNCS 6394, Springer;
          <fpage>2010</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Arendt</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Taentzer</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Weber</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Quality Assurance of Textual Models within Eclipse using OCL and Model Transformations; in: Proc. OCL @ MoDELS; 2013</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Bergmayr</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Generating Metamodels from Grammars by Chaining Translational</article-title>
          and
          <string-name>
            <surname>By-Example Techniques</surname>
          </string-name>
          ; in
          <source>: Proc. MDEBE @ MoDELS; 2013</source>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Brambilla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ; Wimmer,
          <string-name>
            <surname>M.</surname>
          </string-name>
          :
          <article-title>Model-driven software engineering in practice</article-title>
          ; p.
          <fpage>1</fpage>
          -
          <lpage>182</lpage>
          in: Synthesis Lectures on Software Engineering;
          <volume>1</volume>
          (
          <issue>1</issue>
          );
          <fpage>2012</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>8. EMF: Eclipse Modeling Framework; http://www.eclipse.org/emf; 2015</mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>9. EMF Compare; http://www.eclipse.org/emf/compare; 2015</mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>10. EMF Diff/Merge; http://eclipse.org/diffmerge; 2015</mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. EMF Refactor; https://www.eclipse.org/emf-refactor;
          <year>2015</year>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Estublier</surname>
          </string-name>
          , J.;
          <string-name>
            <surname>Leblang</surname>
          </string-name>
          , D.;
          <string-name>
            <surname>van der Hoek</surname>
          </string-name>
          , A.;
          <string-name>
            <surname>Conradi</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ; Clemm,
          <string-name>
            <given-names>G.</given-names>
            ;
            <surname>Tichy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            ;
            <surname>Wiborg-Weber</surname>
          </string-name>
          ,
          <string-name>
            <surname>D.</surname>
          </string-name>
          :
          <article-title>Impact of software engineering research on the practice of software configuration management; p</article-title>
          .
          <source>in 383-430: ACM Trans. on Software Engineering and Methodology</source>
          <volume>14</volume>
          :4;
          <fpage>2005</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. Fo¨rtsch, S.;
          <string-name>
            <surname>Westfechtel</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Differencing and Merging of Software Diagrams - State of the Art</article-title>
          and Challenges; p.
          <fpage>90</fpage>
          -
          <lpage>99</lpage>
          <source>in: Proc. Int. Conf. Software and Data Technologies; 2007</source>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>14. IBM Rational Software Architect; http://www.ibm.com/developerworks/rational/products/rsa; 2015</mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. KDiff3: http://kdiff3.sourceforge.net;
          <year>2014</year>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <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>Ohrndorf</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Sollbach</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Understanding Model Evolution through Semantically Lifting Model Differences with SiLift</article-title>
          ; p.
          <fpage>638</fpage>
          -
          <lpage>641</lpage>
          <source>in: Proc. 28th IEEE Int. Conf. on Software Maintenance; 2012</source>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Kehrer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kelter</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ; Pietsch,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Schmidt</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          : Adaptability of Model Comparison Tools; in
          <source>: Proc. 27th Int. Conf. on Automated Software Engineering; 2012</source>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Kehrer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kelter</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ; Taentzer,
          <string-name>
            <surname>G.</surname>
          </string-name>
          :
          <article-title>A Rule-Based Approach to the Semantic Lifting of Model Differences in the Context of Model Versioning</article-title>
          ; p.
          <fpage>163</fpage>
          -
          <lpage>172</lpage>
          <source>in: Proc. 26th Int. Conf. on Automated Software Engineering; 2011</source>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Kehrer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kelter</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ; Taentzer,
          <string-name>
            <surname>G.</surname>
          </string-name>
          :
          <article-title>Consistency-Preserving Edit Scripts in Model Versioning</article-title>
          ; p.
          <fpage>191</fpage>
          -
          <lpage>201</lpage>
          <source>in: Proc. 28th Int. Conf. on Automated Software Engineering; 2013</source>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Kolovos</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Establishing Correspondences between Models with the Epsilon Comparison Language</article-title>
          ; p.
          <fpage>146</fpage>
          -
          <lpage>157</lpage>
          <source>in: Proc. Intl. Conf. on Model Driven ArchitectureFoundations and Applications; 2009</source>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21. K¨onemann, P.: Capturing the Intention of Model Changes; p.
          <fpage>108</fpage>
          -
          <lpage>122</lpage>
          <source>in: Proc. Int. Conf. on Model Driven Engineering Languages and Systems; 2010</source>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Langer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Brosch</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ; Herrmannsdo¨rfer, M.;
          <string-name>
            <surname>Seidl</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Wieland</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kappel</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>A posteriori operation detection in evolving software models</article-title>
          ; p.
          <fpage>551</fpage>
          -
          <lpage>566</lpage>
          <source>in: Journal of Systems and Software</source>
          <volume>86</volume>
          (
          <issue>2</issue>
          );
          <fpage>2013</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>MacKenzie</surname>
            , D.; Eggert,
            <given-names>P.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Stallman</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Comparing and Merging Files with GNU diff and patch; Network Theory Ltd</article-title>
          .;
          <fpage>2003</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24. Meld: http://meldmerge.org;
          <year>2015</year>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Mens</surname>
          </string-name>
          , T.:
          <article-title>A State-of-the-</article-title>
          <source>Art Survey on Software Merging;</source>
          p.
          <fpage>449</fpage>
          -
          <lpage>462</lpage>
          <source>in: IEEE Trans. Software Eng</source>
          .
          <volume>28</volume>
          :
          <issue>5</issue>
          ;
          <fpage>2002</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Rindt</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kehrer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kelter</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          :
          <article-title>Automatic Generation of Consistency-Preserving Edit Operations for MDE Tools; in:</article-title>
          <source>Proc. Demonstrations Track of MoDELS; 2014</source>
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>27. SiLift project; Semantic Lifting of Model Differences; http://pi.informatik.unisiegen.de/projects/SiLift; 2015</mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kramler</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>Bridging grammarware and modelware; in: Satellite Events at the MoDELS 2005 Conference; 2005</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29.
          <string-name>
            <surname>Xing</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Stroulia</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          :
          <article-title>Refactoring detection based on UMLDiff change-facts queries</article-title>
          ; p.
          <fpage>263</fpage>
          -
          <lpage>274</lpage>
          in: Working Conf. on Reverse Engineering;
          <year>2006</year>
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>30. Xtext; http://eclipse.org/Xtext; 2015</mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>