<!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 between UML Models Using RACER and nRQL</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ragnhild Van Der Straeten</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>SSEL, Vrije Universiteit Brussel</institution>
          ,
          <addr-line>Pleinlaan 2, Brussels</addr-line>
          ,
          <country country="BE">Belgium</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>An object-oriented software design consists of models that embody a consistent view on the software system under study. We focus on design models expressed in the Unified Modeling Language (UML) and more specifically on class, state machine and sequence diagrams. In this paper, we report on our experiences in using RACER and its New Racer Query Language (nRQL) for detecting inconsistencies between models. By means of a simple, yet representative, example we show how different representations in RACER are used for the detection of inconsistencies. As such, the full power of both T-box and A-box reasoning is used in the context of inconsistency detection.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Motivation</title>
      <p>
        During software development, models are built representing different views on
a software system. Models can also get refined or evolve. In all cases, there
is an inherent risk that the overall specification becomes inconsistent. We will
focus on design models expressed in the Unified Modeling Language (UML) [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ],
currently the state-of-the-art modeling language. More specifically, we focus on
class diagrams, expressing the static structure of the system and sequence and
state machine diagrams specifying (parts of) the behaviour of the system.
      </p>
      <p>
        A formal foundation for consistency management enables us to specify precise
and unambiguous definitions of concepts involved in software modeling. Also
CASE tools benefit from a formal approach, preventing an ad-hoc approach
to consistency management. To detect inconsistencies between different UML
models, we choose for a logic-based approach for the following reasons: (1) The
declarative nature of logic is well suited to express the design models which are
also of declarative nature. (2) Logic reasoning engines can deduce implicitly
represented knowledge from the explicit knowledge. (3) First-order logic and
theorem proving based on the standard inference rules of classical logic have been
proposed by several authors for expressing software models and the derivation
of inconsistencies from these models resp. ([
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]).
      </p>
      <p>
        However, theorem proving has two major disadvantages. First of all,
firstorder logic is semi-decidable and secondly, theorem proving is computationally
inefficient. This is why we reside to the use of Description Logics (DLs) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and
more specifically to decidable DLs.
      </p>
      <p>Another important feature of DL systems is that they have an open world
semantics, which allows the specification of incomplete knowledge. This is e.g.
useful for modeling sequence diagrams which typically specify incomplete
information about the dynamic behaviour of the system.</p>
      <p>
        Due to their semantics, DLs are suited to express the static structure of the
software application. For example, Cal´ı et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] translate UML class diagrams
to a DL.
      </p>
      <p>Due to the fact that there is a one-to-one mapping between a certain DL
(called ALCIreg) and converse-PDL, DLs are also suited to express certain
behaviour of a software application.</p>
      <p>
        Several implemented DL systems exist from which we have selected the
stateof-the-art RACER [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] system. This paper reports on our experiences in using
RACER and its query language for inconsistency detection between UML
models. We show how different approaches are suited for the detection of different
inconsistencies. As well A-box as T-box reasoning is used.
      </p>
      <p>The next section introduces an illustrative example containing some
inconsistencies between different UML diagrams. Section 3 explains a representation
approach using the T-box reasoning facilities of RACER to check for certain
inconsistencies. Section 3 explains how nRQL is used for inconsistency checking.
Tool support automating the detection of inconsistencies is presented in Section
5. In Section 6, related work is discussed and Section 7 concludes this paper.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Examples of Inconsistencies</title>
      <p>The example used throughout this paper, is based on the design of an automatic
teller machine (ATM), originally developed by Russell Bjork for a computer
science course at Gordon University. We express our diagrams in UML version
1.5.</p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], we made a two-dimensional classification of inconsistencies occurring
between UML diagrams. This classification is based on the diagrams affected
and on the fact if structural or behavioural aspects are affected. In this
section, the multiplicity conflict, navigation conflict and invocation consistency are
      </p>
      <p>ATM
+checkIfCashAvailable(in amount)
+dispenseCash(in amount)
+ejectCard()
1</p>
      <p>CashDispenser
1 ++cduisrpreenntsCeaCsahs()h(in amount)
1
*
Session
1</p>
      <p>CardReader
1 +ejectCard()</p>
      <p>true
checkIfCashAvailable(500)
discussed.</p>
      <p>Consider a class diagram as specified in Figure 1 and a sequence diagram in
Figure 2 specifying a particular scenario between objects, i.e. instances of the
classes represented in Figure 1.</p>
      <p>A first inconsistency arises when an object in a sequence diagram does not
