<!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>Towards an Automatic Approach for Restricting UML/OCL Invariability Clauses</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>(Work-in-Progress Report)</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nils Przigoda</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Judith Peters</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mathias Soeken</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Robert Wille</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Rolf Drechsler</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>A. Structure and Behavior in UML/OCL</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Cyber-Physical Systems, DFKI GmbH</institution>
          ,
          <addr-line>28359 Bremen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Group for Computer Architecture, University of Bremen</institution>
          ,
          <addr-line>28359 Bremen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>Institute for Integrated Circuits, Johannes Kepler University Linz</institution>
          ,
          <addr-line>4040 Linz</addr-line>
          ,
          <country country="AT">Austria</country>
        </aff>
      </contrib-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Modern design of hardware and software relies on
abstraction to deal with the increasing complexity of systems. Formal
models are used as abstract descriptions of the system which
provide a precise specification that can already be checked for
errors early in the design process. This significantly reduces
the costs of correcting these errors. Modeling languages such
as the Unified Modeling Language (UML) together with the
Object Constraint Language (OCL) provide a broad variety of
description means to model the structure and the behavior of
a system.</p>
      <p>In the following, we will focus on behavioral descriptions
by means of class diagrams enriched with OCL constraints.</p>
      <p>Here, behavior is modeled in terms of contracts using
socalled pre- and postconditions. Although very expressive, these
descriptions frequently leave ambiguities about which model
properties are supposed to be changed when executing an
operation (known as the frame problem). Although first solutions
(based on so-called invariability clauses) have been proposed,
no automatic approach for the evaluation of the corresponding
description means using an interpretation semantic is available
yet.</p>
      <p>In this work-in-progress report, we propose an idea to
address this problem. We first review the problem and discuss
related work in the remainder of this section. In order to in 1[T2]h.isInmthoidsewlhoarks, owriegianraelluysibnegena spirmoppolisfieedd ivner[s1i]onanwdhwicahs isfusruthffiercireenfitnfeodr
keep the descriptions simple, we avoid a formal definition but the purposes considered here.</p>
      <p>In a UML/OCL design flow, class diagrams are used to
represent structure. They consist of several classes, which are
respectively composed of attributes (representing the
information that is stored in the class) and operations (representing
possible actions that can be executed in order to change the
system state).</p>
      <p>The behavior of the system is restricted by OCL statements.</p>
      <p>Invariants state general restrictions over the whole system
and have to be satisfied in all system states. The behavior
of operations is restricted by pre- and postconditions. An
operation can only be invoked, if all preconditions evaluate
to true; in the following system state, all postconditions must
be satisfied.</p>
      <p>Example 1: We make use of the running example that is
shown in Fig. 1. The model represents an access control
system which grants access to buildings for authorized persons.1
The authorization is based on the ID of a magnetic card each
person receives. Each building is equipped with turnstiles and
card readers to check the card upon entry or exit.</p>
      <p>In the following, we focus on the operation checkCard.</p>
      <p>This operation models the authentication process using the
magnetic card. If an authentication was successful (i. e., the
card holder is allowed to get access to a building), access is
granted which is indicated by a green light at the turnstile.</p>
      <p>Otherwise, no access is granted which is indicated by a
red light. Who has access to a building is stored in the
attribute authorized; additionally, it is constantly updated who
is currently in a building (using the attribute inside). An
authentication process can only be started, if no other
authentication process is currently running (i. e., both greenLightOn
and redLightOn are false). This is accordingly realized in the
post- and preconditions.</p>
      <p>Turnstile
greenLightOn: Boolean
redLightOn: Boolean
currentlyAuthorized: Integer
timeOpen: Integer
entry: Boolean
goThrough()
advanceTime()
checkCard(card : MagneticCard)</p>
    </sec>
    <sec id="sec-2">
      <title>B. The Frame Problem of Behavioral Models</title>
      <p>
        Although very abstract, UML/OCL models can be used
for validation and verification tasks in early stages of the
design flow. Since implementation details are hidden, these
tasks target common issues at the specification level such as
consistency of models (see, e. g., [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]) or behavioral aspects
such as reachability of certain good or bad states (see, e. g.,
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]).
      </p>
      <p>However, in order to validate or verify a certain behavior
based on a UML/OCL model, a comprehensive and
deterministic description has to be available. This is usually not
provided by pre- and postconditions – in particular due to
the fact that only changes are described explicitly in the
postconditions. What is not restricted in OCL is usually
assumed to remain unchanged. However, this is not obvious
to the respective approaches for validation and verification.</p>
      <p>Example 2: Consider the operation checkCard in the
