<!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>New Strategies to Resolve Inconsistencies between Models of Decoupled Tools</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Anne-Thérèse Körtgen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Software Engineering RWTH Aachen University Aachen</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>21</fpage>
      <lpage>31</lpage>
      <abstract>
        <p>Maintaining consistency between models in development processes is a challenging task. Though in software engineering many case tools exist which allow the editing of models and include code generators for reverse or round trip engineering, the source code is edited with specialized development environments. The same holds for other models, such as requirements speci cations or architectures. The editing tools are often decoupled from each other. Additionally, modi cations of the models are performed simultaneously. In this paper, we introduce strategies to resolve inconsistencies by so-called repair actions. The novelty of the strategies is that they specify di erent concurrent ways of coming to a consistent state, not knowing anything about the modi cations a user had applied. Concrete repair actions are derived at runtime based on the consistency rules and the inconsistent parts of the models only. The maintenance tool can maintain additional models' consistency without developing specialized repair actions. One new strategy proposed in this paper in contrast to other approaches is to heal the violated consistency rule or try a similar one.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Inconsistency Management</kwd>
        <kwd>Model Synchronization</kwd>
        <kwd>Incremental Transformation</kwd>
        <kwd>Model-driven Development</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>
        Development processes in engineering disciplines tend to be
highly complex. As a result, the product to be developed
needs to be modeled from multiple interdependent
perspectives and on di erent levels of abstraction. The results of
development activities like requirements de nitions, software
architectures, or implementations in software engineering
are stored in models. Di erent models may overlap, so when
they are edited independently, they may impose constraints
on the system to be developed which are not satis able any
more. Models are then said to be inconsistent to each other
[
        <xref ref-type="bibr" rid="ref29">29</xref>
        ]. The task is to maintain the inter-model consistency
after editing.
      </p>
      <p>
        In literature consistency maintenance of models are also
called inconsistency management [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] or model
synchronization [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] and involves the following tasks [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]: (i) consistency
of dependent models must be checked, (ii) inconsistencies
must be categorized, and (iii) inconsistencies must be
handled, i.e. resolved, ignored, or identi ed only. Reestablishing
consistency is also called reconcilation [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ].
      </p>
      <p>
        Usually, valid statements within model overlappings are