respect the multiplicity restrictions as imposed by the corresponding class
diagrams. In UML a multiplicity consists of a range which has a lower and upper
bound. This lower and upper bound indicate the minimum, resp. maximum
number of instances to which a certain instance can be connected and as such
can interact with. The model consisting of the UML diagrams of Figure 1 and
2 suffers from this inconsistency. In the sequence diagram an instance of ATM
is associated to two instances of CashDispenser and this is in contrast to the
one-one association specified between the ATM class and the CashDispenser
class in Figure 1.</p>
      <p>Navigation conflict is another inconsistency occurring between this class
diagram and sequence diagram. The arrow on the association between the ATM
and Session class indicates that objects of type ATM can communicate with
objects of type Session but not vice versa. In the sequence diagram, messages are
sent from aSession object to anATM object violating the navigation restriction.</p>
      <p>In Figure 3 the resolved class and sequence diagrams are shown. User
intervention is necessary to resolve the above discussed inconsistencies. We do not
go into detail on how to correct these inconsistencies because this is out of the
scope of this paper.</p>
      <p>Consider a refinement of the specified behaviour of the ATM class by adding
behaviour for printing a receipt to this class. Figure 4 shows the protocol state
machine for the refined ATM class. This protocol state machine specifies usage
protocols, i.e. the legal transitions an ATM object can trigger.</p>
      <p>Invocation consistency specifies that the behaviour of the original ATM class
must be a subset of the behaviour specified for the refined ATM class. This
consistency is based on Liskov’s well-known substitution principle.</p>
      <p>The UML model consisting of the corrected sequence diagram in Figure 3
and the state machine diagram in Figure 4 is invocation inconsistent. The call
sequence checkIfCashAvailable(), dispenseCash(), ejectCard() expressed in the
sequence diagram of Figure 3 is not valid on the state diagram in Figure 4.</p>
      <p>In the next two sections, we will show how different approaches using DL
can help in identifying the presented inconsistencies.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Direct DL Detection Approach</title>
      <p>
        The direct approach translates UML user models in terms of atomic concepts
and roles of a certain DL. This is also the approach taken by Cal´ı et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. They
translate UML class diagrams into the DL DLR which allows them to reason
about class(es) consistency, class equivalence and on class hierarchies.
      </p>
      <p>Class diagrams can be translated in an analogue way into the DL
ALCQHIR+(D−) supported by RACER. We use RACER version 1.8.</p>
      <p>UML sequence diagrams encompass two different views. First of all, they
specify which sequences of messages are legal and secondly, they also represent
how objects are connected to each other. We will call this the interaction, resp.
the communication view. The latter view represents an instantiation of the
corresponding concepts defined by class diagram(s).</p>
      <p>
        Some inconsistencies can be detected using this approach. Suppose the class
diagram of Figure 1 is directly translated into a RACER T-box using the same
representation as in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and the object view of the sequence diagram of Figure
2 is represented as instances of the concepts defined in the T-box. This will
result immediately in a logical inconsistency, because the upper bound of the
multiplicity of the role representing the association between the class ATM and
the class CashDispenser is violated by the instances defined in the corresponding
A-box. Remark that, because of the open world assumption, the lower bound
of the multiplicity of this association cannot be checked in this way. To detect
such inconsistencies another approach, explained in Section 4, is necessary.
      </p>
      <p>Also for inconsistencies about sequences of messages as specified by state
machine and sequence diagrams, a direct representation of these diagrams into
a RACER T-box, is necessary. For the different inconsistencies, only the relevant
parts of a model are translated.</p>
      <p>Recall the invocation consistency to be checked between the sequence
diagram specified in Figure 3 and the state machine in Figure 4. The sequence
of operation calls expressed by both diagrams is translated into RACER. The
different messages defined in the sequence diagram and the transitions on the
state machine are translated to atomic, disjoint concepts which are connected
through a binary relation r, a kind of accessibility relation as defined in modal
logics.</p>
      <p>The sequence of messages as expressed by the state machine in Figure 4 is
expressed in RACER as follows:
(equivalent (and validpin getamountentry) (some r verifyaccount))
(equivalent verifyaccount (some r checkifcashavailable))
(equivalent checkifcashavailable (some r dispensecash))
(equivalent dispensecash (some r issuereceipt))
(equivalent issuereceipt (some r ejectcard))
(disjoint getamountentry validpin verifyaccount checkifcashavailable
dispensecash issuereceipt ejectcard)</p>
      <p>Remark that in this case, a protocol state machine is considered to be
