<!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>On the Support of Qualified Associations in OCL</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Lars Hamann</string-name>
          <email>lars.hamann@hagebau.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Martin Gogolla</string-name>
          <email>gogolla@informatik.uni-bremen.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nisha Desai</string-name>
          <email>nisha@informatik.uni-bremen.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Bremen</institution>
          ,
          <addr-line>Bremen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>hagebau IT GmbH</institution>
          ,
          <addr-line>Soltau</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>3</fpage>
      <lpage>16</lpage>
      <abstract>
        <p>Associations are the glue that keeps items in object-oriented systems together. In UML qualified associations are used to express additional information about access to connected objects. From an implementation point of view, qualified associations can be used to define access to multi-dimensional data structures like arrays. From a conceptual point of view, they can be looked at as being ternary associations with particular OCL constraints expressing the multiplicities. Qualified associations are only partly described in the OCL standard, for example, it is not clear how to access all qualifier values for a qualified object. This paper takes up such questions and makes proposals for the support of qualified associations in the context of OCL.</p>
      </abstract>
      <kwd-group>
        <kwd>UML</kwd>
        <kwd>OCL</kwd>
        <kwd>qualified association</kwd>
        <kwd>navigation</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        In object-oriented modeling languages like UML [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], structural class modeling
is supported by query and constraint expressions formulated in OCL [
        <xref ref-type="bibr" rid="ref1 ref16">16, 1</xref>
        ].
Associations [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] play a central role in structural modeling because they provide
the glue that keeps the system together. Among the many facets that
associations can display (like association class, aggregation, composition, or derived
association), qualified associations are among the rarely discussed topics.
      </p>
      <p>
        Qualified associations are typically used to indicate fast access when
