<!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>What Is This Thing Called Use Case Inheritance?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Pierre Metz</string-name>
          <email>pierre.metz@brose.com</email>
          <email>pierre.metz@intacs.info</email>
          <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>Actors</institution>
          ,
          <addr-line>Goals, and Use Cases</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Brose Fahrzeugteile GmbH &amp; Co. KG, Germany, formerly Cork Institute of Technology, Computing Dept., Cork, Ireland and Darmstadt University of Applied Sciences</institution>
          ,
          <addr-line>German</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Recollection of Use Case Basics</institution>
        </aff>
      </contrib-group>
      <fpage>285</fpage>
      <lpage>297</lpage>
      <abstract>
        <p>In more than two 2 decades of use case modelling there has been a imprecisely defined notion in UML since v1.1 that has never been fully understood, namely use case inheritance (UCI). Therefore, this paper suggests a necessary reconciliation to achieve a broader acceptance and attractiveness in practice while reducing confusion, with a clear demarcation from the Include/Extend relationships. This is done based on implications from the author's completed PhD research, UCI suggestions found in research contributions, technical text books as well as literature about OO inheritance semantics, and the author's personal professional industry experience. Rather than being a typical formal research paper, the drivers of the presented solution proposal are to offer pragmatic and practical UCI application rules for the industry. This should offer a basis for further qualitative validation by requirements engineers in practice, and, also for future conceptual research.</p>
      </abstract>
      <kwd-group>
        <kwd>Use Cases</kwd>
        <kwd>Use Case Relationships</kwd>
        <kwd>Requirements Engineering</kwd>
        <kwd>Inheritance</kwd>
        <kwd>Specialization</kwd>
        <kwd>Generalization</kwd>
        <kwd>Subtyping</kwd>
        <kwd>Polymorphism</kwd>
        <kwd>UML</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        1.1