complete as opposed to the sequence diagram. This is why the state diagram is
translated using ”equivalent“ statements. The sequence of messages specified
by the sequence diagram in Figure 2 is expressed as follows:
(implies checkifcashavailable (some r dispensecash))
(implies dispensecash (some r ejectcard))</p>
      <p>The set of unsatisfiability concepts is verifyaccount, checkifcashavailable
and dispensecash. This corresponds to the fact that the behaviour
specifications are invocation inconsistent.</p>
      <p>The current disadvantage of this representation is that it is not possible with
the current DL tools to give proper feedback to the user. The reasoning engine
only indicates that a set of concepts is inconsistent. We are not able to deduce
from this information which sequences do occur in the state diagram and do not
in the sequence diagram.</p>
    </sec>
    <sec id="sec-4">
      <title>4 Indirect DL Detection Approach</title>
      <p>The UML specification is defined using a metamodeling approach. A language
definition normally consists of an abstract syntax, a concrete syntax and
semantics. The UML metamodel includes all the concrete graphical notation,
abstract syntax and semantics for UML. The UML abstract syntax consists of
UML class diagrams. The concrete syntax is informally specified UML notation.
Well-formedness rules are constraints on the abstract syntax and as such specify
when an instance of a particular language construct is meaningful.</p>
      <p>In this approach, the different concepts of the UML metamodel are translated
into RACER. The UML metamodel is a collection of class diagrams which are
translated into T-box declarations. The user-defined UML diagrams, such as
the ones presented in Section 2, are instances of the metamodel and translated
into corresponding Abox assertions. This ensures that the user-defined models
are consistent with the UML metamodel. If metamodel information is necessary,
this approach is taken to identify inconsistenties.</p>
      <p>The class diagram in Figure 1 and sequence diagram in Figure 2 are
translated to instances of metamodel concepts. For the detection of the navigation
inconsistency as specified in Section 2, one nRQL query is necessary. This query
traverses the UML metamodel searching for an association and corresponding
association end(s) by which objects are linked to each other and over which an
operation is called and which is not navigable.
(retrieve (?object1 ?class2 ?association ?associationend)
(and (?object1 ?class1 instance-of)
(?object2 ?class2 instance-of)
(?object1 ?stimulus sender)
(?object2 ?stimulus receiver)
(?stimulus ?operation sends)
(?class2 ?operation has-feature)
(?stimulus ?association related-to)
(?associationend ?association associationends)
(?class2 ?associationend participant)
(not (?associationend Navigable))))</p>
      <p>This approach is also needed to check if the lower multiplicity bound of
an association is not violated in a sequence diagram. Two nRQL queries are
necessary. The first one traverses the UML metamodel searching for objects
that are linked to each other by the same association.
(retrieve (?object1 ?class2 ?association)
(and (?object1 ?class1 instance-of)
(?object2 ?class2 instance-of)
(?object1 ?stimulus sender)
(?object2 ?stimulus receiver)
(?stimulus ?link stimulus-link)
(?link ?association stimulus-link)))</p>
      <p>This query is very similar to the query in our previous example. However, the
queries are not reusable in the sense that if (part of) a certain query is needed
in another more complex query, the body should be copied and pasted into the
more complex query. Queries are anonymous in nRQL and as such not reusable
which is, in our context, recognized as a disadvantage of the query language.</p>
      <p>For every list of bindings returned by the aforementioned query, the lower
bound of the multiplicity specified for the corresponding association must be
checked by a second query. If there are less objects than specified by the lower
bound, an inconsistency arises.
(retrieve (told-value (lower ?mult-range))
(and (?association ?assocend associationends)
(?assocend ?class2 participant)
(?assocend ?multiplicity has-multiplicity)
(?multiplicity ?mult-range has-range)))</p>
      <p>In this query ?association, ?object1 and ?class2 are constants which are
results given by the first query. Those constants must be hardcoded into the
query which makes the query not reusable and it must be rewritten for every
single case. The solution here would be to allow also constants in the set of
variables.</p>
    </sec>
    <sec id="sec-5">
      <title>Tool Support</title>
      <p>
        The tool chain we set up is called RACOoN (Racer for Consistency). UML
design models are expressed in the UML CASE tool Poseidon [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. These
design models are exported in XMI format, and translated into description logics
format using Saxon, an XML translator. The logic code is then asserted into
a knowledge base maintained by the RACER logic reasoning engine. This tool
chain allows us to specify UML models in a straightforward way and to
automate the crucial activity of detecting inconsistencies. We deliberately chose for
a tool chain, as opposed to a single integrated tool, to accommodate for the
rapid evolution of standards (such as UML, XML and XMI), and to facilitate
the replacement of existing tools (e.g., Saxon or Poseidon) by other ones that
are more appropriate in a certain context.
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Related Work</title>
      <p>
        Finkelstein et al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] explain that consistency between partial models is neither