formalized by consistency rules [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. For example, a
consistency rule declares that for each class de nition in a UML
class diagram a corresponding class de nition must exist in
the source code. If a class exists in the diagram but not in
the source code, then the consistency rule is violated. With
the speci cation of consistency rules dependencies between
two or more models are therefore also speci ed. Thus, when
one model is changed and a consistency rule is violated,
then consistency can be reestablished by changing
dependent models analogously (propagation).
      </p>
      <p>
        Many approaches face the problem of inconsistencies by
offering one integrated case tool which performs the tasks of
inconsistency management by direct propagation of changes
to dependent models such as e.g., EclipseUML [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] or
Rational Software Delivery Platform [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. But often there are
several reasons why changes cannot be propagated directly
to depending models: (i) when di erent specialized
heterogeneous tools for a task are used or (ii) when developers are
distributed and edit di erent copies in parallel, so that an
integrated tool cannot observe incremental changes.
Version control systems cannot be used after parallel editing
of the models when dealing with graphical models [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ],
especially if they are stored within binary data: If they are stored
as text les, changes cause often an overall rearrangement
of the text lines. Model transformation approaches [
        <xref ref-type="bibr" rid="ref32 ref4">32, 4</xref>
        ]
transform a source model into a target model. Mostly, these
transformations work batch-wise, i.e., a target model is
generated completely from a source model, thus, changes on the
target model get overridden.
      </p>
      <p>
        Therefore, consistency maintenance should resolve an
inconsistency by propagation of changes on one model to
depending models incrementally and bidirectionally. Incrementality
means that only local changes are made in a model to handle
one inconsistency so that other changes on the model which
were done in the meantime are not overwritten. Also
inconsistency resolution should be made only on request, meaning
that inconsistencies must be tolerated [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. For example, the
user's changes on a model create inconsistencies but the
editing process should not be interrupted, thus, resolving has to
wait until the end of the editing process. As an additional
requirement, interaction with the user is required when
resolution is ambiguous.
      </p>
      <p>
        Triple graph grammars (TGG) [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] were developed for
handling consistency maintenance problems of two models which
are modeled as graphs. The idea is to store ne-grained
n : m-relationships in a correspondence graph between a
source and a target graph and to specify analogous
operations on the three models in so-called triple rules. By
applying triple rules, we may modify coupled models
synchronously, taking their mutual relationships into account.
But also the operations on one model can be performed
independently and based on the triple rule speci cation one can
maintain consistency by applying the corresponding
operations on the other model. TGG approaches basically work
incrementally and bidirectionally.
      </p>
      <p>A problem is that triple rules need to be monotone, i.e.
they only produce new nodes and edges and are not allowed
to delete any. Thus, only inconsistencies caused by
addition of new nodes in one of the models can be resolved by
transforming them into the dependent model (by applying
remaining operations of a triple rule). We would like to call
inconsistencies of that kind category 1 inconsistencies. But
modi cations on one of the models may a ect nodes which
are related to nodes of the other model. It can then happen
that the relationship de ned by the triple rule which was
applied before is not present any more. We would like to
call inconsistencies of that kind category 2 inconsistencies.
In this paper, we introduce strategies to resolve category
2 inconsistencies by so-called repair actions. The novelty
of the strategies is that they specify di erent concurrent
ways of coming to a consistent state, not knowing anything
about the modi cations a user had applied. Concrete
repair actions are derived at runtime based on the consistency
rules and the inconsistent parts of the models only. The
maintenance tool can maintain additional models'
consistency without developing specialized repair actions. One
new strategy proposed in this paper in contrast to other
approaches is to heal the violated consistency rule or try a
similar one.</p>
      <p>This paper is structured as follows: Section 2 presents a
scenario where the maintenance tool is applied. Section 3
introduces some basic concepts of the underlying data
structures, the modeling of consistency rules, and the de nition
of consistency in this setting. In Section 4, the strategies
for nding and resolving category 2 inconsistencies are
presented. Section 5 describes shortly the implementation of
the maintenance tool and the resolving strategies. Related
work is discussed in Section 6 and, nally, Section 7
concludes the paper.</p>
    </sec>
    <sec id="sec-2">
      <title>2. SCENARIO</title>
      <p>
        While the underlying concepts of the maintenance tools are
fairly general and domain-independent, we focus on software
engineering and introduce a sample scenario where UML
class diagrams and source code are maintained consistent.
For designing the structure of a system, UML class diagrams
are well-suited as they abstract from the implementation
details of the system and they are part of static structure
diagrams in the UML. Heterogeneous tools may be used for
creating UML class diagrams and source code, respectively.
In the following, we assume that the UML class diagrams
are maintained by Eclipse [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ] and source code is edited
in Visual Studio [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. We chose to use these applications
for our case study because they were successfully used in
many software projects as modeling tool as well as integrated
software development environment and they are very widely
known.
      </p>
      <p>Figure 1 illustrates how the tool assists in maintaining
consistency when changes are made simultaneously. Three
different versions of the sample UML class diagram and the
corresponding Visual Studio (VS) object model are shown
above and below the dashed line, respectively. The tool
maintains a data structure which contains links for
connecting the two models. These links are represented by ellipses
which are located on the dashed line. Dotted lines are used
to indicate the objects participating in a link1. The
connections of a link to objects in both models base on template
speci cations for corresponding object patterns, e.g. that
UML classes correspond to code classes, UML associations
correspond to attributes in the code owned by corresponding
classes, or UML methods correspond to code methods also
both owned by corresponding classes. Furthermore, arrows
located on the right indicate the directions of change
propagations (structural and attribute changes, respectively).
The gure illustrates a re-design process consisting of three
steps described in the following.</p>
      <p>Initially, the VS object model and the corresponding UML
class diagram are consistent to each other, thus, links
already exist between the objects (see left version in the
gure). They each contain the classes Control and
DataAccessObject and the methods getDBItem and getFileItem which
are elements of latter class. The association data is
represented in the object model as attribute referencing the
corresponding class object as type.</p>
      <p>Secondly, both models are edited simultaneously (see
middle version in the gure). Changes are marked with new
or * in the gure for newly added objects or changed
objects, respectively. To the VS object model only the helping
function helper is added. To the class diagram two further
1Please note that this is a simpli ed notation. Some details
of the link data structure introduced later are omitted and
also not every link is shown.
2.) state= inconsistent
3.) state= consistent
DataAccessObject
+getDBItem()
+getFileItem()</p>
      <p>User changes</p>
      <p>Control
data
Control
data
1.) state= consistent</p>
      <sec id="sec-2-1">
        <title>UML Class Diagram</title>
      </sec>
      <sec id="sec-2-2">
        <title>Visual Studio Object Model</title>
        <p>classes DBAccess and FileAccess are added and the
methods of their super class are distributed among these classes.
Additionally, the method names are generalized to getItem.
The models are now inconsistent but the links still exist.
We see that inconsistencies caused by newly added objects
are category 1 inconsistencies while those caused by changed
objects are category 2 inconsistencies.</p>
        <p>Finally, the maintenance tool is used to synchronize the
parallel work which results in the right versions of the models
in the gure. The newly added objects are added to the
respective other model. The category 2 inconsistencies within
the methods correspondence relation are the non-valid
attribute condition, i.e. the method names are not equal, and
the owning classes of the UML and code methods do not
correspond to each other, respectively. To resolve the
inconsistencies the name change in the UML model is propagated
to the code model and the shift of the methods to di erent
classes in the UML model results in rearrangement of the
references between the class and method objects. What we see
here is, that the basic template speci cation of
corresponding methods are still valid. Please note that there might be
compile errors in the source code after the synchronization.
The example presented above demonstrates the
functionality of the maintenance tool, but it does not show how this
is achieved. In the next sections, the underlying conceptual
approach is presented. The implementation is introduced in
Section 5.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. CONCEPTS OF THE APPROACH</title>
      <p>In our approach, we use typed, directed graphs to represent
the models between which relationships exist. Graphs
consisting of nodes and edges are well suited for representing
complex data with manifold relationships in a natural way.
Also, inter-model relationships can be expressed easily with
nodes and edges referencing related nodes of the graphs. As
another advantage we can use the theory of graph
transformations to de ne modi cations on the graphs. In the
following, the data structures, construction of consistency rules,
and the notion of consistency in this setting are presented.</p>
    </sec>
    <sec id="sec-4">
      <title>3.1 Models as Triple Graphs</title>
      <p>
        For using TGG in complex scenarios where two dependent
models are edited by di erent tools we create graphs from
these models (via tool wrappers) and denote one as source
and the other as target model. Operations on the models
performed by the respective tools are represented as graph
transformations. The data structure storing links between
inter-dependent models is called integration document which
is also modeled as graph.The framework creates an
integrated graph consisting of the three graphs to simplify
speci cation of the triple rules and their application.
In the following, we want to use UML object diagrams to
represent typed graphs and to model triple rules as well.
The graph schemes, therefore, are modeled as UML class
diagrams. To be able to model integration scenarios, we
provide an extension of the UML meta-model [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] by
stereotypes. To illustrate the graph modeling, we use the example
in Figure 2 which shows the graph representation of the
UML class diagram, the VS Object model, and the
integration document from the left situation of Figure 1 with only
one method object.
      </p>
      <p>To model source and target graphs we use the stereotypes
Increment for nodes and Incr2Incr for edges. Source and
target graphs have an underlying graph scheme equivalent to
the respective models's meta-models. This means the graph
schemes of UML class diagrams and source code which we
&lt;&lt;Increment&gt;&gt;</p>
      <p>Control : Class
&lt;&lt;Incr2Incr&gt;&gt;
ownedAttribute
&lt;&lt;Increment&gt;&gt;</p>
      <p>: Property
&lt;&lt;Incr2Incr&gt;&gt;
association
&lt;&lt;Increment&gt;&gt;</p>
      <p>data :</p>
      <p>Association
&lt;&lt;Incr2Incr&gt;&gt;
memberEnd
&lt;&lt;Increment&gt;&gt;</p>
      <p>: Property
&lt;&lt;Incr2Incr&gt;&gt;
class
&lt;&lt;Increment&gt;&gt;
DataAcessObj:</p>
      <p>Class
&lt;&lt;toConSrcIncr&gt;&gt;</p>
      <p>
        &lt;&lt;toConTrgIncr&gt;&gt;
&lt;&lt;toSrcIncr&gt;&gt; &lt;&lt;Link&gt;&gt; &lt;&lt;toTrgIncr&gt;&gt;
: AssocLink
&lt;&lt;Increment&gt;&gt;
data : Property
want to maintain consistent do not di er much from the
meta-model of UML class diagrams speci ed by the OMG
in [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. This makes sense, since they both re ect the
structure of the system. In general, the graph schemes of the
models are di erent. The tool wrappers realize the concrete
type mapping, that is for example the concept of a Class
instance in the graph representation of the UML model is
mapped to an Ecore Class and that of the VS Object Model
is mapped to an instance of the type CodeClass. In
Figure 2, we see that source and target graph contain objects
of concepts of the UML meta-model.
      </p>
      <p>The integration document objects use the stereotype Link to
mark the links. Links refer to increments in source or
target model via UMLLinks (instances of associations). The
increments have to be distinguished according to the graphs
they are contained in, either source or target graph.
Therefore, stereotypes for UMLLinks from links to increments
appear twice, one for increments of the source and one for
increments of the target graph. This is indicated by
sufxes SrcIncr and TrgIncr of the stereotypes' names.
Dependent on whether the increments play the role of a normal
or context increment, they are connected to a link via
UMLLinks with stereotype toSrcIncr, toTrgIncr, toConSrcIncr, or
toConTrgIncr respectively. Increments may play the role of
so called context increments for a link when they de ne some
kind of existent-dependency for a link, i.e. a link relates
increments only if the context increments are connected to
these increments within the models.</p>
      <p>The integration document also has an underlying graph
scheme which models the link types and how they are related
to classes of source and target graph schemes. In Figure 2,
we see that links of type ClassLink and AssocLink are
represented which are used to relate classes or associations in
both models. In this example, the association (source) is
mapped to a property (target).
3.2</p>
    </sec>
    <sec id="sec-5">
      <title>Consistency Rules as Triple Rules</title>
      <p>Association2Attribute_Triple_Rule ::</p>
      <p>LHS as UML OD
&lt;&lt;Increment&gt;&gt;</p>
      <p>: Class</p>
      <p>The left-hand-side (LHS) of the rule is shown above and
speci es that the two classes in each model already exist and
are related to each other via links in the integration
document. The right-hand-side (RHS) shown below speci es the
situation after the rule has been applied meaning that the
association in the source graph, the attribute in the target
graph, the link in the integration document mapping both
onto each other, and the edges embedding these increments
in the existing graphs are created. This triple rule also
speci es an attribute equation shown in the comment attached to
the new link. It states that the increments a and b have the
same names. The RHS is the template which declaratively
speci es the connection pattern for a consistent link.
A rule can also specify restrictions on attributes of the
increments, for example the name of a class aClass could be
restricted by aClass == 'User'. If the restrictions or equations
appear on the LHS they restrict graph pattern matching
allowing only those increments to be matched which ful ll
these constraints. If they appear on the RHS, the constraints
have to be ful lled in any case. When there is no value
speci ed within the rule such as in the triple rule shown above,
a dialog is prompted to enter a value.
As a further example, Figure 4 shows the triple rule which is
applied in the scenario for creating the methods getDBItem
and getFileItem in source and target graph and the links
between them.</p>
      <p>Please note: if asynchronous rules are derived from triple
rules which have equations, attribute values are transferred
into the other model. For example, the forward
transformation of the triple rule shown above sets the attribute's name
to the association name (b.name := a.name), vice versa for
the backward transformation (a.name := b.name).</p>
    </sec>
    <sec id="sec-6">
      <title>3.3 Definition of Consistency</title>
      <p>
        TGG base on Pair Graph Grammars (PGG) [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. Pratt
dened consistency of two graphs based on pair rules: "Two
graphs are consistent i both graphs can be created by
synchronously applying corresponding graph grammar rules on
corresponding nodes."
Of course in real life scenarios a rule modeler has to model
the triple rules for two models edited by (as a general rule)
commercial tools and so it cannot be assumed that he
speci es the complete TGG covering each possible change a tool
can make on one of its models and relates it to changes the
other tool should make so that the models remain
consistent. One can assume that the tools create valid models
according to the models' meta-models so that inner-model
consistency must not be checked.
      </p>
      <p>Although in practice we do not have a complete TGG we
can keep the de nition of consistency of Pratt. We only
regard those structures in the models which can be created
by one of the triple rules. Other increments are ignored;
they also do not make the models inconsistent as there is
no triple rule that would de ne corresponding increments in
the other model.</p>
    </sec>
    <sec id="sec-7">
      <title>4. INCONSISTENCY MANAGEMENT</title>
      <p>
        Our tool performs the three tasks mentioned in [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. In this
section, we only present the check and resolving strategies
for category 2 inconsistencies. A detailed description of the
consistency check and resolution of category 1
inconsistencies can be found in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>The main issues we are dealing with are that we cannot
record the changes an external tool performs on a model and
also that we cannot assume that a rule modeler speci ed
for each operation on a model an equivalent operation on
a dependent model. So, instead of parsing the graph and
nding out the operations which were performed on a model
and to perform equivalent operations on a dependent model,
we decided to take only the already available triple rules into
account and those parts in the model which make a triple
rule inconsistent.</p>
      <p>It is so, that a triple rule speci es declaratively in its RHS
the correspondences of two patterns in source and target
graph. Thus, if the rule is applied, there exist instances of
these patterns (subgraphs) in source and target graph and a
link exists in the integration document referencing the nodes
of these subgraphs. An inconsistency according to a triple
rule is, therefore, that the patterns do not match anymore
or that attribute conditions are violated. Thus, resolution
means to maintain the graphs so that a link referring to
nodes in source and target graphs is valid according to an
RHS of any triple rule, not necessarily the one which was
formerly applied.</p>
      <p>It is important to note that a repair action is allowed to
change only nodes and edges that were originally created by
the applied rule. That does not hold for context increments.
Therefore, a repair action never causes new inconsistencies
for links referenced as context. But of course, other links
having a repaired link in their contexts could be damaged.</p>
    </sec>
    <sec id="sec-8">
      <title>4.1 Inconsistency Check (Category 2)</title>
      <p>For existing links we check if there were modi cations on
their referenced increments by doing pattern matching using
the RHS of the triple rules applied before. Each link in
the integration document has an associated state. When a
link has been newly created by applying a rule, its state is
initially set to consistent. In the analysis, for each link it is
checked whether increments originally referenced by the link
are still present in source and target graphs. If the RHS of
the triple rule does not match any more due to modi cations
of source or target graphs, the state of the link is changed
to damaged. For handling the inconsistency all reasons why
the link got damaged are collected during analysis. Here, all
possibilities for a link to be damaged are listed:
Increments deleted Increments of the source or target
graph which take part in a link have been deleted,
resulting in dangling references of the link. As an example, an
attribute of a class could have been deleted.</p>
      <p>Attribute values changed Attribute values of source or
target increments of a link have been changed so that
attribute conditions do not hold any more. This would be
the case if the attribute of a class in the source code has
been renamed resulting in an inconsistency of the
Association2Attribute-rule because the name of the corresponding
association in the UML class diagram of that attribute and
the attribute's name are no longer equal.</p>
      <p>Edges deleted Edges of the source or target graph being
involved in a link have been deleted, so that the patterns on
both sides are no longer valid. For example, an attribute of
a class in the source code has got another type so that the
edge typeRef from the attribute to the old type is deleted.
Context damaged If a link gets damaged all links referring
to it as context get damaged, too. For example, a link L1
mapping an association onto an attribute refers to two links
as context links, i.e. those links mapping two classes in each
graph onto each other. If one of those links gets damaged,
L1 is damaged, too.</p>
    </sec>
    <sec id="sec-9">
      <title>4.2 Resolution of Inconsistencies (Category 2)</title>
      <p>We now present what can be done in general if damaged
links have been found and list in the following sections graph
transformation strategies. We call these strategies repair
types because we create concrete instances from these
strategies, repair actions, to repair a concrete damaged link with
speci c damages. Applied to a damaged link, a repair action
brings the link back to a consistent state which means that
it resolves the inconsistency.</p>
      <sec id="sec-9-1">
        <title>4.2.1 Delete all increments involved</title>
        <p>The most primitive procedure is to delete the link and all
the increments on both sides, which are involved in the
integration situation. It is obvious that this is suitable only in
situations where all increments of a link have been deleted
by the user in one of the graphs or where one of the main
increments has been deleted. If some increments of a link in
one of the graphs are deleted and others still exist, the
deletion could have been part of a restructuring activity, thus,
deleting all increments is not the reaction the user expected.
Still, it is a valid repair strategy, but one which should never
be executed without prompting the user before.</p>
      </sec>
      <sec id="sec-9-2">
        <title>4.2.2 Remove the link and integrate again</title>
        <p>The next simple possibility is to only delete the damaged link
and to leave the increments on both sides unchanged and to
make them available for other transformation rules. Most
of the time this also does not lead to the desired behavior
of the tool. The modi cations resulting in the damaged
link were probably done on purpose. The link, although
damaged, may contain valuable information to be used, most
importantly, to determine which parts of the graphs may be
a ected by the modi cation which damaged the link. For
example, in the scenario the Operation2Operation rule from
Figure 4 had been applied and the user rerouted the method
getDBItem from the class DataAccessObject to another class
DBAccess, then the rule did not match anymore. The edge
ownedOperation from the class DataAccessObject is missing.
But instead of deleting the link and all references the desired
repair action is to reroute the ownedOperation reference of
the corresponding method in the source code from the class
DataAccessObject to the class DBAccess.
4.2.3</p>
      </sec>
      <sec id="sec-9-3">
        <title>Undo changes of the user</title>
        <p>Another option is to restore consistency by removing the
cause for the inconsistency. For instance, missing
increments or edges may be created. This option is desirable
only in those cases where the operation causing the damage
was carried out accidentally, because it would be undone.
For attribute values, the attribute conditions of the triple
rule can be used to propagate the change.</p>
      </sec>
      <sec id="sec-9-4">
        <title>4.2.4 Define new rule</title>
        <p>This is a trivial solution to handle a damage as for the new
situation a rule is de ned (induced) and attached to the link.</p>
      </sec>
      <sec id="sec-9-5">
        <title>4.2.5 Conserve the applied rule</title>
        <p>
          As the alternatives to repair inconsistencies presented so far
are not very useful from the practical point of view, more
speci c repair types [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] based on knowledge about the
original rules which created the links have to be considered. The
main priority when repairing links is to conserve the rule
that has been originally applied to create the link or to nd
a similar one doing only small adaptations (see below).
Conserving the applied rule in general means to create a
situation where the damaged link refers to increments in
source and target graphs so that all required conditions of
that rule including graph pattern matching are ful lled. As
there can be multiple reasons for a link to get damaged each
single damage has to be healed when trying to conserve the
applied rule. We present in the following sub-strategies to
heal a single occurrence of a damage of the same type, e.g. if
an increment is missing, then a strategy/action is to replace
it. If multiple increments are missing, then there are actions
for each increment to replace it. Of course all occurrences of
all damage types must be healed which results in building
actions of the same and di erent sub-strategies.
A repair can be done by changing or not changing source
and target graphs. Not changing means that only references
within the integration document are adapted assuming that
the user established a consistent state by himself. So,
conserving the applied rule strategy exists in two variants. We
explain what has to be addressed when a rule should be
conserved with and without doing any changes on the graphs.
Conserve the applied rule (changing):
        </p>
        <p>Create increment If an increment is deleted it can
be recreated, thus, this (single) damage is removed,
resulting in an undo-like operation of the user's changes.
Note, this is not a real undo such as in the Undo
changes repair type, because attribute values of the
recreated increment are not reestablished as before the
deletion of the increment.</p>
        <p>Create edge If an edge is deleted it can be recreated
as above. This also is not a real undo, because an edge
which was deleted due to the deletion of an incident
increment which is not part of the rule pattern is not
recreated by this repair.</p>
        <p>Propagate attribute value If an attribute value
changed so that the condition of an attribute equation of
the applied rule does not hold, this repair type changes
attribute values so that the violated attribute
equations hold again. For example, in the scenario of
Figure 1 the rule which maps two methods onto each other
is applied two times. It states that methods a from the
source and b from the target graph referred by a link
must have the same names, here getDBItem and
getFileItem. The user afterwards changed both methods'
names in the UML model having the role of method a
to getItem, there are two possible actions: (i) b.name
:= a.name or (ii) a.name := b.name. The rst would
correspond to a propagation but the system is not able
to determine which value (that of a or b) had changed
by the user, so it suggests both alternatives.</p>
        <p>Change attribute value according to restriction
If an attribute value is changed so that the condition of
an attribute restriction is violated, this repair changes
the attribute value so that the violated attribute
restriction holds again. For example, if the restriction
is aClass.name == 'User' and aClass.name di ers from
this value, then the action aClass.name := 'User' is
proposed. If the restriction is a.card &lt; 10 and a.card is
greater than 10, then the action a.card := 10 - 0,1 is
proposed, where it must be said that the percentage
which is additionally subtracted can be con gured by
the user. Note that, for a greater than (&gt;) relation, a
percentage is added up.</p>
        <p>Include alternative context If increments and edges
of the context of a damaged link are missing, this
repair type adapts references in the integration
document from the damaged link to existing increments and
edges in source or target graph (in one step) to make
the context valid again for the damaged link.
Nevertheless, the repair type is allowed to reassign edges
from the non-context increments to the new context so
that nally changes in the graphs are made. This
repair is applied twice in the scenario of Figure 1 where
the method links rst refer to the same context
increment DataAccessObject in the source code and after the
repair to the alternative context increments DBAccess
and FileAccess, respectively.</p>
        <p>Conserve the applied rule (not changing): Not doing
any changes on the graphs but to heal each single damage is
only possible for deleted increments and edges as they can
be replaced with already existing increments and edges by
adapting the references in the integration document.
Violated attribute conditions cannot be reestablished as this
would mean to change at least one value in the graphs.</p>
        <p>Include alternative increment A deleted increment
can be replaced by an alternative increment which
exists in the respective graph if it is not used by another
link. This increment must ful ll all conditions stated
in the triple rule, as for example attribute restrictions
or connections to other increments via edges.</p>
        <p>Include alternative edge A deleted edge is only a
cause for a damage if its two incident increments still
exist. If not, then this damage is handled by
alternative increment (see above). To nd an alternative
edge for the deleted one means that either one of the
incident increments or both are replaced with
alternatives which exist in the graphs if they are not used
by another link. As for the alternative increment
repair type (see above) these increments have to ful ll
all requirements of the rule.</p>
        <p>Include alternative context This repair type is equal
to the changing version (see above) not being allowed
to do any change on the graphs. Thus, a valid context
is included only if it is already connected as required
to the non-context part of the link.</p>
      </sec>
      <sec id="sec-9-6">
        <title>4.2.6 Apply a similar rule</title>
        <p>The following repair types do not conserve the originally
applied rule but substitute it with a similar one.
Apply a subset rule (changing): A triple rule is a subset
rule of another triple rule if its RHS is a subset of the RHS
of the other rule. If an applied rule is inconsistent, one can
try to look for a subset rule which is still consistent in the
given situation. The applicability of a subset rule is likely as
a subset rule has less conditions which may not have been
a ected by the modi cations of the user. If there exists such
a subset rule which is not damaged, then increments which
not appear in the subset rule but by the damaged rule are
deleted. The situation after the repair is as if the subset rule
had been applied.</p>
        <p>Apply another rule from the same rule group
(changing): Two rules are in the same rule group if they are
ambiguous for a pattern in a graph which means the pattern
can be represented in a dependent graph in two ways. If an
applied rule is damaged it is likely to look for an alternative
rule of the same rule group which is applicable and only
do little adaptations to the graph; in case that some
preconditions for applicability of the rule are not ful lled, their
validity can be enforced with small changes on the graph.
For example, required nodes and edges for the application
of a di erent rule can be created and nodes and edges of the
formerly applied rule which are not used by the alternative
rule can be deleted.</p>
        <p>Apply another rule from the same rule group (not
changing): The same is possible without doing any changes
on the graphs.</p>
        <p>Apply another rule keeping the main increments:
Like alternative rule repair, this repair action searches for
another possible rule which can be applied. But instead of
taking the whole pattern into account, it just searches for
source and target main increments, as a minimal
requirement for an alternative rule application if they still exist.</p>
      </sec>
    </sec>
    <sec id="sec-10">
      <title>5. IMPLEMENTATION</title>
      <p>
        The strategies are implemented in a framework which was
built within the IMPROVE project (1997-2009) [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] at RWTH
Aachen University to rapidly construct consistency
maintenance tools [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] for speci c models and editing tools.
The framework works tool- and model-independent on a
generic graph-based data structure; the model editing tools
are plugged in the framework by using wrappers which
provide the required graph views on the models to the
framework. Triple rules also base on the generic data structure
and have to be de ned for each pair of models to
maintain consistently. Parameterized by the rules the framework
is able to check, to categorize, and to maintain the
consistency incrementally, bidirectionally, and with the work of [
        <xref ref-type="bibr" rid="ref1 ref2">2,
1</xref>
        ] they operate interactively.
      </p>
      <p>For concrete models speci c repair actions (i.e. graph
transformations) for a damaged link are constructed after the
damage check at runtime. The repair actions represent
alternatives to make the link consistent again. They can be
selected and prioritized so that the framework can be
employed for various models and various phases of the
development process with di erent requirements on resolution. We
focus on the implementation of repair actions here, how they
are built and executed.</p>
      <p>A repair action is a concrete instance of a repair strategy
for a category 2 inconsistency of a damaged link realized as
graph transformation with a LHS and a RHS. The LHS and
RHS of a repair action are modeled with Pattern objects
which can be then interpreted at runtime by methods for
pattern search and transformation by a graph
transformation engine.</p>
      <p>repairActions</p>
      <p>«adt»</p>
      <p>RepairAction
-name
-repairType
match,
search.
create,
delete,
change
«adt»</p>
      <p>RepairOption
repairOptions -name
-repairType
-matching
-conflicts
create,
delete,
change
«adt»</p>
      <p>Rule
-conflicts
«adt»
GraphPatternHandling::Pattern
-nodes
-edges
When repair actions are constructed it is not known if they
really are applicable, i.e. if the search pattern has a match in
the graph. If a match is found, then a RepairOption object
is created which denotes a really applicable repair action.
All options are o ered to the user. For each match of the
search pattern found by the graph pattern search engine, the
search pattern is enhanced with concrete matching node and
edges ids of the graph and is now part of one RepairOption
as matching. The repair option only references create, delete,
and change patterns of the corresponding repair action.
To construct a repair action for conserving the originally
applied rule, the patterns are extended step-wise according to
the sub strategies. For example, the enhancement to search
for an alternative context bases on the patterns which are
enhanced with pattern nodes and edges to search for
alternative nodes. Repair actions without sub strategies can be
constructed independently in one step and retrieve the
pattern of the rule which is still intact, the remainder pattern.
To demonstrate how repair actions are created we present as
examples the implementation of the alternative nodes and
context sub strategies. The methods describe how the di
erent pattern objects are enhanced to match alternative nodes
and an alternative context and replace the missing nodes and
damaged context of a link.</p>
      <p>Figure 6 shows the method which retrieves as input
parameters a list2 of already created repair actions ras, the pattern
2Please note that creation of alternative edge repair is done
of the rule rsPattern, and a damage pattern dmgPattern.
The damage pattern contains the missing nodes and edges
as well as those nodes which violate attribute conditions or
restrictions. In this method, all repair actions of ras are
extended. Alternative nodes and edges for the missing nodes
and their incident edges are searched, i.e. they are added to
the search pattern (lines 8 to 14). When the current repair
action is applied all edges from the integration document to
the alternative nodes are created, i.e. those edges are added
to the create pattern (line 17).</p>
      <p>Next, the repair actions are enhanced for searching for an
alternative context. The method shown in Figure 7 is the
changing (c) version and retrieves as input parameters the
repair actions ras of the previous step. In this method, each
repair action is doubled (line 7). One version (ra) searches
for an alternative context group of a missing context node
only in the graph of the missing node with pattern search.
Nodes of the context are only added to the pattern, if the
graph role is equal to the graph role of the missing node
(lines 21 and 22). The other version (ra2) searches for an
alternative context group in all three graphs with pattern
search2. Nodes of the context are all added to this pattern
(line 20). The edges of the alternative context are searched
in ra only if they belong to the same graph as the missing
context (line 27), ra2 searches all edges between the context
nodes (line 25). Edges from the context nodes which points
to other nodes in the same graph as the missing node are
searched in both versions (lines 28 to 30). Those in the other
graphs are created (line 32) and edges to the former context
are deleted (line 33) but only for ra2. The repair action ra
only reassigns edges within the integration document (lines
34 to 36).</p>
      <p>To give an example, we present in Figure 8 the repair action
ra2 which reassigns the operation getDBItem to the other
class DBAccess which plays the role of the alternative
context here. The search (LHS) pattern consists of the
remaining graph with the current node ids. The nodes
DataAccessObj in source and target graph as well as the ClassLink node
between them are the context group which has to be replaced
as the ownedOperation edge between DataAccessObj and
getDBItem in the source graph is missing. The search pattern
is extended by an additional context group, only edges
between that nodes are added and the ownedOperation edge
in the source graph where the edge is missing. The nodes
and edges of the gluing graph K (K = LHS \ RHS) of the
LHS and the RHS are not changed. The create pattern is
the pattern RHSnK and the delete pattern is LHSnK and in
this example the edges in the integration document and the
target graph.</p>
      <p>Generating repair actions at runtime is suitable because
they cannot be all modeled beforehand foreseeing all
possible changes a user can make. But this approach also
implies performance problems when at runtime a set of repair
actions is generated, most of them not being applicable as
required, e.g., required nodes and edges of the search pattern
are not present in the graph.</p>
      <p>Therefore, we optimized the process by introducing phases
before and that multiple repair actions are generated, i.e. 3e
where e is the number of missing edges.
1 List&lt;RepairAction&gt; AlternativeContext_c(
List&lt;RepairAction&gt; ras, Pattern
rsPattern, Pattern dmgPattern) {
2 List&lt;RepairAction&gt; retRas = ras;
3 foreach (RepairAction ra in ras) {
4 Pattern search = ra.GetSearchPattern();
5 Pattern create = ra.GetCreatePattern();
6 Pattern delete = ra.GetDeletePattern();
7 RepairAction ra2 = new RepairAction();
8 retRas.Add(ra2);
9 Pattern search2 = new Pattern(search);
10 Pattern create2 = new Pattern(create);
11 Pattern delete2 = new Pattern(delete);
12 ra2.SetSearchPattern(search2);
13 ra2.SetCreatePattern(create2);
14 ra2.SetDeletePattern(delete2);
15
16
foreach (PatternNode patNode in</p>
      <p>rsPattern.GetNodes())
17 if(dmgPattern.ContainsKey(patNode) &amp;&amp;
rsPattern.IsContext(patNode)) {
18 Pattern ctxtGroup = rsPattern.</p>
      <p>GetContextGroup(patNode);
19 foreach (PatternNode ctxtNode in</p>
      <p>ctxtGroup) {
20 search2.Add(ctxtNode);
21 if(ctxtNode.graphRole.Equals(patNode
.graphRole))
22 search.Add(ctxtNode);
23 foreach (PatternEdge edge in</p>
      <p>rsPattern.GetEdges(ctxtNode))
24 if (ctxtGroup.ContainsKey(edge.</p>
      <p>GetSourceNode() &amp;&amp; ctxtGroup.</p>
      <p>ContainsKey(edge.</p>
      <p>GetTargetNode()) {
25 search2.AddEdge(edge);
26 if (edge.graphRole.Equals(patNode.</p>
      <p>graphRole))
27 search.AddEdge(edge); }
28 else if (edge.graphRole.Equals(</p>
      <p>patNode.graphRole)) {
29 search.AddEdge(edge);
30 search2.AddEdge(edge); }
31 else {
32 create2.AddEdge(edge);
33 delete2.AddEdge(edge);
34 if(IntDocEdgeTypes.ContainsKey(
edge.type))
35 create.AddEdge(edge);
36 delete.AddEdge(edge);}}}}
37 return retRas;
38 }
&lt;&lt;toConSrcIncr&gt;&gt; &lt;&lt;toConTrgIncr&gt;&gt;
&lt;&lt;toSrcIncr&gt;&gt; &lt;&lt;Link&gt;&gt; &lt;&lt;toTrgIncr&gt;&gt;
: ClassLink
where only repair actions for a set of prede ned repair types
are generated and tested. Only if no valid repair action could
be found in one phase, repair actions of another set of repair
types are tested in the next phase. This proved acceptable
runtime behavior. The sets of repair types and the order of
their execution can be con gured by the user. Additionally,
a set of repair types can be speci ed which should be always
tested.</p>
    </sec>
    <sec id="sec-11">
      <title>6. RELATED WORK</title>
      <p>
        There are many approaches handling inconsistencies with
graph transformations. One is, only delete and attribute
propagations or link deletions are supported as with our
approach, e.g. in [
        <xref ref-type="bibr" rid="ref13 ref14 ref37">14, 37, 13</xref>
        ]. Another is, inconsistent
situations are de ned as graph patterns which are searched in
the host graph and graph transformations for their
resolution are speci ed such as in [
        <xref ref-type="bibr" rid="ref10 ref15 ref34 ref35 ref38 ref7">15, 38, 10, 35, 34, 7</xref>
        ] to name a
few. This procedure is very laborious and will never cover all
cases. Additionally, [
        <xref ref-type="bibr" rid="ref37">37</xref>
        ] supports the completion of a
consistency pattern which is analogous to the changing version
of the rule conserving strategy.
      </p>
      <p>
        Since not all kinds of inconsistencies like behavioral
inconsistencies and resolution rules can be expressed easily as graph
transformation rules, there are similar approaches [
        <xref ref-type="bibr" rid="ref18 ref33 ref36">18, 36,
33</xref>
        ] which use logic-based rules to detect and resolve
inconsistencies exempli ed with UML class and sequence diagrams.
Also in these approaches, each inconsistency and each
resolution has to be de ned in advance.
      </p>
      <p>
        A similar dynamic approach is proposed by [
        <xref ref-type="bibr" rid="ref22 ref5 ref6">22, 6, 5</xref>
        ] within
a repair framework where consistency rules are expressed
by rst order logic formulae. In contrast to the other
approaches, repairs are fully generated from these formulae.
For a violated formula a set of sets of repair actions is
generated, each set of repair actions representing an alternative.
A repair action adds, deletes, or changes one model to x
the violated formula or subformula. The alternatives are
presented to the user who selects one for execution. This
approach is similar to ours, but di ers in some ways: the
generated repair actions cannot create model elements and
the modi cations the user had done on one model are known
and used for the generation. Thus, this generation approach
is not immediately ready for inconsistency resolution of
models which are edited by external tools.
      </p>
    </sec>
    <sec id="sec-12">
      <title>7. CONCLUSIONS</title>
      <p>In this paper, novel strategies for resolving inconsistencies
between graph-based models taking into account only
consistency rules speci ed as triple rules and the damaged
subgraphs are presented. The operations which were performed
on a model and lead to the inconsistencies are not
considered as it is assumed that the models are edited by external
tools. Also, resolution is done on request, thus tolerating
inconsistencies. A main principle in resolving inconsistencies
presented here is to conserve the applied rule or to apply a
similar one and do only small adaptations. As discussed, we
think that this is a good option in practice. Not presented in
this paper, but nevertheless mentionable is that based on the
presented strategies multiple alternative repair actions are
derived for one damaged link, even multiple repair actions
for the strategy to conserve the applied rule or to apply a
similar one. Not all are applicable, i.e. required increments
are not available, so that only applicable repair actions are
suggested to the user. In the end, the user picks the repair
action which ts best. This should not be decided by the
tool.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>S. M.</given-names>
          </string-name>
          <article-title>Integratoren zur Konsistenzsicherung von Dokumenten in Entwicklungsprozessen. Berichte aus der Informatik</article-title>
          . Shaker Verlag, Aachen, Germany,
          <year>2007</year>
          . Doktorarbeit, RWTH Aachen University.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>S. M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Herold</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lohmann</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Westfechtel</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <article-title>A Graph-Based Algorithm for Consistency Maintenance in Incremental and Interactive Integration Tools</article-title>
          .
          <source>Software and Systems Modeling (SoSyM) 6</source>
          ,
          <issue>3</issue>
          (
          <year>2007</year>
          ),
          <volume>287</volume>
          {
          <fpage>315</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>S. M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Westfechtel</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <article-title>UML-based De nition of Integration Models for Incremental Development Processes in Chemical Engineering. Integrated Design and Process Science: Transactions of the SDPS 8:1 (</article-title>
          <year>2004</year>
          ),
          <volume>49</volume>
          {
          <fpage>63</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Czarnecki</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Helsen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <article-title>Classi cation of Model Transformation Approaches</article-title>
          .
          <source>In Proc. of the Workshop on Generative Techniques in the Context of Model Driven Architecture (OOPSLA</source>
          <year>2003</year>
          )
          <article-title>(</article-title>
          <year>2003</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Egyed</surname>
            ,
            <given-names>A. Fixing</given-names>
          </string-name>
          <article-title>Inconsistencies in UML Design Models</article-title>
          .
          <source>In Proc. of the 29th Intl. Conf. on Software Engineering (ICSE</source>
          <year>2007</year>
          )
          <article-title>(</article-title>
          <year>2007</year>
          ), IEEE Computer Society, pp.
          <volume>292</volume>
          {
          <fpage>301</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Egyed</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Letier</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Finkelstein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <article-title>Generating and Evaluating Choices for Fixing Inconsistencies in UML Design Models</article-title>
          . In ASE (
          <year>2008</year>
          ), IEEE, pp.
          <volume>99</volume>
          {
          <fpage>108</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Enders</surname>
            ,
            <given-names>B. E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heverhagen</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Goedicke</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , Tropfner, P., and
          <string-name>
            <surname>Tracht</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <article-title>Towards an Integration of Di erent Speci cation Methods by Using the ViewPoint Framework</article-title>
          .
          <source>Transactions of the SDPS 6</source>
          ,
          <issue>2</issue>
          (
          <year>2002</year>
          ),
          <volume>1</volume>
          {
          <fpage>23</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Finkelstein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Spanoudakis</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Till</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <article-title>Managing interference</article-title>
          .
          <source>In Joint Proc. of the 2nd Intl. Software Architecture Workshop (ISAW-2) and Intl. Workshop on Multiple Perspectives in Software Development (Viewpoints</source>
          <year>1996</year>
          )
          <article-title>on SIGSOFT 1996 Workshops (</article-title>
          <year>1996</year>
          ), ACM, pp.
          <volume>172</volume>
          {
          <fpage>174</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9] Fortsch, S., and
          <string-name>
            <surname>Westfechtel</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <article-title>Di erencing and Merging of Software Diagrams - State of the Art and Challenges</article-title>
          .
          <source>In Proc. of the 2nd Intl. Conf. on Software and Data Technologies (ICSOFT</source>
          <year>2007</year>
          )
          <article-title>(Setubal</article-title>
          , Portugal,
          <year>2007</year>
          ),
          <string-name>
            <given-names>J.</given-names>
            <surname>Filipe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Shishkow</surname>
          </string-name>
          , and M. Helfert, Eds., INSTICC.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Hausmann</surname>
            ,
            <given-names>J. H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heckel</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Sauer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <article-title>Extended Model Relations with Graphical Consistency Conditions</article-title>
          . In Jezequel et al. [
          <volume>12</volume>
          ], pp.
          <volume>61</volume>
          {
          <fpage>74</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Hwan</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Czarnecki</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <article-title>Synchronizing cardinality-based feature models and their specializations</article-title>
          .
          <source>In ECMDA-FA</source>
          (
          <year>2005</year>
          ),
          <string-name>
            <given-names>A.</given-names>
            <surname>Hartman</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Kreische</surname>
          </string-name>
          , Eds., vol.
          <volume>3748</volume>
          of LNCS, Springer-Verlag, pp.
          <volume>331</volume>
          {
          <fpage>348</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Jezequel</surname>
            ,
            <given-names>J. M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hu</surname>
            <given-names>mann</given-names>
          </string-name>
          , H., and
          <string-name>
            <surname>Cook</surname>
          </string-name>
          , S., Eds.
          <source>Proc. of the 5th Intl. Conf. on The Uni ed Modeling Language (UML</source>
          <year>2002</year>
          )
          <article-title>(</article-title>
          <year>2002</year>
          ), vol.
          <volume>2460</volume>
          of LNCS, Springer-Verlag.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Allilaire</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bezivin</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Kurtev</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          <article-title>Atl: A model transformation tool</article-title>
          .
          <source>Science of Computer Programming</source>
          <volume>72</volume>
          ,
          <fpage>1</fpage>
          -
          <lpage>2</lpage>
          (
          <year>2008</year>
          ),
          <volume>31</volume>
          {
          <fpage>39</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Ko</surname>
          </string-name>
          <article-title>nigs, A. Model Integration and Transformation - A Triple Graph Grammar-based QVT Implementation</article-title>
          .
          <source>PhD thesis</source>
          , Technische Universitat Darmstadt, Fachbereich Elektrotechnik und Informationstechnik,
          <year>January 2009</year>
          . Dissertation.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Ko</surname>
          </string-name>
          <article-title>nigs, A., and Schurr, A. Multi-Domain Integration with MOF and extended Triple Graph Grammars [online]</article-title>
          .
          <source>In Language Engineering for Model-Driven Software Development (Dagstuhl, Germany</source>
          ,
          <year>2005</year>
          ), no. 04101
          <source>in Dagstuhl Seminar Proc., IBFI.</source>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Ko</surname>
          </string-name>
          <article-title>rtgen, A. Modellierung und Realisierung von Konsistenzsicherungswerkzeugen fur simultane Dokumentenentwicklung. Berichte aus der Informatik</article-title>
          . Shaker Verlag, Aachen, Germany,
          <year>2009</year>
          . Doktorarbeit, RWTH Aachen University.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Ko</surname>
          </string-name>
          <article-title>rtgen,</article-title>
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Becker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. M.</given-names>
            , and
            <surname>Herold</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          <article-title>A Graph-Based Framework for Rapid Construction of Document Integration Tools</article-title>
          .
          <source>In Proc. of the 11th World Conf. on Integrated Design &amp; Process Technology (IDPT '07)</source>
          (
          <year>2007</year>
          ), SDPS, p.
          <volume>13</volume>
          pp.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Easterbrook</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Mylopoulos</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <article-title>Rule Based Detection of Inconsistency in UML Models</article-title>
          . In Jezequel et al. [
          <volume>12</volume>
          ], pp.
          <volume>106</volume>
          {
          <fpage>123</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Long</surname>
          </string-name>
          , E. Transform, edit, and
          <article-title>reverse-engineer a UML Model into Java Source Code</article-title>
          .
          <source>Tech. rep., IBM Corporation</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>Microsoft</given-names>
            <surname>Corporation. MSDN Library - Visual Studio</surname>
          </string-name>
          <string-name>
            <surname>SDK</surname>
          </string-name>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Nagl</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Marquardt</surname>
          </string-name>
          , W., Eds.
          <article-title>Collaborative and Distributed Chemical Engineering Design Processes: Better Understanding and Substantial Support Results of the CRC IMRPOVE</article-title>
          , vol.
          <volume>4970</volume>
          of LNCS. Springer-Verlag,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Nentwich</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Emmerich</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Finkelstein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <article-title>Consistency Management with Repair Actions</article-title>
          .
          <source>In Proc. of the 25th Intl. Conf. on Software Engineering (ICSE</source>
          <year>2003</year>
          )
          <article-title>(</article-title>
          <year>2003</year>
          ), IEEE Computer Society, pp.
          <volume>455</volume>
          {
          <fpage>464</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Nuseibeh</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Easterbrook</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Russo</surname>
            ,
            <given-names>A. Leveraging</given-names>
          </string-name>
          <article-title>Inconsistency in Software Development</article-title>
          .
          <source>Computer 33</source>
          ,
          <issue>4</issue>
          (
          <year>2000</year>
          ),
          <volume>24</volume>
          {
          <fpage>29</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          <source>[24] OMG. UML 2</source>
          .0: Infrastructure,
          <source>V2.1</source>
          .2. online,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>Omondo</given-names>
            <surname>Europa</surname>
          </string-name>
          .
          <source>EclipseUML Studio</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Pratt</surname>
            ,
            <given-names>T. W.</given-names>
          </string-name>
          <string-name>
            <surname>Pair</surname>
            <given-names>Grammars</given-names>
          </string-name>
          ,
          <article-title>Graph Languages and String-to-Graph Translations</article-title>
          .
          <source>Computer and Systems Sciences</source>
          <volume>5</volume>
          ,
          <issue>6</issue>
          (
          <year>1971</year>
          ),
          <volume>560</volume>
          {
          <fpage>595</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <surname>Schu</surname>
          </string-name>
          <article-title>rr, A. Speci cation of Graph Translators with Triple Graph Grammars</article-title>
          .
          <source>In Proc. of the 20th Intl. Workshop on Graph-Theoretic Concepts in Computer Science (WG</source>
          <year>1994</year>
          )
          <article-title>(</article-title>
          <year>1995</year>
          ), vol.
          <volume>903</volume>
          of LNCS, Springer-Verlag, pp.
          <volume>151</volume>
          {
          <fpage>163</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>Spanoudakis</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Finkelstein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Reconciling</surname>
          </string-name>
          <article-title>Requirements: A Method for Managing Interference, Inconsistency and Con ict</article-title>
          .
          <source>Annals of Software Engineering</source>
          <volume>3</volume>
          (
          <year>1997</year>
          ),
          <volume>433</volume>
          {
          <fpage>457</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>Spanoudakis</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Zisman</surname>
            ,
            <given-names>A. Inconsistency</given-names>
          </string-name>
          <article-title>Management in Software Engineering: Survey and Open Research Issues</article-title>
          . In Handbook of Software Engineering and
          <string-name>
            <given-names>Knowledge</given-names>
            <surname>Engineering</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. K.</given-names>
            <surname>Chang</surname>
          </string-name>
          , Ed., vol.
          <volume>1</volume>
          . World Scienti c Publishing Co,
          <year>2001</year>
          , pp.
          <volume>329</volume>
          {
          <fpage>380</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Stevens</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Whittle</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Booch</surname>
          </string-name>
          , G.,
          <source>Eds. Proc. of the 6th Intl. Conf. on The Uni ed Modeling Language (UML</source>
          <year>2003</year>
          )
          <article-title>(</article-title>
          <year>2003</year>
          ), vol.
          <volume>2863</volume>
          of LNCS, Springer-Verlag.
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>The</given-names>
            <surname>Eclipse Foundation</surname>
          </string-name>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <surname>Tratt</surname>
            ,
            <given-names>L. Model</given-names>
          </string-name>
          <string-name>
            <surname>Transformations</surname>
            and
            <given-names>Tool</given-names>
          </string-name>
          <string-name>
            <surname>Integration</surname>
          </string-name>
          .
          <source>Software and Systems Modelling (SoSym) 4:2</source>
          (
          <issue>2005</issue>
          ),
          <volume>112</volume>
          {
          <fpage>122</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <surname>Van Der Straeten</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <article-title>Inconsistency Management in Model-driven Engineering: an Approach using Description Logics</article-title>
          .
          <source>PhD thesis</source>
          , Vrije Universiteit Brussel,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <surname>Van Der Straeten</surname>
          </string-name>
          , R., and
          <string-name>
            <surname>D'Hondt</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>Model refactorings through rule-based inconsistency resolution</article-title>
          .
          <source>In Proc. of the 2006 ACM symposium on Applied computing (SAC</source>
          <year>2006</year>
          )
          <article-title>(New York, NY</article-title>
          , USA,
          <year>2006</year>
          ), ACM, pp.
          <volume>1210</volume>
          {
          <fpage>1217</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <surname>Van Der Straeten</surname>
          </string-name>
          , R., and
          <string-name>
            <surname>Mens</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          <article-title>Incremental Resolution of Model Inconsistencies</article-title>
          .
          <source>In Proc. of 18th Intl. Workshop of Recent Trends in Algebraic Development Techniques (WADT</source>
          <year>2006</year>
          )
          <article-title>(</article-title>
          <year>2007</year>
          ), vol.
          <volume>4409</volume>
          of LNCS, Springer-Verlag, pp.
          <volume>111</volume>
          {
          <fpage>126</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <surname>Van Der Straeten</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mens</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Simmonds</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Jonckers</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          <article-title>Using Description Logics to Maintain Consistency Between UML Models</article-title>
          . In Stevens et al. [
          <volume>30</volume>
          ], pp.
          <volume>326</volume>
          {
          <fpage>340</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <surname>Wagner</surname>
            ,
            <given-names>R. Inkrementelle</given-names>
          </string-name>
          <string-name>
            <surname>Modellsynchronisation</surname>
          </string-name>
          .
          <source>PhD thesis</source>
          , Universitat Paderborn, Institut fur Informatik,
          <source>Fachgebiet Softwaretechnik</source>
          ,
          <year>2009</year>
          . Dissertation.
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <surname>Wagner</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giese</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Nickel</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          <article-title>A Plug-In for Flexible and Incremental Consistency Management</article-title>
          . In Stevens et al. [
          <volume>30</volume>
          ].
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>