running example. From a designer’s perspective, it may be
obvious that this operation is supposed to modify greenLightOn
together with currentlyAuthorized or redLightOn only. But
from a formal perspective, arbitrary changes may seem valid
as well – even critical ones such as changes in the attribute
authorized storing who has access to which building. This is,
because no postcondition is explicitly restricting the values of
these attributes.</p>
      <p>
        Focusing on relevant model properties of course is useful
to maintain comprehensibility of the model. Nevertheless, as
soon as approaches for validation and verification shall be
applied, these ambiguities must be addressed explicitly. It
is essential to know which model properties are eligible to
changes even if these changes are not specified in detail. This
problem is known as the frame problem [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>In order to address this problem, further OCL conditions,
so-called frame conditions, defining the variability of model
properties can be added to the model. In a naïve fashion,
this can be conducted by simply adding terms such as
model_property = model_property@pre as postcondition for
every model property that shall not be changed during the
operation call. But obviously this is not practicable for large
models undergoing continuous changes during the design
process.</p>
      <p>
        Instead, it is often much more elegant to specify model
properties that may change [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. This perception led to
the modifies (only)-scheme in which clauses define model
properties that can be changed during an operation call.
Although this construct is not yet part of the OCL standard,
it is received well and has already been used frequently, e. g.,
in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>Example 3: Consider the model in Fig. 1. As stated before,
the designer’s intention is to change only currentlyAuthorized,
greenLightOn, and redLightOn when executing the operation
checkCard. The following terms ensure this behavior when
added to the OCL specification:
modi es : self::greenLightOn
modi es : self::redLightOn
modi es : self::currentlyAuthorized</p>
    </sec>
    <sec id="sec-3">
      <title>C. Interpretation Semantics</title>
      <p>The application of the modifies (only) construct as given in
Example 3 directly leads to another severe problem: In many
cases, attribute values only change depending on a particular
system state. However, the modifies (only)-construct does not
take this into consideration and applies unconditionally.</p>
      <p>Example 4: Consider the operation checkCard in Fig. 1.
The modifies (only) clauses from Example 3 clearly reduce the
ambiguities, but open questions remain. In fact, greenLightOn
and redLightOn are restricted by an implication. If the premise
of this implication evaluates to false, both attributes can be set
arbitrarily.</p>
      <p>
        Consequently, a more sophisticated definition about what
changes are allowed in an operation call is required. Similar
to the modifies (only) clauses, first solutions how to evaluate
and describe that have been proposed in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Here, several
heuristics for the most common OCL operators are provided
defining what effect they may have on the variability of the
used model properties. This led to a so-called interpretation
semantic providing a detailed definition which model
properties are supposed to change and under which conditions.
      </p>
      <p>
        Example 5: In the considered example, all postconditions
are implications (i. e., defined using the OCL operator implies).
According to the heuristic interpretation semantics from [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ],
this suggest that the following model properties are supposed
to change:
greenLightOn and currentlyAuthorized,
if building.authorized-&gt;includes(card.id) and
entry &lt;&gt; building.inside -&gt;includes(card.id)
redLightOn,
if not ( building.authorized -&gt;includes(card.id) )
However, even with these heuristics the user still has to define
the resulting invariability clauses manually. Since this is
timeconsuming and error-prone, automatic methods which aid the
designer in the generation of general frame conditions have
recently been proposed in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Evaluations confirmed that
they significantly help in completing the model and removing
the ambiguities discussed above. But these approaches do not
support the usage of an additional interpretation semantics for
the evaluation as suggested in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. In this work-in-progress
report, we aim for closing this gap with an approach that
analyses given pre- and postconditions of an operation in order
to automatically enforce the desired evaluation using
interpretation semantics as sketched in Example 5 and following the
heuristics from [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <sec id="sec-3-1">
        <title>II. GENERAL IDEA</title>
        <p>
          In order to automatically generate constraints that enforce
given interpretation semantics, we propose an approach which
is based on the analysis of the Abstract Syntax Tree (AST)
of a given OCL constraint. Each node of the AST represents
an OCL expression and may have subtrees as successors
(representing the corresponding sub-expressions). This structure
allows us to explicitly employ the heuristics suggested in [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ].
More precisely, the proposed approach traverses the AST and
checks whether heuristics are applicable. If so, it automatically
generates the resulting constraints enforcing the semantics.
        </p>
        <p>For this purpose, our approach introduces two auxiliary
Boolean variables for each node, namely
1) 'i which represents whether the currently considered
sub-expression (represented by the AST node) evaluates
to true or false, and
2) i which represents whether the model properties used in
the currently considered sub-expression (represented by
the subtree of the AST node) are supposed to change or
not.</p>
        <p>Using the AST and these variables, the interpretation
semantics can automatically be enforced as sketched in the following
example.</p>
        <p>Example 6: Consider again the example in Fig. 1. Fig. 2
provides the AST of the postcondition for the
operation checkCard.2 This AST is divided into subtrees for every
node whose expression relies on an OperationCallExp with
Boolean operands.3</p>
        <p>2Since a valid call of this operation has to satisfy all postconditions, the
single postconditions are combined using an and-operator.</p>
        <p>
          3Other expressions are not handled in this work. But for a complete set of
rules issues such as navigation chains have to be considered as well. Ideas
for such rules have already been proposed in [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ].
        </p>
        <p>Using this AST, the first auxiliary variables are added,
e. g., 'i with i = 1; 2; 3. Additional constraints ensure
that the assignment of 'i is in-line with the evaluation of
the respectively considered expression (with respect to the
currently considered system state), e. g., '1 represents the
evaluation of the root and-operation and, hence, '1 , '2^'3.
Similarly, '2 , J '2 K and '3 , J '3 K are enforced
where J 'i K represents the evaluation of the corresponding
subtree of the AST.</p>
        <p>
          Next, the i-variables representing the variability of the
model properties contained in the (sub)tree are added.
According to the heuristics from [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], whether a model property is
supposed to change its value depends on (i) the respectively
considered OCL operator and (ii) the evaluation of its
subexpression. Both information is readily available in the AST
and the corresponding 'i-variables.
        </p>
        <p>For example, for the root node of AST, '1 , 1 has to
be satisfied, because the values of model properties should be
modified only when the specific operation is called and the
operation call is valid – indicated by '1 , true.</p>
        <p>As another example (discussed before in Example 5),
consider the implies sub-expression, which is marked by '2; 2
in Fig. 2. The left side, marked by '4; 4, represents the
premise, which is normally not intended to be changed. This
means, that 4 , false and also i , false is propagated
to all subtrees, as none of them is supposed to change. The
other side of the implication, marked with '5; 5, is only
supposed to be changed, if the premise holds, i. e., '4 , true.
This means 5 , true iff '4 , true and sets generally
greenLightOn, currentlyAuthorized and card.id changeable.
However, card.id is a parameter which shall not be changed
and currentlyAuthorized saves the authorized id which should
be changeable. The variables for all other nodes are set
analogously.</p>
        <p>Following the sketched scheme, constraints are generated
which avoid undesired changes during an operation call.
However, this does not entirely solve the task. In fact, so far only
the dependencies between 'i and i have been considered,
but their connection to the model properties is still missing.
In order to do that, two cases have to be considered, namely
the given model does not provide any further information
or
the model is enriched by frame conditions using the
modi es (only) scheme reviewed in Section I-B.</p>
        <p>If no frame conditions are given, a simple
“nothing-elsechanges” heuristic is applied for all model properties that do
not occur in the AST. For the remaining model properties m
which do occur in the expression, the statement</p>
        <p>0 1
is added, where (m) is the set of all i-variables which
have to be taken into account for the model property m.
It includes all i-variables which correspond to the smallest
subtrees containing the respective model property m (and only
those ones).</p>
        <p>'7; 7
includes
authorized
building
self
id
card
entry
self
inside
building
self
includes</p>
        <p>and
greenLightOn
self
true
currentlyAuthorized
self
id
card
self</p>
        <p>true
authorized
building
self
id
card
In case of given modi es (only) statements, only the model
properties mentioned in these statements, which are
additionally found to be changeable by our analysis, have to be taken
into account.</p>
        <p>Example 7: Consider again the AST from Fig. 2. With
no additional information, the following set of i and the
respective constraints are derived by the analysis, e. g., for
card.id:</p>
        <p>(card.id) = f 7; 8; 10; 11g
:( 7 _ 8 _ 10 _ 11) ) card.id=card.id@pre</p>
        <p>This means, that card.id can only be modified, if at least one