always possible nor is it always desirable. They suggest to use temporal logic
to identify and handle such inconsistencies. Grundy et al. [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] claim that a key
requirement for supporting inconsistency management is the facilities for
developers to configure when and how inconsistencies are detected, monitored, stored,
presented and possibly automatically resolved. They describe their experience
with building complex multiple-view software development tools supporting
inconsistency management facilities. Our DL approach is also easily configurable,
by adding, removing or modifying logic declarations in the knowledge base.
      </p>
      <p>
        A wide range of approaches for checking consistency has been proposed in
the literature. Engels et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] propose a general methodology to deal with
consistency problems based on the problem of protocol statechart inheritance.
This idea is elaborated in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] with dynamic meta modeling rules for specifying the
consistency conditions in a graphical, UML-like notation. Model transformation
rules are used to represent evolution steps, and their effect on the overall model
consistency is explored. Ehrig and Tsiolakis [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] investigated the consistency
between UML class and sequence diagrams. Class diagrams were represented
by attributed type graphs with graphical constraints, and sequence diagrams by
attributed graph grammars. As consistency checks between class and sequence
diagrams only existence, visibility and multiplicity checking were considered. In
[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] the information specified in class and statechart diagrams is integrated into
sequence diagrams. The information is represented as constraints attached to
certain locations of the object lifelines in the sequence diagram. The supported
constraints are data invariants and multiplicities on class diagrams and state
and guard constraints on state diagrams. The above mentioned approaches only
deal with very specific and a limited number of inconsistencies.
      </p>
      <p>
        In Cal´ı et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] user-defined class diagrams are translated in a description
logic that can express n-ary relations. We are inspired by this translation to
translate our UML profile. The inconsistencies treated in this work are different
from the types of inconsistency we treat. To be able to check our inconsistency
categories meta-level knowledge is needed which is not included in their
translation. In the same context, [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] proves that reasoning on UML class diagrams is
EXPTime hard.
7
      </p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion</title>
      <p>In this paper, we report on our experiences with the state-of-the-art DL tool
