Journal 3, Structured Use Case Descriptions

advertisement
Producing Robust Use Case Diagrams via Reverse Engineering of
Use Case Descriptions
MOHAMED EL-ATTAR AND JAMES MILLER
STEAM Laboratory
Electrical and Computer Engineering Department
University of Alberta
melattar@ece.ualberta.ca
jm@ece.ualberta.ca
Summary
In a use case driven development process, a use case model is utilized by a development team to
construct an object-oriented software system. The large degree of informality in use case models,
coupled with the fact that use case models directly affect the quality of all aspects of the development
process, is a very dangerous combination. Naturally, informal use case models are prone to contain
problems, which lead to the injection of defects at a very early stage in the development cycle. In this
paper, we propose a structure named SUCD that will aid the detection and elimination of potential
defects caused by inconsistencies present in use case models. The SUCD structure contains a small
set of formal constructs that will allow use case models to be machine readable while retaining their
readability by containing a large degree of unstructured natural Language. In this paper we also
propose the REUCD process which utilizes the SUCD structured use cases to systematically generate
their corresponding use case diagrams and vice versa. To demonstrate the feasibility of this approach
and the application of the SUCD structure and the REUCD process, a simple study is conducted
using a mock online hockey store system.
1
Introduction
Use case modeling [37], since it was introduced in the early 1990s by Ivar Jacobson has been
constantly gaining wide acceptance by analysts, designers, testers and other stakeholders of a project.
Use case modeling can be used to drive the design phase [21, 22, 25, 32, 38, 41], the testing phase
[28] and can be utilized for managerial purposes such as effort estimation [3] and business modeling
[26]. The success experienced by use case modeling is chiefly because the technique is very simple
to use in order to effectively describe the functional requirements of a system. Another attractive
aspect of use case modeling is that it contains a small diagrammatic notational subset and a large
degree of natural language. This allows all stakeholders of a project to understand the use case model,
even those who are not technically equipped, which in turn will ensure that all stakeholders have a
common understanding and agreement upon the capabilities and features of the system.
The large degree of informality contained in the use case descriptions often causes use case
descriptions to be inconsistent with their corresponding use case diagrams. Moreover, inconsistencies
may reside within the use case descriptions themselves. In a use case driven approach [25] such as the
Rational Unified Process (RUP) [29, 30, 39], use case models are used to produce other UML
artifacts such as activity and sequence diagrams [21, 22, 25, 32, 38, 41]. Hence, it is important to
invest in producing high quality use case models that will yield the production of other high quality
UML artifacts. Consistency is a key quality attribute of use case models [4, 8, 19, 24, 31, 41].
Ensuring the consistency between use case descriptions and their corresponding diagrams requires a
great deal of discipline from analysts, which seldom exists. Moreover, producing consistent use case
models have been chiefly dependant on the experience of analysts. It is common knowledge that the
expertise of analysts in industry varies significantly. Often, junior analysts are required to develop use
case models, which will be highly vulnerable to inconsistencies. The produced inconsistent use case
models may potentially lead to the production of low quality software systems. Therefore, it is
essential to devise a structure that will aid the production of consistent use case descriptions. It is also
important that this structure can be used to ensure the consistency between the use case descriptions
and their corresponding diagrams; while maintaining the ability of these diagrams to be
understandable to all stakeholders.
In this paper we propose a structure to assist with the description of use cases. The proposed use case
description structure is called Structured Use Case Description (SUCD). SUCD will serve as a
guideline for authors in producing their use cases. Moreover, the SUCD form will allow the use case
descriptions to be machine readable. In this paper we devised a technique named Reverse
Engineering of Use Case Diagrams (REUCD), which will systematically generate use case diagrams
from use cases that are described in the SUCD form. Use case diagrams are developed at a much
higher level of abstraction than use case descriptions. Hence, use case diagrams can be accurately
reverse engineered from use case descriptions using REUCD. REUCD will only extract certain
information from the use case descriptions to generate use case diagrams. Fig. 1 shows an overview
of SUCD and REUCD. In this paper, we present our featured tool AREUCD, which will automate the
REUCD process and increase the speed and accuracy of its application.
2
Fig. 1 The application of the REUCD process to systematically generate use case diagrams from
descriptions
The REUCD process may also be reversed, whereby the use case diagram is initially developed and
used to systematically generate the ‘skeletons’ of the use case descriptions. Details about the events
occurring in the use cases can be manually completed later on by the analysts. This concept is
discussed in further detail in section 4. However, the theme throughout this paper will be aimed at
initially composing use case descriptions then systematically generating the diagrams from them. The
reason being that use case descriptions contain all the information required to produce a complete use
case diagram.
The remainder of this paper is organized as follows; in section 2 we present a brief introduction to use
case modeling and various use case authoring styles and structures. Section 2 also describes why
inconsistencies exist in to use case models and what their potential consequences are. Section 3
presents a detailed description of the proposed use case description structure SUCD. Section 4
describes how use cases described in the SUCD form can be used to systematically produce use case
diagrams. Section 4 also outlines the consistency rules that are required to ensure that the use case
descriptions and their diagrams are consistent. An overview of the featured tool AREUCD is
presented in Section 5. In Section 6 we present a simplified online hockey team store system to
demonstrate the application of SUCD, REUCD and AREUCD. Finally, Section 7 concludes and
suggests future work for systematically generating other UML artifacts.
3
2
2.1
Background
Brief Introduction to Use Case Modeling
This section presents a brief overview of use case modeling. A use case model contains three main
components. Firstly, the use case diagram, which contains two main components: use cases and
actors. Use cases are depicted as ovals, and they serve as a visual summary of the services that are
offered by the system to its actors. Actors are a class of users of the system who can benefit from one
or more services offered by the system. A use case diagram also shows the relationships that exist
between the use cases and the actors and between the use cases themselves. Secondly, the use case
descriptions. The use case descriptions essentially describe the flow of events required to occur in
order for an actor to benefit from a service offered by the corresponding use case [12]. There must be
one use case description corresponding to each of the use cases depicted in the use case diagram.
Traditionally, descriptions are authored in textual form. Lastly, a use case model makes use of a
glossary component. The glossary is not explicit to use case models, it is used for other activities
during development. The glossary will contain the explanations of common terms used throughout a
project.
There are several types of use cases. A base use case describes a service that a system offers to its
actors. A base use case may have a set of subflows and alternative flows. A base use case may also be
specialized or generalized. A specialized use case describes a specialized version of the workflow that
is described by its parent use case. Actions in a generalized use case are usually tailored and altered to
meet the needs of the services offered by its specializing use case. Moreover, a specialized use case
often inserts additional actions to that present in the generalized use case.
An extension use case is only initiated if certain given conditions are satisfied. The initiation of an
extension use case causes the behavior described in the extension use case to be ‘inserted’ into the
base use case it extends It has been argued by [10] that extension use cases are much like alternative
flows. The main semantic difference between extension use cases and alternative flows is that the
base use case is unaware of the behavior contained in the extension use case, meanwhile it is aware of
all the alternative flows that it contains. This required lack of knowledge that the base use case should
have about an extension use case means that the behavior described in the base use case should be
complete and meaningful even if the extension use case was removed all together.
When a base use case is performed, it utilizes the behavior contained in the inclusion use cases it
includes. Upon completion of performing the behavior contained in an inclusion use case, the
behavior contained in the base use case continues to be performed from the point where it was
interrupted to allow the inclusion use case to be performed. Thus, inclusion use cases are usually
included by more than one base use case. If the inclusion use case is included by one base use case, it
is then most likely that the base use case acquires the behavior of the inclusion use case in more than
one location.
4
2.2
Use Case Authoring Styles
There have been many different approaches to authoring use case descriptions. Each approach is
devised to describe use cases at different levels of detail and structure. For example, use cases can be
described using a single short paragraph. Caution must be exercised while describing use cases in
such form as this approach tends to assume that other stakeholders have a great degree of domain
knowledge, which is not necessarily always the case. On the other hand, use cases can be described
using a full blown approach that mentions every possible detail. Some approaches structure the use
case descriptions very carefully, while others do not incorporate any structure. Johansson [27]
analyzed and discussed problems that arose when attempting to construct a use case model and write
the corresponding descriptions of use cases for a weather station system. The problems were mainly
caused due to lack of guidelines for authoring use case descriptions. The paper concludes by urging
for guidelines to use case modeling.
Achour et al [8] examined two different types of guidelines; styling guidelines (SGs) and content
guidelines (CGs). The styling guidelines were mainly derived from current best practices such as
those presented in [15, 16]. The styling guidelines are used to improve the quality of the use cases’
structures. On the other hand, content guidelines were mainly derived from linguistics, artificial
intelligence and previous experiences in applying Case Grammars to requirements analysis. The
content guidelines are used to indicate the expected contents of use cases. The authors presented
seven hypotheses, three of which are related to CGs and the remaining four are related to SGs. The
experimental procedure utilized 69 software engineers, who were full-time or part-time students at the
University of Paris I - Sorbonne. All the subjects had professional experience and were all subjected
to a half day presentation on use case authoring and modeling. The results of the empirical studies
conclude that use case authoring guidelines generally do improve the quality of the use case
descriptions. The authors emphasize that even though authoring guidelines help produce better use
case descriptions, they rarely lead to perfect use cases. Therefore, the authors suggest that the use case
descriptions should be checked whenever quality is an issue.
Firesmith [19] describes a broader range of guidelines. These guidelines were proven to be effective
according to the author’s experience. These guidelines fall into the following categories: modeling
tools and languages; modeling externals; modeling use cases; modeling use case paths; and general
guidelines.
A number of use case authoring guidelines have been devised to capture the requirements for special
types of systems. Anderson et al. [6] described styles of documenting business rules in use cases.
Constantine [17] and Biddle et al. [9] described styles that lead to ‘essential’ use cases. Essential use
cases are aimed at capturing the requirements for user interfaces. The principle advantage of essential
use cases is that they do not require any refinements (transformation to other types of diagrams),
which will allow for the concurrent development of the user interface and other object-oriented
design artifacts. Rebecca [45] promoted a conversational style of authoring use cases.
Cockburn [16] described a set of eighteen different styles of writing use case descriptions. Cockburn
came across these styles while working on various projects. Jacobson [25] proposed one of the
5
authoring styles, which Cockburn has encountered. The authoring style proposed by Jacobson was
heavily popularized due to its adoption by the Rational Unified Process. The work presented by
Bittner and Spence [10] further developed this style of use case authoring. However, this style in its
current state experiences several limitations:
a) The authoring style lacks the required amount of structure to allow the use case descriptions to be
machine readable, which will impede the systematic process of:
o Generating use case diagrams from the descriptions.
o Generating the ‘skeletons’ of use case descriptions from the diagrams.
o Verifying the consistency between the use case diagram and the descriptions.
o Determining the flows of events within a use case and the flows of events between use
cases.
b) There is no mechanism available to:
o Declare generalization relationships between use cases.
o Declare generalization relationships between actors.
o Declare abstract use cases.
o Declare abstract actors.
o Declare that a use case implements an abstract use case.
o Systematically identify the exact location that behavior in extension use cases will be
inserted.
o Differentiate between public and private extension points.
o Allow an extension use case to reference the base use case it extends.
o Systematically differentiate between the actions that are performed by the system’s actors
and the actions that are performed by the system itself.
In this paper, we build upon the style developed by [10] mainly due to its effectiveness, clarity and
popularity. The authoring style proposed in this paper contains further structure required to overcome
the limitations outlined above. The key feature of the proposed structure (SUCD) is that it will ensure
the consistency between the use case descriptions and their corresponding diagrams.
2.3
Maintaining the Readability of Use Case Descriptions
The core feature behind the popularity of use case models is the great deal of unstructured natural
Language that the use case descriptions contain. The informality contained in use case descriptions
makes it accessible by stakeholders who are not technically equipped and not familiar with common
programming jargon and acronyms. Customers are often not technically equipped and thus the
informality in use case descriptions allows them to read and review the use case descriptions and
provide feedback. Unstructured natural Language is an indispensable component of use case
descriptions. Unfortunately, it is impossible to formally analyze use case descriptions that are
completely composed of unstructured natural Language. Use case descriptions become highly
vulnerable to poor quality attributes such as inconsistencies, incorrectness and incompleteness. Use
case descriptions can be formally analyzed only if they adhere to a formal structure. However,
describing use cases using only formal constructs will greatly reduce their readability and make them
inaccessible by all stakeholders. Therefore, a tradeoff exists between the amount of unstructured
6
natural Language and formal constructs that the use case descriptions may contain. The SUCD
structure provides a hybrid solution to this problem. The SUCD structure contains a very limited set
of formal constructs while allowing analysts the flexibility and liberty of using as much unstructured
natural Language as required. The SUCD structure will allow a great deal of formal analysis to be
performed on the descriptions while retaining their readability.
2.4
The Problem with Inconsistencies in Use Case Models
Many researchers have determined that inconsistencies in a use case model have harmful
consequences. Inconsistencies can exist in use case models in various forms. The consequences of an
inconsistency depend on the form that the inconsistency exists in.
Anda et al. [5] outlined a taxonomy of the core categories of defects in use case models. It was shown
in [5] that inconsistencies are a key category of defects as it severely hampers the overall quality of a
use case model. The consequences of the stated forms of inconsistencies were also outlined in [5],
which has shown to affect every aspect of the development process; from producing wrong, missing
and inaccurate functionalities to producing systems that are difficult to test.
Chandrasekaran [14] has explained that inconsistencies in a use case model are generally
symptomatic of one of two problems; Firstly, the use case model might be handling concepts that are
not defined or understood properly. Secondly, there maybe an ambiguity in the domain object model.
Lilly [34] and Bittner et al. [10] outlined a number of inconsistencies that explicitly exist in use case
diagrams as well as other types of inconsistencies that may exist throughout the use case model. The
authors of [34] and [10] have also explained the harmful consequences of these inconsistencies. For
example, in [34], it was shown that an inconsistent system boundary may cause designers to
implement the behavior of entities external to the system. This in turn requires more effort from the
development team than is actually required, causing the project to fall behind schedule and go over
budget.
Ambler [2] warns that inconsistencies in use case models are usually a sign of missing or vague
information. The literature has repeatedly shown that teams often fail due to a lack of details in the
use case model rather than too much detail [10]. Ambler also warns that too many inconsistencies
may cause the use case model to be “out-of-date” and therefore becoming useless. Therefore, use case
models need to remain consistent to be effective in the development process.
Consistency has always been a sought after as an essential quality attribute for use case models [4, 8,
19, 24, 31, 41]. Reviewing use case models is a highly recommended practice [7, 31, 42], used to
assure their quality by assuring that they posses a great deal of consistency.
Other researchers have devised techniques to incorporate and ensure consistency in the use case
models being developed. McCoy [36] introduced the tool RUT (Requirements Use case Tool), which
provides a template for modelers to input information about their use cases into a repository. The
purpose of the template is to ensure consistency during entry of the use cases’ information. Achour et
7
al. [8] compiled a set of styling and content guidelines to improve the quality of the use case
descriptions. A number of these guidelines are either directly or indirectly aimed at ensuring
consistency within the use case descriptions. Butler et al. [13] introduced the concept of refactoring
use case models. Butler explained that refactoring can improve the consistency of the use case
models. Ren et al. [40] developed a tool that implements the refactoring concepts presented in [13].
It can be concluded that it is desirable to minimize inconsistencies within use case models. Using the
SUCD structure and the REUCD process ensures that the use case descriptions and their diagram(s)
are consistent with each other. For example, if the descriptions state that a certain use case is
associated with a certain actor, then it will be ensured that an association relationship in the use case
diagram will be depicted linking the given use case with the given actor. The SUCD structure and the
REUCD process do not however ensure that inconsistencies, present in the segments that are written
in unstructured natural language, will be detected or eliminated. These segments require domain
expertise to verify their consistency. For example, if one use case states that a theatre’s seating
capacity is 1200 while another use case states that the given seating capacity is 1400, then this type of
inconsistency would require manual inspection (or review) to be detected and eliminated.
2.5
Inconsistencies: A Closer Look
An obvious argument at that point would be: if the heart of the use case model is in the descriptions
while the diagrams only serve as a visual roadmap then:
Why bother with the use case diagram? Why not just use the use case descriptions only to drive
the development process? In such a case, when only the descriptions are considered, then
ensuring the consistency between the use case descriptions and their diagrams is not important!
Even though this argument might be valid for a very trivial system, there still remain several
problems if only the use case descriptions are considered to produce other UML artifacts and code. If
the system in hand is very complex, which often is the case, then a use case description might span
over five pages to be adequately described [10]. In such case, if a team member wanted to know the
actors that are associated with a given use case, it would be more efficient and accurate to simply look
up this information in the diagram rather than going through several pages of text. Use case diagrams
are able to provide an overview of a system at a glance; while examining a set of use case
descriptions cannot. Therefore, stakeholders might be misled about the general purpose of the system
if the use case diagram did not accurately represent the descriptions. Hence, use case diagrams remain
an indispensable component of the use case model, and therefore if a use case diagram does not have
an accurate representation of the descriptions, then this might lead to the design of a faulty system.
Moreover, since the SUCD structure allows use case descriptions to be machine readable, a great deal
of information can be automatically extracted from the descriptions, such as the use cases that are
included by a given base use case.
8
2.6
The Cost of Inconsistencies
The existence of inconsistencies is indicative of many potential problems. Inconsistencies that exist in
the form of contradicting information reveal correctness problems. Incorrect information in use case
models will eventually translate to faults in the code later on in the development process.
Inconsistencies may also reveal completeness problems. Incomplete use case models lead to
assumptions in the design phase. Assumptions by nature are not always correct and therefore the
eventual system may end up being faulty. Inconsistencies may also be indicative of poor use case
modeling practices. Discouraged use case modeling practices lead to confusion and poor design, in
addition to problems with regard to correctness and completeness.
Use case modeling mainly occurs in the requirements and analysis phases. When problems exist in
the early stages of development, it is easier and more cost effective to remove then than later on in the
development process. The cost of detecting and removing a defect exponentially escalates in the latter
stages (see Fig. 2.1). It is shown in [11] that the cost of fixing a defect can increase (40-1000) times at
the operation phase when compared to the cost of fixing that defect at the requirements phase.
Methods such as Software Inspections [18, 20], reviews [44] and walkthroughs [47] are used to verify
software documents at the early stages. Adolph el al. [1] identified patterns that can be used be use
case authors to evaluate their use cases. Anda et al. [5] devised an Inspection technique tailored for
inspecting use case descriptions. The technique presented by [5] is a checklist approach based on a
number previously proposed checklists such as those provided in [7, 31, 42, 48]. The defects that are
being searched for by [5] are divided into inconsistencies, omissions, incorrect facts, ambiguities and
extraneous information [43]. The effectiveness of the techniques used to verify use cases are severely
hampered due to the inability to perform any formal and automated analysis on use case descriptions
composed using unstructured natural Language. The SUCD structure can increase the effectiveness of
the techniques outlined above.
Fig. 2.1 The cost of fixing defects escalate as they propagate through the development life-cycle
9
Defects that exist due to inconsistencies cannot be treated as individual entities [46]. A defect
typically multiples into many defects at the transition between phases (see Fig. 2.2). Therefore,
defects are infectious and hence the damage caused by a defect is dependant on the “distance”
between the injection point and the removal point [46], as well as the cost of removing it and its
resulting defects. The longer a defect remains in a system, the greater its opportunity to “spread”
around. Therefore, it is especially desirable to minimize problems in use case models that potentially
lead to defects since use case modeling mainly occurs in the early phases of the development lifecycle. The SUCD structure aims to minimize these problems by preventing analysts from introducing
inconsistencies in use case models. This in turn reaps the greatest benefit in terms of effort, time and
cost savings since defects directly or indirectly caused by low quality use case models have the
potential of remaining for a long period of time and multiplying (“spreading”) into many more
defects. Incorporating the SUCD structure requires a limited learning curve since the structure itself is
limited as will later be shown in Section 3. It is difficult at this point to predict if the overhead of
incorporating the SUCD structure will lead to a longer production period since tool support should
significantly decrease the time required to complete the use case descriptions. Moreover, using
AREUCD can decrease the development time as it automatically generates use case diagrams and
description ‘skeletons’. Hence, incorporating the SUCD structure and utilizing AREUCD can actually
decrease the time to develop the use case descriptions as supposed to conventionally developing the
descriptions manually.
Fig. 2.2 Defects “spread” and multiply as they propagate through the development life-cycle
10
3
Structured Use Case Description (SUCD)
In this section we describe our proposed structure (SUCD) for writing use case descriptions. As
mentioned earlier, SUCD is in large based on the structure presented by [10]. Use cases described
using the SUCD structure contain five structured main sections, these are: (a) Use Case Name, (b)
Basic Flow, (c) Alternative Flows, (d) Subflows and (e) Extension Points. Meanwhile, other sections
in a use case description that do not require structure are described using natural language. There have
many templates presented in the literature for describing use cases [15, 23, 24, 31, 35, 42]. The
structured sections incorporated by SUCD are the common sections found in many of templates
presented in the literature. The following list outlines the structural elements of SUCD that will be
described in detail in the subsequent sections:









