<!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>Inconsistency Detection in Distributed Model Driven Software Engineering Environments</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Alix Mougenot</string-name>
          <email>alix.mougenot@lip6.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Xavier Blanc</string-name>
          <email>xavier.blanc@lip6.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marie-Pierre Gervais</string-name>
          <email>pierre.gervais@lip6.fr</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>LIP6, UPMC - Paris, Universitas</institution>
          ,
          <addr-line>Paris</addr-line>
          <country country="FR">France</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>LIP6, UPMC - Paris, Universitas, Paris France</institution>
          ,
          <addr-line>marie</addr-line>
        </aff>
      </contrib-group>
      <fpage>2</fpage>
      <lpage>7</lpage>
      <abstract>
        <p>Model driven development uses more and more complementary models. Indeed, large-scale industrial systems are currently developed by hundreds of developers working on hundreds of models by di erent distributed teams. In such a context, model inconsistency detection is gaining a lot of attention as the overlap between all these models, which are often maintained by di erent persons, are a common source of inconsistencies. This paper proposes a method to detect inconsistencies when models are scattered on di erent editing sites using partial replication. The method provides a way to check the consistency of a single view against the ones that are related to it regarding consistency. It relies on Praxis, an operation based representation of models, to determine what information needs to be collected for consistency checking and the DPraxis protocol to nd where it can be.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Consistency</kwd>
        <kwd>Model</kwd>
        <kwd>View</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>
        Model driven development uses more and more