RACER and its query language in the context of inconsistency detection between
UML models. We argue that different DL representations of UML diagrams can
be used for identification of different inconsistencies. This approach makes use
of the reasoning tasks inherent to DLs. However, nRQL queries are not reusable
because they are anonymous and do not allow constants as variables. This minor
disadvantages of nRQL is recognized in this paper.</p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], we presented a conceptual classification of different inconsistencies
between UML models. As future work, we want to classify those different
inconsistencies based on the different DL detection approaches.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>F.</given-names>
            <surname>Baader</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>McGuinness</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Nardi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.F.</given-names>
            <surname>Patel-Schneider</surname>
          </string-name>
          .
          <source>The Description Logic Handbook: Theory, Implementation and Applications</source>
          . Cambridge University Press,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Daniela</given-names>
            <surname>Berardi</surname>
          </string-name>
          .
          <article-title>Using DLs to reason on UML class diagrams</article-title>
          .
          <source>In Proc. Workshop on Applications of Description Logics</source>
          , Aachen, Germany, pages
          <fpage>1</fpage>
          -
          <lpage>11</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Daniela</given-names>
            <surname>Berardi</surname>
          </string-name>
          , Diego Calvanese, and Giuseppe De Giacomo.
          <article-title>Reasoning on UML class diagrams is EXPTIME-hard</article-title>
          .
          <source>In Proc. of Int'l Workshop on Description Logics</source>
          , Rome, Italy,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Andrea</given-names>
            <surname>Cal</surname>
          </string-name>
          ´ı, Diego Calvanese, Giuseppe De Giacomo, and
          <string-name>
            <given-names>Maurizio</given-names>
            <surname>Lenzerini</surname>
          </string-name>
          .
          <article-title>Reasoning on UML class diagrams in description logics</article-title>
          .
          <source>In Proc. of IJCAR Workshop on Precise Modelling and Deduction for Object-oriented Software Development (PMD</source>
          <year>2001</year>
          ),
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>H.</given-names>
            <surname>Ehrig</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Tsiolakis</surname>
          </string-name>
          .
          <article-title>Consistency analysis of UML class and sequence diagrams using attributed graph grammars</article-title>
          . In H. Ehrig and G. Taentzer, editors,
          <source>ETAPS 2000 workshop on graph transformation systems</source>
          , pages
          <fpage>77</fpage>
          -
          <lpage>86</lpage>
          ,
          <year>March 2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Gregor</given-names>
            <surname>Engels</surname>
          </string-name>
          , Reiko Heckel, and
          <article-title>Jochen Malte Ku¨ster. Rule-based specification of behavioral consistency based on the UML meta-model</article-title>
          .
          <source>In Martin Gogolla and Cris Kobryn</source>
          , editors,
          <source>Proc. Int'l Conf. UML 2001, number 2185 in Lecture Notes in Computer Science</source>
          , pages
          <fpage>272</fpage>
          -
          <lpage>286</lpage>
          . Springer-Verlag,
          <year>October 2001</year>
          . Toronto, Canada.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Gregor</given-names>
            <surname>Engels</surname>
          </string-name>
          , Reiko Heckel, Jochen Malte Ku¨ster, and Luuk Groenewegen.
          <article-title>Consistency-preserving model evolution through transformations</article-title>
          .
          <source>In Proc. Int'l Conf. UML 2002, number 2460 in Lecture Notes in Computer Science</source>
          , pages
          <fpage>212</fpage>
          -
          <lpage>227</lpage>
          . Springer-Verlag,
          <year>October 2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Anthony</given-names>
            <surname>Finkelstein</surname>
          </string-name>
          ,
          <string-name>
            <surname>Dov M. Gabbay</surname>
            , Anthony Hunter, Jeff Kramer, and
            <given-names>Bashar</given-names>
          </string-name>
          <string-name>
            <surname>Nuseibeh</surname>
          </string-name>
          .
          <article-title>Inconsistency handling in multi-perspective specifications</article-title>
          .
          <source>In European Software Engineering Conference</source>
          , LNCS, pages
          <fpage>84</fpage>
          -
          <lpage>99</lpage>
          . SpringerVerlag,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Gentleware</surname>
          </string-name>
          . Poseidon, http://www.gentleware.com/products/poseidonpe.php3,
          <source>March</source>
          <volume>18</volume>
          2004.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>John</surname>
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Grundy</surname>
          </string-name>
          , John G. Hosking, and
          <string-name>
            <surname>Warwick</surname>
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Mugridge</surname>
          </string-name>
          .
          <article-title>Inconsistency management for multiple-view software development environments</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          ,
          <volume>24</volume>
          (
          <issue>11</issue>
          ):
          <fpage>960</fpage>
          -
          <lpage>981</lpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>Volker</given-names>
            <surname>Haarslev</surname>
          </string-name>
          and
          <article-title>Ralf Mo¨ller. RACER system description</article-title>
          .
          <source>In Int'l Joint Conf. Automated Reasoning (IJCAR</source>
          <year>2001</year>
          ),
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Bashar</surname>
            <given-names>Nuseibeh</given-names>
          </string-name>
          , Jeff Kramer, and
          <string-name>
            <given-names>Anthony</given-names>
            <surname>Finkelstein</surname>
          </string-name>
          .
          <article-title>A framework for expressing the relationships between multiple views in requirements specification</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          ,
          <volume>20</volume>
          (
          <issue>10</issue>
          ):
          <fpage>760</fpage>
          -
          <lpage>773</lpage>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13] Object Management Group.
          <source>Unified Modeling Language specification version 1</source>
          .5. formal/2003-03-01,
          <year>March 2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>Aliki</given-names>
            <surname>Tsiolakis</surname>
          </string-name>
          .
          <article-title>Semantic analysis and consistency checking of UML sequence diagrams</article-title>
          .
          <source>Master's thesis</source>
          , Technische Universit¨at Berlin,
          <year>April 2001</year>
          .
          <source>Technical Report No</source>
          .
          <year>2001</year>
          -
          <volume>06</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Ragnhild Van Der Straeten</surname>
            , Tom Mens,
            <given-names>Jocelyn</given-names>
          </string-name>
          <string-name>
            <surname>Simmonds</surname>
            , and
            <given-names>Viviane</given-names>
          </string-name>
          <string-name>
            <surname>Jonckers</surname>
          </string-name>
          .
          <article-title>Using description logic to maintain consistency between UML models</article-title>
          . In Perdita Stevens, Jon Whittle, and Grady Booch, editors,
          <source>Proc. Int'l Conf. UML</source>
          <year>2003</year>
          , volume
          <volume>2863</volume>
          <source>of LNCS</source>
          , pages
          <fpage>326</fpage>
          -
          <lpage>340</lpage>
          . SpringerVerlag,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>