3.1
Headers and Actions
Basic Flow and Use Case Name Structure
Alternative Flow Structure
Extension Points Structure
o Private Extension Points Structure
o Public Extension Points Structure
Subflow Structure
Special Actions
Generalization Between Use Cases
Abstract Use Cases
Generalization Between Actors
Headers and Actions
The basic building block comprising all structured components is headers. A header contains a
number of actions that carryout certain behavior. The name of the header indicates the behavior that
is carried out by its actions. A header is comprised of two matching tags; an ‘opening’ and a ‘closing’
tag. An ‘opening’ tag is comprised of curly brackets that contain the header’s name {<header>}
prefixed with the keyword ‘BEGIN’. Its corresponding ‘closing’ tag must contain the same header
name prefixed with the keyword ‘END’. A header’s enclosed actions are normally listed in bullet
form. For example, in a library system, a header may represent the actions required to enter
information regarding a new library member as shown below:
{BEGIN enter member information}
 Librarian enters member’s name
 Librarian enters member’s address
 Librarian enters member’s phone number
{END enter member information}
11
This header {Enter Member Information} contains three actions. In this paper, performing a header
indicates that all of its enclosed actions are performed. Each header inside a use case must have a
unique name. It can be easily deduced that the purpose behind performing the three actions shown
above is to enter a member’s information into the system. Moreover, all three actions must be
performed to carryout the underlying purpose of the header. Entering the member’s name only does
not complete the task of entering the member’s information. This is the fundamental purpose behind
a header. A header groups together a set of actions that must all be performed in order to carryout
complete and meaningful behavior.
A header may contain other lower-level headers that comprise parts of the behavior required to
carryout the main behavior represented by the higher-level header. Therefore, a use case description
will contain a virtual tree of headers, whereby actions become the roots (see Fig. 3.1). A high-level
header may have actions of its own. Performing a higher-level header forces the all of its lower-level
headers in addition to its own actions to be performed. When a lower-level header is completely
performed, its higher-level header resumes performance.
Fig. 3.1 Headers in a use case descriptions form a virtual tree structure
A header can explicitly state the header(s) that will be performed next. This can be achieved using
the ‘RESUME’ statement. The ‘RESUME’ statement consists of the keyword ‘RESUME’ followed
by a list of header(s) that will ensue. The ‘RESUME’ statement may state more than one header. This
is used to model the concept of flow forking. Finally, a header may explicitly state the headers that
must be completed before it can commence. This is achieved using the ‘AFTER’ statement. Similarly,
the ‘AFTER’ statement consists of the keyword ‘AFTER’ followed by a list of headers that need to
be completed first. This is used to model the concept of flow joining.
Actions listed under a header represent the actual behavioral details of a use case. Actions must be
listed in bullet form and described using natural language. Listing actions in bullet form will allow
analysts and designers to trace back design artifacts and decisions to individual actions in a use case
description. Only one actor may perform an action, unless the action is performed by the system
itself. The name of the actor that performs a given action is prefixed to that action. For the {Enter
12
Member Information} header shown above, the Librarian actor performs all three actions shown.
Actions that are performed by the system itself are prefixed by the keyword ‘SYSTEM’.
3.2
Basic Flow and Use Case Name Structure
A use case describes various scenarios whereby an actor may benefit from the service offered by that
use case. A scenario is thus considered to be an instance of a use case [10] being performed. At the
heart of each use case is a ‘normal’ scenario (often referred to as ‘happy case’ scenario) describing
the flow of events that are usually expected to occur. The ‘normal’ scenario is described in The Basic
Flow component of a use case. The Basic Flow contains a set of headers that are performed
sequentially to perform that ‘normal’ scenario. There is a special type of header that is exclusive to
the Basic Flow component; this header is made up of the matching tags {BEGIN Use Case} and
{END Use Case}. This special header indicates the start and end of a use case. For example, for the
Enroll New Member use case shown below (see Fig. 3.2), the Basic Flow will be structured as
follows (detailed actions are omitted):
Use Case Name:
Enroll New Member
Basic Flow:
{BEGIN Use Case}
{BEGIN authenticate librarian}
actions
{END authenticate librarian}
{BEGIN enroll new member}
{BEGIN enter member information}
actions
{END enter member information}
{BEGIN enter record into library database}
actions
{END enter record into library database}
{BEGIN produce library card for new member}
actions
{END produce library card for new member}
{END enroll new member}
{END Use Case}
13
Fig. 3.2 Basic flow of the Enroll New Member use case.
Headers of the Basic Flow may optionally use ‘RESUME’ and ‘AFTER’ statements. However, by
definition, a Basic Flow describes a flow of events that occur sequentially with no variations.
Therefore, the order which the headers are presented also dictates the sequence which they will be
performed. Hence, the use of the ‘RESUME’ and ‘AFTER’ statements are optional.
3.3
Alternative Flow Structure
Variations from the ‘normal’ scenario are described in the Alternative Flows component of a use case
description. Alternative flows initiate from any given location(s) in a use case description. In order for
an Alternative Flow to initiate at a given point, a specified condition must be satisfied. Alternative
Flows initiate from a single or a set of discrete locations from within the Basic Flow only. These
location(s) are stated in the description of each Alternative Flow. For each location specified, a set of
conditions are listed along with the header(s) that will be performed next if the given conditions are
satisfied.
The set of discrete locations where Alternative Flows may initiate are indicated using the ‘AT’
statement. The ‘AT’ statement consists of the keyword ‘AT’ followed by a header where the stated
conditions are evaluated. By default, the conditions are evaluated for each action within the specified
header. Alternatively, the conditions can be evaluated only at certain actions within the specified
header. This is achieved by specifying these actions after the ‘AT’ statement.
The conditions that are evaluated at each ‘AT’ statement are indicated using ’IF’ statements. An ‘IF’
statement consists of the keyword ‘IF’, followed by a specified condition. The condition is described
using natural language and is delimited by a carriage return character (new line). A set of header(s)
describing the actual Alternative Flow of events follow the ‘IF’ statement. These headers are referred
to as Alternative Flow headers. Each Alternative Flow header must have a specified ‘RESUME’
statement to explicitly state the header(s) that will be performed next. If a ‘RESUME’ statement was
not used, then the next header in the Basic Flow will be performed.
For example, if the barcode of a book is damaged and cannot be scanned, the Librarian must enter the
barcode manually. This is shown below using the two forms of alternative flow declarations described
earlier (see Fig. 3.3 and 3.4).
Alternative Flow:
AT {scan book}
IF barcode cannot be scanned
{BEGIN enter book manually}
 Librarian enters the book’s barcode number manually