complementary models. Indeed, large-scale industrial systems are
currently developed by hundreds of developers working on
hundreds of models by di erent distributed teams [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In such
a context, model inconsistency detection is gaining a lot of
attention as the overlap between all these models, which
are often maintained by di erent persons and from di erent
perspectives, are a common source of inconsistency.
This work was founded by the French Weapon Agency
(DGA) and the MOVIDA ANR Project
Each software designer only partially contributes to the global
design. Only some of the global design's model elements are
interesting to each software designer. In [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], authors
dene the notion of viewpoint for addressing this concern. A
viewpoint is de ned by the knowledge, responsibilities and
understandings of some part of the system. Each software
designer has his own view of the global system to design. For
work e ciency reasons each view contains only the model
elements of the global design the designer is concerned with.
It should be noted that views do not provide a partitioning
of the global design as they have elements in common.
Views allow di erent software designers to concurrently
access elements of the global design. Since these concurrent
modi cations are done from di erent point-of-views of the
global design, inconsistencies arise between and within the
views. View Consistency is then a key matter in software
engineering. In order to control the consistency of global
design, consistency rules are de ned and checked against the
global design. When an inconsistency is detected, it is
reported and logged for further resolving. Consistency checks
should be regularly done in order to make sure that the
separation of concerns granted by the use of views does not
introduce inconsistencies due to the distribution of the
information. Detection of inconsistencies between views is a
well known research domain (the interested reader will nd
a precise description in [
        <xref ref-type="bibr" rid="ref14 ref4">14, 4</xref>
        ]). Many approaches have been
proposed in this domain [
        <xref ref-type="bibr" rid="ref1 ref10 ref3 ref5 ref6 ref7 ref8">7, 5, 6, 3, 10, 8, 1</xref>
        ] and many tools
are available for model consistency validation (Object
Constraint Language checkers, Eclipse Model Framework
validation tools, Epsilon Validation Language, Praxis . . . ), but
except [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] they have all been proposed on single machine
architectures and don't cover how to perform inconsistency
detection in a distributed environment. The actual
challenges of modeling concerns huge systems that are modeled
by distant teams, in a distributed fashion, assuming possible
disconnections and delays between the designing sites, is not
answered by the state of the art.
      </p>
      <p>A designer can produce, modify or delete model elements
that belong to his view. During the execution of the
development process, designers will collaborate. Hence, they
will need to access model elements on other sites. Once a
designer has accessed model elements from any other view,
these model elements can be incorporated to his view as he
now relies on it. Also, a designer's view always remains
partial for sake of the separation of concerns. Respecting the
separation of concern principle inevitably leads to
inconsistency between the di erent views. Inconsistencies need to
be detected as soon as possible to avoid project failures. In
this article, we address the problem of inconsistency
detection when the views are distributed. More precisely, we want
to tackle with this problem when each designer's site only
holds the designer's view. The focus of this work is then to
provide a method for detecting single-view inconsistencies,
that are all the inconsistencies related to a particular view.
In other words, we want to provide a method that only
detect inconsistencies that the view's designer can understand
and resolve.</p>
      <p>We identi ed two problems that need to be tackled
regarding single-view inconsistency detection. The rst one is to
be able to identify the needed information from other views.
This point is handled in section 2. The second lock
concerns the problem of nding in which view the interesting
information is, which is dealt with in section 3.</p>
    </sec>
    <sec id="sec-2">
      <title>2. WHAT TO GET</title>
      <p>If no information is available about what kind of data is
relevant to each inconsistency rule, the consistency check of
a single view will need to download the entirety of the related
views; and possibly the entirety of the views related to the
related views, which can quickly end-up in downloading the
entire design. The gathering of such a wasteful amount of
data can be avoided using lters that can be deduced from
the consistency rules' code.</p>
      <p>
        In this section we brie y revisit the three elements from
our previous work [
        <xref ref-type="bibr" rid="ref1 ref2 ref9">1, 9, 2</xref>
        ] on which we rely to determine
which parts of a model are useful for checking a particular
rule. These three elements are the Praxis model construction
that is the model representation used in our approach, the
Praxis inconsistency rule formalism that is used for the
representation of inconsistency rules and the consistency impact
matrix which is the data-structure used by the single-view
inconsistency checker to determine the needed information
for each inconsistency rule.
      </p>
    </sec>
    <sec id="sec-3">
      <title>2.1 Praxis Model Construction</title>
      <p>
        We propose a formalism to represent models as sequences
of unitary editing operations [
        <xref ref-type="bibr" rid="ref1 ref9">1, 9</xref>
        ]. This formalism, named
Praxis, is used to represent any model as well as any set
of model changes. It represents models using six unitary
operations that are revisited here:
{ create(me; mc) creates a model element me instance of
the meta-class mc.
{ delete(me) deletes the model element me. A deleted
element does not have properties, nor references.
{ addP roperty(me; p; v) assigns the value v to the property
p of the model element me.
{ remP roperty(me; p; v) removes the value v of the property
p for the model element me.
{ addRef erence(me; r; met) assigns a target model element
met to the reference r for the model element me.
{ remRef erence(me; r; met) removes the target model
element met of the reference r for the model element me.
1
2
3
4
5
6
7
8
9
10
11
      </p>
    </sec>
    <sec id="sec-4">
      <title>2.2 Inconsistency detection rules</title>
      <p>
        In Praxis, an inconsistency rule is a logic formula over the
sequence of model editing operations (interested readers can
refer to [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] for a more detailed description of the rules'
formalism). In these rules the following predicates are used to
access model editing operations within a sequence:
{ lastCreate(id; M etaClass) is used to fetch within the
sequence, the operations that create model elements. The
'last' pre x of this logic constructor means that the element
is never deleted further in the sequence.
{ lastAddRef erence(id; M etaRef erence; T arget) is used to
fetch within the sequence, the operations that did assign
to a source model element (id), one value (T arget) for the
reference (MetaReference). The 'last' pre x of this logic
constructor means that this reference value is not removed
further in the sequence (with the remRef erence or delete
operation).
{ lastAddP roperty(id; M etaP roperty; V alue) is used to fetch
within the sequence, the operations that did assign to a
source model element (id), one value (V alue) for its
property MetaProperty. The 'last' pre x of this logic constructor
means that the value is not removed further in the sequence.
Let us illustrate inconsistency rules with two examples that
are de ned in the class diagram part of the UML 2.1
specication [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]:
The Ownership rule speci es that: An element may not
directly or indirectly own itself.
      </p>
      <p>The Visibility rule speci es that: An element that has
a public visibility can only be in a namespace with a public
visibility.</p>
      <p>These two rules cover two typical aspects of inconsistency
detection. The rule Ownership ( gure 4), speci es that
containments should not cycle, which is quite complex to check
because containments relationships are spread over the
entire design. The rule Visibility ( gure 3) on the contrary,
is less complex, and has its locality restricted to each
namespace.</p>
      <p>V isibility () f9 M e; N 1
lastAddP roperty(M e; visibility; \public00) ^
lastAddRef erence(M e; namespace; N 1) ^
lastAddP roperty(N 1; visibility; V ) ^ not(V = \public00):
To illustrate Praxis rules, we present the Praxis version of
rule Visibility and Ownership in gure 3 and 4. The
Visibility rule has two variables (M e; N 1) that both
correspond to identi ers of UML elements. This rule matches any
Praxis model construction sequence that results in a model
containing an element with a public visibility for which its
namespace is not public. The sequence presented in
Figure 2 corresponds to an inconsistent model regarding this
rule. Launching an inconsistency detection on this sequence
would detect the inconsistency Visibility(P1,C1).</p>
    </sec>
    <sec id="sec-5">
      <title>2.3 Consistency Impact Matrix</title>
      <p>
        The e ect that editing operations may have on inconsistency
rules can be described in a two dimensional boolean matrix
we called impact matrix [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. This matrix was designed for
incremental inconsistency detection. Its rows correspond to
Praxis operations and its columns to the inconsistency rules.
A 'true' in a cell of such matrix means that the
corresponding editing operation may have an e ect on the
corresponding inconsistency rule. When an editing operation appears
in a model change (a model change is also a sequence of
unitary operations), the inconsistency rules marked as 'true' in
the matrix for these operations have to be re-checked. In
our context this matrix can be used to know which
information needs to be downloaded from the other views to check
a particular rule.
      </p>
      <p>
        As there is an in nity of possible editing operations (in nity
of possible parameter's values), we group them in
equivalence classes to bound the matrix's size. We de ned four
rules to partition the editing operations for any metamodel.
Two editing operations are equivalent if (1) they create a
model element instance of the same meta-class, (2) they
change a reference for the same meta-reference, (3) they
change values for the same meta-property, (4) they delete
a model element. Thanks to such a partition, the number
of equivalence classes is bound to the number of the
metaclasses, plus the number of the references, plus the number of
properties, plus one (the equivalent class corresponding to
the deletion).The impact matrix is automatically derived
from the metamodel and the inconsistency rules [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>Equivalence class
CClass
CAttribute
SPName
SPV isibility
SROwnedElement
SRClass
SRAttribute
SRNamespace
Delete</p>
      <p>OwnedElement
false
false
false
false
true
false
false
false
false</p>
      <p>Visibility
false
false
false
true
false
false
false
true
false
An extract of the impact matrix for the illustrative
inconsistency rules we previously introduced is shown in gure 5.
The extract shows nine equivalence classes from the
metamodel partition, of which only three have an e ect on an
inconsistency rule. In this matrix, regarding the
Visibility inconsistency rule, the operation classes that may have
an impact on this rule are SPV isibility and SRNamesapce.
The operations that may have an impact on this rule are
those that modify a reference to the namespace of an
element, which all belong to the operation class SRNamespace,
and those that modify the visibility of an element, which
all belong to SPV isibility. Note that the Delete equivalence
class has no impact because deletion occurs only for model
elements that are not referenced and do not reference other
model elements.</p>
      <p>
        Our method for single-view consistency detection uses the
impact matrix that was originally intended for incremental
inconsistency detection [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. For checking a particular ruleset,
only operations members of the operation classes that have
an impact on an inconsistency rules are relevant. Knowing
which operation classes are interesting reduces the amount
of data that needs to be considered to the relevant part of
the views.
      </p>
    </sec>
    <sec id="sec-6">
      <title>3. WHERE TO FETCH</title>
      <p>Having the information about what classes of operations are
useful for checking a particular rule is not enough in
practice. It does not tackle the problem of gathering data that
is actually related to the view for which we want to check
the consistency. Indeed, the interesting information is
scattered among the views, and not all of the information that
belongs to the identi ed operation classes is interesting to
the view's designer. In this section we describe how we use
group of interest tables from peer-to-peer model editing
engines to identify where in the net of views is the information
to consider for inconsistency detection.</p>
    </sec>
    <sec id="sec-7">
      <title>3.1 DPraxis Partial Replication Model</title>
      <p>
        Partial replications allows each model designer to restrict
his workspace to its strict minimum: his view. The
overlaps between the views are maintained up-to-date thanks to
a complex background update protocol. We de ned such
a protocol, named DPraxis, for distributed model editing
tools [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. DPraxis is a peer-to-peer fully distributed model
update protocol that is designed to maintain the related
views of a model up-to-date without having to replicate the
entirety of its content in each designer's workspace. In this
section we revisit the use of this protocol, which is used by
the method for single-view inconsistency detection.
In distributed systems using replication, replicated elements
are called replicas [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. A replica is accessed in the same way
as a regular element, but it can be modi ed by the
propagation of modi cations issued from other sites. The replication
is handled thanks to interest groups that are used to know
which sites are interested in which information. Depending
on the replication protocol and the data that needs to be
replicated, the size and the nature of the replication unit
can vary. An interest group links one replication unit to the
sites that have it.
      </p>
      <p>DPraxis uses the model element as the replication unit.
Consequently, views contain replicas for the parts that overlap
with at least one other view, and model elements that are
proper to the view. The use of the model element as the
replication unit allows to ne tune the parts of the model a
designer want to import in his view. As DPraxis does not
allow dangling links, reference between elements are shared
between views only if both the source and the target of a
reference are in the site's view. This allows to choose the
perimeter of the view by not importing elements pointed by
unwanted references.</p>
      <p>The DPraxis protocol maintains a table with routing
information on each site to propagate changes to the interested
sites. Thanks to this table it is possible to know which
elements are replicas, and to know, for each replica, on which
site it is replicated. This two informations are exploited by
the single-view inconsistency detection method to contact
other views when checking consistency.</p>
    </sec>
    <sec id="sec-8">
      <title>3.2 Single-view consistency detection</title>
      <p>The following method focuses on the use of partial
replication. Nevertheless, the method described here for
singleview inconsistency detection could be used in centralized
architectures as well. We describe in this section how to
check one inconsistency rule for one view, plus the elements
of other views that are related to the considered view
regarding the rule to check.</p>
      <sec id="sec-8-1">
        <title>3.2.1 Determining Jump Points</title>
        <p>The intent of single view inconsistency detection is to
simulate an inconsistency check where the detection engine can
jump from the original view to the related ones. To achieve
this goal we propose to begin with the identi cation of what
we call Jump Points. A jump point is a replicated model
element from which the inconsistency detection engine would
want to continue its work in an other view. They
correspond to elements for which the local view only has a partial
knowledge and where it is necessary to jump to other views
to complete this knowledge. Inconsistency rules navigate
through the model thanks to references, which can point to
other views elements that are not replicated locally. The
rst step of single view inconsistency detection is then to
nd these local elements that may point to model elements
that are not known locally, and may be the source of
inconsistencies.</p>
        <p>De nition 1. Jump Point: An inconsistency rule's jump
point is a model element which is the source (res. the target)
of a reference that points to an element outside of the local
view and that can be navigated by the inconsistency rule.
In Praxis, references are accessed using the logical predicate
lastAddReference(source, reference, target). The
Impact matrix presented previously can be used to know which
references can be crossed by an inconsistency rules. These
references correspond to true in the matrix for operation
classes of type SRreference. For instance the rule V isibility
only navigates through relations of the class SRNamespace.
In DPraxis, replicas are maintained up-to-date thanks to
interest group tables that can be used to know which elements
are replicated, and where.</p>
        <p>In practice we determine the jump points following this
procedure:
1. Determine the references that can be crossed by the
inconsistency rule by looking for true in the Impact
Matrix for classes of operations that correspond to
references.
2. Determine which elements are replicas using the group
of interest table.
3. Confront the two informations to nd all the
replicas for which there is a locally crossable reference.
These elements will be considered as the only
interesting Jump Points.</p>
        <p>It is di cult in practice to determine all the possible Jump
Points using DPraxis because references in the view can only
target elements of the view | if a reference is interesting to
one view, then its target has to be imported. Therefore,
there can be references of replicas that are not known to the
local view. We chose to ignore such jump points because in
DPraxis the user decides whether the target (res. source) of
a replicated element is interesting or not. It is then
reasonable to hide inconsistencies for which the user clearly stated
that the reference was not relevant to him/her. We only
consider as a jump point elements for which there is at least
one reference of the considered type locally. Nevertheless
the Jump points we ignore could be capture by looking out
in the meta-model if the replica's type can admit crossable
references.</p>
      </sec>
      <sec id="sec-8-2">
        <title>3.2.2 Simulating Jumps</title>
        <p>The next step of the single-view inconsistency method is to
allow inconsistency rules to follow jump points' references
to other views. We chose to download data of other views
locally for simulating the jumps. This choice allows to use a
regular inconsistency detection engine to do the single-view
inconsistency detection. Not all the information from the
distant view is to be downloaded. First, only information
that is interesting to the considered rule matters, which is
speci ed in the Impact matrix. Second, only elements that
are linked to the jump point need to be downloaded.
The gathering of the unitary actions for realizing the
singleview inconsistency detection can be done this way:
1. Determine Jump points following the previous
procedure.
2. Contact all the sites that have a replica of a jump
point for the considered rule. Ask them to send all
the unitary operations that are interesting for this rule
plus the operations that are necessary to ful ll their
preconditions. Wait for the answer.
3. Contacted sites then recursively apply the two previous
steps of the procedure as long as new jump points are
discovered. Then they send back to the caller all the
gathered data.</p>
        <p>The implementation of the procedure is detailed in section
4. At the end of this procedure the calling site has
gathered all the information that is interesting to the rule from
the other views, and that is linked to its jump points. An
inconsistency detection on the view plus the gathered data
implements a single-view inconsistency detection: It detects
the local inconsistencies, plus the inconsistencies that are
due to the overlapping parts of the views.</p>
      </sec>
    </sec>
    <sec id="sec-9">
      <title>3.3 Example</title>
      <p>In this section we present an illustrative example of the
single-view inconsistency detection.</p>
      <p>In gure 6 is shown three sequences corresponding to three
di erent views, where each of the views is consistent, but
together make a cycle for the ownedElement relationship.
The number correspond to a total ordering of the actions
that is granted by D-Praxis.</p>
      <p>Let us consider a single-view inconsistency detection for
View One regarding the Ownership inconsistency rule.
The rst step is to determine the jump points: P 1 and P 2
are replicas (they are in the routing table from gure 7).
From the Impact Matrix in gure 5 we can deduce that
this rule can only cross references from the operation class
SROwnedElement. There is a local OwnedElement reference
in the view that both concerns P 1 and P 2, thus the jump
points for this view and for the rule Ownership are P 1 and
P 2.</p>
      <p>The simulation of the jump needs to contact View two
concerning P 2 and View three concerning P 1. The following
requests are sent in order to gather the data without cycling
inde nitely:
1
2
3
4
5
6
3
4
7
8
9
10
1
2
7
8
11
12</p>
      <p>View One
create(P1,package)
addProperty(P1,name, 'A')
create(P2,package)
addProperty(P2, name, 'B')
addReference(P1, ownedElement, P2)
addReference(P2, namespace, P1)
View Two
create(P2,package)
addProperty(P2, name, 'B')
create(P3,package)
addProperty(P3,name, 'C')
addReference(P2, ownedElement, P3)
addReference(P3, namespace, P2)
View Three
create(P1,package)
addProperty(P1,name, 'A')
create(P3,package)
addProperty(P3,name, 'C')
addReference(P3, ownedElement, P1)
addReference(P1, namespace, P3)
{ Recursive Call from View two to View three: P 3
is identi ed as a new jumping point. Requesting
all actions in SROwnedElement regarding P 1; P 2; P 3,
plus dependencies.</p>
      <p>Identi ed operation: 11:addReference(P3,
ownedElement, P1)
Dependencies: None. P3 and P1 are known
to the caller.</p>
      <p>Recursive Call: None, no new jump point
discovered.
{ Returned operations: 7:create(P3,package);
9:addReference(P2, ownedElement, P3);
11:addReference(P3, ownedElement, P1).</p>
      <p>Request from View one to View three is symmetric to
the previous one, it returns the same operations.
At the end of the procedure, the view one has gathered:
7 create(P3,package)
9 addReference(P2, ownedElement, P3)
11 addReference(P3, ownedElement, P1)
Using both the local and the distant operations, the
inconsistency detection engine will detect an inconsistency for the
rule Ownership, indeed P 1; P 2; P 3 are in a cycle for the
relation OwnedElement. The procedure only gathers the
minimal information that matters to the rule, and that has
a link to the local data. The designer of view one is now
aware of the cycle problem and can contact the designers
responsible for the two other implicated views to resolve the
problem.</p>
    </sec>
    <sec id="sec-10">
      <title>3.4 Limitations</title>
      <p>The method described here is based on the fact that
inconsistency rules navigate through models using the relations
between model elements. This condition does not hold in
general, for instance a rule that counts elements of a
particular type may not use references for the navigation. Rules
that do not use navigation must be checked by gathering all
the interesting operations from all the other views.</p>
    </sec>
    <sec id="sec-11">
      <title>4. VALIDATION</title>
      <p>We implemented the method in our inconsistency detection
tool 1 that runs on top of Eclipse. The implementation adds
one optimization to the described procedure. We
implemented a hashing system to avoid to constantly download
the same operations over and over: A hash of the known
operations for each operation class is sent prior to the
procedure, if the hashes matches, the procedure does not
continue.</p>
    </sec>
    <sec id="sec-12">
      <title>5. RELATED WORK</title>
      <p>
        The naive method to tackle with distributed views
consistency consists in downloading all the views on a central
repository and then perform the inconsistency detection on
the re-united global design [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. This technique is
acceptable when the latency of the technique is not an issue, or
when the consistency of the entire design needs to be assed.
Nevertheless, it does not scale to large designs regarding
answer speed because: First, downloading all the views on
one central place is slow if the views are large. Second,
the merge of all the distant view into one big model is not
easy. To address this problem this paper introduces the
notion of single-view inconsistency detection, which detects
distributed inconsistencies in a light-weight fashion.
Unfortunately we could not nd many research approaches
that address the problem of inconsistency detection in
distributed model. However, this general problem is not new,
traceability maintenance systems in distributed developing
environment that can manage dependencies and ensure
traceability between documents were developed in a quite
centralized fashion [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. The consistency in this tool was managed
at a code and documentation level, plus a monitor system
was available for user de ned dependency needs.
      </p>
    </sec>
    <sec id="sec-13">
      <title>6. CONCLUSION</title>
      <p>
        This paper presents the notion of single-view inconsistency
detection. This method aims at detecting distributed
inconsistencies in a light-weight fashion by only reasoning on
elements that are relevent for both the considered
inconsistency rules and the considered view. The method is based
on the notion of inconsistency rules' jump point which is
computed thanks to two of our previous contributions [
        <xref ref-type="bibr" rid="ref1 ref9">1, 9</xref>
        ].
The next step of this work is a quantitative evaluation of
the method to asses its performances both empirically and
theoretically.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>X.</given-names>
            <surname>Blanc</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mougenot</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Mounier</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          .
          <article-title>Detecting model inconsistency through operation-based model construction</article-title>
          . In Robby, editor,
          <source>Proc. Int'l Conf. Software engineering (ICSE'08)</source>
          , volume
          <volume>1</volume>
          , pages
          <fpage>511</fpage>
          {
          <fpage>520</fpage>
          . ACM,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>X.</given-names>
            <surname>Blanc</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mougenot</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Mounier</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          .
          <article-title>Incremental detection of model inconsistencies based on model operations</article-title>
          .
          <source>In Proceedings of the 21st International Conference on Advanced Information Systems, CAISE'09</source>
          , pages
          <fpage>32</fpage>
          {
          <fpage>46</fpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.</given-names>
            <surname>Egyed</surname>
          </string-name>
          .
          <article-title>Instant consistency checking for UML</article-title>
          .
          <source>In Proceedings Int'l Conf. Software Engineering (ICSE '06)</source>
          , pages
          <fpage>381</fpage>
          {
          <fpage>390</fpage>
          . ACM Press,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Elaasar</surname>
          </string-name>
          and
          <string-name>
            <given-names>L.</given-names>
            <surname>Brian</surname>
          </string-name>
          .
          <article-title>An overview of UML consistency management</article-title>
          .
          <source>Technical Report SCE-04-18</source>
          ,
          <year>August 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A. C. W.</given-names>
            <surname>Finkelstein</surname>
          </string-name>
          et al.
          <article-title>Inconsistency handling in multiperspective speci cations</article-title>
          .
          <source>In IEEE Trans. Softw</source>
          . Eng., volume
          <volume>20</volume>
          , pages
          <fpage>569</fpage>
          {
          <fpage>578</fpage>
          . IEEE Press,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>P.</given-names>
            <surname>Fradet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. Le</given-names>
            <surname>Metayer</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Peiin</surname>
          </string-name>
          .
          <article-title>Consistency checking for multiple view software architectures</article-title>
          .
          <source>In Proc. Joint Conf. ESEC/FSE'99</source>
          , volume
          <volume>41</volume>
          , pages
          <fpage>410</fpage>
          {
          <fpage>428</fpage>
          . Springer,
          <year>September 1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Leblang</surname>
          </string-name>
          and
          <string-name>
            <given-names>R. Chase</given-names>
            <surname>Jr</surname>
          </string-name>
          .
          <article-title>Computer-aided software engineering in a distributed workstation environment</article-title>
          .
          <source>Proceedings of the rst ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments</source>
          , pages
          <volume>104</volume>
          {
          <fpage>112</fpage>
          ,
          <year>1984</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          et al.
          <article-title>Detecting and resolving model inconsistencies using transformation dependency analysis</article-title>
          .
          <source>In Model Driven Engineering Languages and Systems</source>
          , volume
          <volume>4199</volume>
          <source>of LNCS</source>
          , pages
          <volume>200</volume>
          {
          <fpage>214</fpage>
          . Springer,
          <year>October 2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.</given-names>
            <surname>Mougenot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Blanc</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.-P.</given-names>
            <surname>Gervais</surname>
          </string-name>
          .
          <article-title>D-praxis : A peer-to-peer collaborative model editing framework</article-title>
          .
          <source>In Distributed Applications and Interoperable Systems, 9th IFIP WG 6</source>
          .1 International Conference,
          <string-name>
            <surname>DAIS</surname>
          </string-name>
          <year>2009</year>
          , Lisbon, Portugal, June 9-11,
          <year>2009</year>
          . Proceedings, pages
          <volume>16</volume>
          {
          <fpage>29</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>C.</given-names>
            <surname>Nentwich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Emmerich</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Finkelstein</surname>
          </string-name>
          .
          <article-title>Consistency management with repair actions</article-title>
          .
          <source>In Proc. Int'l Conf. Software Engineering (ICSE'03)</source>
          , pages
          <fpage>455</fpage>
          {
          <fpage>464</fpage>
          , Washington, DC, USA,
          <year>2003</year>
          . IEEE Computer Society.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <source>[11] OMG. Uni ed Modeling Language: Super Structure version 2</source>
          .1, january
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Saito</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Shapiro</surname>
          </string-name>
          .
          <article-title>Optimistic replication</article-title>
          .
          <source>ACM Computing Surveys</source>
          ,
          <volume>37</volume>
          (
          <issue>1</issue>
          ):
          <volume>42</volume>
          {
          <fpage>81</fpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>B.</given-names>
            <surname>Selic</surname>
          </string-name>
          .
          <article-title>The pragmatics of model-driven development</article-title>
          .
          <source>IEEE Software</source>
          ,
          <volume>20</volume>
          (
          <issue>5</issue>
          ):
          <volume>19</volume>
          {
          <fpage>25</fpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>G.</given-names>
            <surname>Spanoudakis</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Zisman</surname>
          </string-name>
          .
          <article-title>Inconsistency management in software engineering: Survey and open research issues</article-title>
          .
          <source>Handbook of Software Engineering and Knowledge Engineering</source>
          , pages
          <volume>329</volume>
          {
          <fpage>380</fpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>