of the respective i allows for this modification. In case that
at least one i allows the modification, the premise evaluates
to false due to the negation and card.id stays changeable.</p>
        <p>If additionally the modi es (only) constructs are
given as introduced in Example 3 for greenLightOn,
currentlyAuthorized, and redLightOn, only (m)-sets for
these three model properties have to be considered (all other
can be ignored). For example, card.id is directly enforced to
be unchangeable by adding the respective constraints. This
results in the following i-sets and respective constraints:
(greenLightOn) = f 9g
(currentlyAuthorized) = f 10g
(redLightOn) = f 12g</p>
        <p>By design, it is impossible that both premises of the two
implications evaluate to true. Consequently, either 9 and 10
or 12 can evaluate to true. In the first case, greenLightOn and
currentlyAuthorized are changeable while redLightOn is not
changeable, and vice versa for the second case. This behavior
better fits the designer’s intention, as opposed to an undesired
change of greenLightOn and redLightOn within one call.</p>
      </sec>
      <sec id="sec-3-2">
        <title>III. CONCLUSION &amp; FUTURE WORK</title>
        <p>
          We extended existing approaches for the generation of frame
conditions (such as [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]) with a fully automatic one
that interprets OCL expressions with regard to a standard
interpretation. If necessary, this interpretation can be adjusted
by changing the evaluation rules of the 'i- and i-variables.
        </p>
        <p>
          In this concept, only basic operators were covered, but