RESUME {update record}
{END enter book manually}
14
Fig. 3.3 First form: Using the AT statement to define an alternative flow initiation point
Alternative Flow:
AT {scan book}
 Librarian scans the specified book
IF barcode cannot be scanned
{BEGIN enter book manually}
 Librarian enters the book’s barcode number manually
RESUME {update record}
{END enter book manually}
Fig. 3.4 Second Form: Explicitly stating the actions where the condition for the alternative flow is
evaluated
It is not necessary for an alternative flow to define any headers, an alternative flow may simply
redirect the flow of events to a different location in a use case. In such a case, the alternative flow will
be composed of only an ‘AT’ statement followed by an ‘IF’ statement which is then followed by a
‘RESUME’ statement.
Since conditions are expressed using natural language, there is no need to add further structure and
keywords to represent more logically complex conditions. For example, if the above Alternative Flow
can be initiated if the book’s barcode is damaged or if the scanner itself is malfunctioning, then the
condition may simply be changed to ‘IF Barcode cannot be scanned or scanner is not working’.
3.4
Extension Points Structure
There are two types of Extension Points defined in [10]; Private Extension Points and Public
Extension Points. Private Extension Points are only accessible within the use case it belongs to.
Meanwhile, Public Extension Points act as interfaces or ports, which extension use cases ‘connect to’
in order to insert their additional behavior. Since Extension Points and Alternative Flows are
semantically similar, both chiefly share a similar structure.
3.4.1
Private Extension Points Structure
Private Extension Points are headers that maybe ‘inserted’ throughout any location in the use case.
Most use case modeling tools allow minimization of Private Extension Point headers within the Basic
Flow to prevent them from obscuring the main purpose of the use case. In our proposed structure,
Extension Points (public or private) are not defined within other flows. Instead they are defined under
the Extension Points section of a use case description. A Private Extension Point is composed of an
‘AT’ and ‘IF’ statements, for similar reasons as for Alternative Flows, followed by a header
containing the extending behavior. Unlike Alternative Flows, Extension Points (private or public) can
initiate from any type of flow. A ‘FLOW’ statement is used to specify that type of flow. A Private
Extension Point header is preceded with the label “PRIVATE EXTENSION POINT”. Private
15
Extension Points also need to declare the location in the use case where the flow of events will
resume. Private extension point must have ‘CONTINUE’ statement which indicates the header, in the
flow it interrupted, that will be performed next. The difference between a ‘RESUME’ statement and a
‘CONTINUE’ statement is that a ‘RESUME’ statement specifies a header that exists in the Basic
Flow, meanwhile a ‘CONTINUE’ statement specifies a header that exists in the flow specified by the
‘FLOW’ statement. Similar to Alternative Flows, an Extension Point (private or public) may
optionally not contain any headers describing extending behavior. However, this should be an
unlikely situation since an extension point is usually used to describe complex behavior that may
obscure the real purpose of the base use case incase it was merged with other types of flows.
The following example shows the Basic Flow of the Buy University Merchandise Online use case
(see Fig. 3.5). The private extension point represented by the header PRIVATE EXTENSION
POINT {BEGIN Out of Stock} contains the behavior responsible for handling the situation where a
member selects an item that is out of stock (detailed actions are omitted).
Use Case Name:
Buy University Merchandise Online
Basic Flow:
{BEGIN Use Case}
{BEGIN buy university merchandise}
{BEGIN browse merchandise catalogue}
actions
{END browse merchandise catalogue}
{BEGIN select product}
actions
{END select product}
{BEGIN process order}
actions
{END process order}
{END buy university merchandise}
{END Use Case}
16
Extension Points:
PRIVATE EXTENSION POINT
FLOW Basic Flow
AT {select product}
IF selected product is out of stock
{BEGIN out of stock}
actions
{END out of stock}
CONTINUE {browse merchandise catalogue}
Fig. 3.5 Defining a Private Extension Point for the Buy University Merchandise Online use case.
3.4.2
Public Extension Points Structure
A Public Extension Point involves a base use case (where the additional behavior will be inserted)
and an extension use case (where the additional behavior is supplied from). Hence, defining a Public
Extension Point requires structure to be embodied within the base and extension use cases.
Structure at the Base Use Case
At the base use case end, a Public Extension Point is declared under the Extension Points section.
This declaration consists of a header that acts as an interface to allow the extension use cases to
supply its additional behavior. The header of a Public Extension Point is preceded with the label
‘PUBLIC EXTENSION POINT’ followed by the name of the extension point. A Public Extension
Point header at the base use case does not define any actions since the behavior is supplied externally
from extension use cases. An extension use case is aware of the base use case’s internals which it
extends. This knowledge allows the extension use case to know the exact location(s) in the base use
case where its behavior will be inserted. Moreover, this knowledge allows the extension use case to
know the location in the base use case where the flow of events will resume.
Structure at the Extension Use Case
At the extension use case end, a corresponding Public Extension Point header will contain the actions
that constitute the additional behavior. Similarly, a Public Extension Point header is declared under
the Extension Points section of the extension use case and is preceded with the label ‘PUBLIC
EXTENSION POINT BEHAVIOR’. A Public Extension Point must state the use case it extends as
well as the location in the extended use case where the extending behavior will be inserted. The
‘EXTENDING’ statement can be used for this purpose. The structure of the ‘EXTENDING’
statement consists of the keyword ‘EXTENDING’ followed by {<Extended use case name> :
<Public Extension Point Name>}, followed by an ‘AT’ and ‘IF’ statements and finally a
‘CONTINUE’ statement.
17
Considering the same use case described in section 3.4.1, assuming that the extension point provided
was public, the base use case is then described as shown on the left side of Fig. 3.6, while the
extension use case is described as shown on the right side. (Detailed actions are omitted).
Note that in that an extension use case may also have other types of flows such as a Basic Flow. This
is because an extension use case may be initiated directly by an actor or be included by another base
use case. However, including an extension use case or associating it directly with an actor is a
discouraged modeling practice. Extension use cases should be used only for the reason they are
created for, that is to contain the behavior of Public Extension Points.
Use Case Name:
Use Case Name:
Buy University Merchandise Online
Product Out of Stock
Basic Flow:
Extension Points:
{BEGIN Use Case}
PUBLIC EXTENSION POINT BEHAVIOR
{BEGIN buy university merchandise}
{BEGIN browse merchandise catalogue}
actions
{END browse merchandise catalogue}
EXTENDING { Buy University Merchandise
Online : out of stock}
{BEGIN select product}
actions
{END select product}
{BEGIN process order}
actions
{END process order}
{END buy university merchandise}
FLOW Basic Flow
AT {select product}
IF selected product is out of stock
{BEGIN out of stock}
actions
{END out of stock}
CONTINUE
catalogue}
{browse
merchandise
{END Use Case}
Extension Points:
PUBLIC EXTENSION POINT
out of stock
Fig. 3.6 Defining a Public Extension Point for the Buy University Merchandise Online use case.
18
3.5
Subflow Structure
Subflows contain behavior that is usually required to be performed more than once. A use case may
contain several Subflows. An action in any flow inside a use case may initiate a Subflow belonging to
that use case. A Subflow can be initiated from any other type of flow, including other Subflows, using
the ‘PERFORM’ statement (see section 3.6). When the behavior of a given Subflow is completely
performed, the action or header in the main flow that follows the ‘PERFORM’ statement is
performed. Hence, a header in a Subflow does not require a ‘RESUME’ statement since a Subflow
does not need to be aware of the location in the main flow where it was initiated from.
Each Subflow must have a header containing its name. This name header is used to signify the start
and end of the given Subflow. The Subflow name header is presented as SUBFLOW <Subflow
name>. A Subflow does not require a condition to be evaluated in order for it to be initiated. If a
Subflow is only initiated under certain conditions, then these conditions should be evaluated at the
main flow, not at the Subflow header itself. Therefore, a Subflow header does not contain ‘AT’ and
‘IF’ statements. For example, the following Subflow (see Fig. 3.7) named print record. belongs to
the use case Enroll New Member and is responsible for printing a copy of a new member’s newly
created record (assuming that the new record needs to be printed several times for managerial
purposes).
Subflows:
SUBFLOW print record
{BEGIN print new member’s record}
actions
{END print new member’s record}
Fig. 3.7 Defining a Subflow
3.6
Special Actions
In addition to regular actions, there exist special types of actions that cause an inclusion use case or a
Subflow to be initiated. The following shows the structures required to declare these special types of
actions:
Initiating an inclusion use case:
{BEGIN header name}
 INCLUDE <name of the Included use case>
{END header name}
Initiating a Subflow:
{BEGIN header name}
 PERFORM <name of the desired Subflow>
{END header name}
19
3.7
Generalization Between Use Cases
As mentioned in section 2.1, a specialized use case may insert additional behavior to or modify
existing behavior in the use case it specializes. If a specialized use case inherits a lower-level header,
this will also cause the inheritance of that lower-level header’s immediate higher-level headers. To
further elaborate, let us assume a generalized use case with the header tree structure shown in Fig.
3.8. If a specialized use case would inherit Header 6, this will also cause headers Header 4 and
Header 1 to be inherited. Note that inheriting a lower-level header does not cause the actions of its
higher-level headers to be inherited as well. Therefore, when inheriting Header 6, action a1 of
Header1 is not inherited as well. If an action is inherited, such as a1 of Header 2, then Header 2
and Header 1 are also inherited
Fig. 3.8 The tree structure of headers belonging to a use case
If a generalization relationship exists between two use cases, structure is only required at the
specializing use case. The rationale behind this is that the generalized use case is not required to be
aware of its specialized use cases while the specializing use cases need to be aware of any use cases
they specialize. The name of the generalized use case is stated under the name of the specialized use
case and is presented as SPECIALIZES <Name of generalized use case> (see right side of Fig.
3.9). It is not necessary for a specializing use case to inherit all the headers and actions in its
generalized use case. In fact, a specialized use case may not inherit any headers or actions from its
generalized use case. However, the existence of such a situation is inappropriate since the
generalization relationship between the use cases would be useless. An inherited header or action can
be determined if it exists in the generalized use case. Fig. 3.9 shows two use cases that share a
generalization relationship. The use case Buy On Sale University Merchandise inherits all of the
actions specified in its parent use case and further adds the actions described under the header {Apply
Sale}. It can be determined at the Buy On Sale University Merchandise use case that the header
{Select Product} is inherited since it exists in the generalized use case Buy University
Merchandise Online.
20
Use Case Name:
Use Case Name:
Buy University Merchandise Online
Basic Flow:
Buy On Sale University Merchandise
SPECIALIZES
Buy
University
Merchandise Online
Basic Flow:
{BEGIN Use Case}
{BEGIN Use Case}
{BEGIN buy university merchandise}
{BEGIN browse merchandise catalogue}
actions
{END browse merchandise catalogue}
{BEGIN buy university merchandise}
{BEGIN browse merchandise catalogue}
actions
{END browse merchandise catalogue}
{BEGIN select product}
actions
{END select product}
{ BEGIN process order}
actions
{END process order}
{END buy university merchandise}
{END Use Case}
{BEGIN select product}
actions
{END select product}
{BEGIN process order}
actions
{END process order}
{BEGIN apply sale}
actions
{END apply sale}
{END buy university merchandise}
{END Use Case}
Fig. 3.9 Defining a generalization relationship between two use cases
3.8
Abstract Use Cases
Abstract use cases cannot be initiated. The behavior of an abstract use case must be implemented by
a concrete use case. An abstract use case hence contains headers that do not have any actions. The
actions are provided by the implementing concrete use case. An implementing concrete use case must
implement all the headers present in the abstract use case. The implementing concrete use case may
then insert additional headers and actions. In use case modeling, a concrete use case can implement
an abstract use case using the generalization relationship, where the concrete use case plays the role
of the specializing use case while the abstract use case plays the role of the generalized use case. All
headers in an abstract use case must be written in italic font. The name of the abstract use case is
stated under the name of the implementing concrete use case and is presented as IMPLEMENTS
<Name of abstract use case> (see right side of Fig. 3.10). Similarly, the rationale for this is that
21
the concrete use case needs to be aware of the abstract use case it implements, while the abstract use
case does not need to be aware of the concrete use cases that implement it. For example, Fig. 3.10
shows the abstract use case Buy University Merchandise Online being implemented by the
concrete case Buy On Sale University Merchandise.
Use Case Name:
ABSTRACT
Buy University Merchandise Online
Use Case Name:
Basic Flow:
Buy On Sale University Merchandise
IMPLEMENTS Buy University Merchandise
Online
Basic Flow:
{BEGIN Use Case}
{BEGIN Use Case}
{BEGIN buy university merchandise}
{BEGIN browse merchandise catalogue}
{END browse merchandise catalogue}
{BEGIN buy university merchandise}
{BEGIN browse merchandise catalogue}
actions
{END browse merchandise catalogue}
{BEGIN select product}
{END select product}
{BEGIN process order}
{END process order}
{END buy university merchandise}
{END Use Case}
{BEGIN select product}
actions
{END select product}
{BEGIN process order}
actions
{END process order}
{BEGIN apply sale}
actions
{END apply sale}
{END buy university merchandise}
{END Use Case}
Fig. 3.10 Defining an abstract use case and its implementing concrete use case
3.9
Generalization Between Actors
Actors reside outside a system’s boundaries. Hence, an actor description does not include any flows
of any kind since it is inappropriate to model the behavior of entities outside a system’s boundaries.
Actor descriptions consist of the actor name and brief description of the actor written in unstructured
natural language. However, for the purpose of better understanding the roles of the actors, actors can
be associated with each other only through a generalization relationship. Similar to generalizations
between use cases, the actor name section is structured to model generalization relationships. For
22
example, a Manager is considered a specialized version of an Employee. Fig. 3.11 shows how the
actor names are structured to model the generalization relationship that exists between them. The
name of the generalized actor is stated under the name of the specialized actor and is presented as
SPECIALIZES <Name of generalized actor>.
Actor Name:
Actor Name:
Employee
Manager
SPECIALIZES Employee
Fig. 3.11 Defining a generalization relationship between two actors
3.10 Other Sections in a Use Case Description
There remain further sections in a use case description that do not affect the automated transformation
of use case descriptions to diagrams, such as special and supplementary requirements. These sections
can be populated using unstructured natural language. More information about how to capture special
and supplementary requirements is presented in [33].
3.11 Formalizing the SUCD Structure Grammar
It is essential for the grammar and constructs of the SUCD structure to be formalized. Formalizing the
SUCD structure will provide a strict guideline to use case authors in composing use case descriptions,
so that there is no disagreement or ambiguity as to what is allowed and what is not. The grammar of
the SUCD structure is defined below in E-BNF (see Fig. 3.12).
S ::= UseCaseDescrption+ Actor+
Actor ::= Abstract? ActorName Implements? Specializes?
ActorName::= CharactersAndOrDigits+
UseCaseDescrption ::=
NameSection
BasicFlowSection?
AlternativeFlowSection?
SubflowsSection?
ExtensionPointsSection?
NameSection ::= ‘Use Case Name:’
Abstract?
UseCaseName
Implements?
Specializes?
Abstract ::= ‘ABSTRACT’
23
Implements ::= ‘IMPLEMENTS’ UseCaseName
Specializes ::= ‘SPECIALIZES’ UseCaseName
BasicFlowSection ::=
‘Basic Flow:’
‘{BEGIN Use Case}’
Header*
‘{END Use Case}’
Header ::= ‘{BEGIN’ HeaderName ‘}’
AfterStatement?
Contents*
ResumeStatement?
‘{END’ HeaderName ‘}’
AlternativeFlowsSections ::= ‘Alternative Flows:’ AF*
AF ::=
AtStatement
IfStatement
AFHeader
AFHeader ::=
‘{BEGIN’ HeaderName ‘}’
Contents*
ResumeStatement?
‘{END’ HeaderName ‘}’
SubflowSection ::= ‘Subflows: ’ Subflow*
Subflow ::=
‘SUBFLOW’ SubflowName
SubflowHeader
SubflowHeader ::= ‘{BEGIN’ HeaderName ‘}’
Contents*
‘{END’ HeaderName ‘}’
SubflowName ::= CharactersAndOrDigits+
ExtensionPointsSection ::= ‘Extension Points: ’ EP*
EP ::= PREP | PUEP | PUEPDeclaration
PREP ::= ‘PRIVATE EXTENSION POINT’
FlowStatement
24
AtStatement
IfStatement
PREPHeader
EPHeader
PREPHeader ::= ‘{BEGIN’ HeaderName ‘}’
Contents*
ResumeStatement
‘{END’ HeaderName ‘}’
PUEP ::= ‘PUBLIC EXTENSION POINT BEHAVIOR’
FlowStatement
AtStatement
IfStatement
EPHeader
BaseUCName ::= UseCaseName
HeaderInBaseUC ::= HeaderName
EPHeader ::= ‘{BEGIN’ HeaderName ‘}’
Contents*
‘{END’ HeaderName ‘}’
ContinueStatement
PUEPDeclaration ::= ‘PUBLIC EXTENSION POINT’
PublicExtensionPointName
ExtensionUCName ::= UseCaseName
HeaderInExtensionUC ::= HeaderName
Contents ::= Header | Statement
Statement ::= (‘•’ | Digit) (ActionStatement | PerformStatement |
IncludeStatement)
ActionStatement ::= Actor ‘’ Action
Action ::= CharactersAndOrDigits+
FlowStatement ::= ‘FLOW’ FlowType
IncludeStatement ::= ‘INCLUDE’ UseCaseName
25
PerformStatement ::= ‘PERFORM’ SubflowName
ResumeStatement ::= ‘RESUME’ (‘{‘HeaderName’}’)+
AfterStatement ::= ‘AFTER’ (‘{‘HeaderName’}’)+
AtStatement ::= ‘AT’ ‘{‘HeaderName’}’ Statement*
IfStatement ::= ‘IF’ Condition
ContinueStatement ::= ‘CONTINUE {’ ReturnHeader ‘}’
UseCaseName ::= CharactersAndOrDigits+
HeaderName ::= CharactersAndOrDigits+
Condition ::= CharactersAndOrDigits+
FlowType ::= CharactersAndOrDigits+
ReturnHeader ::= CharactersAndOrDigits+
PublicExtensionPointName ::= CharactersAndOrDigits+
CharactersAndOrDigits ::= Character | Digit
Character ::= ‘a’| ‘b’ |...| ‘z’| ‘A’| ‘B’|...| ‘Z’
Digit ::= ‘0’| ‘1’ |...| ‘9’
Fig. 3.12 E-BNF grammar for the SUCD structure
The E-BNF grammar shown above describes the formal grammar of the SUCD structure and the
concepts explained throughout section 3. In addition to the main concepts described earlier, the
grammar outlined reveals additional features of the SUCD structure. These features are either minor
or applicable to all types of structured sections in the use case description. For instance, it can be
deduced that a statement does not necessarily start with a bullet point, it may instead start with a digit.
It maybe desired to start the statements of a header with a digit if there is a need to enforce a certain
sequence for the statements to be performed. Furthermore, it can be useful to kick start the systematic
generation of other UML artifacts such as sequence diagrams; however, this is out of the scope of this
paper.
26
It can also be deduced by further examining the grammar of the SUCD structure that it is only
required to use the keyword ‘ABSTRACT’ in the use case name section to define an abstract use
case. It is not necessary to describe abstract use cases using italic font. However, it is recommended
to describe abstract use cases using italic font since the conventional method of labeling any abstract
element in the UML is by using italic font. Hence, abstract use cases throughout this paper are
described in italic font.
The use of colors is not enforced according to the grammar. However, the use of colors to describe
various aspects of the use case descriptions can be extremely beneficial as it makes the use case
descriptions significantly more readable. It is expected that when tool support becomes available for
authoring use cases using the SUCD structure, that it would incorporate the use of colors.
4
Consistency Rules Between Use Case Descriptions and Diagrams
One of the principle advantages of using the proposed use case description structure is that it ensures
consistency between the use case descriptions and their corresponding use case diagram(s). In this
section we will describe how the proposed structure can be systematically mapped to diagrammatic
notations that form use case diagrams. This systematic process can be automated through tool
support, which will ensure its consistency and speed. The following is the list of all structural
elements that can be mapped onto diagrammatic notations:







Use Case Name
The include statement
Public Extension Points
Associations between actors and use cases
Generalization Between Actors
Abstract Use Cases and their Implementation
Generalization Between Use Cases
The process of generating use case diagrams from use case descriptions and vice versa is analogous to
generating complete and accurate UML class diagrams from code and generating code structures
from UML class diagrams. The reason UML class diagrams cannot be used to generate complete
programs is because they act as a visual summary of a program’s static structure. On the other hand,
during reverse engineering, a complete program will contain more than enough details required to
generate complete and accurate UML class diagrams.
Use case descriptions (analogous to code) contain far more details than use case diagrams (analogous
to class diagrams). Given a set of use case descriptions, a complete and accurate use case diagram can
be systematically produced (see Fig 4.1). However, if modelers choose to create use case diagrams
manually first, which is often the case, a ‘skeleton’ of the use case descriptions can be systematically
27
produced. Tool support can automate the process of generating the ‘skeleton’ of the use case
descriptions (see Fig 4.2). The details of the use case descriptions are later added manually by
analysts to ‘flesh out’ the generated ‘skeletons’. After the use case descriptions are complete, tool
support can automatically detect inconsistencies between the descriptions and the diagrams.
Fig. 4.1 Systematically generating the use case diagram after initially developing the use case
descriptions
Fig. 4.2 Systematically generating use case descriptions after initially developing the use case diagram
(reversing the REUCD process)
28
4.1
Mapping of Use Case Description Structures and Use Case Diagrams
The following template will be used to present information about mappings between use case
description structures and use case diagrams (see Table 1):
Table 1. Template for mapping description structures to diagrammatic elements
Use Case Description Structure Element:
Description of how to map a description structure element to use case diagrammatic notation(s).
Example:
An example of the use case description structure element and its corresponding diagrammatic
notation(s).
Consistency Rules:
A set of consistency rules that are used to check the consistency between any given set of descriptions
and their corresponding diagrams(s), which will be required by a tool if analysts decide to build the
use case diagram before writing the use case descriptions.
I. Use Case Name:
A use case description with a given use case name generates a use case in the diagram with a
matching name.
Example:
Use Case Name:
Buy On Sale University Merchandise
Consistency Rules:
1) Every use case description must have a corresponding use case in the diagram with matching
names
2) Every use case in a diagram must have a corresponding use case description with matching names
II. The INCLUDE Statement:
The include statement creates an ‘include’ relationship between the base use case, which contains the
include statement, and the inclusion use case, which is stated in the include statement.
Example:
Use Case Name:
Enroll New Member
Basic Flow:
{BEGIN Use Case}
.
29
{BEGIN authenticate librarian}
 INCLUDE Authenticate User
{END authenticate librarian}
.
{END Use Case}
Consistency Rules:
1) An inclusion use case in a diagram must be initiated at least once by each base use case that
includes it, using the include statement.
2) An INCLUDE statement in a base use case must refer to a use case that exists in the diagram
3) An INCLUDE statement in a base use case must refer to a use case that is included by that base
use case.
III. Public Extension Points:
A base use case that contains a Public Extension Point is extended by the extension use case stated in
the Public Extension Point header. The Public Extension Point name is also depicted at the base use
case in the diagram. The condition associated with the Public Extension Point is displayed as part of
the extend relationship notation that connects the involved use cases.
Example:
Use Case Name:
Use Case Name:
Buy University Merchandise Online
Product Out of Stock
Basic Flow:
Extension Points:
{BEGIN Use Case}
PUBLIC EXTENSION POINT BEHAVIOR
.
.
{BEGIN select product}
actions
{END select product}
EXTENDING { Buy University Merchandise
Online : out of stock}
Extension Points:
FLOW Basic Flow
AT {select product}
IF selected product is out of stock
{BEGIN out of stock}
actions
{END out of stock}
PUBLIC EXTENSION POINT
out of stock
CONTINUE
catalogue}
.
.
{END Use Case}
{browse
merchandise
30
Consistency Rules:
1) At the base use case, a Public Extension Point header must refer to an extension use case that
exists in the diagram.
2) At the base use case, a Public Extension Point header must refer to an extension use case that
extends the base use case. The stated Public Extension Point header must also exist within the
Extension Points section of the extension use case.
3) At the extension use case, the ‘AT’ statement of a Public Extension Point must refer to a base use
case that exists in the diagram.
4) At the extension use case, the ‘AT’ or ‘FROM TO’ statement of a Public Extension Point must
refer to a base use case that the extension use case extends. The header stated in the ‘AT’ or
‘FROM TO’ statement must also exist within the base use case.
5) At the extension use case, the ‘RESUME’ statement of a Public Extension Point must refer to a
header that exists within the base use case.
6) At the extension use case, the condition stated in the ‘IF’ statement of a Public Extension Point is
depicted in the diagram as part of the extend relationship notation that links the base use case and
the extension use case.
IV. Associations Between Actors and Use Cases:
An actor stated in an action contained in a use case creates an association link between that actor and
the corresponding use case in the diagram.
Example:
Use Case Name:
Enroll New Member
Basic Flow:
{BEGIN Use Case}
.
.
{BEGIN enter member information}
31