apparatus. Thus, it sets corresponding goals for the system to deliver. These goals
lead to desired functional system requirements specifications, i.e. not internal design
solutions, expressed by use cases [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ],[
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Each use case delivers a single go al (see
Example 1). An
actor instance processes only those use cases that the actor is connected to.
      </p>
    </sec>
    <sec id="sec-2">
      <title>Example 1: Use Case Goal</title>
      <p>“Register New Customer Order”</p>
      <sec id="sec-2-1">
        <title>Basic Course:</title>
        <sec id="sec-2-1-1">
          <title>1. Sales clerk enters customer</title>
          <p>ID.
2. System displays customer
profile.
3. Sales clerk confirms that the
customer’s credit rating is
sufficient.</p>
        </sec>
        <sec id="sec-2-1-2">
          <title>4. System assigns an order ID.</title>
        </sec>
        <sec id="sec-2-1-3">
          <title>5. Sales clerk registers the desired trade items and payment information.</title>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>Use Case Postconditions:</title>
        <sec id="sec-2-2-1">
          <title>System has initiated an order, has documented payment information, and has registered the order with the customer.</title>
          <p>Clerk of
the Sales</p>
          <p>Dept.</p>
          <p>Register New
Customer Order</p>
          <p>Fig. 1: Use case diagram for Example 1
Alternative Courses:</p>
        </sec>
        <sec id="sec-2-2-2">
          <title>1a. Sales clerk wants to look up</title>
          <p>the customer:
.1 System shows all
customers.
.2 Sales clerk browses the
list and selects one.</p>
        </sec>
        <sec id="sec-2-2-3">
          <title>Rejoin at 2.</title>
        </sec>
        <sec id="sec-2-2-4">
          <title>3a. Customer’s outstanding debts</title>
          <p>are above the threshold:
.1 System notifies the key
account manager for
mediation purposes.</p>
        </sec>
        <sec id="sec-2-2-5">
          <title>Use case fails.</title>
          <p>1.2</p>
          <p>
            Use Case Pre- and Postconditions
From the goal of each use case a set of corresponding outcomes is derived to be
established upon successful goal delivery [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ],[
            <xref ref-type="bibr" rid="ref10">10</xref>
            ], i.e. successful use case completion.
Each of these results is required by the business processes associated with the
discussed use case and, therefore, is delivered to at least one primary actor or stakeholder
[
            <xref ref-type="bibr" rid="ref1">1</xref>
            ],[
            <xref ref-type="bibr" rid="ref4">4</xref>
            ],[
            <xref ref-type="bibr" rid="ref5">5</xref>
            ],[
            <xref ref-type="bibr" rid="ref10">10</xref>
            ],[
            <xref ref-type="bibr" rid="ref19">19</xref>
            ],[
            <xref ref-type="bibr" rid="ref20">20</xref>
            ],[
            <xref ref-type="bibr" rid="ref25">25</xref>
            ]. The set of use case business results are also called use
case postconditions [
            <xref ref-type="bibr" rid="ref4">4</xref>
            ],[
            <xref ref-type="bibr" rid="ref5">5</xref>
            ],[
            <xref ref-type="bibr" rid="ref20">20</xref>
            ],[
            <xref ref-type="bibr" rid="ref30">30</xref>
            ], In many cases, a use case requires some
condition to hold before it can be triggered and executed by an actor instance. These are
called use case preconditions. The view of use case goals, use case pre- and
postconditions were considered a “contractual” specification [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ],[
            <xref ref-type="bibr" rid="ref20">20</xref>
            ],[
            <xref ref-type="bibr" rid="ref31">31</xref>
            ] thereby seemingly
resembling the Design-by-Contract principle in [
            <xref ref-type="bibr" rid="ref25">25</xref>
            ]. However, there is a fundamental
difference: Design-by-Contract demands the caller of a service to guarantee the
preconditions in order for the callee to deliver this service, the result of which is
specified by postconditions. Clearly, for use cases an actor instance is the “caller”.
However, use case precondition checking is always a system responsibility, i.e. done by the
callee but never by the caller [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ],[
            <xref ref-type="bibr" rid="ref4">4</xref>
            ],[
            <xref ref-type="bibr" rid="ref5">5</xref>
            ],[
            <xref ref-type="bibr" rid="ref10">10</xref>
            ],[
            <xref ref-type="bibr" rid="ref20">20</xref>
            ],[
            <xref ref-type="bibr" rid="ref30">30</xref>
            ]. For example, the preconditions
of an ATM’s “Withdraw Cash” use case would include “Cash reservoir not empty”.
Therefore, use case pre- and postconditions do not correspond to Design-by-Contract.
1.3
          </p>
          <p>
            Use Case Interaction
Accomplishing the goal-driven postconditions by the system might require active
interaction with the actor instance at the system boundary
[
            <xref ref-type="bibr" rid="ref1">1</xref>
            ],[
            <xref ref-type="bibr" rid="ref4">4</xref>
            ],[
            <xref ref-type="bibr" rid="ref10">10</xref>
            ],[
            <xref ref-type="bibr" rid="ref17">17</xref>
            ],[
            <xref ref-type="bibr" rid="ref18">18</xref>
            ],[
            <xref ref-type="bibr" rid="ref19">19</xref>
            ],[
            <xref ref-type="bibr" rid="ref20">20</xref>
            ]
1.4
          </p>
          <p>
            The Extend- and Include-Relationships
The Include and Extend relationships have been defined and explained as static
relationships for use case restructuring or refactoring of specifications, e.g. for removing
redundancy or use case decomposition [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ],[
            <xref ref-type="bibr" rid="ref4">4</xref>
            ],[
            <xref ref-type="bibr" rid="ref5">5</xref>
            ],[
            <xref ref-type="bibr" rid="ref15">15</xref>
            ],[
            <xref ref-type="bibr" rid="ref14">14</xref>
            ],[
            <xref ref-type="bibr" rid="ref18">18</xref>
            ],[
            <xref ref-type="bibr" rid="ref19">19</xref>
            ],[
            <xref ref-type="bibr" rid="ref22">22</xref>
            ],[
            <xref ref-type="bibr" rid="ref23">23</xref>
            ],
[
            <xref ref-type="bibr" rid="ref24">24</xref>
            ],[
            <xref ref-type="bibr" rid="ref32">32</xref>
            ]. In this respect, Extend is explained as attaching to a base use case a
description of a set of interaction steps that can be subject to a condition. On the contrary,
Include is understood as attaching a description of a mandatory set of interaction
steps. Therefore, an inclusion/extension use case always remains a part of a static
system functionality description. In fact, in [
            <xref ref-type="bibr" rid="ref24">24</xref>
            ] it has been shown that Include and
Extend follow whole-part (aggregation) relationship semantics.
          </p>
          <p>If factored out by Include/Extend these interaction parts also form a use case, i.e. they
receive a goal and
postconditions. It follows
that this goal is a sub- «extend» Look Up Customer
icgonaougstaelg,inoiota.eelfr.faocttrhhtieetohnesbufwamashcemtiocahrrueisdsies-- thCeDleeSrpkatlo.efs CRusetgoims«teeinrrcONluerddwee«»rextend» HfOraovumetsRCtaeunssdotionlvmgeedDreOwbritdtsher
a subset of the base use
case interaction. This is Create Order
obvious for
Includeattached interaction, and Fig. 2: Use case diagram of Example 1 showing the
alternait is also true extension tive courses, and interaction steps 4 and 5 factored out
(and therefore condi- by Include and Extend, respectively
tional) use cases. Arguing that an extension use case may or may not be executed
depending on condition evaluation is a runtime or at least a scenario perspective; in
contrast, as shown above use cases are static requirements descriptions (see Section
1.1) prior to design, so talking about goals is a conceptual and business semantics
perspective.</p>
          <p>
            Hence, exclusion use cases hold sub-goals, i.e. either something additional, or a
different approach to fulfilling a base use case interaction step [
            <xref ref-type="bibr" rid="ref23">23</xref>
            ]. See Fig. 2 as an
example: the goal “Create order” would be a summarising goal of the interaction steps
4 and 5 in Example 1; the goals for alternative course 1a in Example 1 would be
“Look Up Customer”, and its postcondition could be “Customer has been marked”.
We see that goal-subgoal semantics are independent of model
restructuring/refactoring through Include/Extend [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ],[
            <xref ref-type="bibr" rid="ref10">10</xref>
            ].
          </p>
          <p>
            Use Case Inheritance – Literature Review and Related Work
In practice, and in some literature e.g. [
            <xref ref-type="bibr" rid="ref20">20</xref>
            ], it is sometimes believed that Extend can
be seen as a generalisation relationship. However, Section 1.4 and, also, references
[
            <xref ref-type="bibr" rid="ref22">22</xref>
            ],[
            <xref ref-type="bibr" rid="ref24">24</xref>
            ],[
            <xref ref-type="bibr" rid="ref32">32</xref>
            ],[
            <xref ref-type="bibr" rid="ref36">36</xref>
            ] show that this view cannot be uphold. Furthermore, the fact that
UML [
            <xref ref-type="bibr" rid="ref26">26</xref>
            ] keeps Extend explicitly separate from UCI implies that Extend is not
meant to have the same semantics since otherwise this distinction would be
meaningless.
          </p>
          <p>
            It can often be observed that it is silently assumed, or even explicitly claimed, that
UCI works the “same way” as with classes in the OO domain [
            <xref ref-type="bibr" rid="ref17">17</xref>
            ],[
            <xref ref-type="bibr" rid="ref18">18</xref>
            ],[
            <xref ref-type="bibr" rid="ref19">19</xref>
            ],[
            <xref ref-type="bibr" rid="ref26">26</xref>
            ],[
            <xref ref-type="bibr" rid="ref27">27</xref>
            ].
This view is probably fostered by UML’s persisting foundation of use cases as
Classifiers since v1.1, which yields object semantics [
            <xref ref-type="bibr" rid="ref26">26</xref>
            ], and also by former UML v1.4’s
statement:
“A generalization relationship between use cases implies that the child use case
contains all the attributes, sequences of behavior, and extension points defined in
the parent use case, and participates in all relationships of the parent use case.
The child use case may also … add additional behavior into and specialize …
behavior of the inherited ones.” [
            <xref ref-type="bibr" rid="ref26">26</xref>
            ].
          </p>
          <p>
            Most authors avoid making any commitment and prefer to provide explanations like
UCI is about “variations”, “indicating commonalities”, the child use case “doing a bit
more” than the parent use case, or “adding to and redefining/overriding” parent
interaction and properties [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ],[
            <xref ref-type="bibr" rid="ref3">3</xref>
            ],[
            <xref ref-type="bibr" rid="ref4">4</xref>
            ],[
            <xref ref-type="bibr" rid="ref5">5</xref>
            ],[
            <xref ref-type="bibr" rid="ref6">6</xref>
            ],[
            <xref ref-type="bibr" rid="ref19">19</xref>
            ],[
            <xref ref-type="bibr" rid="ref20">20</xref>
            ],[
            <xref ref-type="bibr" rid="ref28">28</xref>
            ],[
            <xref ref-type="bibr" rid="ref29">29</xref>
            ].
          </p>
          <p>
            In [
            <xref ref-type="bibr" rid="ref18">18</xref>
            ] Jacobson introduces the idea of “abstract use cases”, i.e. a use case which
contains generic interaction step placeholder to be expanded on in a child use case, a
concept which is also supported by UML [
            <xref ref-type="bibr" rid="ref26">26</xref>
            ].
          </p>
          <p>
            In [
            <xref ref-type="bibr" rid="ref4">4</xref>
            ],[
            <xref ref-type="bibr" rid="ref17">17</xref>
            ],[
            <xref ref-type="bibr" rid="ref18">18</xref>
            ],[
            <xref ref-type="bibr" rid="ref27">27</xref>
            ] it is claimed that a child use case must preserve the parent use
case order of interaction steps. Apparently, this is driven by the assumption that use
case inheritance should ensure OO behavioural conformity when substituting child
entities for parent entities (see Section 3 for more explanation).
          </p>
          <p>
            In [
            <xref ref-type="bibr" rid="ref2">2</xref>
            ] it is suggested that
          </p>
          <p>
            “inheritance between use cases should be applied whenever a single condition
… would result in the definition of several alternative courses.”
thereby making fuzzy the concepts of locally specified alternative interaction courses
(ScenarioPlusFragments use case pattern in [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ],[
            <xref ref-type="bibr" rid="ref10">10</xref>
            ] and the extracting of such
alternative courses via Extend (PromotedAlternative pattern in [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ]). Why creating a new
use case instead of simply adding the new behaviour to the given use case?
          </p>
          <p>
            To [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ] Rawsthorne contributed the CapturedAbstraction use case pattern, which
develops further Cockburn’s idea of documenting Technology Variations [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ]. This
pattern suggests placing pure technology variations of given parent use case (e.g.
interactions for blind people, voice control, loading of a keycard instead of money
dispensing for a Withdraw Cash use case) into new child use cases instead of
cluttering the parent use case up with a large number of alternative courses.
          </p>
          <p>
            Cockburn [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ], looking at use case inheritance from a Generalization perspective,
disregards the concept in practice. The UML [
            <xref ref-type="bibr" rid="ref26">26</xref>
            ] use case inheritance semantics of
allowing a child use case to be substituted wherever a parent use case is mentioned he
explains as being in conflict with business process logic.
          </p>
          <p>
            Without any connection to use case inheritance, he suggests removing redundancy
through parameterisation: consider the use case “Find Customer Order” in the sales
domain. Further consider the use case “Find Insurance Policy” in the insurance
domain. Cockburn states that, though there are differences due to the different business
domains, these use cases will contain identical interaction logic with respect to
“finding something”. He suggests placing all identical interaction steps into the parent use
case and adding placeholders at those places at which each child use case sets
concrete concern-specific interaction (see Example 3, below). A notation for this is not
proposed though. The same suggestion is made in [
            <xref ref-type="bibr" rid="ref5">5</xref>
            ] by Bittner/Spence and [
            <xref ref-type="bibr" rid="ref16">16</xref>
            ] by
Hitz/Kappel.
          </p>
          <p>
            In [
            <xref ref-type="bibr" rid="ref30">30</xref>
            ] it is claimed, without further explanation, that there is no UCI at all.
3
          </p>
          <p>
            Consulting Object-Oriented (OO) Inheritance Semantics
Basically, in the OO domain inheritance is not only considered an implementation
tool but also a general modelling and “thinking” concept. It addresses the creating of
abstractions based on existing abstractions without modifying the latter (Open-Closed
principle). Ideally, inheritance ought to represent subtyping which is also referred to
as conceptual specialisation, or strict inheritance [
            <xref ref-type="bibr" rid="ref35">35</xref>
            ]. Subtyping demands true
semantic correspondence of the child to its parents. A further goal of subtyping is the
enabling of the processing of an object of a subtype on behalf of an object of a
supertype (substitutability), thereby demanding behavioural compatibility, a term which is
also referred to as semantic conformance or behavioural subtyping. This introduces
dynamic polymporphism, as also called subtyping polymorphism or dynamic typing,
that is realised by late-binding. Such behavioural compatibility has been addressed by
e.g. Meyer’s Design-by-Contract [
            <xref ref-type="bibr" rid="ref25">25</xref>
            ], the Liskov Substitution Principle (LSP) [
            <xref ref-type="bibr" rid="ref21">21</xref>
            ],
or by Cook/Daniels [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ], all of which guarantee the Open-Closed principle.
          </p>
          <p>
            Inheritance further introduces the possibility of defining semantic abstractions
with the decision about their properties’ data types being deferred to instantiation
time. This is called parametric polymorphism which does not require runtime
concepts like late-binding [
            <xref ref-type="bibr" rid="ref8">8</xref>
            ],[
            <xref ref-type="bibr" rid="ref34">34</xref>
            ]. Today, in the programming domain this concept is
often compared to template classes or generic programming.
          </p>
          <p>
            In spite of the fact that subtyping was often regarded as the only legitimate reason
for applying inheritance [
            <xref ref-type="bibr" rid="ref35">35</xref>
            ], the evolution of OO approaches, systems, languages,
and concepts has shown that inheritance does not necessarily ensure subtyping.
Rather, inheritance allows the modification of child properties in various manners by
adding, redefining/overriding, and even removing properties, and by changing
visibility of properties [
            <xref ref-type="bibr" rid="ref35">35</xref>
            ]. In the implementation domain, this is particularly exploited for
pragmatic reasons such as saving coding effort (reuse), reducing memory needs, or
introducing more efficient algorithms, all of which is not based on conceptual
reasons. Furthermore, inheritance can be used as a pure hierarchical structuring tool by
introducing abstract classes revealing abstract operations, i.e. having no methods; in
contrast, concrete sub-classes provide such methods, thereby further supporting
polymorphism. Pure abstract classes, i.e. having abstract operations only, equal to the
concept of interfaces. This, in turn, has led to the concept of interface inheritance as
opposed to property inheritance [
            <xref ref-type="bibr" rid="ref35">35</xref>
            ], i.e. inheriting operations vs. inheriting
methods, attributes, constraints and associations. Due to the possibility of object
concatenation (delegation) [
            <xref ref-type="bibr" rid="ref33">33</xref>
            ],[
            <xref ref-type="bibr" rid="ref35">35</xref>
            ] the concept of static vs. dynamic inheritance was
discussed, the latter of which provides the ability for an object to change its parents at
runtime [
            <xref ref-type="bibr" rid="ref8">8</xref>
            ],[
            <xref ref-type="bibr" rid="ref33">33</xref>
            ],[
            <xref ref-type="bibr" rid="ref35">35</xref>
            ].
          </p>
          <p>
            All this makes it impossible to make the objective statement that the “very
essence” of all types and variations of inheritance apparently is allowing incremental
modification while following the Open-Closed principle [
            <xref ref-type="bibr" rid="ref35">35</xref>
            ].
          </p>
          <p>
            My Proposal – Discouraged Use Case Inheritance Semantics
Use Cases Cannot be Treated Polymorphically “At Runtime”
In agreement with Cockburn [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ] I suggest that substitutability (see Section 3) should
not valid for use cases. Why? Use cases are not programs but static requirements
specifications (see Section 1.1). Hence, why would an actor instance need to process a
more special or more general use case on behalf of the one that was specified for it
based on its individual operational responsibilities, role definition, job description?
Why would an actor instance perform a use case the postconditions of which would
deliver more or even less than needed by the surrounding business process needs and
business rules? Therefore, use case performances are non-substitutable, i.e. for use
cases there neither is runtime polymorphism and late binding nor dynamic
inheritance.
4.2
          </p>
          <p>
            Multiple Use Case Inheritance Disregarded
UML allows multiple inheritance of use cases [
            <xref ref-type="bibr" rid="ref26">26</xref>
            ]. However, my opinion is that the
idea of multiple UCI is not applicable
because it violates the Separation of
Concerns principle [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ],[
            <xref ref-type="bibr" rid="ref22">22</xref>
            ]: as we UC1 UC2
know from Section 1.1 a use case is a Actor A Actor C
goal-driven requirements specification UC3
of an individual, independent, and
behaviourally coherent system func- Actor B
tionality representing a
systemsupported part of the pre-existing busi- Fig. 3: Multiple use case inheritance
ness processes. In this respect, a use
case is, in fact, a single business concern [
            <xref ref-type="bibr" rid="ref22">22</xref>
            ]. Consequently, the collapsing of two
distinct business concerns, i.e. use cases, into one is in conflict with this principle
(even if UC3 in Fig.3 was adding further interactions). Would stakeholders and end
users actually demand new a system functionality that consists of an assembly of two
distinct already existing ones?
          </p>
          <p>
            In fact, the existence of a use case child with multiple parents rather indicates the
general confusing of inheritance and the employing of whole/part-like use case
relationships, i.e. Include or Extend (see Section 1.4). A similar confusion has already
been reported in the OO programming domain [
            <xref ref-type="bibr" rid="ref34">34</xref>
            ] where often mixin classes [
            <xref ref-type="bibr" rid="ref7">7</xref>
            ] are
created where delegation, i.e. aggregating classes by associations, or single
inheritance, respectively, would have been the appropriate tool [
            <xref ref-type="bibr" rid="ref34">34</xref>
            ].
5
5.1
          </p>
          <p>
            My Proposal – Encouraged Use Case Semantics
Parametrization of Identifiers Within Interaction Steps (“Parametric
Polymorphism”)
I combine Cockburn’s [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ] notion of parameterized use cases, and the ideas of
Bittner/Spence [
            <xref ref-type="bibr" rid="ref5">5</xref>
            ] and Hitz/Kappel [
            <xref ref-type="bibr" rid="ref16">16</xref>
            ], to suggest the idea of parametric
polymorphism for use cases as follows:
Rule 1. Parameterizing Identifiers
Use case interaction steps contain identifiers (i.e. generic data placeholders) instead of
concrete values, e.g. “customer name” instead of “John Doe”. Now, for maximum
reuse purposes and reducing redundancy, even such identifiers may be left
unspecified (parameterization) in the parent, and in the child use cases only the expanding
concrete identifier names have to be listed. The rest of the parent use case is valid also
in the child use cases. E.g. a child use case identifier “customer name” could be
abstracted to “search criterion” in the parent use case.
          </p>
          <p>Example 2:
The following automotive domain
example exploits the concept for
propagating light signals to a hitch
controller on a car driver’s actions
such as using the indicators or
braking. In the parent use case generic
identifiers are given in italics:
Goal “Receive Light Signal”</p>
          <p>Trigger: Edge change for &lt;signal&gt; detected</p>
        </sec>
      </sec>
      <sec id="sec-2-3">
        <title>Basic course:</title>
        <sec id="sec-2-3-1">
          <title>1. Hitch controller either activates &lt;actuators&gt; upon rising edge or deactivates &lt;actuators&gt; upon trailing edge.</title>
          <p>Hitch
Controller</p>
          <p>Receive Light Signal
Receive Indicator</p>
          <p>Left Signal</p>
          <p>Receive Breaking</p>
          <p>Signal</p>
          <p>Fig. 4: Identifier parameterization
Car System</p>
        </sec>
      </sec>
      <sec id="sec-2-4">
        <title>Postconditions:</title>
        <sec id="sec-2-4-1">
          <title>Electric contacts of &lt;actuators&gt; activated when corresponding car system &lt;signal&gt; activated.</title>
          <p>Goal “Receive Indicator Left
Signal”
signal: left indicator
actuators: IndicatorRearLeft
Goal “Receive Braking Signal”
signal:
actuators:
braking</p>
        </sec>
        <sec id="sec-2-4-2">
          <title>BrakingRearRight,</title>
        </sec>
        <sec id="sec-2-4-3">
          <title>BrakingRearLeft</title>
          <p>5.2</p>
          <p>
            Parametrization of Entire Interaction Steps (“Hierarchy Abstractions”)
I adopt Jacobson et al.’s original idea of “abstract use cases” [
            <xref ref-type="bibr" rid="ref18">18</xref>
            ] (see also [
            <xref ref-type="bibr" rid="ref27">27</xref>
            ],[
            <xref ref-type="bibr" rid="ref28">28</xref>
            ])
Rawthornes CapturedAbstraction use case pattern [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ], and Cockburn’s Technology
Variations [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ] by integrating in terms of the following rule:
Rule 2. Interaction step set placeholders
Even an entire set of interaction steps can be replaced by a generic placeholder, i.e.
not providing concrete behaviour (“abstractness”, “virtual” interaction step). This
indicates that a child use case will later expand on this placeholder by providing
concrete interaction steps.
          </p>
          <p>Example 3:
Fig. 6 shows a simplified example from a real
world requirements specification for 4th generation (GSM-based, i.e. no hardwired
online connections) EFTPOS terminals (electronic funds transfer at point of sale).
Postconditions: Card taken by inserter. Debit registered.</p>
          <p>EFTPOS
Terminal</p>
          <p>«abstract»</p>
          <p>Make EFTPOS</p>
          <p>Pay by Change
Card or Credit Card</p>
          <p>Pay by Electronic Cash</p>
        </sec>
      </sec>
      <sec id="sec-2-5">
        <title>Fig.5: Use case inheritance for technology variations</title>
        <p>Goal “Pay by Electronic Cash”</p>
      </sec>
      <sec id="sec-2-6">
        <title>Basic course:</title>
        <p>At &lt;interaction placeholder&gt;</p>
        <sec id="sec-2-6-1">
          <title>1. Inserter enters PIN.</title>
        </sec>
        <sec id="sec-2-6-2">
          <title>2. System validates the PIN.</title>
        </sec>
        <sec id="sec-2-6-3">
          <title>3. System debits card holder’s bank account.</title>
          <p>Goal “Make EFTPOS”
Basic course:</p>
          <p>4.
card.</p>
          <p>1. Inserter inserts
card and amount.</p>
        </sec>
        <sec id="sec-2-6-4">
          <title>2. System validates card information remotely.</title>
          <p>3. &lt;interaction
placeholder&gt;</p>
        </sec>
        <sec id="sec-2-6-5">
          <title>System ejects</title>
          <p>Goal “Pay by Change Card
or Credit Card”
Basic course:</p>
          <p>At &lt;interaction placeholder&gt;</p>
        </sec>
        <sec id="sec-2-6-6">
          <title>1. System asks for electronic</title>
          <p>signature.</p>
        </sec>
        <sec id="sec-2-6-7">
          <title>2. Inserter signs with e-pen.</title>
        </sec>
        <sec id="sec-2-6-8">
          <title>3. System debits card holder’s credit card account.</title>
        </sec>
      </sec>
      <sec id="sec-2-7">
        <title>Postconditions:</title>
        <sec id="sec-2-7-1">
          <title>Credit Card or Change Card taken by inserter. Debit registered with credit card account.</title>
        </sec>
      </sec>
      <sec id="sec-2-8">
        <title>Postconditions:</title>
        <sec id="sec-2-8-1">
          <title>Debit card taken by inserter.</title>
        </sec>
        <sec id="sec-2-8-2">
          <title>Debit registered with card holder’s bank account.</title>
          <p>5.3</p>
          <p>
            Specialization of Use Cases (“Property Inheritance”, “Incremental
Modification”)
It follows from the general scientific principle of “Ockham’s Razor” that it is is of
little practical and scientific use if a new concept would only be an alternative to what
can already be done with given modelling elements. Therefore, UCI semantics should
be differentiable from Include and Extend in particular. Consequently, I discourage
the suggestions in [
            <xref ref-type="bibr" rid="ref2">2</xref>
            ] (see Section 2). Further, I propose the following new detailed
rules:
Rule.3 Strengthening Use Case Goals and Postconditions
This means that if Include and Extend carry sub-goals only then, in the spirit of the
OO Design-by-Contract principle [
            <xref ref-type="bibr" rid="ref25">25</xref>
            ] and the LSP [
            <xref ref-type="bibr" rid="ref21">21</xref>
            ], UCI should be able to either
maintain or strengthen the base use case goal; consequently, as postconditions must
always support the goal, they need either to be held or strengthened, too.
Example 4 below shows a strengthening scenario, while in Example 3, above, the
different wording of the goal and postconditions is only because of the different
interaction step placeholder; from the business domain viewpoint they are actually
equivalent.
          </p>
          <p>
            Rule.4 Modifying Interaction Steps [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ],[
            <xref ref-type="bibr" rid="ref5">5</xref>
            ],[
            <xref ref-type="bibr" rid="ref19">19</xref>
            ],[
            <xref ref-type="bibr" rid="ref20">20</xref>
            ],[
            <xref ref-type="bibr" rid="ref28">28</xref>
            ],[
            <xref ref-type="bibr" rid="ref29">29</xref>
            ]
In Section 2 we have seen that some authors claim that a child use case must not
redefine the parent use case’s order of interaction steps; apparently, this is to suggest that
UCI shall ensure OO behavioural conformity when substituting child instances for
parent instances. However, Section 4.1 explains why OO behavioural conformity
should not be required for use cases. Further, from Section 1.3 we understand that
interaction steps “connect” the use case goal with the postconditions. It thus appears
that what solely governs the design of interaction steps are business rules (business
domain semantics) and functional system requirements. For these reasons I suggest
allowing a child use case to reorder and modify inherited parent use case interaction
steps, and to add new ones. Correspondingly, guards of alternatives course may be
adapted, and their branching points relocated, by the child use case. Further, inherited
inclusions or extensions might need to be dissolved because former redundancy might
vanish, or new inclusions or extensions ones introduced because of new redundancies.
In a use case diagram, the dropping of a base use case’s Include/Extend is represented
simply by graphically not repeating them for the child use case. However, there are
two constraints: any such modification must ensure consistency with the underlying
business domain rules, and, also, must never cause the parent use case postconditions
and the parent use case goal be weakened (i.e. Rule 3 shall apply). Let us look at
Example 4 demonstrating the application of these rules.
Example 4: Applying the above rules 3 and 4 to Example 1
          </p>
          <p>Rule 3: the goal “Register New
Customer Order with Specials” is a
stronger goal for “Register New
Customer Order” (details given in
Example 1) because the former adds price
reduction for VIP customers. This is
reflected correspondingly by the
stronger child use case
postconditions, i.e. the child establishes
everything the parent does plus the
recording of negotiated price reduction;
Clerk of the
Sales Dept.</p>
          <p>Key Account</p>
          <p>Manager
Rule.4: correspondingly, the child use case goal reveals the new interaction
step at label 6. It is also decided that the child use case waives the inherited
step 3 (indicated by strikethroughs) as a VIP customer shall be attended to
irrespective of their obligations. Correspondingly, the inherited alternative course
3a is no longer applicable either.</p>
          <p>Goal “Register New Customer Order with Specials”</p>
          <p>Basic Course:
1. Key account manager enters customer ID.</p>
        </sec>
        <sec id="sec-2-8-3">
          <title>2. System displays the customer profile.</title>
        </sec>
        <sec id="sec-2-8-4">
          <title>3. Sales clerk confirms that the customer’s credit rating is suf</title>
          <p>ficient.</p>
        </sec>
        <sec id="sec-2-8-5">
          <title>4. System assigns order ID.</title>
        </sec>
        <sec id="sec-2-8-6">
          <title>5. Key account manager registers the desired trade items</title>
        </sec>
        <sec id="sec-2-8-7">
          <title>6. Key account manager grants price reduction.</title>
        </sec>
      </sec>
      <sec id="sec-2-9">
        <title>Alternative Courses:</title>
        <p>3a. Customer’s outstanding debts are above the threshold: …</p>
      </sec>
      <sec id="sec-2-10">
        <title>Postconditions:</title>
        <sec id="sec-2-10-1">
          <title>System has initiated an order for the customer, has documented payment information with price reduction, and has registered the order with the customer.</title>
          <p>
            Rule.5 No Constraints for Use Case Preconditions
The Design-by-Contract principle in the OO domain [
            <xref ref-type="bibr" rid="ref25">25</xref>
            ] and the LSP [
            <xref ref-type="bibr" rid="ref21">21</xref>
            ] also
require a subtype to either maintain or weaken the preconditions of a parent operation.
As we know from Section 3 this is mainly for ensuring behavioural conformity when
substituting child objects for parent objects. However, we have seen that for use case
performances there neither is substitutability (see Section 4.1), nor does
Design-byContract apply (see Section 1.2); further use case preconditions are checked by the
system, not by the triggering actor instance (see Section 1.2). Consequently, there is
no need for use cases to enforce the same behavioural conformity semantics as
desired for objects.
          </p>
          <p>Please note however that the proposed Rules 3 to 5 still enable, but do not necessarily
enforce, strict behavioural subtyping.</p>
          <p>Critical Closing Remarks</p>
          <p>UCI vs. Include/Extend Revisited
From the OO domain we know that any inheritance can alternatively be expressed by
object aggregations, i.e. by
whole/part relationships,
a3n).d Tdehleergeafotiroen, (aseeusSeecctaiosne CRusetg(osimsteteeprr3NO)erdwer steps 1,2
model employing Rule 4 SCalelerks oDfetphte. «include» steps 4,5
can also be expressed via
Include-relationships as ReOgrisdteerr wNiethwSCpuesctioamlser steps 7,..
shown in Fig. 7. Key Account (step 6)</p>
          <p>Fig. 8 shows the In- Manager
clude-relationships version
of Fig. 6 (in Example 4, Fig. 7: Example 4 realised with Include. Numbers
above).</p>
          <p>
            Even though that it is possible to solve a problem with Include where UCI appears
appropriate it is obvious that an Include solution entails a greater graphical and textual
complexity. This impacts on the reader’s convenience and reading efficiency: in Fig.6
only one document (for “RegisterNewCustomerOrderWithSpecials”) needs to be
opened while in Fig.7 it would be four documents
(“RegisterNewCustomerOrderWithSpecials” and three inclusion use cases), or at least 4 different document sections
have to be looked up. Since
size of use case models can EFTPOS
be an issue in practice, UCI Insert Card Eject Card Terminal
should contribute to keeping
temhaiesneiumrseeuamdcia,nsge aamnndod,dreelvthiseeizwreeifnaogtr.ea, PayobryCC«reihndacitnluCgdeaer»Cdars «include»
Pay by Electronic Cash
Ienxparneyssecdasew, hwichhatIcnacnlundoet boer Fig. 8: Example 3 realised with Include
Extend is the idea of generic
identifiers and generic interaction steps: neither Extend nor Include is an alternative in
situations as shown in Examples 2 and 3 as these relationships do not support
parameters and are not capable of propagating any type of “abstractness” [
            <xref ref-type="bibr" rid="ref26">26</xref>
            ]. Therefore,
Rules 1 and 2 serve as further clear semantical distinction criteria.
6.2
          </p>
          <p>Comprehensibility of UCI
One might argue that UCI only appears simple and understandable to software
engineers, UML modellers and programmers since, historically, this audience has been
mostly familiar with inheritance. Unfortunately, this audience is not the only one that
deals with use case modelling: the use case calculus encompasses a requirements
elicitation, modelling, and textual documentation technique and, thus, by definition,
does require non-IT business domain experts to be involved. In my industry career as
a requirements engineer I have experienced that the speaking in terms of substituting
placeholders, rewriting and adding interaction sequences, and appending more to
goals and use case results can be understood (and is often found helpful) by such
stakeholders, in contrast to OO-related terminology like Open-Closed, polymorphism,
abstract classes, or subtyping etc. However, UCI still remains a hard to understand
concept in practice, irrespective of the added values identified and guidance provided
by my solution proposals above. Without effective training, operational coaching, and
industrial experience the benefits of UCI will not necessarily show.</p>
        </sec>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Adolph</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bramble</surname>
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cockburn</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pols</surname>
            <given-names>A.</given-names>
          </string-name>
          “
          <article-title>Patterns for Effective Use Cases”</article-title>
          , Addison-Wesley,
          <year>2003</year>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Ambler</surname>
            <given-names>S.</given-names>
          </string-name>
          “
          <source>Reuse in Use-Case Models: Extend</source>
          , Include, and Inheritance”, Agile Modeling Essay, http://www.agilemodeling.com/essays/useCaseReuse.htm#InheritanceUC
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Arlow</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Neustadt</surname>
            <given-names>I.</given-names>
          </string-name>
          “
          <article-title>UML2 and the Unified Process Second Edition”</article-title>
          ,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>2005</year>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Armour</surname>
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miller</surname>
            <given-names>G</given-names>
          </string-name>
          .
          <article-title>"Advanced Use Case Modeling"</article-title>
          ,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>2001</year>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Bittner</surname>
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Spence</surname>
            <given-names>I.</given-names>
          </string-name>
          “
          <article-title>Use Case Modelling”</article-title>
          ,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>2003</year>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Booch</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <article-title>Jacobson we</article-title>
          .,
          <string-name>
            <surname>Rumbaugh</surname>
            <given-names>J</given-names>
          </string-name>
          . “Rational Unified Process”, Rational Software Corporation
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Bracha</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cook</surname>
            <given-names>W.</given-names>
          </string-name>
          “
          <article-title>Mixin-Based Inheritance”</article-title>
          , OOPSLA/ECOOP '90,
          <string-name>
            <surname>ACM SIGPLAN</surname>
          </string-name>
          <article-title>Not</article-title>
          .
          <volume>25</volume>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Cardelli</surname>
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wegner</surname>
            <given-names>P.</given-names>
          </string-name>
          “On Understanding Types,
          <string-name>
            <given-names>Data</given-names>
            <surname>Abstraction</surname>
          </string-name>
          , and Polymorphism”,
          <string-name>
            <surname>Computing</surname>
            <given-names>Surveys</given-names>
          </string-name>
          , December,
          <year>1985</year>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Chambers</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ungar</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chang</surname>
            <given-names>B.-W.</given-names>
          </string-name>
          , Holzle U. ”
          <article-title>Parents are Shared Parts of Objects: Inheritance and</article-title>
          Encapsulation in Self”,
          <year>1999</year>
          , Lisp Symbolic Computing
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Cockburn</surname>
            <given-names>A</given-names>
          </string-name>
          .
          <article-title>"Writing Effective Use Cases"</article-title>
          , Addison-Wesley,
          <year>2001</year>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Cook</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Daniels</surname>
            <given-names>J. “Designing</given-names>
          </string-name>
          <string-name>
            <surname>Object Systems - Object-Oriented Modelling</surname>
          </string-name>
          with Syntropy”,
          <year>1994</year>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Dijkstra</surname>
            ,
            <given-names>E.W.</given-names>
          </string-name>
          “
          <article-title>On the role of scientific thought</article-title>
          ”,
          <year>1974</year>
          , in “Selected Writings on Computing: A Personal Perspective”, Springer,
          <year>1982</year>
          , p.
          <fpage>60</fpage>
          -
          <lpage>66</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Fowler</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cockburn</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jacobson</surname>
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Anderson</surname>
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Graham</surname>
            <given-names>I.</given-names>
          </string-name>
          <article-title>"Question time! About use cases", Procs. 13th OOPSLA, pub</article-title>
          .
          <source>ACM Sigplan Notices</source>
          <volume>33</volume>
          (
          <issue>10</issue>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Genilloud</surname>
          </string-name>
          ,
          <article-title>Frank "Use Case Concepts from an RMODP Perspective"</article-title>
          ,
          <source>JOT</source>
          , vol.
          <volume>4</volume>
          , no.
          <issue>6</issue>
          ,
          <string-name>
            <surname>Special</surname>
            <given-names>Issue</given-names>
          </string-name>
          :
          <article-title>Use Case Modeling at UML-2004</article-title>
          ,
          <article-title>Aug 2005</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Génova</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lloréns</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Quintana</surname>
            <given-names>V.</given-names>
          </string-name>
          “
          <article-title>Digging into Use Case Relationships”</article-title>
          ,
          <source>UML 2002 Conference, LNCS 2460</source>
          , Springer Verlag, Germany,
          <year>2002</year>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Hitz</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kappel</surname>
            <given-names>G</given-names>
          </string-name>
          .
          <article-title>"UML @ Work"</article-title>
          , dpunkt Verlag, Germany,
          <year>1999</year>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Jacobson</surname>
            <given-names>I.</given-names>
          </string-name>
          “ Use Cases - Yesterday, Today, and Tomorrow”, Rational Software Corporation,
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Jacobson</surname>
            <given-names>I. Christerson M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jonsson</surname>
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Övergaard</surname>
            <given-names>G. “Object</given-names>
          </string-name>
          <string-name>
            <surname>Oriented Software Engineering - A Use Case</surname>
          </string-name>
          <article-title>Driven Approach”</article-title>
          ,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>1992</year>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Jacobson</surname>
            <given-names>I.</given-names>
          </string-name>
          “
          <article-title>The Road to the Unified Software Development Process”</article-title>
          , Cambridge University Press, SIGS Reference Series,
          <year>2000</year>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Kulak</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guiney</surname>
            <given-names>E.</given-names>
          </string-name>
          “Use Cases - Requirements In Context”,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          , ACM Press,
          <year>2000</year>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Liskov</surname>
            <given-names>B. H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wing J. M.</surname>
          </string-name>
          <article-title>"Behavioral Subtyping Using Invariants and Constraints"</article-title>
          , School of Computer Science, Carnegie Mellon University, Pittsburgh, July,
          <year>1999</year>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Metz</surname>
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>O'Brien</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weber</surname>
            <given-names>W.</given-names>
          </string-name>
          “
          <article-title>Against Use Case Interleaving”</article-title>
          ,
          <source>UML 2001 conference, LCNS 2185</source>
          , Springer Verlag, Germany,
          <year>2001</year>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Metz</surname>
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>O'Brien</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weber</surname>
            <given-names>W.</given-names>
          </string-name>
          “
          <article-title>Specifying Use Case Interaction: Types of Alternative Courses“</article-title>
          ,
          <source>in Journal of Object Technology (JOT)</source>
          ,
          <source>Issue March/April</source>
          <year>2003</year>
          ,
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Metz</surname>
            <given-names>P.</given-names>
          </string-name>
          “
          <article-title>Revising and Unifying the Use Case Textual and Graphical Worlds”</article-title>
          ,
          <source>PhD thesis</source>
          , Cork Institute of Technology,
          <year>2004</year>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25. Meyer B. “
          <article-title>Object-Oriented Software Construction”, 2nd</article-title>
          <string-name>
            <surname>Edition</surname>
          </string-name>
          , Prentice Hall,
          <year>1997</year>
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <given-names>OMG</given-names>
            <surname>Unified Modeling</surname>
          </string-name>
          <string-name>
            <surname>Specification</surname>
          </string-name>
          ,
          <year>v1</year>
          .4,
          <string-name>
            <surname>Sept</surname>
          </string-name>
          .
          <year>2001</year>
          ,OMG,
          <source>UML v2.0 Superstructure 03-08-02</source>
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Övergaard</surname>
            <given-names>G</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Palmkvist</surname>
            <given-names>K</given-names>
          </string-name>
          .
          <article-title>"A Formal Approach to Use Cases and Their Relationships"</article-title>
          ,
          <source>Proceedings of "UML'98: Beyond the Notation", LCNS 1618</source>
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Övergaard</surname>
            <given-names>G</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Palmkvist</surname>
            <given-names>K.</given-names>
          </string-name>
          “Use Cases: Patterns and Blueprints”,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>2004</year>
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29.
          <string-name>
            <surname>Rosenberg</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Scott</surname>
            <given-names>K.</given-names>
          </string-name>
          “
          <article-title>Use Case Driven Object Modeling with UML”, Addison-</article-title>
          <string-name>
            <surname>Wesley</surname>
          </string-name>
          ,
          <year>1999</year>
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          30.
          <string-name>
            <surname>Schneider</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Winters</surname>
            <given-names>J. “Applying</given-names>
          </string-name>
          <string-name>
            <surname>Use Cases - A Practical Guide</surname>
            <given-names>”</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>1997</year>
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          31.
          <string-name>
            <surname>Sendall</surname>
            <given-names>S.</given-names>
          </string-name>
          “
          <article-title>Specifying Reactive System Behavior”</article-title>
          ,
          <source>Ph.D. thesis</source>
          , École Polytechnique Fédérale de Lausanne,
          <year>2003</year>
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          32.
          <string-name>
            <surname>Simons</surname>
            <given-names>A.</given-names>
          </string-name>
          "
          <article-title>Use Cases Considered Harmful"</article-title>
          ,
          <source>Procs. TOOLS-29 Europe</source>
          ,
          <year>1999</year>
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          33. Stein L. “
          <article-title>Delegation is Inheritance”</article-title>
          ,
          <source>OOPSLA '87 Conference Proceedings, ACM Sigplan Not</source>
          .
          <volume>22</volume>
          ,
          <issue>12</issue>
          (Dec.)
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          34.
          <string-name>
            <surname>Strachey</surname>
            <given-names>C.</given-names>
          </string-name>
          “
          <article-title>Fundamental Concepts of Programming Languages”, 1967</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          35.
          <string-name>
            <surname>Taivalsaari</surname>
            <given-names>A.</given-names>
          </string-name>
          “
          <article-title>On the Notion of Inheritance”</article-title>
          ,
          <source>ACM Computing Surveys</source>
          , Vol.
          <volume>28</volume>
          ,
          <string-name>
            <surname>Sept</surname>
          </string-name>
          . 1996
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          36.
          <source>Use Case Workshop “Industrial Use Case Modeling”, 7th UML 2004 Conference, October</source>
          ,
          <year>2004</year>
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          37.
          <string-name>
            <surname>Van den Berg</surname>
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Simons</surname>
            <given-names>A</given-names>
          </string-name>
          .
          <article-title>"Control-Flow Semantics of Use Cases in UML"</article-title>
          , Information and
          <string-name>
            <given-names>Software</given-names>
            <surname>Technology</surname>
          </string-name>
          , Elsevier Science
          <string-name>
            <surname>B.V.</surname>
          </string-name>
          ,
          <volume>19</volume>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>