some as, e. g., iterator expressions are still missing. However,
these operators can and will be covered by transforming them
into the basic operators. Currently we are implementing this
approach on top of the verification approach proposed in [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ].
        </p>
        <p>Possible direction for future work is to enable the designer
to inspect the annotated AST for changing propagations and
evaluations of the 'i; i-variables on demand. Besides that,
a thorough evaluation of the proposed automatic generation
scheme is left for future work.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J.-R.</given-names>
            <surname>Abrial</surname>
          </string-name>
          . (
          <year>1999</year>
          )
          <article-title>System Study: Method and Example</article-title>
          . [Online]. Available: http://atelierb.eu/ressources/PORTES/Texte/porte.anglais.ps.gz
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>N.</given-names>
            <surname>Przigoda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Stoppe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Seiter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Wille</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Drechsler</surname>
          </string-name>
          , “
          <article-title>Verification-driven Design Across Abstraction Levels - A Case Study,” in</article-title>
          <string-name>
            <surname>DSD</surname>
          </string-name>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kuhlmann</surname>
          </string-name>
          , and L. Hamann, “Consistency,
          <article-title>Independence and Consequences in UML and OCL Models,” in TAP, ser</article-title>
          . Lecture Notes in Computer Science, C. Dubois, Ed., vol.
          <volume>5668</volume>
          . Springer,
          <year>2009</year>
          , pp.
          <fpage>90</fpage>
          -
          <lpage>104</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Soeken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Wille</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kuhlmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Drechsler</surname>
          </string-name>
          , “
          <article-title>Verifying UML/OCL models using Boolean satisfiability,” in Design, Automation and Test in Europe</article-title>
          .
          <source>IEEE Computer Society</source>
          ,
          <year>2010</year>
          , pp.
          <fpage>1341</fpage>
          -
          <lpage>1344</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M.</given-names>
            <surname>Soeken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Wille</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Drechsler</surname>
          </string-name>
          , “
          <article-title>Verifying Dynamic Aspects of UML models,” in DATE</article-title>
          . IEEE,
          <year>2011</year>
          , pp.
          <fpage>1077</fpage>
          -
          <lpage>1082</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          , L. Hamann, F. Hilken,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kuhlmann</surname>
          </string-name>
          , and R. B. France, “
          <article-title>From application models to filmstrip models: An approach to automatic validation of model dynamics</article-title>
          ,” in Modellierung,
          <year>2014</year>
          , pp.
          <fpage>273</fpage>
          -
          <lpage>288</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>A.</given-names>
            <surname>Borgida</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Mylopoulos</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Reiter</surname>
          </string-name>
          , “
          <article-title>On the frame problem in procedure specifications</article-title>
          ,
          <source>” IEEE Trans. Software Eng.</source>
          , vol.
          <volume>21</volume>
          , no.
          <issue>10</issue>
          , pp.
          <fpage>785</fpage>
          -
          <lpage>798</lpage>
          ,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A. D.</given-names>
            <surname>Brucker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. P.</given-names>
            <surname>Krieger</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Wolff</surname>
          </string-name>
          , “
          <article-title>Extending OCL with nullreferences</article-title>
          ,” in MoDELS,
          <year>2009</year>
          , pp.
          <fpage>261</fpage>
          -
          <lpage>275</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>P.</given-names>
            <surname>Kosiuczenko</surname>
          </string-name>
          , “
          <article-title>Specification of invariability in OCL - specifying invariable system parts and views</article-title>
          ,
          <source>” Software and System Modeling</source>
          , vol.
          <volume>12</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>415</fpage>
          -
          <lpage>434</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M. P.</given-names>
            <surname>Krieger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Knapp</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Wolff</surname>
          </string-name>
          , “
          <article-title>Automatic and efficient simulation of operation contracts</article-title>
          ,” in GPCE,
          <year>2010</year>
          , pp.
          <fpage>53</fpage>
          -
          <lpage>62</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , “From Declarative to Imperative UML/OCL Operation Specifications,” in Conceptual Modeling,
          <year>2007</year>
          , pp.
          <fpage>198</fpage>
          -
          <lpage>213</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>P.</given-names>
            <surname>Niemann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Hilken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Wille</surname>
          </string-name>
          , “
          <article-title>Assisted generation of frame conditions for formal models</article-title>
          ,” in DATE,
          <year>2015</year>
          , pp.
          <fpage>309</fpage>
          -
          <lpage>312</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13] --, “Extracting Frame Conditions from Operation Contracts,” in MODELs,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>