Librarian enter member’s name
Librarian enter member’s address
Librarian enter member’s phone
number
{END enter member information}
.
.
{END Use Case}
Consistency Rules:
1) An actor stated to perform any given action within a use case description must exist in the
diagram.
2) An actor stated to perform any given action within a use case description must be linked with that
use case using an association relationship in the diagram.
3) An actor linked with a use case using an association relationship in the diagram must perform at
least one action in the given use case.
V. Generalization Between Use Cases:
A use case name stated as generalized in another use case’s Use Case Name section creates a
generalization relationship link between the involved use cases.
Example:
Use Case Name:
Buy University Merchandise Online
Use Case Name:
Buy On Sale University Merchandise
SPECIALIZES
Buy
University
Merchandise Online
Consistency Rules:
1) A specializing use case must refer to a different use case that exists in the diagram
2) A specializing use case must refer to a use case in the diagram that is specializes.
3) The specializing use case must have a generalization relationship directed towards the
generalized use case in the diagram
VI. Abstract Use Cases and their Implementation:
The name of an abstract use case is displayed in italic font in the diagram. A use case implementing
an abstract use case creates a generalization relationship arrow in the diagram, originating from the
implementing use case and directed towards the abstract use case.
32
Example:
Use Case Name:
Buy University Merchandise Online
Use Case Name:
Buy On Sale University Merchandise
IMPLEMENTS
Buy
University
Merchandise Online
Consistency Rules:
1) An implementing concrete use case must refer to an abstract use case that exists in the diagram.
2) An implementing concrete use case must refer to an abstract use case that it implements.
3) The entire header tree structure of the abstract use case must exist and be implemented in the
concrete use case.
4) A use case description written in abstract form (italics) must have a corresponding use case in the
diagram with its name displayed in italics.
5) An abstract use case in the diagram must have a corresponding use case description written in
abstract form (italics).
VII. Generalization Between Actors:
An actor name stated as generalized in another actor’s Actor Name section creates a generalization
relationship link between the involved actors.
Example:
Actor Name:
Employee
Actor Name:
Manager
SPECIALIZES Employee
Consistency Rules:
1) A specializing actor must refer to a different actor that exists in the diagram
2) The specializing actor must have a generalization relationship directed towards the generalized
actor in the use case diagram.
33
3) Every actor description with a given name must have a corresponding actor in the diagram with a
matching name.
4) Every actor in the diagram with a given name must have a corresponding actor description with a
matching name.
4.2
Other Structured Sections in Use Case Descriptions
Structured sections such as Private Extension Points, Subflows and Alternative Flows are not
modeled in a use case diagram. However, it is still important to structure these sections since they
describe the flow of events within a use case. Structuring those sections will aid the transformation of
use case descriptions to other UML artifacts such as activity diagrams and sequence diagrams.
5
Tool Support for Automated Generation of Use Case Diagrams
Tool support is essential for the effective application of the REUCD process. For a highly complex
software system, the corresponding use case model may contain up to four hundred use cases. Use
cases are not sorted in any chronological order. Relationships linking the use cases with other use
cases and actors also not sorted in any fashion either. Therefore, performing the REUCD process for
such system manually is a very cumbersome task that is prone to many inconsistencies. Even for a
relatively smaller use case model, one that contains twenty use cases, the application of the REUCD
process is still vulnerable to mistakes.
In this paper, we feature the tool AREUCD (Automated REUCD), which supports the two way
generation of use case diagrams from use case descriptions and vice versa. In order to generate use
case diagrams from use case descriptions, AREUCD is loaded with a UC description file (‘.ucd’
extension). AREUCD parses through the descriptions of all the given use case descriptions and actors
and generates a file containing the corresponding use case diagram. The use case diagram is
generated in XML format, which will allow it to be displayable by UML modeling tools. Conversely,
in order to generate use case description ‘skeletons’, AREUCD is loaded with UC diagram file. The
UC diagram can be generated by a UML modeling tool. The UC diagram must be in XML format,
however this is not an issue since almost all UML modeling tools store information about their
models in XML format. Upon parsing the diagram or description files, the properties of the given UC
descriptions or diagram is displayed (see Figure 5.1). Figure 5.2 shows an overview of the operation
of AREUCD.
34
Fig. 5.2 An overview of AREUCD
6
Online Hockey Team Store System Case Study
The following case study is used to demonstrate how use case descriptions are presented in the SUCD
form and to demonstrate the application of AREUCD. This case study will also illustrate the
concepts, described in section 4, to systematically generate use case diagrams from use case
descriptions using the REUCD process. The case study is about a simplified online hockey team store
system. The presented system is simplified for clarity, yet complex enough for the purposes of
demonstrating the SUCD structure and the REUCD process.
The system allows customers to purchase tickets for upcoming hockey games. To buy a ticket, a
customer needs to choose the game he/she would like to attend from the team’s online calendar. The
customer selects the desired section in an area where he/she would like their tickets to be along with
the quantity of tickets requested. Upon retrieval of this information, the system will search the
database for the requested tickets. If the tickets are available, the customer is prompted to either
accept or reject the offered seats. If the customer accepts the offered seats, the customer is then
directed to a billing page where the purchase transaction can take place. Otherwise, if the tickets are
not available, the customer is informed about the unavailability and then requested to submit another
search for tickets. Occasionally, tickets for certain games in certain sections of the hockey arena may
go on sale. Unlike regular priced tickets, a customer may purchase a maximum of six on sale tickets.
The system also allows customers to purchase team merchandise such as hockey jerseys, sticks,
pucks…etc. When choosing a merchandise item, the customer may provide customization requests
for an extra cost. Available customization options depend on the type of item. For example, if the
item was a hockey jersey, the customer may choose to have his/her name sewed on the jersey along
with their favorite number. Meanwhile, if the item was a steel pen, the customer may have a name (or
other words) engraved on the pen. To boost merchandise sales, a customer may enter a ticket number
while purchasing merchandise for a chance to win a grand prize. A customer may purchase tickets
and team merchandise using a credit card or a team hockey card. If the customer chooses to purchase
using a credit card, an external credit card authorization system is utilized to verify the validity of the
given credit card information. Meanwhile, if the customer chooses to purchase using a team hockey
card, the customer is requested to enter a PIN. The system internally verifies the PIN with the
35
associated hockey team card to approve the transaction. For any purchase, the customer is requested
to enter billing information. The billing information is used for market survey purposes and delivery
of tickets and team merchandise. Billing information would include the customer’s name, phone
number and address.
This simplified system contains seven use cases and two actors. The formal use case and actor
descriptions are presented below. For illustrative purposes, the evolution of the use case diagram is
shown below as the use cases are read one by one (Fig. 5.15.8).
Use Cases:
1) Use Case Name:
Buy Tickets
Brief Description: This use case is responsible for allowing customers to purchase as many tickets
as they need in any section.
Preconditions:
1) At least one game and one seat is available
Basic Flow:
{BEGIN Use Case}
{BEGIN present price list}
 SYSTEM presents the different sections that exist in the arena and the price for a