navigating from one class to the other: “An index in a database ... is properly modeled
as a qualifier” [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. The index attributes in the database correspond to the
qualifier attributes in the model. And qualified associations are employed to partition
the links interpreting the association according to instances possessing particular
properties.
      </p>
      <p>One can view qualified associations from different perspectives. Qualified
associations can be looked at from the implementation point of view. Then they
are discussed in connection with arrays. If one looks at them from a conceptual
modeling language point of view, they are discussed in connection with
modeling features like association classes or ternary associations. They may also be
transformed into such simpler modeling language elements.</p>
      <p>Qualified associations enrich an association end with information about
access to related objects. They must be studied with care in particular with regard
to the questions how many qualified objects and qualifier values can be
connected to one or many target objects “on the other side of the association”.
Thus whether to consider sets or bags for typing in this context becomes crucial.</p>
      <p>
        In current OCL [
        <xref ref-type="bibr" rid="ref12 ref13">12, 13</xref>
        ], qualified associations are somewhat
underrepresented resp. underspecified. One cannot define constraints on qualifier
attributes [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] unless one models information in redundant form, but nevertheless
there is no way in OCL to access qualifier attributes in the sense that one can
build expressions returning a qualifier value. It is only possible to employ
qualifier attributes for accessing the target objects in the qualified association.
      </p>
      <p>Let us explain our ideas with an example. In Fig. 1 the qualified
association between the classes University and Student allows the modeler to access
a unique Student, if a University object and a matriculation number is given.
The matriculation numbers are supposed to have a particular format
consisting of the last two digits YY of the year of enrollment of the student
followed by a running number NNNN within the enrollment year consisting of
four digits: YYNNNN. In order to formally establish the requirements, two
OCL invariants have been formulated in the comment node within the
object diagram. These invariants cannot be formulated with current OCL,
because an access to qualifier attribute values is needed which is currently not
possible. In the first expression, self.student[].matriculationNum delivers for
self:University all matriculation numbers within that university. In the second
expression, self.university[].matriculationNum returns for self:Student the
matriculation number for that Student object. Details of the bracket notation will
be explained below.</p>
      <p>The rest of the paper is structured as follows. Section 2 discusses qualified
associations from two points of view, namely from an implementation point of
view and from a conceptual point of view. Section 3 puts forward our proposals
for typing OCL expressions in the context of qualified associations and for
accessing the values of qualifier attributes with OCL expressions. Section 4 discusses
related work. The final section concludes and sketches future work.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Qualified Associations</title>
      <p>In this section qualified associations are described using two different views.
At first, an implementation oriented explanation is given. Afterwards, they are
explained using a conceptual view.</p>
      <p>
        Qualified associations can be used to model technical details about the
implementation of associations. They enrich general associations with information
about which data is required to access linked objects, i. e., the source object
together with the qualifier values defines the result of a navigation. Informally, they
also indicate that fast access to the linked objects is desired. This makes them
especially useful for models that are close to the implementation, like platform
specific models or models for runtime verification [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>Figure 2 shows a qualified association with two qualifiers of type integer that
closely matches the implementation in Java as a two-dimensional array given
above the figure. The given example defines the structure of a game map similar
to a chess board. The map consists of tiles that are uniquely defined by their
(x,y)-coordinates. Please note, that the UML model contains additional
information in contrast to the shown implementation only naming the two dimensions
of the array.
1
2
3 }
p u b l i c cl as s Map {
p r i v a t e Tile [][] ti le s ;</p>
      <p>Map x : Integer map
y : Integer 1</p>
      <p>MapTiles
tiles
0..1 Tile</p>
      <p>Qualified associations are not only useful to represent arrays. They can also
be used to overcome a drawback in OCL, namely the lack of a collection type to
express map-like data structures.</p>
      <p>Apart from looking at a qualified association from the implementation point
of view, one can also look at it from the perspective of other UML and OCL
modeling features that express the same characteristics. Figure 3 shows in the
lower part how a qualified association can be understood as a ternary association.</p>
      <p>With an additional OCL constraint one can express the qualified
association multiplicity. The qualifier becomes an attribute of an additional class in
the ternary association. The constraint basically states that for all qualified
objects self and for all possible qualifier values qv, the size of the set of target
objects being also linked to the same qualified object self and linked to the
qualifier value qv is bound by the multiplicities LL and HH (for an LL..HH
multiplicity range).</p>
      <p>
        A transformation from a qualified association into an association class is
implicitly suggested in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] and has been proposed in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. However the current
transformation into a ternary association captures more cases. The middle parts
of Fig. 3 sketch a transformation into an association class, but they also directly
indicate that a situation where one qualified object being connected with two
different qualifier values cannot be expressed, if the association class is equipped
with a set of links. A link between the qualified object and the target object can
only be equipped with one qualifier value, but not with two.
      </p>
      <p>As far as we know, the need for an interpretation of qualified associations
in terms of ternary associations has not been discussed so far. Further down
in Fig. 7 and 8 we will show how the two introductory examples for qualified
associations are formulated in form of ternary associations.</p>
      <p>
        The translation into ternary association including standard OCL constraints
is not only an intellectual exercise. For treating advanced UML modeling
features in the context of validation and verification we translate advanced
modeling concepts into a so-called base model [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Our underlying proving engine
basically only handles plain associations and not advanced concepts as qualified
associations. Thus, in that context we explicitly need this transformation.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Qualified Associations in OCL</title>
      <p>
        The navigation over qualified associations is only sketched in the current OCL
specification [13, p. 22,144]. For example, it lacks information about the
backward navigation from the target of a qualified association. Consider again the
example of a qualified association between a map and its tiles shown in Fig. 2.
The OCL specification [13, p. 22] describes the results of the first two navigation
expressions shown in Listing 1.1. However, no information about the result type
of the third navigation expression is given. The first and the second expression
are shown as they would be typed in the modeling tool USE [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>
        Listing 1.1. Types of navigation expressions for qualified associations
1 aMap . t il es [
        <xref ref-type="bibr" rid="ref1 ref1">1 ,1</xref>
        ] : Tile ( with aMap : Map ,
2 i . e . , aMap ia an e x p r e s s i o n of c la ss Map )
3 aMap . t il es : Set ( Tile )
4 a Ti le . map : U N C L E A R ( with a Ti le : Tile )
      </p>
      <p>
        Like the authors of [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], we propose to extend the applicability of qualified
associations and especially of the qualifier in OCL as described next. In detail,
we propose to
1. clearly define types and semantics of navigations for all relevant combinations
of multiplicities, and
2. add support for the access to the values of qualifiers.
3.1
      </p>
      <sec id="sec-3-1">
        <title>Navigation</title>
        <p>On the type level, a navigation expression including qualifier values (line 1 in the
above listing) behaves like a normal navigation using an unqualified association.
If the upper bound of the multiplicity is one, the result type is the class at the
target end. Otherwise a collection conforming to the end properties (ordered,
unique, etc.) of the type at the target end is returned. The linked objects are
determined by the link set of the association and the qualifier value.</p>
        <p>
          If no qualifier values are provided, which is also a valid navigation [12, p.
21], the result type of such an expression is a set of objects of the target class
as it is informally stated by the OCL specification. A user can only deduct the
result type by examining the provided example model in [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. Taking the source
multiplicity into account, the type Set(Tile) as the result type of the navigation
expression is valid because a single tile can only be linked to one pair of map
and an (x,y)-coordinate. Therefore, a map can only be linked once to a given tile
making the result of the navigation set-valued. If the upper bound of the source
multiplicity is greater than one, this statement does not hold anymore. Since the
upper bound now specifies that a single tile can be linked with multiple pairs
of map objects and (x,y)-coordinates, it is not guaranteed, that a tile is used
only once in a single map object. To avoid a loss of information, the result of
the navigation should lead to a bag.
        </p>
        <p>For the opposite navigation over a qualified association, i. e., from the target
end to the qualified end, the OCL specification contains no information.
Following the semantics of non-qualified navigations, the result type of the navigation
depends on the upper bound of the multiplicity of the target end. If it is one,
the result type is the type of the class at this end. The default3 type of a
navigation to an association end with a multiplicity greater than one is defined as
a set of linked objects at this end. Navigation over qualified associations cannot
follow this definition if no loss of information is pursued. Given a multiplicity
greater than one, the result type should be a bag of the type of the class at
this end, because a target object can be linked by multiple pairs consisting of
qualified object and qualifier. Figure 4 shows such a situation where a tile is
connected twice to a single map by using different qualifier values. The
navigation tile1.map should retrieve all available information and therefore it should
return Bag{map2,map1,map1}.</p>
        <p>map2:Map x = 0</p>
        <p>y = 0
map1:Map x = 1
y = 2
x = 2
y = 2</p>
        <p>tile1:Tile</p>
        <p>All four relevant combinations of multiplicity upper bounds are shown in
Fig. 5. For each combination the three navigations and their type as we propose
3 In this context default means the association is marked as unique.
are shown below the example. Further, the type of the expression when following
the OCL specification is given.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2 Qualifier Values in OCL Expressions</title>
        <p>
          Our second proposal is to make qualifier values to first class citizens in OCL as
it also proposed in [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. In OCL 2.4 qualifier values cannot be queried. Therefore,
some other information store, like for example attributes, are required to
define constraints on them. This complicates the definition of model constraints or
leads to unnecessary duplications. Consider our example using maps and tiles. A
possible extension would be to add constraints to the class Tile that require
information about the position of the tile. One could add the attributes x:Integer
and y:Integer to the class, but this does not provide any new information to
the model. It is some kind of a workaround.
        </p>
        <p>
          Therefore, we propose an extension to OCL, similar to the one presented in
[
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. In contrast to our work, the authors propose to add a navigation expression
to access all (key,value)-pairs of a qualified association. For this, they suggest
to use empty brackets []. For the result the authors introduce a new collection
type Map. While we follow the syntax, we argue that a map is inadequate since
multiple qualifiers are not handled. To be able to handle qualified associations
with multiple qualifiers, we propose to return the linked object together with
the qualifier values as an OCL tuple. The tuple parts are built by the name of
the target end and the names of the qualifier. The bracket notation can be used
on both sides of the qualified association.
        </p>
        <p>The following listing shows the result of such navigation expressions when
evaluated using the system state shown in Fig. 4:
1 ? map1 . tiles []
2 -&gt; Set { Tuple { tiles = Tile1 , x =1 , y =2} ,
3 Tuple { tiles = Tile1 , x =2 , y =2}}
4 : Set ( Tuple ( tiles : Tile , x : Integer , y : Integer ))
5 ? map1 . tiles []. y
6 -&gt; Bag {2 , 2}
7 : Bag ( Integer )
8 ? tile1 . map []
9 -&gt; Set { Tuple { map = map2 , x =0 , y =0} ,</p>
        <p>Tuple { map = map1 , x =1 , y =2} ,</p>
        <p>Tuple { map = map1 , x =2 , y =2}}
: Set ( Tuple ( map : Map , x : Integer , y : Integer ))</p>
        <p>The resulting set of tuples can now be used as any other set in OCL to define
constraints or to query the system state.</p>
        <p>For the general case of bracket navigation, the four relevant combinations of
multiplicity upper bounds are also shown in Fig. 6. There, for each combination
the two bracket navigations and their result type are shown. Two examples for
bracket navigations have already been given in Fig. 1.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Further examples</title>
        <p>1 : aQ . qTarget [] -&gt; Set ( Tuple ( qTarget :T ,q: Integer ))
2 : aT . qSource [] -&gt; Tuple ( qSource :Q ,q: Integer )
1 : aQ . qTarget [] -&gt; Set ( Tuple ( qTarget :T ,q: Integer ))
2 : aT . qSource [] -&gt; Tuple ( qSource :Q ,q: Integer )
qSource
qTarget
Q q : Integer
0..1
qSource
1 : aQ . qTarget [] -&gt; Set ( Tuple ( qTarget :T ,q: Integer ))
2 : aT . qSource [] -&gt; Set ( Tuple ( qSource :Q ,q: Integer ))
1 : aQ . qTarget [] -&gt; Set ( Tuple ( qTarget :T ,q: Integer ))
2 : aT . qSource [] -&gt; Set ( Tuple ( qSource :Q ,q: Integer ))
literature. The example is part of a model for a German card game called
“Doppelkopf”. In that game each card of an ordinary card collection is present twice,
as shown in the object diagram in which the Diamonds Ten and the Clubs Queen
are twice present on the hand of a card player. Please note that there are ten
card objects, but only eight qualifier values; the qualifier values (Diamonds,Ten)
and (Clubs,Queen) are both connected to two card objects.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Related work</title>
      <p>
        As already stated, the semantics of qualified associations by transforming them
into equivalent constructs in UML using additional constraints were already
discussed in [
        <xref ref-type="bibr" rid="ref5 ref8">5, 8</xref>
        ]. In this paper we extended this transformation by considering
ternary associations. The link between UML associations including qualified
associations and their implementation is examined in [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ].
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] the formal semantics of associations and association ends are discussed
in detail. The author shows several arising inconsistencies by using constraints
like unique. While association classes are covered, qualified associations are not.
Work on the mapping between UML unqualified associations and their Java
implementation has been published in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>
        The extension to OCL proposed in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] is similar to our proposal, but works
only for qualified associations with one qualifier. As we have shown, our modified
and extended version of that proposal also supports multiple qualifiers.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>This paper has discussed support of qualified associations in OCL. In particular
we have clarified typing issues (sets vs. bags) for qualified associations
distinguishing between different stated multiplicities. We have made a proposal for
accessing qualifier values which is not possible employing the current OCL
standard features. In particular constraints formulating dependencies between
classifier values and other modeling items now become possible. We have clarified
and extended the options from the current OCL standard.</p>
      <p>Future work includes completing and polishing the implementation of our
proposal in the tool USE. Discussions with the OCL community may lead to
further requirements concerning qualified associations. Extended OCL support
for other association-like relationships like aggregation and composition might be
useful and worth to be studied as well. For example, in the context of composition
one might introduce a particular OCL expression for navigating to the aggregate
object along the black diamonds without having to explicitly mention association
end names.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gogolla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Object Constraint Language (OCL): A Definitive Guide</article-title>
          . In: Bernardo,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Cortellessa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            ,
            <surname>Pierantonio</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . (eds.)
          <source>Proc. 12th Int</source>
          .
          <article-title>School Formal Methods for the Design of Computer, Communication and Software Systems: Model-Driven Engineering</article-title>
          . pp.
          <fpage>58</fpage>
          -
          <lpage>90</lpage>
          . Springer, Berlin, LNCS
          <volume>7320</volume>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Diskin</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dingel</surname>
          </string-name>
          , J.:
          <article-title>Mappings, maps and tables: Towards formal semantics for associations in UML2</article-title>
          . In: Nierstrasz,
          <string-name>
            <given-names>O.</given-names>
            ,
            <surname>Whittle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Harel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Reggio</surname>
          </string-name>
          ,
          <string-name>
            <surname>G</surname>
          </string-name>
          . (eds.)
          <article-title>MoDELS 2006</article-title>
          . LNCS, vol.
          <volume>4199</volume>
          , pp.
          <fpage>230</fpage>
          -
          <lpage>244</lpage>
          . Springer (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Diskin</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Easterbrook</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dingel</surname>
          </string-name>
          , J.: Engineering Associations:
          <article-title>From Models to Code and Back through Semantics</article-title>
          . In: Paige, R.F., Meyer,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Aalst</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            ,
            <surname>Mylopoulos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Rosemann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Shaw</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.J.</given-names>
            ,
            <surname>Szyperski</surname>
          </string-name>
          , C. (eds.) Objects, Components, Models and Patterns, LNBP, vol.
          <volume>11</volume>
          , pp.
          <fpage>336</fpage>
          -
          <lpage>355</lpage>
          . Springer Berlin Heidelberg (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Dove</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barua</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cheon</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Extending OCL to Better Express UML Qualified Associations</article-title>
          .
          <source>Tech. rep.</source>
          , Department of Computer Science, University of Texas at El Paso (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Flake</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Eliminating Qualifier and Association Class Ambiguities from OCL. UML 2.0: The Future of the UML Object Constraint Language (OCL)</article-title>
          , UML Conference Workshop (
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Gessenharter</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Mapping the UML2 Semantics of Associations to a Java Code Generation Model</article-title>
          . In: Czarnecki,
          <string-name>
            <given-names>K.</given-names>
            ,
            <surname>Ober</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            ,
            <surname>Bruel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.M.</given-names>
            ,
            <surname>Uhl</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          , Vo¨lter, M. (eds.)
          <source>Model Driven Engineering Languages and Systems, LNCS</source>
          , vol.
          <volume>5301</volume>
          , pp.
          <fpage>813</fpage>
          -
          <lpage>827</lpage>
          . Springer Berlin / Heidelberg (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Gogolla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , Bu¨ttner,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Richters</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.:</surname>
          </string-name>
          <article-title>USE: A UML-Based Specification Environment for Validating UML and OCL</article-title>
          .
          <source>Science of Computer Programming</source>
          <volume>69</volume>
          ,
          <fpage>27</fpage>
          -
          <lpage>34</lpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Gogolla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Richters</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Expressing UML Class Diagrams</surname>
          </string-name>
          <article-title>Properties with OCL</article-title>
          . In: Clark,
          <string-name>
            <given-names>T.</given-names>
            ,
            <surname>Warmer</surname>
          </string-name>
          ,
          <string-name>
            <surname>J</surname>
          </string-name>
          . (eds.)
          <article-title>Advances in Object Modelling with the OCL</article-title>
          , pp.
          <fpage>86</fpage>
          -
          <lpage>115</lpage>
          . Springer, Berlin, LNCS
          <volume>2263</volume>
          (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. Hamann, L.:
          <article-title>On formalizing UML and OCL features and their employment to runtime verification</article-title>
          .
          <source>Ph.D. thesis</source>
          , University of Bremen (
          <year>2015</year>
          ), http://elib.suub.unibremen.de/edocs/00104250-
          <fpage>1</fpage>
          .pdf
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Hilken</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Niemann</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gogolla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wille</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <string-name>
            <surname>From</surname>
            <given-names>UML</given-names>
          </string-name>
          /OCL to Base Models:
          <article-title>Transformation Concepts for Generic Validation and Verification</article-title>
          . In: Kolovos,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Wimmer</surname>
          </string-name>
          , M. (eds.)
          <source>Proc. 8th Int. Conf. Model Transformation (ICMT</source>
          <year>2015</year>
          ). pp.
          <fpage>1</fpage>
          -
          <lpage>17</lpage>
          . Springer, LNCS
          <volume>9152</volume>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Milicev</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>On the Semantics of Associations and Association Ends in UML</article-title>
          .
          <source>Software Engineering, IEEE Transactions on 33(4)</source>
          ,
          <fpage>238</fpage>
          -
          <lpage>251</lpage>
          (april
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Object</surname>
          </string-name>
          <article-title>Constraint Language 2.3.1</article-title>
          . Object Management Group (OMG) (
          <year>Jan 2012</year>
          ), http://www.omg.org/spec/OCL/2.3.1/
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Object</surname>
          </string-name>
          <article-title>Constraint Language 2.4</article-title>
          . Object Management Group (OMG) (
          <year>Feb 2014</year>
          ), http://www.omg.org/spec/OCL/2.4/
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Rumbaugh</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jacobson</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Booch</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>The Unified Modeling Language Reference Manual</article-title>
          .
          <source>Addison-Wesley, 2nd Edition</source>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Stevens</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>On the interpretation of binary associations in the Unified Modelling Language</article-title>
          .
          <source>Software and System Modeling</source>
          <volume>1</volume>
          (
          <issue>1</issue>
          ),
          <fpage>68</fpage>
          -
          <lpage>79</lpage>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Warmer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kleppe</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>The Object Constraint Language: Precise Modeling with UML</article-title>
          .
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          (
          <year>2003</year>
          ), 2nd Edition
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>