single seat in each section
{END Present Price List}
{BEGIN enter ticket order information}
 Customer selects the desired game from the team’s calendar
 Customer enters the desired section
 Customer enters the number of tickets
 Customer submits order request
 PERFORM search tickets
{END enter ticket order information}
{BEGIN purchase ticket}
 SYSTEM prompts the Customer to accept or reject the offered seats
 Customer accepts to purchase ticket
 INCLUDE Perform Transaction
{END purchase ticket}
{END Use Case}
Alternative Flows:
36
AT {enter ticket order information}
 PERFORM search tickets
IF tickets not available
{BEGIN search for tickets again}
 SYSTEM notifies the Customer that the requested tickets are unavailable
RESUME {enter ticket order information}
{END search for tickets again}
AT {purchase ticket}
 Customer accepts to purchase ticket
IF tickets were rejected
{BEGIN rejected seats}
 SYSTEM notifies the Customer that the cancellation has been confirmed.
RESUME {present price list}
{END rejected seats}
Subflows:
SUBFLOW search tickets
{BEGIN print new member’s record}
 SYSTEM retrieve seating information about the requested games
 SYSTEM retrieve seating information about the requested section
 SYSTEM locates the desired number of seats in the requested section. The seats
must be next to each other in the same row
{END print new member’s record}
Postconditions: If tickets are issued, these seats become unavailable for future customers
Extension Points:
Special Requirements: System must be online
Fig. 5.1 The use case diagram after one use case description is read
2) Use Case Name:
Buy On Sale Tickets
SPECIALIZES Buy Tickets
Brief Description: This use case is responsible for allowing customers to purchase a maximum of
six on sale tickets.
Preconditions:
At least one game and one seat is available
Basic Flow:
37
{BEGIN Use Case}
{BEGIN present price list}
 SYSTEM presents the different sections that exist in the arena and the price for a
single seat in each section
{END present price list}
{BEGIN request on sale tickets}
 Customer indicates interest to purchase on sale tickets
 SYSTEM presents the selected games that have on sale tickets
 SYSTEM presents the selected sections that contain on sale tickets
{END request on sale tickets}
{BEGIN enter ticket order information}
 Customer selects the desired game with on sale tickets
 Customer selects the desired section with on sale tickets
 Customer enters the number of desired on sale tickets
 Customer submits order request
 PERFORM search on sale tickets
{END enter ticket order information}
{BEGIN purchase ticket}
 SYSTEM prompts the Customer to accept or reject the offered seats
 Customer accepts to purchase tickets
 INCLUDE Perform Transaction
{END purchase ticket}
{END Use Case}
Alternative Flows:
AT {enter ticket order information}
 PERFORM search tickets
IF tickets not available
{BEGIN search for tickets again}
 SYSTEM notifies the Customer that the requested tickets are unavailable
RESUME {enter ticket order information}
{END search for tickets again}
AT {enter ticket order information}
 Customer enters the number of desired on sale tickets
{BEGIN too many tickets}
 SYSTEM notifies the Customer that the requested number tickets exceed the
38
maximum allowed of six
RESUME {enter ticket order information}
{END too many tickets}
AT {purchase ticket}
 Customer accepts to purchase ticket
IF tickets were rejected
{BEGIN rejected seats}
 SYSTEM notifies the Customer that the cancellation has been confirmed.
RESUME {present price list}
{END rejected seats}
Subflows:
SUBFLOW search on sale tickets
{BEGIN print new member’s record}
 SYSTEM retrieves seating information about the requested games
 SYSTEM retrieves seating information about the requested section
 SYSTEM locates the desired number of seats in the requested section. The seats
must be next to each other in the same row
{END print new member’s record}
Postconditions: If tickets are issued, these seats become unavailable for future customers
Extension Points:
Special Requirements: System must be online
Fig. 5.2 The use case diagram after two use case descriptions are read
3) Use Case Name:
ABSTRACT
Perform Transaction
Brief Description: This use case is responsible for allowing customers to pay for their selected
items
Preconditions:
At least one ticket is requested for purchase
39
Basic Flow:
{BEGIN Use Case}
{BEGIN enter billing information}
{END enter billing information}
{BEGIN print receipt}
{END print receipt}
{END Use Case}
Alternative Flows:
Subflows:
SUBFLOW print receipt
{BEGIN print transaction information}
{END print transaction information}
Postconditions:
If tickets are issued, these seats become unavailable for future customers
If merchandise is sold, the merchandise database is updated
Extension Points:
Special Requirements: System must be online
Fig. 5.3 The use case diagram after three use case descriptions are read
4) Use Case Name:
Purchase With Credit Card
IMPLEMENTS Perform Transaction
Brief Description: This use case is responsible for allowing customers to pay for their selected
items using a credit card
Preconditions:
At least one item is requested for purchase
Basic Flow:
40
{BEGIN Use Case}
{BEGIN enter billing information}
 SYSTEM requests Customer to enter billing information
 Customer enters first and last names
 Customer enters phone number
 Customer enters billing address
 Customer selects to pay using a credit card
{END enter billing information}
{BEGIN pay by credit card}
 Customer enters credit card type
 Customer enters credit card number and expiry
 Credit Card Validation System validates given credit card
{END pay by credit Card}
{BEGIN print receipt}
 PERFORM print receipt
{END print receipt}
{END Use Case}
Alternative Flows:
Subflows:
SUBFLOW print receipt
{BEGIN print transaction information}
 SYSTEM prints Customer information
 SYSTEM prints credit card information
 SYSTEM print items information and total price
{END print transaction information}
Postconditions: If tickets are issued, these seats become unavailable for future customers
Extension Points:
PRIVATE EXTENSION POINT
FLOW Basic Flow
AT {pay by credit card}
 Credit Card Validation System validates given credit card
IF credit card information is incorrect
{BEGIN enter credit card information again}
 SYSTEM notifies the Customer that the credit card information is incorrect
{END enter credit card information again}
CONTINUE {pay by credit card}
41
Special Requirements: System must be online
Fig. 5.4 The use case diagram after four use case descriptions are read
5) Use Case Name:
Purchase Using Hockey Team Card
IMPLEMENTS Perform Transaction
Brief Description: This use case is responsible for allowing customers to pay for their selected
items using a preauthorized payment plan setup on their hockey team card
Preconditions:
At least one item is requested for purchase
Customer has a hockey team card with a set PIN
Basic Flow:
{BEGIN Use Case}
{BEGIN enter billing information}
 SYSTEM requests Customer to enter billing information
 Customer enters first and last names
 Customer enters phone number
 Customer enters billing address
 Customer selects to pay using a hockey team card
{END enter billing information}
{BEGIN enter team hockey card information}
 Customer enters team hockey team card number
 Customer enters card PIN
 SYSTEM verifies card number and PIN
{END enter team hockey card information}
{BEGIN print receipt}
 PERFORM print receipt
{END print receipt}
42
{END Use Case}
Alternative Flows:
AT {enter team hockey card information}
 SYSTEM verifies card number and PIN
IF card information is invalid
{BEGIN enter team hockey card information again}
 SYSTEM notifies the Customer that the team hockey card information is incorrect
RESUME {pay by credit card}
{END enter team hockey card information again}
Subflows:
SUBFLOW print receipt
{BEGIN print transaction information}
 SYSTEM prints Customer information
 SYSTEM prints team hockey card information
 SYSTEM print items information and total price
{END print transaction information}
Postconditions: If tickets are issued, these seats become unavailable for future customers
Extension Points:
Special Requirements: System must be online
Fig. 5.5 The use case diagram after five use case descriptions are read
6) Use Case Name:
Buy Team Merchandise
Brief Description: This use case is responsible for allowing customers to buy team merchandise
such as jersey, hockey sticks, mugs and other collectibles
Preconditions:
Basic Flow:
43
{BEGIN Use Case}
{BEGIN display catalogue}
 SYSTEM displays catalogue with all team merchandise items
{END display catalogue}
{BEGIN select items}
 Customer selects desired items to purchase
 Customer enters quantity of each item
 Customer enters any desired customization information
{END select items}
{BEGIN purchase items}
 INCLUDE Perform Transaction
{BEGIN a chance to win}
 Customer enters a ticket number for a chance to win
{END a chance to win }
{END purchase items}
{END Use Case}
Alternative Flows:
Subflows:
Postconditions:
Extension Points:
PUBLIC EXTENSION POINT
Grand Prize Giveaway
Special Requirements: System must be online
44
Fig. 5.6 The use case diagram after six use case descriptions are read
7) Use Case Name:
Winning Ticket Entered
Brief Description: This use case is responsible for the situation where a winning ticket was
entered.
Preconditions:
Basic Flow:
Alternative Flows:
Subflows:
Postconditions:
Extension Points:
PUBLIC EXTENSION POINT BEHAVIOR
EXTENDING {Buy Team Merchandise : Grand Prize Giveaway}
FLOW Basic Flow
AT {a chance to win}
IF winning ticket was entered
{BEGIN grand prize giveaway}
 SYSTEM notifies Customer the he/she won the grand prize
 Customer enters phone number for a Customer service representative to call
{END grand prize giveaway}
CONTINUE {END Use Case}
Special Requirements: System must be online
45
Fig. 5.7 The use case diagram after all seven use case descriptions are read
Actors:
1) Actor:
Customer
Brief Description: This actor may purchase hockey tickets at regular price or on sale. This actor
may also purchase team merchandise. The actor will be requested to pay using a credit card or a
team hockey card.
2) Actor:
Credit Card Validation System
Brief Description: This actor ensures the validity of a given a credit card number and an expiry
date.
46
Fig. 5.8 The use case diagram after all use cases and actors are read
Using AREUCD, the use case diagram was automatically generated after reading the use case and
actor descriptions. The ‘.ucd’ file representing the use case and actor descriptions is located at
[STEAM]. AREUCD does not incorporate an evolutionary process as shown by figures 5.15.8.
Initially, AREUCD analyzes the entire set of descriptions to produce an object model representing the
properties of the descriptions (see Fig. 5.9) , then produces the entire use case diagram. The
corresponding XML file generated by AREUCD is located at [STEAM] and can be viewed using
MagicDraw.
47
Fig. 5.8 A screenshot of AREUCD after transforming the descriptions to an object model
7
Conclusion and Future Work
A quality use case model improves every aspect of the development cycle. There are several quality
attributes that should exist in every use case model. A use case model needs to be precise and
unambiguous, so that all stakeholders would have a common understanding of the capabilities and
constraints of the system. A use case model needs to be analytical and should not contain any
assumptions about the design or implementation. An analytical use case model describes what a
system should do instead of how it does it. Another essential quality attribute is consistency, which is
the focal point of this paper. Many researchers and practitioners warn about the harmful consequences
of inconsistencies in use case models. Inconsistencies can negatively affect every aspect of the
development cycle as well as the stakeholders. Inconsistencies occur in use case models mainly due
to inexperience. Use cases that are authored by inexperienced analysts or analysts without a great deal
48
of domain knowledge are hard to read and verify, and therefore inconsistencies become much more
difficult to detect. In addition, many use case authoring styles and structures that already exist do not
provide enough information to be able to construct a use case diagram that accurately represents the
descriptions. Relying on heuristics and experience to manually detect inconsistencies can be
cumbersome, error prone and requires a great deal of expertise to be effective. Such expertise is often
not readily available. Use case descriptions require necessary structure to allow the automated
generation of accurate use case diagrams and the detection of inconsistencies that may exist between
them, while allowing analysts the liberty and flexibility to describe a system using natural language,
which will make the model easy to comprehend. The added structure will also allow use case
descriptions to be machine readable. Consequently, this will allow tools to systematically extract a
great deal of information from the descriptions.
This paper proposes a structure (SUCD) for describing use cases. The structure serves as a guideline
to use case authors. The SUCD form along with the REUCD process enables the systematic
generation of use case diagrams and ensures consistency between the descriptions and their diagrams.
The generated diagrams will be complete and provide an accurate representation of the use case
descriptions. Tool support can be provided to automate this process as well. The REUCD process
may also be reversed, where the use case diagram is constructed before the use case descriptions. In
that case, tool support can automatically generate use case description ‘skeletons’ from use case
diagrams. Analysts will then need to manually fill in the details of each use case description. After
filling the details, tool support can detect any inconsistencies between the diagrams and the
descriptions and notify the analysts and modelers about these inconsistencies.
Future work can be directed towards developing a systematic approach to generate other UML
artifacts such as activity diagrams and sequence diagrams from use case descriptions. This will
provide a key step towards bridging the gap between the analysis phase and the design phase, and
reduce the dependence on experience. These future approaches should also be accompanied by
consistency rules that ensure the consistency between the use case descriptions and the generated
UML diagrams.
References
1. Adolph, S., Bramble, P.: Patterns for effective use cases. Addison-Wesley. 2002.
2. Ambler, S.: http://www.agilemodeling.com/essays/whenIsAModelAgile.htm
3. Anda, B., Dreiem, H., Sjøberg, D. & Jørgensen, M. Estimating Software Development Effort
Based on Use Cases – Experiences from industry. Submitted to UML'2001 (Fourth International
Conference on th Unified Modeling Language).
4. Anda, B., Sjøberg, D., Jørgensen, M.: Quality and Understandability in Use Case Models. 15th
European Conference Object-Oriented Programming (ECOOP), edited by J. Lindskov Knudsen.
Springer-Verlag, Budapest, Hungary, pages 402-428. 2001.
49
5. Anda, B., Sjøberg, D.I.K.: Towards an Inspection Technique for Use Case Models. Proceedings
of the 14th international Conference on Software engineering and Knowledge Engineering (2002)
127-134
6. Anderson, E., Bradley, M., Brinko, R.: Use case and business rules: styles of documenting
business rules in use cases. Addendum to the Object-oriented programming, systems, languages,
and applications conference. (1997)
7. Armour, F., Miller, G.: Advanced Use Case Modeling. Addison-Wesley. 2000
8. Ben Achour, C., Rolland, C., Maiden, N.A.M. & Souveyet, C. Guiding Use Case Authoring:
Results of an Empirical Study. Proceedings IEEE Symposium on Requirements Engineering,
IEEE Comput. Soc, Los Alamitos, CA, USA, 1999.
9. Biddle, B., Noble, J., Tempero, E.: Essential Use Cases and Responsibility in Object-Oriented
Development. Proc. of 25th CRPITS. 2002, Volume 24 Issue 1.
10. Bittner, K., Spence, I.: Use Case Modeling. Addison-Wesley, MA. 2002
11. Boehm, B.: Software Engineering Economics. Englewood Cliffs, NJ: Prentice-Hall. 1981
12. Booch, G., Rumbaugh, J., Jacobson, I.: The Unified Modeling Language User Guide. AddisonWesley. 1999.
13. Butler, G., Xu, L.: Cascaded refactoring for framework evolution, Proceedings of 2001
Symposium on Software Reusability, ACM Press, 2001, pp. 51-57.
14. Chandrasekaran, P.: How use case modeling policies have affected the success of various projects
(or how to improve use case modeling). Addendum to the 1997 ACM SIGPLAN conference on
Object-oriented programming, systems, languages, and applications. 1997.
15. Cockburn, A. Writing Effective Use Cases. Addison-Wesley, 2000
16. Cockburn, A.: Goals and Use Cases. Journal of Object-Oriented Programming, 10(5), September.
1997.
17. Constantine, L. L.: Essential Modeling: Use Cases for User Interfaces. ACM Interactions, 2 (2):
34-46, March/April 1995.
18. Fagan, M.E. Design and Code Inspections to Reduce Errors in Program Development. IBM
Systems Journal, Vol. 15(3), pp. 182-211, 1976.
50
19. Firesmith, D.G. Use Case Modeling Guidelines. Proceedings of Technology of Object-Oriented
Languages and Systems – TOOLS 30. IEEE Comput. Soc, Los Alamitos, CA, USA, 1999.
20. Gilb, T., Graham, D.: Software Inspection. Addison-Wesley, Reading, MA. 1993
21. Gomaa, H.: Designing Software Product Lines with UML. Addison Wiley Professional. 2004.
22. Gomaa, H.: Designing Concurrent, Distributed, and Real-Time Applications with UML. Addison
Wiley. 2000
23. Harwood, R. J. Use case formats: Requirements, analysis, and design. Journal of Object-Oriented
Programming, Vol. 9, No. 8, pp. 54-57, January 1997.
24. Jaaksi, A. Our Cases with Use Cases. Journal of Object-Oriented Programming, Vol. 10, No. 9,
pp. 58-64, February 1998.
25. Jacobson, I. et al. Object-Oriented Software Engineering. A Use Case Driven Approach. AddisonWesley, 1992.
26. Jacobson, I., Ericsson, M., Jacobson, A.: The Object Advantage. ACM Press. 1995.
27. Johansson, A.: Confusion in Writing Use Cases. Proc. of the 2nd International Conference on
Information Technology for Application (ICITA 2004)
28. Kaner, C., Bach, J., Pettichord, B.: Lessons Learned in Software Testing, 2003. John Wiley &
Sons.
29. Kroll, P., Kruchten, P.: The Rational Unified Process made easy: a practitioner’s guide to the
RUP. Addison-Wesley. 2003.
30. Kruchten, P.: The Rational Unified Process: An Introduction (2nd Edition). Addison Wesley
Longman Inc. 1999.
31. Kulak, D., Guiney, E.: Use Cases: Requirements in Context. Addison-Wesley. 2000
32. Larman, C.: Applying UML Patterns: An Introduction to Object-Oriented Analysis and Design
and the Unified Process. 2nd Edition. Prentice Hall. 2001
33. Leffingwell, D., Widrig, D.: Managing Software Requirements: A Unified Approach. AddisonWesley. 2000.
34. Lilly, S.: Use Case Pitfalls: Top 10 Problems from Real Projects Using Use Cases, Proceedings of
TOOLS USA '99, IEEE Computer Society, (1999).
51
35. Mattingly, L. & Rao, H. Writing Effective Use Cases and Introducing Collaboration Cases.
Journal of Object-Oriented Programming, Vol. 11, No. 6, pp. 77-79, 81-84, 87, October 1998.
36. McCoy, J: Requirements use case tool (RUT). Companion of the 18th annual ACM SIGPLAN
conference on Object-oriented programming, systems, languages, and applications. 104-105
(2003)
37. OMG. UML 2.0 Infrastructure Specification, September, 2003. http://www.omg.org/docs/ptc/0309-15.pdf
38. Overgraad, G., Palmkvist, K.: Use Cases Patterns and Blueprints. Addison-Wesley (2005).
39. Rational Software: Rational Unified Process Version 2002.05.00, 2002.
40. Ren, S., Butler, G., Rui, K., Xu, J., Yu, W., Luo, R.: A Prototype Tool for Use Case Refactoring.
Proc. of the 6th International Conference on Enterprise Information Systems. P173-178. Porto,
Purtogal. 2004.
41. Rosenberg, D. & Scott, K. Use Case Driven Object Modeling with UML. Addison-Wesley, 1999.
42. Schneider, G., Winters, J.: Applying Use Cases – A Practical Guide. Addison-Wesley. 1998
43. Shull, F., Rus, I. and Basili, V. How Perspective-Based Reading Can Improve Requirements
Inspections. IEEE Computer, Vol. 33(7), pp. 73-79, July 2000.
44. Sommerville, I. Software Engineering, 5th Ed. Addison-Wesley, 1996.
45. Wirfs-Brock, R.: Designing Scenarios: Making the Case for a Use Case Framework. Smalltalk
Report, Nov.-Dec., 1993. SIGS Publications.
46. Wohlin, C. and Korner, U, Software Faults: Spreading, Detection and Costs, Software
Engineering Journal, Vol. 5, No. 1, pp. 33 – 42. 1990
47. Yourdon, E. Structured Walkthroughs. Prentice-Hall, 1989.
48. www.mcbreen.ab.ca/papers/QAUseCases.html
52
Download