Software Requirements Using The Unified Process
Software Requirements Using The Unified Process
• Index
Software Requirements Using the Unified
Process: A Practical Approach
By Daniel R. Windle, L. Rene Abreo
Copyright
Preface
Acknowledgments
Part 1. Introducing Good Requirements
Chapter 1. The Importance of Good Requirements
Rationale for Good Requirements
Approach to Good Requirements
Benefits of Good Requirements
Impact of Good Requirements on Development and Productivity
Impact of Good Requirements on Testing and Quality
Impact of Good Requirements on the Organization
Identification of a Good Requirement
Chapter 2. Characteristics of Good Requirements
Characteristics of a Good Requirement
Characteristics of a Good Set of Requirements
Language of Good Requirements
Communicability of Good Requirements
Chapter 3. Overview of the Artifacts and the Process
Introduction to the Artifacts
Introduction to the Process
Moving from Requirements to Design
Part 6. Appendices
Appendix A. Planning Model for Requirements Development
Model Work Breakdown Structure
Model Effort Allocation
Model Schedule Allocation
Standard Major Milestones
Appendix B. Change Management System Artifacts
Change Management System Use Cases
Change Management System Class Diagrams
Change Management System State Diagrams
Change Management Software Requirements Specification
Bibliography
Index
Copyright
Library of Congress Cataloging-in-Publication Data
Windle, Daniel R.
p. cm.
ISBN 0-13-096972-9
005.1dc21 2002075285
Prentice Hall books are widely used by corporations and government agencies
for training, marketing, and resale.
All rights reserved. No part of this book may be reproduced, in any form or by
any means, without permission in writing from the publisher.
10 9 8 7 6 5 4 3 2 1
Pearson EducationJapan
Real-world systems are built every day and based on skimpy requirements. We
know this because most of us have been on projects where the requirements
change daily. Sometimes these changes are due to the customer changing his
mind. More often, these changes are due to clarifications of the software
requirements that come late in the project. Anyone responsible for the
maintenance of one or more significant projects has also experienced the
effects of building systems with skimpy requirements. Many of us have
struggled with reliance on single individuals for knowledge about what a
system does. Some of us have been that individual struggling to remember all
the interdependencies among the requirements we are being asked to change
to implement a particular release. The approach described in this book is a
practical approach to developing software requirements. We have successfully
delivered a significant number of systems by using this process and the
resulting artifacts. These systems have ranged from defense command and
control systems to web systems to financial transaction processing systems.
We have also recovered the requirements from existing systems by using this
process to alleviate the reliance on individuals and to improve the speed and
quality of maintenance activities.
Requirements tell you the features a system must have as well as what the
software must do to deliver those features. This is a significant aspect of
requirements: they possess a dual nature. Features represent user
requirements. What the software does represents software requirements.
There is a large gap between user requirements and software requirements.
The artifacts and process described in this book will help you fill that gap. You
work with the user to determine what features the system must have. From
this feature set, you must derive a set of components that can deliver those
features. These components and their relationship to each other lead you to a
software architecture. This architecture tells you what the software must do.
The user requirements come from describing the user's interaction with the
system. You derive the software requirements during analysis by mapping the
user requirements onto the software architecture.
Requirements are normally the work of a requirements analyst. While the dual
nature of requirements may lead an analyst to specialize in user requirements
or software requirements, generally an analyst serves two customers. The first
is the user of the system. The second is the developer of the system who must
design a system to meet the specified requirements.
How many times have you heard the phrase "the user does not know what he
wants"? This phrase is most often wrong. The user often has an idea of what
he wantshe just does not know the specifics. There may be many reasons for
this. One reason may be that the user does not know what is possible. Another
reason may be that the user is considering the software from a single point of
view. It is up to the analyst to understand what the user wants, communicate
what is possible, and then specify what the user wants and exactly what the
software must do.
To perform this task, the analyst must be able to move forward with the
requirements work in the context of providing feedback to the user and
incorporating that feedback into a growing body of knowledge. A practical
approach to address these challenges is to use a process that builds knowledge
incrementally. At the same time, this practical approach would also augment
this process with a structure that saves, relates, and communicates this
information coherently. This structure must also help the analyst keep this
information consistent.
A good set of requirements also facilitates faster and more systematic testing.
The tester can learn the system quickly, much as a new team member would.
The tester can then build test cases from the user's point of view to organize
his approach operationally. However, a good set of requirements helps the
tester understand what the system must do under what conditions to fulfill the
user requirements. A good set of requirements must allow the tester to
understand and test all the conditions under which the user will operate the
system.
Impact of Good Requirements on the Organization
Ambiguity Considerations
The system shall allow only five valid dependent records and insurance
programs; it must include the oldest.
It is not clear whether the system must keep the oldest dependent record or
the oldest insurance program. Of course, that raises another problem. Each
requirement should only talk about one subject. Including multiple subjects in
a single requirement can lead to ambiguity and make the requirements set
harder to maintain when things start changing. We might change the
requirement to read:
The system shall include a record for the oldest dependent in the set of
dependent records.
The system shall include any associated insurance program within a dependent
record.
This set of requirements is less ambiguous than the single requirement from
which these three requirements were taken.
Often, each subject area has its own set of common acronyms. People that
work in these areas use the acronyms as if they are common knowledge. Here
is an example.
The system shall build and transmit new record messages to the DOT.
Modeling Languages
The first modeling language we discuss is the Finite State Machine. A Finite
State Machine is represented graphically in a State Transition Diagram (see
Chapter 12). The State Transition Diagram models the system by using nodes
to represent a given state, and arrows from one node to another identify
transitions from one state to another. These arrows are activated when some
event occurs that transitions the machine from one state to another. Normally,
the system takes some actions during the transition. State Transition Diagrams
are powerful tools for describing a system in a complete, concise, and
unambiguous manner, but their use raises some problems.
State Transition Diagrams are great for describing how systems move from one
state to another. However, when many types of events that do not change the
system state occur, the diagrams can become confusing and hard to follow.
State Transition Diagrams also suffer from state explosion phenomenon.
Complex systems can have so many events and states that the diagrams
become unwieldy. It is also difficult to model concurrent processes in State
Transition Diagrams. Petri Nets were developed to address the concurrency
issue.
The second modeling language, Petri Nets, builds a type of State Transition
Diagram that can represent concurrent tasks. Concurrent tasks must be
synchronized to ensure that shared data is not accessed in ways that could
adversely affect the system and to ensure that the system does not become
deadlocked. For example, a system may become deadlocked when task1 is
holding resource1 until task2 provides some input, but task2 is waiting for
resource1 to determine if there is any input for task1. Petri Nets let the
analyst view the various synchronization issues graphically. Like State
Transition Diagrams, Petri Nets are a valuable way to model certain problems
in a system.
Although Petri Nets solve the concurrency issue, they still suffer from many of
the same problems as State Transition Diagrams. Petri Nets may still have too
many events in a single state or too many states to effectively model. Later,
when we look at Activity Diagrams, you will see that they are not as formal as
Petri Nets and not as robust. Nevertheless, we believe you can use Activity
Diagrams effectively to model parts of the system in which shared resources
and deadlock could be a problem.
Each diagram in an IDEF0 model consists of boxes and arrows. Each box
represents a function of the system and is named with a verb or verb phrase.
For example, a box might be named "Find Valid Orders." The arrows represent
data or objects that are used or transformed by the function. Arrows are
named with a noun or noun phrase. For example, an arrow might be named
"Open Orders." Arrows entering the box from the left represent inputs to the
function. Arrows entering the box from the top represent control information.
Arrows leaving the box from the right represent output data. Arrows on the
bottom of the box pointing toward the box represent mechanisms, and arrows
on the bottom of the box pointing away from the box represent calls.
Mechanisms and calls tie the model together. Functions are called by other
functions through a mechanism. A specific function would call another function
by using the call. Each box is numbered to refer to another diagram that
shows even more detail of the function. Figure 2.1 illustrates the notation.
The Z language uses set theory, predicate logic, and relationships and
functions to communicate requirements. When used properly, these elements
of discrete mathematics allow a precise definition of each requirement and
allow each requirement to be fully and completely tested mathematically. We
would expect to be able to determine the outcome of a computation given the
input and conditions of the system. Although Z is a powerful language for
reducing ambiguity, it is difficult to learn and effectively employ. We believe we
can achieve the same goals by using structured English in our specifications.
As you can see from the brief review of modeling and specification languages,
significant effort has been expended trying to reduce ambiguity. We make use
of this knowledge by applying elements of this work where appropriate within
our process.
Verifiability Considerations
Since the range is not defined, the requirement is not verifiable. We could
restate the requirement as
Deterministic Considerations
Each requirement must also be deterministic so that everyone will know what
the system should do in all possible cases. This means that whenever we use a
conditional statement, we understand what will occur when the condition is
met and what will occur if the condition is not met. Sometimes we use two
different requirements to handle conditional actions. For example, we might
define a requirement that specifies how to handle successfully meeting the
condition and a separate requirement for not meeting the condition. Here is an
example of a requirement that is not deterministic.
The system shall send new records to system X every five minutes.
If any new messages have been received since the last transmission to system
X and the five-minute timer has expired, the system shall transmit the new
records to system X.
Here we are clearer about when our system will transmit new records to
system X. Have we given enough information to ensure that this requirement
is deterministic? Or do we need to add the following requirement?
Having this traceability will also help us maintain the system. Whenever we
need to change or remove a requirement, we will be able to quickly determine
the parts of the design and implementation that support the requirement. We
will also be able to identify the test cases that are used to verify the
requirement.
Correctness Considerations
In the real world, software systems change often. Our requirements set needs
to be as modifiable as possible. We must build a requirements set that is
modular, relatively straightforward, and easy to change. We apply techniques
throughout this process that allow us to realize these characteristics in our
requirements set. We look in depth at the change process in Chapter 17.
Language of Good Requirements
The system shall require the user to enter the last name of new employees.
The last example illustrates how we specify choices the system gives external
actors.
The system shall allow the user to delete records that have not been
confirmed.
We use the preceding three types of statements to specify all the requirements
for our software. They may sound awkward at first, but the keyword helps us
reduce ambiguity and makes it obvious when we are specifying a requirement.
Communicability of Good Requirements
You can think of the requirements artifacts as those things you create as a
result of the process of developing and managing requirements. Each artifact
serves a particular purpose for understanding and communicating either the
user requirements or the software requirements. Additionally, the artifacts
relate to each other in a manner that minimizes inconsistencies. Therefore,
each artifact provides a view of the full set of requirements. The set of artifacts
ensures that these views do not conflict with one another. Figure 3.1 illustrates
the overall architecture of the requirements artifacts. We use the diagram in
Figure 3.1 throughout the book with the appropriate artifacts highlighted to
provide context to the upcoming discussion.
Each artifact serves a specific purpose and results from an activity in the
process. The analysis model is the primary point of reference. The analysis
model contains use case models, sequence diagrams, class diagrams, state
diagrams, and activity diagrams.
The use case models represent the use cases. A use case model contains actors
and use case diagrams. A use case specification describes each use case
diagram (see Chapter 6). The use case specifications are the detailed
description of how the user interacts with the system to achieve a specific goal
(see Chapter 7). Storyboards are a series of pictures that tell the story of what
occurs, from the perspective of the user, during a use case. Each use case
specification has one or more storyboards (see Chapter 9). The set of use case
specifications must meet all the requirements that describe what the user
needs the system to do. The User Requirements are not a specific artifact we
produce but are included in multiple artifacts (see Chapters 4 and 5).
The Analysis Model also contains one or more Class Diagrams. The Class
Diagrams show the entities that need to work together to ensure that our
system realizes each use case specification. The Class Diagram contains the
functional requirements of the software. Each class possesses attributes and
operations. Together, these represent the responsibilities of the class within the
system. Through the analysis process, we can ensure that if objects of each
class fulfill their responsibilities in collaboration with objects of the other
classes in the model, then the analysis model provides a basis on which to
design a system that will meet all the user requirements (see Chapters 10 and
11).
The Analysis Model also contains one or more Sequence Diagrams. Sequence
Diagrams show how objects of classes in the Class Diagram collaborate to
realize a use case. Each use case specification is related to one or more
sequence diagrams (see Chapter 13).
The Analysis Model also contains state diagrams (see Chapter 12) and activity
diagrams (see Chapter 7). Both diagrams are an aid to understanding complex
issues with classes, use cases, or major aspects of the system as a whole.
How you use the artifacts you have at any time to build the next artifact.
How you use the artifacts you have already built as a framework into which
you put answers you find in later steps of the process.
How you use the artifacts to verify, from different yet consistent views, that
your requirements are correct.
This process has three characteristics that make it effective. First, you always
know what you just did. Second, you always know what to do next. Third, you
have a framework within which to capture what you learn as you iterate. For
example, if you have just accomplished an update to the use cases, you will
need to revisit the analysis model to determine whether changes are required.
This effort will include analysis of the sequence diagrams to ensure that the
class diagram supports the changes to the use cases. You will then need to
update the Software Requirements Specification to reflect any changes in the
class diagram. This example highlights the iterative nature of the process.
Suppose you know a set of use cases. That is, you know the user wants to
achieve certain goals with this system. You describe the actors, you model the
use cases, and you specify the use cases. You analyze the user requirements
and discover that two goals cannot be achieved unless one of the use cases is
modified. At this point, you have a version of the use cases and a version of
the analysis model. You record the issues and present them to the user. The
user understands your concern and makes a decision. In the next iteration,
you modify the use cases and, as a result of another run through the analysis,
you modify the analysis model. At the end of this iteration, the user better
understands what he wants and you have a better set of use cases and a
better analysis model.
In this sense, the process we use is truly iterative and incremental. What you
know and what is represented in the use cases and the analysis model starts
out small. Iteration through the activities of the process results in increasingly
more correct requirements. Incremental releases of the artifacts allow you to
grow the artifacts to the full set of requirements. Iteration and incremental
growth, along with a framework consisting of the use cases and the analysis
model, make for quick accumulation of knowledge.
Process Flow
Figure 3.2 shows the activities of the process organized by phase. The phases
include gathering, analyzing, specifying, and validating the requirements. We
discuss each phase in turn.
Interview the customer and the user. We separate the customer and the
user: since you get different types of requirements from each, you should
treat them separately. The user makes use of the system you develop. The
customer pays for the system. Sometimes these are the same people. Most
often we find they are not. Users will tell you what they want to do with the
system. Customers will tell you what they want the system to cost, what they
want the system to look like, and when it should be available. Hold a
preliminary interview in which you use context-free questions or structured
brainstorming techniques. When you get a good handle on the boundaries of
the system, hold more-focused interviews to find the specifics of what users
want to do with the system.
Develop a use case model and the use case scenarios. There was a time
when we believed the use case model was not very useful. We are now big
advocates of use case models. What seemed to be a simple set of diagrams
that restated the obvious has turned into an extremely useful tool. The use
case model shows you, at a glance, which actor can trigger which use case.
Therefore, the process requires you to develop a use case model to go with the
use case specifications. We discuss how to model the use cases in Chapter 6.
We discuss how to detail the use case specifications in Chapter 8.
Model the domain. The analysis model includes a class diagram representing
the business entities that exist in the user's environment or domain (see
Chapters 10 and 11). This model secures your fundamental understanding of
the "things" that you will automate and the long-lived transactions that the
system you build will need to manage.
Realize the use cases. Every use case deemed necessary for the software
must exist as a set of collaborations among business entities represented in
your class diagram. We use sequence diagrams to ensure that all essential
business entities exist. We also ensure that the business entities possess the
necessary attributes to fulfill their responsibilities and, further, that the
business entities can carry out their responsibilities by working with other
entities in the class diagram to meet the goals of a use case. Each use case will
possess at least one sequence diagram for this purpose (see Chapter 13).
Specify the interface requirements. Frequently, the system you are building
must communicate with other systems. If your system communicates with
other systems, someone must specify the interface between your system and
each of the other systems. The Interface Requirements Specification (IRS)
serves as a contract between you and your interfacing systems. As such, the
IRS imposes requirements on your system. (We describe the IRS, its
development, and its contents in Chapter 15.)
Develop test cases from the SRS. The SRS represents a control flow model
of the system you are building. Rewriting this control flow model as one that is
suitable for building test cases gives you valuable insight into the clarity and
completeness of your specification. Not only does this activity result in a better
set of requirements, it leads you to begin the test process up front (see
Chapter 16).
Moving from Requirements to Design
The analysis model is an excellent start to the design model. In design, you
deal with issues you have not yet dealt with in analysis. These include
managing collections, managing persistent data, applying design patterns,
implementing the presentation, isolating interfaces, and managing
concurrency. As a result, you can expect to have three to five times the
number of classes in the design model than in the analysis model.
Part 2: Building the User Requirements
Chapter 4. Getting to Know the Problem Domain
Normally, we are not experts in the fields for which our systems provide
automation, so the first thing we must do is to familiarize ourselves with the
area we are attempting to automate. We need to understand the processes for
the given field to understand how automation facilitates those processes. This
almost always requires us to become researchers. In fact, we find the biggest
challenge of specifying a new system is the research that goes into learning
the problem domain. A problem domain is defined as the knowledge area in
which the problem is defined. Before we can get to know the problem domain,
we must be able to speak the language of our user community.
Researching the Area
One of our goals for the research is to be able to speak our users' language.
Each field for which we have provided an application has had its own set of
terms and acronyms. Domain experts use these terms and acronyms as if
these were common to the English language. Often, domain experts use the
terms without realizing people outside the field do not understand what they
mean. At first, our users' language seems to be jargon, but as we become
more proficient, it begins to make sense to us.
In the example, the scope of our problem would not be all of medicine but only
issues directly related to diagnosing illnesses. Without having to learn all
about medicine, we would likely be able to learn much about how a doctor
diagnoses a patient. We might learn that basic tests and patient-provided
information give the doctor enough information to determine if a diagnosis is
possible or if additional tests are necessary. We may be able to build a system
that helps the doctor by providing a list of possible diagnoses. The system may
also provide a list of additional tests that may confirm or refute each of the
diagnoses. Clearly, we must limit the scope of our research in order to be
effective.
Reading, Reading, Reading
Customers and users are the best source of information about the problem
domain that you will need to address. A major challenge to interviewing the
users and customers is that they never have enough time to give you. We
often hear and have read about joint development between the users and the
developers. In joint development, a user works full time with the analysis
team. This seems to us to be a wonderful process that will help analysis
significantly. If this arrangement were possible, we would definitely choose to
work this way. Joint development allows the user to watch each step as you
gather and analyze requirements. This helps both you and the user catch and
correct any misconceptions and incorrect assumptions right away.
Unfortunately, we have never been given this opportunity. Our users' available
time for the project has always been somewhat limited, so we must make
effective use of the time we can get from users. We need to be prepared to
make effective use of our users' time when we speak to them, and we need to
ensure that we accurately and completely capture the information they
provide us.
To do this effectively, we must decide how we will meet with them. We could
choose to have structured meetings with a large group of users representing
each distinct category of user. We might also choose to have separate meetings
with each group of users from the same category. We might also meet with
very small groups or individuals to discuss the system. Our experience tells us
to use very small groups or even individuals in the early stages of
requirements gathering when we are trying to determine vision and scope of
the system. We may use the same groups to determine the completeness of
our list of use cases (see Chapter 5). We might choose larger groups from a
given category of users to storyboard our understanding of the requirements
(see Chapter 9). Table 4.1 lists the core set of meetings you should conduct;
realize that you might need to conduct each meeting more than once.
We prepare for these meetings so that we get the most out of them. We
always walk into the interview with a list of questions. Some of these
questions come from gaps in our research, but many others are canned
questions designed to extract needed information. Certain questions are
always good to ask. Table 4.2 lists a few we consistently use.
Use Case Names and Descriptions After initial research A representative from each user group
Storyboards After use case specification Several representatives from each user group
What are the most important aspects of the problem domain you would like the application to address?
What parts of the problem domain are often overlooked and end up causing problems?
Are there any inherent limitations in the way you do business that might affect the new system?
These are but a few examples. A common thread runs through all these
questions: they are all open-ended. Open-ended questions prompt users and
customers to talk about the problem domain.
We are trying to learn about the problem domain and the users' expectations.
We should be ready to listen intently. We should keep the users and customers
talking about the problem domain. Because we keep our questions as open-
ended as possible, users often take the conversations in directions we did not
think of. This leads to the kind of information we might have otherwise
overlooked. We also try to involve these same users in the storyboarding
efforts later to verify that we have captured their points of view accurately.
A use case is a description of the usage of a system from one or more users'
point of view. The usage accomplishes some action of value for some user. The
value the use case provides may not be to the user triggering the use case.
The user can be a person, another system, or even an internal system entity
such as a timer. We use the term actor because it is a more generic term that
does not imply a human user.
A use case describes the interaction between the actor and the system. The
analyst specifies the use case by completing a standard collection of
information. The collection includes the following:
Occasionally, the software requirements and the use cases overlap. However,
the software requirements represent the developer's point of view. The use
cases represent the user's point of view. Your goal when writing the use cases
is to communicate the user requirements as clearly as possible, using the
language of the user. In this chapter, we describe how to discover the use cases
and actors for a system by first defining the boundaries of the system and then
finding the system's actors and use cases.
Defining the Boundaries of the System
You begin the context diagram by representing the system you are specifying
as a single circle. You then list the users and systems that interact with your
system. Understanding the nature of the interactions identifies potential actors
to your system. Table 5.1 provides a starting point for finding actors and their
interactions.
Consider a system that manages change requests and defect reports for one or
more systems. Project managers use the system to manage change requests
associated with their projects. Change Control Boards (CCB) use the system to
manage change requests and approve the releases in which the change
requests are implemented. Analysts use the system to update status
information as they analyze change requests. Administrators manage user and
system information. Finally, general users with appropriate access use the
Change Management System to view the status of change requests and
releases. Figure 5.2 illustrates an example context diagram for this Change
Management System.
Once you have identified the users and the systems that interact with your
system, you can begin to identify and define the actors to your system. When
you review the list of users, you will realize that some users really impose
similar demands on the system. Therefore, an actor can represent one or more
users.
Begin by defining the nature of the interaction. At this point, your description
should be a goal-oriented description. For example, a potential actor for a
change management system is the project manager. The following text is an
example description for this actor.
Description: The Project Manager uses the system to produce a report that
lists all releases of all systems affected by a particular change request.
While this is a solid potential use case, it is just one of many potential use
cases for this actor. A better way to describe the actor is to use a goal-oriented
description that doesn't limit the potential use cases. The following is an
example of a goal-oriented description for this actor:
The second description does not limit the project manager's use of the system.
Many potential use cases support the goal embodied in the second description.
You will find those use cases in later work.
Table 5.2 presents a list of actors for the Change Management System.
Actor Description
Project The project manager uses the application to manage change requests and associate the change
Manager request with one or more versions of a system.
Administrator The administrator uses the application to add and maintain user and system information.
The analyst uses the application to reflect the status of change requests as work on the change
Analyst
request progresses.
Change The CCB uses the application to approve change requests for inclusion in a version and to
Control Board approve a version for release into production.
Use cases are best bounded by steady state to steady state. A use case begins
in a steady state, receives an input or stimulus, responds to the actor,
transitions through one or more intermediate states, and finally transitions to
the final steady state, as shown in Figure 5.3. Any transition can result in the
use case providing an output.
A steady state is a condition of the system such that the system is ready to
respond to any of a number of stimuli leading to any of a number of use cases.
This differs from an intermediate state in that in an intermediate state, the
system is expecting one of a limited set of stimuli in order to complete the use
case. For example, if the use case is to enter a new change request, the
system starts in the steady state. The system at this point can accept a new
change request and provide information on existing change requests or any of
a number of other user actions. Once the user has requested a new change
request and the system is providing the opportunity for the user to type the
change request information, the system enters an intermediate state. At this
point, the system is in an "Accepting New Change Request" state. The user can
do one of two things: provide the change request information or, perhaps,
cancel the request. Once the user provides the information, the system may
enter a "Validating New Change Request" state. Once the system validates the
new change request, the system enters the "Saving New Change Request"
state. When the system finishes saving the change request, the system
acknowledges the creation of the new change request to the user and enters
the final steady state.
At times, you may write a use case that crosses steady states. This rare
occurrence results because your goal in writing use cases is simplicity. For
example, your system may send a message to another system as part of a use
case. Once the message is sent, the system is in a steady state. However, to
simplify the use case, you may include processing any reject messages from
the external system in this use case. It is obvious to the casual observer that
the use case has crossed a steady state. However, the simplicity of this
approach better serves the reader.
Identifying Use Cases
Next, you identify all the use cases that the system must implement to meet
the needs of the actors. This process involves examining each actor with the
purpose of identifying each interaction. It also involves examining internal
events that may trigger a system action.
For each user, you should identify each discrete use of the system. In the
classic Automated Teller Machine (ATM) example, we can identify the methods
in which a customer might interact with the system by asking what the system
does for the user. The user may check an account balance, withdraw cash,
deposit funds, and transfer funds from one account to another. These are all
examples of use cases for the ATM system. Additionally, one more use case
comes to mind. The ATM system always authenticates the user before any of
these uses are allowed.
There are a number of examples from the change management system. The
user may enter a new request for a change to a system, assign change
requests to a version release of a system, and approve a version for release to
production. You will be able to identify many of these use cases from your
research and by understanding the questions in Table 5.1. You will find more
use cases through interviews and meetings with your user.
Next, examine all incoming and outgoing messages for each system that
interacts with your system. Many of the incoming messages represent use
cases. Although outgoing messages do not represent use cases, they can
assure you that you did not miss an event that caused your system to send the
message.
Finally, you should examine periodic and timed events to determine if they
would generate a use case. For example, your system may be required to
perform a certain activity at the same time every day. Another situation in
which a use case could be appropriate is upon the expiration of a timer. For
example, your system may be required to send a message interrogating an
interfacing system for input if your system has not received any input from the
interfacing system in the last five minutes.
Introducing the Change Management System Example
We identified all the actors for our Change Management System in Defining
the Boundaries of the System in this chapter. Table 5.3 lists the use cases we
identified in our research and the system introduction above.
Sidebar 5.1 Formal Description of a Change Management
System
In the building of a Problem Reporting/Change Management System, a few terms must be defined
and a few concepts must be stated.
A system is any collection of hardware and/or software components that provides service to the
user. A system can consist of any number of hardware and/or software components. Each of these
components can itself be a system.
Four types of Problems/Change Request are at issue: Work Orders, Change Requests, Software
Defect Reports, and Request for New Systems. The last three types of change requests are directly
related to software and are referred to from this point on as Change Orders.
A Work Report is worked individually throughout its life cycle until resolved and verified complete.
A Change Order is worked individually only to a certain point in its life cycle. It is then assigned to a
release or version of a given software system.
Software is released to the user community in versions. A version or release of a software system
includes one or more Change Orders.
A version or release of the software is normally worked as a project. Some Change Orders can
require multiple software systems to change. This is often referred to as a Program. In our context,
a program is a project with multiple subprojects. A Change Order that represents a program will
have one or more subordinate change requests so that each software system that requires work
has a Change Order. Once a Change Order is assigned to a version, the status of the Change Order
is the same as that of the version.
When an incident happens to a user, the user may not be sure if it represents a Work Order or
Change Order. The system allows the user to enter whatever request the user thinks is appropriate.
The analyst or project manager may change the type of a request into another type of request.
When the user is initiating a request, it may not be clear which system or subsystem is truly at
issue. The system allows the user to assign the request to whatever system the user thinks is
appropriate. The analyst or project manager may reassign the request to a different system or
subsystem.
View/Edit Change
A user views or edits information about a change order.
Order
View/Edit Work Order A user views or edits information about a work order.
Assign Change To
A user assigns a change order to a version.
Version
Once you have identified the use cases, you can begin modeling them. The
Unified Modeling Language (UML) defines a standard notation for diagramming
use cases. Once you have a first draft of the use case model, you will find
common behavior that leads to generalizing use cases. You can then show the
dependencies between use cases. The dependency can be an INCLUDES
relationship or an EXTENDS relationship. Finally, we discuss how to package the
use cases into groups of related use cases. This packaging helps with the
manageability of the use case model.
Diagramming Use Cases
The UML uses ovals to represent use cases with the name listed directly below
the oval. The UML uses stick figures to represent actors. You represent the
relationship between an actor and a use case with a line between the two. This
relationship can be a one-way or two-way flow of information. An arrow points
away from the initiator of the action. Figure 6.1 illustrates this notation.
An actor can interact with more than one use case. In this instance, the actor
can initiate or receive results from more than one service of the system you
are specifying. Similarly, a use case can interact with more than one actor. In
this instance, the use case is providing the same service to more than one
actor. For example, a clerk at a mail order catalog company may enter an
order on your behalf in accordance with a phone conversation. Alternatively, a
wholesale purchaser may send an order to the company electronically. Both
actors, the clerk and the customer order system, are interacting with the use
case "Enter Order." This example is illustrated in Figure 6.2.
Use cases contain system actions. At times, these actions repeat within several
use cases. You should keep an eye out for instances of repeating actions within
multiple use cases, with the goal of extracting common behavior. You can then
use the extracted behavior across all the use cases that exhibit this common
behavior.
The challenge you face with generalization is to minimize the complexity you
introduce when the reader must link several use cases together to understand
the real use case, sometimes referred to as the "concrete" use case, the actor
sees. The real use case is the combined behavior of the primary use case and
any generalized use cases. If the user needs to link too many use cases
together to understand the functionality, you defeat the purpose of the use
cases by making it harder for the user to confirm that you understand his
needs.
Generalizing Use Cases for the Change Management
System
In the Change Management System, every use case requires the user to
authenticate before executing the purpose of the use case. This requirement
ensures that the system knows which use cases the user is authorized to
execute and the systems to which the user has access. Instead of rewriting
this common behavior in each of the use cases, we simply generalize the
authentication process into the login use case.
Relationships Among Use Cases
Use cases may relate to each other in one of two ways: INCLUDES and EXTENDS.
These two relationships can result because one use case requires another real
use case in order to be real or because a use case requires a generalized use
case to be real. The INCLUDES relationship specifies that one use case is included
in another use case. The included use case is required to complete the
behavior necessary for the including use case to accomplish its work. The
including use case has no option to perform or not perform the sequence of
actions specified in the included use caseperformance is a must.
The EXTENDS relationship specifies that the use case extends another use case.
The EXTENDS use case may be required by the extending use case to accomplish
its goal. The EXTENDS relationship differs from the INCLUDES relationship in that
the EXTENDS relationship is conditional. When you specify the extending use
case, you must specify the conditions under which you will include the
additional sequence of actions in the use case you are specifying. Figure 6.3
illustrates the notation for these two relationships.
An actor named the user might DRAFT A WORK REQUEST . Remember that the actor
describes a role, not an individual. A number of individuals can fulfill the role
described by the actor. The analyst might VIEW OR EDIT A WORK ORDER, VIEW OR EDIT A
CHANGE ORDER, or MANAGE A CHANGE ORDER. The Project Manager might perform the
same functions, using the Change Management System. The Change Control
Board (CCB) might MANAGE A CHANGE ORDER.
Packaging Use Cases
Most systems you specify will require you to group use cases into packages.
Grouping like use cases into a single package helps organize the use cases,
eases the search for functionality, and provides an organized presentation.
During analysis you will frequently need to revisit specific use cases to refresh
your memory about specific functionality. The packages you choose will help
find the appropriate use cases quickly. Figure 6.5 shows the packages for the
Change Management System.
We have packaged the 17 use cases for the change management into three
packages. The first package includes all the use cases related to administering
the Change Management System. The second package includes all the use
cases related to managing work request. The third package includes all the use
cases related to managing a release of a system. Table 6.1 identifies the
packages and their contents.
Login
Add User
Edit User
Add System
Edit System
Delete System
Create Version
View/Edit Version
Activities represent a task that must be performed and are, therefore, the
basic building block of an Activity Diagram. Activities appear in our model as
rectangles with rounded corners. Activities are normally given names that
begin with a verb followed by the object being acted upon. For example, an
Activity could be named "Display Screen," as is the case in Figure 7.1. How do
you know what task should appear on an Activity? Determining the answer is
largely situational. You must decide to what depth to break down the activity
so that the reader can gain a complete understanding without being
overburdened with details.
When modeling use cases, we make the Activities on the Activity Diagram
distinct tasks that the user would recognize. For example, we would not place
the task "Initialize Count Variable" on an Activity Diagram. The user would not
recognize "Initialize Count Variable" as a distinct task because it is a task the
software performs. The user task could be "Print Employee Paychecks."
The Transition represents the movement from one element in the activity
diagram to another and therefore shows the flow between elements.
Transitions can include a good deal of information about when the Transition
may occur; this information can include Events and Guard Conditions. Events
describe the trigger that causes the transition. Guard Conditions ensure that
the state of the system is appropriate for the transition. These are the same
Transitions used in State Transition diagrams, discussed in Chapter 12. When
we use activity diagrams to model use cases, we assume the appropriate
System State. The majority of the time, completion of the previous activity
transitions the system to the next activity, as illustrated in Figure 7.2. We do
not often use Events and Guard Conditions in our activity diagrams.
Figure 7.2. Transition element
Next, the activity diagram shows the transition from Present Login Screen to
Enter User Data. The system presents the login screen and then waits for user
input. We represent the task for the user to enter data as an activity. Once the
user completes the task, the system receives the input. The system then must
determine if the user is authorized to use the system. We model the question
and the resulting branches with our Decision point.
The Decision point asks, "Is the user authorized?" If the answer is no, the
system prompts the user to reenter the information. If the answer is yes, the
system presents the main screen to the user. This is the end of this Activity
Diagram. If we were modeling a system, we might refer to this Activity
Diagram from a number of other activities. This would require us to model this
activity only once and we could simply refer to it when we want the system to
perform some other action. Let us look at an example to help understand this.
Breaking this sequence down into parts is helpful for two reasons. First, it
keeps our activity diagrams understandable. Second, we need authentication
for any transaction. By segregating a transaction into its own activity we can
simply refer to it. We first look at the authentication Activity Diagram and then
at an Activity Diagram for transferring money from one account to another.
Figure 7.6 shows the authentication for our ATM customer. We have two Swim
Lanes, one for the customer and one for the ATM. This Activity Diagram affords
the opportunity to study the authentication process in an abstract way. The
abstraction allows us to concentrate on the process and not on the details.
The Activity Diagram in Figure 7.7 models the way by which the bank
customer transfers funds from one account to another. We added an additional
Swim Lane in the Activity Diagram. Normally, a bank has a central computer
system, named Mainframe in our example. The ATMs are considered clients of
the mainframe. Now we must coordinate this activity through three separate
entities.
In this case, the customer for whom you are building the system should let
you know how the system should behave. You could offer the customer several
alternative system behaviors to inform the customer that choices can be made.
This approach helps ensure customer satisfaction with the system by delivering
a system that behaves as the customer expects.
The diagram in Figure 7.8 illustrates how the user might add a change request
to a version of a system. First, the user indicates the intent to add a change
request to a version. The Change Management System presents a list of all
available versions for the particular system. The user selects a version to work
with. The Change Management System presents the version information along
with all unassigned, opened change requests associated with the selected
system. The user selects a change request from the list for inclusion in the
version. The Change Management System assigns the change request to the
selected version.
Writing use cases is the specification of the user requirements. This work
solidifies much of the knowledge you have gained up to this point in the
process. Writing use cases includes understanding how to specify preconditions
and postconditions. We discuss how to write preconditions, postconditions, the
normal course of events, alternative courses, and exceptions. We also discuss
how to determine whether you should specify an alternative course or a
separate use case. This chapter introduces the use of a template for writing
use cases. In addition, this chapter discusses conventions for the
specifications. Finally, the chapter introduces a use case from the Change
Management System.
Template Use
Use cases come in many forms. Almost every book or paper you read will
describe a different format for your use cases. Along with differing formats,
you will find three basic approaches for writing use cases, with many
variations on these basic approaches. The first approach is to write a use case
specification for each use case. The second approach is to combine similar
events into a single business event and then write a use case at the higher-
level business event. This approach then requires a use case scenario for each
significantly different interaction below the business event. For example, in an
earlier chapter we discussed a customer service representative entering an
order and a wholesaler entering an order through an automated system. The
second approach requires a use case named ENTER ORDER and two scenarios,
one named ENTER ORDER BY CUSTOMER REP and a second scenario named RECEIVE
ORDER FROM WHOLESALER. The third approach is to tailor the amount of
information you provide in the use cases on the basis of the risk the use case
presents to the project. In this approach, you simply provide a short
description of some use cases while "fully dressing" other use cases with
preconditions, postconditions, a normal course of events, and all other
elements considered part of the use case.
Our approach involves writing a use case specification for each use case. This
allows you to quickly find what the system is to do while ensuring that an
appropriate level of understanding can be communicated to all project
members. Given this, using a template provides a framework from which to
approach writing the use case. The template not only ensures that you include,
or at least consider, all the necessary information, it also ensures that your use
cases are in the same format. A common format makes reading the use cases
easier. A common format also makes it feasible to import the use cases into a
requirements management tool.
The basic template for a use case includes a section for all the necessary parts.
Table 8.1 lists all the elements of the use case template. The table also
indicates whether the element is optional or mandatory and the phase of the
requirements process in which you should complete the element.
Actors Gathering
Preconditions Specification
Postconditions Specification
Priority Gathering
Exceptions Specification
Includes Gathering
Notes Throughout
Step-by-Step Description
Our use case template has 11 parts, not all of which are required. Also, not all
parts are provided on the initial development of the use cases. Three passes
through the use cases typically result in the information required for the entire
template. The first pass results in the use case survey. The second pass results
in the use case draft. The third pass results in the generalized use cases.
During development of the use case survey, the author provides the use case
identifier, the author name and date information, the list of actors, and the use
case description. The use case identifier consists of a project unique identifier
and the use case name. We recommend that you number the use cases
sequentially within the packages you identified earlier. The author and date
information may seem insignificant, but this information can be critical. You
should always identify the author(s) and the date the use case was first
created. Similarly, you should always identify the author(s) who made the
latest modification to the use case and the date the latest use case
modification was made. Remember that the requirements development process
is iterative. You will revisit use cases several times during development of the
requirements. Nothing will aggravate you more than not understanding who
changed a particular use case and when. Identifying the author and date lets
you associate use case revisions with significant rewrites resulting from defect
corrections or from reviews with the users. If you know the date of the defect
corrections or reviews, you can determine whether you changed the use cases
as a result of those reviews.
During development of the use case draft, you will add the preconditions, the
postconditions, the normal course of events, any alternative courses, and
exceptions. We discuss alternative courses and exceptions in the following
sections. For now, we focus on preconditions, postconditions, and the normal
course of events.
Preconditions represent the state of the system when the use case begins.
They are a promise from the developer of the system to the user. The
developer of the system is saying that if these conditions hold true, I will
provide the specified results. The system developer will think of preconditions
as values of system attributes. For example, in the Change Management
System, we have a use case to "Edit a Work Request." This use case requires,
as a precondition, that the work request exist. If the work request does not
exist, you are not in this use case and the system developer cannot promise
any results. A common error when writing preconditions is to include receipt of
messages or user input as a precondition. Message receipt and user input are
included, probably as the first step, in the normal course of events. They do
not represent preconditions since they are transient events and do not
represent system state information.
Postconditions include only changes to the state of the system. For example,
adding a new work request changes the state of the system because a new
record now exists. Sending the new work request to an external system does
not affect the state of the system because the state of the system does not
change as a result of the output. Transient outputs belong only in the normal
course of events. Both preconditions and postconditions are written in terms of
the state of the system. For example, if the use case were to allow the user to
enter a new work request, the postcondition might be stated as follows:
The normal course of events describes the interaction between the user and
the system. The normal course can include sequential steps, conditional logic,
and iteration. Sequential steps are exactly what they sound like. The actor
performs one or more actions. The system performs one or more actions in
response to that stimulus. The steps follow in sequence between the system
and the actor until the use case achieves its goal. The wording is informal and
conversational. For example:
The system prompts for the change request name, project name, and change
request description from the user.
Conditional logic enables you to specify different system reactions on the basis
of existing conditions. You use structured English to specify conditional logic.
This includes the IF statement and a standard set of Boolean expressions. The
IF statement lets you compare one or more conditions and then act according
to the results of the evaluation. For example, suppose your system takes an
action based on one of two possible user responses. The conditional statement
for this would look like:
If the user responds with A, the system performs X. Otherwise, the system
performs Y.
At times you will find that the user may respond with more than two choices.
In this situation, you must specify nested conditions. The IF statement would
be phrased as follows:
Notice the conversational style. You write use cases in the language of the
user to communicate clearly with the user while maintaining clear, correct, and
unambiguous meaning in your use cases. You may be tempted to introduce a
more formal version of structured English into the use case specification. Yield
to the temptation only if you can find a balance such that you do not
compromise your goal of communicating with the user.
If the user responded A and the system state is B, the system performs Z.
The Boolean operators, in precedence, are AND, OR, and IS. In a few cases,
you may need to use parentheses to ensure that the Boolean operators
evaluate in the order you expect.
Alternative Courses
The first is a condition that requires you to separate sequences of action based
on input, the state of the system, or both. Both separate courses normally join
to set the system state and perhaps produce an output. Figure 8.1 illustrates
this situation.
In this case, you have two choices. The first choice is to specify both courses in
the normal course by using a conditional statement, as discussed earlier. Your
second choice is to specify one of the two courses in the normal course and the
second as an alternative course. If you specify one of the two courses as an
alternative course, you must identify the use case step at which the
alternative course occurs and the use case step at which the alternative course
rejoins the normal course. The choice is subjective. Try to determine which of
the two choices is easier to follow and then document that choice.
A common mistake is to include two use cases in a single use case under the
pretense of specifying an alternative course. We distinguish between the two
use cases and one use case with an alternative course on the basis of what the
user perceives. The purpose of the use case is to change the state of the
system to a desired state, produce outputs, or a combination of the two. If an
alternative course achieves a different purpose, you most likely have two use
cases. Alternative courses are usually numbered with the first number
indicating where the alternative course branches from the normal course.
Exceptions and Issues
You list exceptions in a separate part of the template. Our convention is to use
the IF structure to specify a condition and the resulting system action. In this
section, the tone is also conversational. For example, suppose a step in a use
case requires as input the first name and last name provided by the user in a
previous step. A missing first name or last name results in an exception in the
use case. This particular exception is worded as follows:
If the first name or last name is blank, the system presents an error message
to the user and requires the user to correct the entry or abandon the action.
The Change Management System use cases have several examples that
illustrate these points. The use case in Sidebar 8.1 allows the user, analyst,
administrator, and project manager to view or edit an existing work request.
The use case is a draft of what will become a final use case. Because the use
case is a draft, it includes an item that is to be determined (TBD). Appendix B
includes the full set of use cases.
Sidebar 8.1 Use Case 2.2 View/Edit Work Order
Created By: DW, RA
Actor(s):
User
Analyst
Administrator
Project Manager
Description:
This Use Case begins when the actor indicates the intent to view or edit a Work Order. The system
will allow only authorized changes by authorized personnel. This means that changing the state of
the request will depend on the role the actor is playing with respect to the given system. The role of
the Administrator will be allowed to make any changes. If the type of Work Request is changed, the
Work Request will be placed in the Submitted state of the new type of request. This Use Case ends
when the system has presented the request and saved any edits made.
Preconditions:
Postconditions:
Priority:
High.
The system ensures that the user has the authorization to make the requested changes.
Alternative Courses:
None.
Exceptions:
None.
Includes:
None.
None.
Chapter 9. Using Storyboards to Validate the Use
Cases
Presenting the use cases directly to the users is almost never an effective
means of ensuring that the analyst and users have a shared understanding of
the order in which actions must occur and what those actions must accomplish.
We have found storyboarding to be far more effective at ensuring this shared
understanding. In addition to presenting the storyboards, providing the use
cases for review increases everyone's confidence in achieving this shared
understanding.
We can use other types of pictures in our storyboarding. These include flow
charts, interaction diagrams, reports, and record layouts. Let's take a closer
look at user screens.
Evolutionary Graphical User Interface Presentations
Some analysts show users a set of screens to be used in the application and
ask the users to review the screens. We have found this process to be less
effective than storyboarding. Users have difficulty determining whether a
screen has all the necessary information without the context in which they will
use the screen. Viewing the screens in the context of a function allows the
user to determine whether the screen contains the right information for what
the user is entering, the system is presenting, or the user is deciding.
For example, consider a screen that ultimately serves two purposes: order
entry and order validation. If the screen allows the user to validate an order,
the total price might be an important element for the screen. If, however, the
user uses the same screen for order entry, the user might not think of the role
the screen plays in order validation. The user might accept the screen,
considering only order entry without considering order validation. The user
would accept the screen with the total price information missing. Providing the
context in which the screen is used helps ensure that the screen is appropriate
for that use.
The example in Figure 9.1 illustrates how we might use an interaction diagram
in our storyboarding. This example shows how the transaction of withdrawing
cash from an ATM might proceed. A complete storyboard of this activity would
include a screen image or drawing to show how the bank customer interacts
with the system. The interaction diagram illustrates the interaction between
the ATM and the bank mainframe after the customer has completed his
interaction and is awaiting the money.
We could just as easily have used a flow chart. The choice of picture type is
nearly limitless. We recommend working with whatever tool you find effective
at communicating the information. Sometimes, communicating the timing of
events is crucial. In these cases, an interaction diagram may be more
effective. In some cases, the general flow of activities is the most important
aspect or branching logic must be communicated. In those cases, the flow
chart might be the more effective tool. Ensuring a shared understanding of the
behavior is the true goal. This goal should drive your selection of the
presentation images. Although storyboards apply to many situations, we are
most concerned with validation of our use cases.
Presentation of Use Cases to the User
Our goal is to communicate the use cases to the user to obtain a shared
understanding of the functionality the application will provide. Expect to have
at least one storyboard for each use case. You may need multiple storyboards
for use cases that include significant branching logic or alternative courses.
Each storyboard should tell the story of the use case. Some use cases will
require only one screen to tell the story; you display the screen and walk
through the use case one step at a time. More often, a use case will require
multiple screens; you walk through the screens as you step through the use
case, emphasizing when the user has a choice and how the choice is made.
Change Management Systems Storyboards
Next we present a storyboard for use case 3.1 Create Version of our Change
Management System. This use case answers the need to add new versions to
an existing system. You would normally show the screen and walk the user
through the functionality in the context of the use case. The storyboard
includes a script for the walk-through with the user.
Assuming you are logged in to the application, this is the screen you are
viewing (Figure 9.2).
Once the user has pressed Save, the system saves the version and associates
any Change Request the user has selected to the version.
Part 3: Building the Requirements Architecture
Chapter 10. Entities and Events as Objects
We build a model of the system as part of our analysis. We then use this model
to ensure that we have a strong understanding of the software requirements
necessary to meet the user requirements as represented by the use cases. We
then use an analysis model as the basis for the remaining analysis. The
analysis model is the central tool to move from analysis to design. The class
diagram is the primary element of the analysis model.
A class is a template for something that will exist in the application. This
concept is similar to a pattern for a dress. You can use the pattern to create a
dress or numerous dresses. The dresses have most things in common, but they
may have different attributes or properties. For example, two dresses made
from the same pattern might be made from different materials and be different
colors. The class describes kinds of attributes or properties our objects will
have. The class also defines the behaviors our objects will exhibit.
For example, we might create a class to represent the concept of a car in our
system. We might need to represent any number of cars in our system, but we
would expect each to follow the same pattern. A class consists of a class name,
some number of attributes, and some number of methods. In the example in
Figure 10.1, our class name is CAR. The example includes the attributes
NUMBEROFDOORS and SIZEENGINE. The car example also includes the methods, or
behaviors, ACCELERATE and STOP.
Naming things appropriately can help others understand the analysis model
and help the analysis process. The class name should be descriptive of the
thing being represented. The name should also represent a single entity, like
the example. Similarly, we need to give our attributes and methods
meaningful names.
Classes define and specify methods that represent the behavior exhibited by
objects of those classes. A method may represent a service the object provides
to other objects, or it may represent internal functions to the object. Our car
example has two methods. In this simple example, both behaviors represent
services the objects of the car class provide. Methods can be fully specified in
the analysis model, but full specification of methods is often left to the design
model.
A fully specified method includes a return value type and a description of the
information required by the method. If the method represents a function, the
method would return a value when the method completes. The analyst would
define the type of the return value. Additionally, the method may require
information be passed to it. The information may be updated by the method.
Again, the analyst would define the type of data that would be passed to the
method in the class. Now that we understand classes, we need to understand
objects.
Each attribute and method has an access specifier that constrains who can
access the attribute or method. There are three levels of access: private,
protected, and public. Access to a private attribute or method is usually limited
to methods declared in the same class. A lock symbol represents private
access. Access to a protected attribute or method is usually limited to methods
declared in the same class or methods in derived classes (see Chapter 11). The
key symbol represents protected access. Access to public attributes or methods
is open to any method. A simple bar represents public access. Attributes and
methods should always have the lowest access specifier possible to support
information hiding and maintainability.
Our application may require many mammals. We know that each object of the
type mammal will include the attributes NUMBEROFLEGS and LIVING. Our objects
also include the methods BREATH and ISALIVE. In this example, we included an
attribute that refers to the state of object LIVING. We also wanted to practice
information hiding, so we included the method ISALIVE. This method returns the
state of our object without allowing other objects to directly access the LIVING
attribute. We have also completely specified the class to give you a feel for
what fully specified classes look like.
Our example shows the data types of our attributes. In the case of Figure
10.2, the attribute NUMBEROFLEGS is of type integer and LIVING is of type
Boolean. We also specified the methods, including their return values and the
information expected by each method. The method BREATH returns no value but
requires the information LITEROXYGEN of the data type integer. The method
ISALIVE tells the caller whether the mammal is alive by returning the state
information from the attribute LIVING.
In our analysis, we model both static and dynamic views of the system. This
requires us to understand both classes and objects. We use classes in our
static model and objects in our dynamic model. But before we can consider
modeling our problem domain, we need to find the things we will use in our
model.
We will look in two areas to find the classes for our class diagram. Our use
cases provide two important sources for classes. The first is the entities
identified in the use cases. The second is the events specified in our use cases
that we remember over time.
If you review the use cases for a system, you will find the specifications
include entities. The entities are any person, place, or thing referred to by the
use case specification. These entities represent strong potential classes.
The entity makes a good class if your answers include several items.
Otherwise, it is likely that the entity is simply an attribute of another class.
Events we remember over time provide another potential source of classes.
Consider a point-of-sale system. The use cases point us to a number of entities
and events.
In the Change Management System, the use cases contain many examples of
entities. One specific example is the SYSTEM class, which we use to represent
software systems. Figure 10.3 illustrates an example SYSTEM class.
This object allows us to determine the current state of a change request. This
object also allows us to determine the history of the change request. The
CHANGEHISTORY class includes the private attributes OLDSTATE, NEWSTATE, and
DATE/TIMEOFCHANGE. We use these attributes to trace the history of all change
requests throughout their lives in the system.
Now that we have a sense of what classes are and how to identify them, we
need to learn how to use classes to model systems. The next chapter shows
how relationships between classes enable us to use classes to model systems.
Chapter 11. Building a Class Diagram
The three classes include the SHAPE class, the SQUARE class, and the CIRCLE class.
The SHAPE class includes the attributes AREA and VOLUME and includes the
methods of GET AREA and GET VOLUME. We provided methods only to get
information from the objects of this class; we did not provide a way to set the
information. This is appropriate because we do not intend to create objects
from this class. We created the class only to allow us to inherit from it. A class
created only to allow the creation of derived classes is called an abstract class.
Next, we have the class SQUARE. This class has the attribute SIDELENGTH and the
method SET SIDE. The method SET SIDE calculates all other values we might want,
given that a square has four equal sides.
The last class we included in this simple system is the CIRCLE class. This class
includes the attribute RADIUS and the methods SET RADIUS and GET CIRCUMFERENCE.
In this system, the SQUARE and CIRCLE class inherit from the SHAPE class to make
them more valuable without repetition of the same things in two or more
different classes. The inheritance tree is shown in Figure 11.2.
The triangle at the bottom of the SHAPE class signifies that the SHAPE class is a
base class. The lines from the triangle run to the top of the SQUARE and CIRCLE
classes. This means that the SQUARE and CIRCLE classes inherit the attributes
and methods of the SHAPE class. In other words, if we were to create an object
called MY SQUARE from the class SQUARE, the MY SQUARE object includes the
attributes AREA, VOLUME, and SIDELENGTH. MY SQUARE would also include the
methods GET AREA, GET VOLUME, and SET SIDE. We could execute the method SET SIDE
that would set the length of a given side, calculate and set the area, and
calculate and set the volume. We could get the area or volume by executing
the GET AREA or GET VOLUME methods.
The base class in this example is the EMPLOYEE class. The EMPLOYEE class has the
attribute NAME and the method CALCULATEPAY . The method CALCULATEPAY is an
empty method that sets up the polymorphism. We call methods that are
declared but not defined "abstract." Any class that includes an abstract method
is an abstract class.
HOURLY EMPLOYEE and COMMISSIONEMPLOYEE inherit the EMPLOYEE class or are derived
classes from the base class EMPLOYEE. Each derived class includes attributes and
behaviors from the base class and those declared in the derived class itself.
Both derived classes also redefine the method CALCULATEPAY . We could now build
sets of employee objects and calculate each employee's pay without having to
consider whether the employee is paid an hourly wage or earns a commission
based on sales.
In our example, the whole class can call on the part classes, but the part
classes cannot call methods in the whole class. It is normal for the whole to act
as an interface to the parts of the component. In our example, the CAR
includes the method DRIVE. If the method DRIVE were executed, it is likely that
the DRIVE method would call the CHANGEGEAR method of the TRANSMISSION class.
We might then execute the ACCELERATE method of our CAR class. The CAR class
would then call for the execution of ENGINE method's INCREASEFUEL. The whole-
part relationship is often used when a whole has a collection of parts.
The numbers next to our relationship lines show how many of one object are
allowed to be related to another. In our example, we show a 1 next to the
bottom of the ORDER class to indicate that a LINEITEM can be related to exactly
one ORDER class. The 1..n at the top of the LINEITEM class means that an ORDER
can have one or more LINEITEM objects related to it. The same is true between
LINEITEM and ITEM.
Often, specifying the navigability and cardinality can help others understand
the class diagram. These two characteristics of the relationship help explain
the kind of communications required between given objects. The cardinality
can also specify that a collection of parts is required. We never concern
ourselves in analysis with the kinds of collection classes to use, but it is helpful
to understand that often the entire collection must be used to answer
questions. This point becomes clearer when we examine our example more
closely.
The ORDER class has the attribute TOTALPRICE and the methods ADDLINEITEM,
REMOVELINEITEM, and CALCULATETOTALPRICE. The ORDER class can add and remove
line items and can calculate the total price of the order. To know the total
price, the ORDER class must know the price of each LINEITEM object. The LINEITEM
object can calculate the price only by knowing the price of each item and the
number of items included in the LINEITEM. This example illustrates one way the
aggregation relationship is used.
Association
The first relationship between CLASSA and CLASSB shows that the relationship
has a cardinality of 1 to 1 or that a specific object of type CLASSA will be related
to exactly one object of type CLASSB, and vice versa. The navigability indicated
by the arrowhead tells us that an object of type CLASSA can call methods in the
related object of type CLASSB. No object of type CLASSB can call methods in the
related object of type CLASSA. The relationship between CLASSB and CLASSC is
different.
The relationships between objects of type CLASSB and objects of type CLASSC
have a cardinality of 0..n to 0..n. This cardinality indicates that objects of type
CLASSB can be related to as few as zero and as many as the computer can
create of objects of type CLASSC. This same cardinality exists between objects
of type CLASSC and objects of type CLASSB. In addition, objects of type CLASSB
can call methods of objects of type CLASSC, and vice versa. You might think we
should use arrowheads on both sides of the line to indicate bidirectional
communications, but the UML has specified bidirectional communication as the
absence of arrowheads.
Packaging Classes
When we build our requirements model, we will build several class diagrams.
We will segregate our system into a model that covers the business logic. This
is the model that is normally referred to as the problem domain model. In
addition, we will build separate graphical user interface (GUI) class models.
These models help us understand how the user will interact with the system.
These models are often built in conjunction with a prototype. We often use an
evolutional prototype of the GUI screens, as we mentioned in the
storyboarding chapter. We would normally build one model for each unique set
of GUI screens.
Next, we look at examples from our Change Management System. This system
includes examples of the three relationship types we discussed. We take a look
at some of those examples and discuss how the relationships allow us to
effectively reflect the problem domain we are attempting to model.
Change Management System Examples
The group of classes shown in Figure 11.7 illustrates how we used the
generalization relationship to help us model our problem domain.
In our example, the base class is the WORKREQUEST class. Our base class is
intended to be abstract. In other words, an object of the type WORKREQUEST
class will never be created. This class supports the concept that all requests for
work will have common characteristics and behaviors. The WORKORDER and
CHANGEORDER classes inherit the WORKREQUEST class' attributes and methods.
We use the WORKORDER class to handle any changes that do not require our
software systems to change. Such changes include things like operating
system configuration changes, operator errors, and errors in data
configuration. The CHANGEORDER class models requests that require software
changes.
The CHANGEORDER class is also an abstract class that acts as the base class to
objects that reflect software work. Three classesDEFECT REPORT , CHANGEREQUEST ,
and NEWSYSTEMinherit from the CHANGEORDER base class. These classes represent
the three possible requests for software work with which we must deal. This
type of inheritance allows us to refer to each of these classes in a way that
makes understanding the system easier.
This example shows that the VERSION/RELEASE class is the whole and that it
includes the CHANGEORDER class as the part. We can see from the cardinality
that an object of type VERSION/RELEASE includes one to many objects of type
CHANGEORDER. We can also see that an object of type CHANGEORDER can belong to
no object of type VERSION/RELEASE or the object of type CHANGEORDER can belong
to exactly one object of type VERSION/RELEASE. This fact follows from the fact
that a new change order may not have yet been assigned to a particular
version of a system. However, once a change order is assigned to a version, it
can be assigned to only one version of a system.
Figure 11.9 shows that the PERSON class has an association to the
CHANGEHISTORY class. The cardinality of the relationship from the PERSON class to
the CHANGEHISTORY class is 0..n, or, said another way, an object of type PERSON
can be related to zero or many objects of type CHANGEHISTORY . The cardinality
from the CHANGEHISTORY class to the PERSON class is 1, or, said another way, an
object of type CHANGEHISTORY is always related to exactly one object of type
PERSON. This follows because every change is made by exactly one person.
Chapter 12. Using State Transition Diagrams
Introduction to State Transition Diagrams
A solid circle represents the START STATE. When the entity detects EVENT1, the
entity checks to see if GUARD1 is true. If it is, the entity takes ACTION1 and then
transitions from the START STATE to STATE ONE. If GUARD1 is false, the entity does
not transition and therefore does not take ACTION1. The entity transitions out
of STATE ONE on either EVENT2 or EVENT3, whichever occurs first, given that the
appropriate guard conditions are met. If EVENT2 occurs first and GUARD2 is true,
the entity transitions to STATE TWO and takes ACTION2. If EVENT3 occurs first, the
entity checks to see if GUARD3 is true; if it is, the entity transitions to STATE
THREE and takes ACTION3. If it is false, the entity takes no action.
As illustrated in the diagram, an entity can take an action based on an event
and a guard condition and then return to the same state. In this example, if
the entity is in STATE THREE and it detects EVENT4, it checks to see if GUARD4 is
true. If it is true, the entity transitions back to STATE THREE and takes ACTION4.
If it is false, the entity takes no action.
Guards and actions are optional. The state transition diagram may not specify
a guard or an action. If no guard condition is specified for a transition, the
entity transitions whenever it detects the specified event. If no action is
specified for a transition, the entity transitions without taking an action. In
Figure 12.1, if the entity is in STATE THREE and it detects EVENT5, the entity
transitions from STATE THREE to the END STATE immediately without taking any
action. One black circle inside another circle represents the END STATE. State
transition diagrams must never allow an entity to transition to two different
states from a given state as a result of the same event and guard condition
(i.e., an event plus guard condition can only lead to a unique state). Finally,
the entity ignores events if the state transition diagram does not specify a
transition for an event in a given state. For example, if EVENT1 occurs while the
entity is in STATE THREE, the entity ignores EVENT1.
Class-Level State Transition Diagrams
The release starts in the state RELEASE CREATED. In this state, the RELEASE class
has an identifier and exists in the Change Management System. Once the
analyst completes the analysis of all change requests associated with the
release, the Project Manager sets the Release's estimated start date and
estimated completion date. The Release is now in the ANALYSIS COMPLETE state.
Once the estimate is completed for the release, the Project Manager sets the
Release's start date, updates the estimated completion date, and sets the
current phase. The RELEASE is now in the PLANNED state. The Project Manager
can change the estimated completion date. This transition leads from the
PLANNED state back to the PLANNED state.
The Change Control Board (CCB) then reviews the Release contents and plan.
Once the CCB approves the Release, the CCB sets the status of the Release to
APPROVED. The development team works the changes into the release. The
Project Manager changes the Release's current phase and the Release is now
BUILT .
The Project Manager, in coordination with the Test Manager, conducts the
testing of all the changes in the system. When the testing is complete, the
Project Manager changes the Release's current phase and the Release is now
TESTED. The CCB reviews the test results and approves the release of the
system. The Release is now FIELDED.
Once rollout is complete, the Project Manager sets the Release's completion
date. The Release is now COMPLETE.
This state transition diagram requires that the design reflect an orderly
transition of the RELEASE through its life cycle. For example, the requirements
specify that a RELEASE cannot transition from the PLANNED state to the FIELDED
state without first transitioning through the APPROVED, BUILT , and TESTED states.
This reflects the process that organizations normally follow to manage
software releases.
Use-Case-Level State Transition Diagrams
State transition diagrams can also clarify use cases. In the Change
Management System, the use case to edit a change order contains numerous
checks on the states of various entities in the system. You cannot, for
example, cancel a change order that is not submitted. The state transition
diagram in Figure 12.3 specifies the viable actions the use case can take in
accordance with varying conditions of the system.
The state transition diagram for the use case Edit Change Order describes the
conditions under which a user can change the change order's status. You might
find the text of the use case hard to follow. The state transition diagram, and
even the process of defining the state transition diagram, clarifies the use case
specification.
In Figure 12.3, you can see that the use case specification requires the user to
be modifying a change order before the user can make any other changes to
it. Further, the use case limits the changes the user is allowed to make; these
restrictions are based on the authorization level of the user and the current
state of the change order. For example, the state transition diagram shows that
the system will cancel a change order in only one of two situations. The first
situation requires that the change order has been submitted and that the user
requesting the cancel be the Project Manager. The second situation requires
that the change order has been assigned and the user requesting the cancel be
the Project Manager, the Analyst, or the Administrator.
A second example from the state transition diagram involves approving the
change for inclusion in a release. You can see from the diagram that only the
CCB or the Administrator can approve the change order for inclusion in a
release. Further, the change order must have had an initial analysis
completed.
On the transition to the end state, the use case takes the appropriate action.
The focus of this state transition diagram was on understanding when each
type of action could be taken. Once this is clear, the action the system takes is
relatively straightforwardthe system changes the state of the change order
and saves this information.
System-Level State Transition Diagrams
State transition diagrams are also useful at the system level. In most
situations, you will be describing an aspect of the system associated with
several uses that relate to each other. You rarely, if ever, model the complete
state information for the entire system. The approach and notation remain
unchanged for state transition diagrams at the system level.
Change Management System State Transition Diagram
The change order is the core concept in the Change Management System.
Understanding the states and transitions of this class are central to
understanding the requirements. As a result, we review this state transition
diagram (Figure 12.4) in detail.
The CHANGE ORDER has ten states. A CHANGE ORDER that has been entered into the
system but not submitted is in the DRAFT mode. A CHANGE ORDER that is in the
system and ready for a Project Manager's action is in the SUBMITTED state. A
CHANGE ORDER that has an Analyst identified to work on it is in the ASSIGNED
state. A CHANGE ORDER for which an Analyst performed an impact analysis is in
the INITIAL ANALYSIS COMPLETED state. A CHANGE ORDER whose impact has been
reviewed and approved by the Change Control Board (CCB) is in the APPROVED
FOR RELEASE state. A CHANGE ORDER that a Project Manager has scheduled and
planned into a release is in the ASSIGNED TO RELEASE state. In addition, the
CHANGE ORDER may be CANCELLED, marked as a DUPLICATE of an existing CHANGE
ORDER, DISAPPROVED, or placed ON HOLD. The state transition diagram specifies
the allowable transitions between these states.
The state transition diagram starts with a user's submission of a change order.
The CHANGE ORDER is initially drafted. In this state, only the user is allowed to
complete and submit the CHANGE ORDER.
Once the CHANGE ORDER is submitted, the user can cancel it or the Project
Manager can assign it to an Analyst for initial analysis.
Once the CHANGE ORDER is assigned, the Analyst controls it. The Analyst can
cancel the CHANGE ORDER, place it on hold, mark it as a duplicate, or mark the
CHANGE ORDER as having been initially analyzed.
When the CHANGE ORDER has been initially analyzed, the Project Manager can
place it on hold or approve it. In this state, the CCB can also disapprove the
CHANGE ORDER or approve it for a release.
After the CHANGE ORDER is approved for a release, the Project Manager can
assign it to a release or place it on hold. The Analyst can take the CHANGE ORDER
off hold and start initial analysis. Only the Project Manager has permission to
take the CHANGE ORDER off hold and assign it to a release.
Chapter 13. Use Case Realization by Means of
Sequence Diagrams
We use sequence diagrams to realize use cases in the analysis model. Before
we demonstrate the realization, we need to have a good understanding of
sequence diagrams. Sequence diagrams are a type of interaction diagram.
Collaboration diagrams are another type of interaction diagram. Although each
of these types of interaction diagrams provides the same information, the
focus of attention is different. Collaboration diagrams focus on the objects that
work together to accomplish a given task or series of tasks. Sequence
diagrams focus on the interaction of a given task or series of tasks as observed
over time. In fact, some modeling tools automatically convert one diagram to
the other. In this chapter we focus on sequence diagrams since use cases
model the services the system provides over time.
We discuss the elements that make up the sequence diagram. We then discuss
how we map use cases onto a class diagram with sequence diagrams. Finally,
we map a use case from our Change Management System onto the class
diagram or analysis model of the Change Management System.
Introduction to Sequence Diagrams
The arrowhead points to the method that was called. Information can flow both
ways. If the method is fully specified, as is the case for METHODB of OBJECT B, the
information about the call is included in the method call. The return value is
not shown in the sequence diagram.
The thick bar in the sequence diagram indicates the focus of control. Focus of
control implies that one method called another; control will return to the first
method. This focus can continue through any number of method calls. Focus of
control does not always return to the calling method. Sometimes the new
method starts a new thread of execution that takes the focus of control.
Recall from Chapter 11, that for a method from one object to call a method
from another object, that object must have a public access specifier. Private
methods can only be called by methods within the same object. Protected
methods in a base class can be called by other methods declared in the same
class or by methods that are declared in a derived class. If a method in a base
class is defined as private, only methods declared in the base class can call
that method. In Figure 13.2 we look at another example.
The example in Figure 13.2 shows an inheritance tree for an employee record.
In the example, all objects of type EMPLOYEE include a method PRINT RECORD. The
EMPLOYEE class also includes method CALCULATEPAY to allow polymorphism. Each
of the derived objectsHOURLY EMPLOYEE and COMMISSIONEMPLOYEEhas its own
version of the method CALCULATEPAY . We use objects from this set of classes in
our next sequence diagram, Figure 13.3.
Every time you find yourself navigating the whole-part relationship to find the
appropriate class, you will need to assign responsibilities to the classes you are
navigating to ensure that you can, in fact, find the appropriate class. Said
another way, the navigating behavior must be a method on the class
representing the whole. It is not unusual that this requires returning to the
class that represents the system itself. Figures 13.4 and 13.5 illustrate this
point.
Figure 13.6 shows a sequence diagram from our Change Management System.
In this sequence diagram, we assume the user has already logged in to the
system. The example shows an instance of the ACTOR class, JIM. JIM begins the
use case by requesting to work with versions, effected by clicking the Version
Button. This action causes the VERSIONSCREEN object to be displayed.
Next, JIM indicates the intent to add a new version for the selected system by
pressing the Add button. This action calls the CLICKADD method on the object of
type VERSIONSCREEN. This method then triggers the screen's CLEARFIELDS method,
which prepares the screen for the addition of the version.
The user then provides the appropriate information for the new version. Once
JIM has provided all the information for the new version and clicks the Save
button, the method CLICKSAVE is executed. The CLICKSAVE method calls the
method SAVEVERSION on the object of type VERSION. Once the new version is
saved, the CLICKSAVE method of the object of type VERSIONSCREEN calls the DISPLAY
method on the object of type MAINSCREEN.
This interaction ensures that our analysis model supports the use case Create
Version. Once we have completed this mapping for all use cases in our Change
Management System, we are sure that our analysis model fully supports our
User Requirements. We are now ready to begin specifying the software
requirements.
Part 4: Building the Specifications
Chapter 14. Developing a Software Requirements
Specification
The Software Requirements Specification (SRS) has three main parts: the
introduction to the document, the overall description of the system for which
the SRS is written, and the specific requirements.
The introduction provides information about the SRS document itself. This
information includes a statement of the purpose of the document, a statement
of the system's scope, a list of definitions and acronyms used in the document,
and a list of other documents referred to by this document. The introduction
also includes an overview of the system for which the SRS specifies
requirements. You must keep the statement of the system's scope consistent
with any existing higher-level requirements documents. This means that if a
system requirements specification, a concept of operations, or a vision
document exists for the system you are specifying, you must link the two
documents in this section. An acceptable method for providing this linkage is
to list the high-level requirements to which this SRS applies. You can also
cross-reference the higher-level requirements to the sections of this SRS that
relate to them.
If the system interconnects with other systems as part of a larger system, the
overview section of the introduction is the place to show that. A block diagram
serves this purpose well. If the system stands alone, this is an acceptable place
to include the system's context diagram. In some cases, you will want to
include both a block diagram and a context diagram. In either case, you should
avoid duplicating information that exists elsewhere. You can summarize and
then reference the information. The SRS is similar to software: the more
places you duplicate information, the more effort you must invest to keep the
information consistent and correct and the more opportunity you provide to
introduce errors.
The standard for the SRS includes sections for numerous categories of
information you might include when you specify the software requirements for
a system. You will find that you do not always need every section. You can
decide which sections to include through a process called tailoring.
You will tailor the standard across two dimensions. The first dimension involves
decisions about which sections to include and to what depth to cover the
information listed in that section. The standard itself describes content to three
levels. You should not let this deter you from using the standard. Even
experienced analysts profit from reviewing the standard to ensure that they
have thought of all applicable information. As an aid, the standard walks you
through all specification considerations for your system. Review each section
and determine what information you need.
The second dimension of tailoring involves the organization of the core of the
SRS. You specify the results of your analysis work in the Specific Requirements
part of the SRS. This part makes up most of the document. All functional and
nonfunctional requirements for the system you are specifying belong in this
part of the document. The standard provides multiple means of organizing
these requirements. These means include organization of the requirements by
system mode, by user group, by feature, by functional hierarchy, or by classes
and objects. You can also combine any of these for a hybrid organization. Our
template reflects our choice of approach. We organize our template by classes.
Although we specify the attributes and methods of each class, we have tailored
out the messages section of this part of the SRS. The standard includes a
section for each class to list the messages that this class calls. This affords a
list of all classes with which this class collaborates. We achieve the same result
by making references to methods in other classes in the method that actually
makes the call.
Specifying Functional Requirements from the Class
Diagram
The analysis you have performed has resulted in an analysis model that fully
describes both the structural and dynamic views of the software system you
are specifying. Both views are critical to the understanding of what is required
of the software to meet the users' needs. A critical benefit of our approach
results from organizing the SRS such that we maintain both views.
There are two aspects to building the static view of the SRS. The first aspect is
structuring the SRS. Our template leads you to organize the Specific
Requirements chapter according to the class diagram. Each class has an entry
in the table of contents. Each class also has a unique identifier. The procedure
for building the structural view of the SRS is as follows.
1. In your class diagram, label each class uniquely left to right, top to
bottom. We recommend using "RN Cn," where RN identifies the
entity as a requirement number, C identifies the entity as a class,
and n is the class number you just assigned. The classes for the
business classes start at 1. The classes for the graphical user
interface classes start at 1000 and increment by 1000. This
numbering guideline allocates room for frequent additions to the
graphical user interface.
In your class diagram, label each attribute and method uniquely within each
class. We recommend using "RN Cn-Am" for attributes and "RN Cn-Mm" for
methods, where RN Cn identifies the class to which this attribute or method
belongs, A identifies this entity as an attribute or M identifies it as a method,
and m is a unique number you assign from top to bottom within the class.
Build the outline of the Specific Requirements section of the SRS according
to this identification scheme.
The second aspect of building the static view involves specifying each
individual class, attribute, and method. First, we discuss specifying each class.
You use the class requirement specification to convey the intent of the class.
For example, we have a class named WORKORDER in the Change Management
System. This class represents a work order entered into the system. The
requirement specification for this class might read as follows.
RN C7, Work Order The Change Management System shall maintain a work
order including a reference to the person who submitted it, the analyst
assigned to analyze it, the collection of subordinate Work Orders that relate to
it, and the collection of change histories associated with it.
There are several key points to this requirement specification. The first is the
use of the standard term "shall maintain." Recall that we discussed the use of
standard terms in Chapter 2. We can see from the class diagram that
WORKORDER maintains a reference to the submitter and analyst in its attributes.
It also maintains a reference to all its change histories and to all other work
orders that relate to it. We described these relationships in the requirement.
You should again notice the use of the key words to start the requirement
statement. Also note the description of the purpose the attribute serves within
the system. In this case, it is to "identify the area to which the work order
applies."
Finally, you must specify the methods of each class. We use structured English
in our approach. This aspect is similar to the standard we used for use cases;
however, it is more formal in the SRS. This reflects the fact that the SRS is
written in the language of the developers.
RN C3-M1, Add System Role The system shall set the role of the given
Person to the given Role for the given System.
You might notice the use of the word given in the requirement specification
above. This requirement assumes that it is collaborating with a method of
another requirement, perhaps in the user interface. It also assumes that the
caller has given it the role, the system, and the person to whom it should
assign the role.
As an additional example, the PERSON class has a method named TEST PASSWORD.
The requirement specification for this method might read as follows.
Each method in the SRS performs a specific function for the system. Each
specific function is part of a larger collaboration within the system to meet a
user requirement. We have already described these collaborations by using
sequence diagrams. The procedure for including these collaborations in the
SRS is as follows.
1. For a use case, find the method in the SRS that starts the
collaboration to realize the use case. Frequently, this is a method
that receives a message, or this is a method linked to a user action
on the user interface.
Identify the next method that participates in the collaboration. For example,
to perform an operation on a member of a collection, you will frequently have
to call the find method on the class that manages the collection.
Insert a referenceby unique identifier and nameto the method you are
calling. If your word processor supports hyperlinks, use them.
Once you have completed the procedure for each use case, you will have built
a dynamic view of the analysis model into the SRS. The value of the SRS
increases dramatically. To review the specifics about how the system meets the
use case, you traverse the entire set of collaborations that represent the use
case realization. You now not only know the collaboration, you also have the
details of all attributes and operations to give you a full understanding of the
software requirements.
Two secondary uses of the SRS are simplified thanks to the structure of the
document. The first use is by testers designing tests and building test cases
(see Chapter 16). The second use is by analysts dealing with change as the
system matures (see Chapter 17). We have included the SRS for the Change
Management System as part of Appendix B to serve as an example of how you
might create and maintain your SRS.
Chapter 15. Developing an Interface Requirement
Specification
In this chapter we look at the Interface Requirement Specification, or IRS.
While the Software Requirements Specification (SRS) includes a section for
external interfaces, there are times when you will want to write an IRS and
simply refer to the IRS from the SRS, for example, when your system has
numerous interfaces or when one or more interfaces are very large. Often, the
people primarily interested in the IRS are not particularly interested in the
SRS when building interfaces. Likewise, most people want to focus separately
on these two issues: requirements and interfaces. Creating separate
documents can help keep your SRS more readable. It is also possible that you
will need to provide your interface specifications to developers of other
systems, to enable them to build interfacing software. You may want to provide
the interfaces without disclosing all the information available in an SRS.
The IRS Template
As of this writing (2002), the IEEE has not published a standard for the IRS.
For this reason, we have chosen to use the specification developed and used
by the Department of Defense (DoD) in standard Mil Std 498. The Mil Std 498
specifications are available from a number of sources on the Web. We
significantly tailored the standard to fit our needs, but the military standard
provided a good starting point. Figure 15.1 through Figure 15.3 illustrate the
template as we tailored it. The accompanying text discusses what we would
likely include in each paragraph.
We begin the IRS with a title page like the title page in Figure 15.1. This page
allows the user to identify the document and version of the IRS at a glance.
The table of contents shows that the IRS is organized into four sections: Scope
of the document, References, Requirements, and Message Format.
Section 2 of the IRS is the Reference section. This section includes a list of
documents to which the IRS refers. The list is likely to include a System
Requirement Specification and one or more SRSs. It might also include
Request for Comments (RFC) that defines protocols like TCP/IP and SMTP. It
may also include any other standards that define or specify protocols you are
using.
Requirement Section of the IRS
Section 3 of the IRS is titled the Requirements section. This section gives the
details of each protocol used. It lists each message that is interchanged with
another system and includes a brief description of the message. Usually, we
would list a protocol and identify the systems with which we communicate by
using the protocol. If we do not have a reference to explain the protocol, we
specify the protocol element by element to ensure that our readers will be able
to effectively implement the protocol. We repeat the protocol definitions for
each protocol we use in our system.
We use section 4 to specify all messages to the bit level. We make a subsection
to discuss elements of the protocol. We create subparagraphs for each protocol
that we specify. Each element of the protocol is specified individually. For
example, we would define the header and trailer format used for the protocol.
A checksum value might also be included in messages. The reader may need to
know how to calculate the value. We also define the format of any
acknowledgement messages. If the protocol uses a heartbeat message (a
message that allows the system to know if the logical connection has been
broken), we specify the format of the heartbeat message. We also specify any
additional protocol elements the reader might need to implement to allow
proper communications to occur.
The IRS allows you to provide all the information readers need to understand
and develop appropriate communications between systems without cluttering
the SRS. You should consider developing one or more IRSs whenever you have
complex or numerous interfaces to define.
Chapter 16. Verifying the Software Requirements
Specification
Because the SRS maps directly to the analysis model, the process helps ensure
that the set of requirements is correct and complete: correct, in that every
functional requirement in the SRS is one the software must implement;
complete, in that all necessary functional requirements are included. You
ensure that every use case is realized in the class diagram through at least
one sequence diagram. In this manner, the use cases drive the SRS. The SRS
then includes all requirements necessary to implement all required user
functionality. The SRS also includes only those requirements necessary to
implement the required user functionality.
Organizing the SRS according to the class diagram helps ensure modifiability.
As you can see in Chapter 17, changes to requirements start at the use cases,
proceed through the analysis model, and finally affect the SRS. The analyst
finds changes required in the SRS by reviewing changes in the analysis model.
Each attribute and each method are specified in one place to eliminate
redundancy and increase modifiability.
The process reduces the chance that the negative aspects of these
characteristics will affect the requirements. However, once the SRS is
complete, a peer review ensures that the requirements truly embody these
characteristics. Additionally, a peer review should ensure that the
requirements exhibit some characteristics that the process cannot directly
address, such as those described in later sections.
Using Peer Reviews to Ensure Good Requirements
A description of the peer review process is outside the scope of this book. We
mention only that many acceptable peer review processes are available. These
processes vary in formality from a desk check to a technical walk-through to a
formal inspection. Whichever peer review process is chosen, the analyst
responsible for the SRS must verify that the process actually ensured the
characteristics we just discussed. Additionally, the peer review should verify
several aspects of ambiguity, completeness, and verifiability.
The peer review must also verify the nonfunctional requirements. Given that
nonfunctional requirements specify conditions or constraints on one or more
functional requirements, they too, must be analyzed. The peer review should
emphasize a review of the nonfunctional requirements to ensure that they are
measurable, attainable, and testable.
Finally, the peer review must examine each requirement for two particular
aspects of verifiability. The first aspect is the use of concrete terms. The words
"may," "might, "should," and "can" in particular provide leeway in the
interpretation of the requirement and should be flagged as suspect. The
second aspect of verifiability the peer review must address is the use of
measurable quantities when applicable. Key words that should raise suspicion
in this respect include "better," "some," "sometimes," and "often." These two
lists are by no means exhaustive, but they do illustrate the issue and provide a
good starting point for collecting troublesome words.
Specifying a Test Tree
The list of characteristics of good requirements contains several items that are
difficult to verify in a peer review. These include determinism, conflicts
between specified actions, and testability. Additionally, backward and forward
traceability requires work above and beyond the specification work. Our
process uses techniques employed in building test cases, to ensure that the
requirements exhibit these characteristics.
The class ORDER has the attribute STATUS. The order's status is open if no action
has been taken on the order. The order's status is pending fulfillment if the
order has been transmitted to the warehouse floor so that the items can be
gathered and boxed for shipment. Finally, the order's status is filled if the
items have been shipped.
For our purposes, we have the class ACTIVITY . Objects of type ORDER have zero
to many objects of type ACTIVITY . ACTIVITY records actions taken on the order. In
this example, the use case DELETEORDER specifies how the user asks the point-
of-sale system to delete a customer order. The specification for these
requirements must consider the possible states of the system when this input
is received. These include:
Specifying the system response when the customer does not exist.
Specifying the system response when the order does not exist.
Specifying the system response when the order has already been filled.
Specifying the system response under any other possible states of the
system as represented by the state of the customer and the order.
The requirements for the methods identified in the sequence diagram might
read as follows:
RN C1-M1, deleteOrderForCustomer
a. If the system does not find the customer, the system shall return the error
"CUSTOMER NOT FOUND."
b. Else if the system finds the customer, the system shall delete the order (see
RN C2-M1, deleteOrder).
RN C2-M1, deleteOrder
a. If the system does not find the order, the system shall return the error
"ORDER NOT FOUND."
b. Else if the system finds the order, the system shall delete the order (see RN
C3-M1, delete).
RN C3-M1, delete
a. If the order status is open, the system shall create a delete order activity
(see RN C4-M1, create) and return the message "ORDER XX, DELETED."
c. Else if the order status is filled, the system shall create a too-late-to-cancel
order activity (RN C4-M1, create) and return the error "TOO LATE TO DELETE."
RN C4-M1, create
From To Condition
RN C1-M1a Error
RN C2-M1a Error
RN C3-M1a RN C4-M1
RN C3-M1b RN C4-M1
RN C3-M1c RN C4-M1
Analyzing the Test Tree
Does the specification account for all states applicable to this situation?
In fact, if some of these questions cannot be answered, you cannot build the
table. The table may be more easily visualized in a drawing. From the drawing,
you might be able to more easily answer the questions listed above. It can also
be represented as shown in Figure 16.3.
This example provides a technique for examining a single use case with the
goal of ensuring that the requirements that realize the use case are
deterministic. Realistically, most projects do not allocate the required time to
allow an analyst to develop a full set of control-flow graphs or their equivalent
table representations for every use case in the system. Given that the analyst
may not be afforded the time to perform a complete SRS analysis with control-
flow graphs, a less reliable but far quicker method is to create a single test
case for each use case by traversing directly through the SRS. Developing a
set of test cases for each use case by applying the above technique gives the
analyst valuable insight into these issues. On most projects, you would apply a
combination of these two techniques. This means developing a test graph for
the use cases that represent complex operations and using test cases directly
from the SRS for the rest. The procedure for building the test cases is much
like the example we just walked through.
The analyst traverses the requirements in the SRS for each use case. As each
requirement is read, the analyst records the requirement number on the test
case. Each requirement that is stated as a condition requires the analyst to
chooseis the order open, pending fulfillment, or filled? The analyst records this
choice as a precondition to the test case. Recording the requirements in the
test case now serves two purposes. First, the analyst establishes traceability
between the use cases and the SRS. Traceability is a characteristic of good
requirements. Second, the analyst has recorded the state information in the
preconditions. The analyst now knows what state information has not been
specified in a test case. Once the analyst specifies all test cases, a comparison
of the preconditions of the test cases with the possible values of the attributes
as specified in the SRS convincingly checks the determinism of the
specification. Finally, the analyst must think of a test procedure that executes
the test case in a reasonable manner. This final check ensures the testability of
the functional requirements.
Requirements Verification Checklist
Table 16.2 suggests checklist items that you can use to help ensure that
requirements demonstrate the characteristics of good requirements.
Is there any use of the term "may," "might," "should," "can," "better," "some," "sometimes," or
"often"?
Unambiguous
Are there any uses of other terms that are vague?
Are all attributes and methods included in the analysis model also specified in the SRS?
Are all conditions and constraints on functional requirements specified in the SRS?
Completeness Have the test graphs and test cases been built and reviewed for this SRS?
Does the structure of the SRS match the structure of the analysis model?
Modifiability
Have all redundant structures been removed?
Is each requirement uniquely numbered in a manner that allows the attribute or method to be
Traceability associated with its class?
The CCB reviews the initial impact analysis and initial estimate and either
REJECTS, ARCHIVES, or ACCEPTS the change request for the next release. If the
change request is accepted for the next release, the program manager assigns
the change to an analyst for full analysis.
While the change request is IN PROGRESS, the analyst performs a full analysis
of the changes and issues a new estimate.
The CCB reviews the results of the full analysis and either REJECTS or
APPROVES the change. If the change is approved, the program manager then
includes the change in plans for the next release and assigns the change to an
analyst for implementation.
The engineer implements the change as part of a release, and the reviewer
tests the change to ensure that it is properly implemented. Once the change is
fully implemented, the change request is CLOSED.
Receiving the Change Request
This process begins when the customer or user submits a change request. The
change request can be as simple as a color change to a label or the addition of
a hot key. The change request can be a major new group of functionality that
is as large as the existing system. It is important that the change request be
properly managed. This process includes ensuring that the change request is
assigned a unique control number and that the request is properly recorded.
Descriptive Text: The Change Management System will provide two reports
to help study change history for a given system. This will include a report to
provide the total number of defects reported on a given system. This report will
provide a subtotal for year, broken down by severity. A second report will
include the description of each change completed in the last year.
Table 17.1 summarizes the number assignment for the report requirements.
1.2 The summary report shall be categorized by severity of the defect within a calendar year.
Analyzing the Change
We want to take special care to analyze the change without compromising the
requirements model. We have to consider that the change request may never
be implemented or may wait a significant period of time before being
implemented. Therefore, we normally work from a copy of the artifacts from
the requirements model. We modify the artifacts as part of the analysis and
maintain the copy we modified with the change request.
Often, the same processes used to analyze the original problem are useful in
analyzing the change. There is, of course, one major difference. You now have
in place the artifacts to analyze the change against. You may find it valuable to
create a state transition diagram to explore the change. Activity diagrams are
another way to diagram the change to help make the problem understandable.
The best way to understand the change in context of the system is to use the
requirements set you developed when the requirements were originally
developed.
Analyzing User Needs
Once you have worked with the user to properly record and document the
requirements, you will work with the user to ensure that you have a thorough
understanding of what the user intends. This may require one or more
interviews with the user. After you thoroughly understand the changes being
requested, you can analyze the changes against the current requirements
model. The process is illustrated in the figure that begins this chapter.
Identifying New and Changed Use Cases
You next review the use cases so that you understand the impacts. At this
point, you should fully grasp the breadth of the user-requested change. With
this knowledge, you can determine what use cases are likely impacted. You can
probably now identify all the new use cases you will have to build. Once the
use case is identified, you are ready to begin analysis. A good strategy is to
attempt to identify the use case with the biggest impacts on the requirements
model and write or rewrite this use case first.
While writing or rewriting the use case, consider all the other use cases
related to this use case. If other use cases are included or are extended by this
use case, review them to understand the impact that these changes will have
on those use cases. Ensure that all impacted use cases are on your list of use
cases to review. Also, examine any use cases that this use case is included in
or is extended by. Ensure that the behavior specified in those use cases is not
impacted. If the behavior is impacted, verify that those use cases are on the
list of use cases to review.
You should continue with this procedure until you have examined all directly
and indirectly impacted use cases. Be sure you make any changes necessary to
a copy of the use case saved specifically for the change request being
analyzed. Following this practice can save you from having to roll back
changes if the change request is disapproved or placed on hold. Rolling back
changes is especially difficult after modifications have been made for a number
of change requests.
Identifying New and Changed Requirements
Additions and changes to the SRS are made through the analysis model and
sequence diagrams. You will be tempted to make changes to the SRS in
accordance with the changes you made to the use cases. Resist this
temptation. The use cases, analysis model, sequence diagrams, and the SRS
all provide a consistent view of the system. It is through the analysis model
and sequence diagrams that you keep this view consistent.
Your first activity is to analyze the use cases against the analysis model to
determine if you need to introduce new classes or, perhaps, remove existing
classes. You may need to add additional attributes or methods to existing
classes to support new functionality. Your second activity is to build a sequence
diagram for each new use case. Your third activity is to revisit the sequence
diagrams for each use case you changed. This activity may also lead to adding
methods to existing classes. This process is iterative. Often the changes you
make to realize new use cases in the analysis model will lead you to change
related use case realizations.
These activities are likely to raise many questions. These questions often arise
because the user did not specify enough information to make the changes
deterministic. So these activities afford a valuable way to ensure that the user
is aware of the effects the changes can have on other parts of the system.
These questions can be fed back to the user in a number of ways. We usually
make a list of questions we need answers to and any assumptions we made. If
we can continue without the answers, we simply wait until we compile the
complete list. Otherwise, we ask the user for any answers we need before we
can continue. After the user has answered our questions and confirmed our
assumptions, we present the user with storyboards that reflect our
understanding of the change.
Once you have made the changes to these use cases and updated the class
diagram and sequence diagrams, you should storyboard the changes back to
the user to ensure his full and complete understanding. Storyboards for new
use cases are developed as they were in Chapter 9. Storyboards for existing
use cases should be focused on the aspects that have changed. It is important
to talk about how the change added to and changed a use case. It is also
important to point out any function that was provided but is no longer
provided.
The most visible benefit to this process is the ability to accomplish faster and
higher-quality requirements analysis.
Benefit: A full set of requirements allows the analyst to identify up front all
conflicts among user requirements. Identifying all unanswered questions and
getting answers to those questions early saves the time and effort spent in
building the wrong product and the time and effort spent reworking the
products that were based on the poor requirements.
The process described in this book makes explicit the allocation of user
requirements to software requirements. The analyst uses storyboards and
prototypes to validate his understanding of the user requirements with the
user. The analyst uses a set of class diagrams, sequence diagrams, and
perhaps activity diagrams and state transition diagrams to ensure that
inconsistencies between use cases are resolved before they are specified in the
software requirements. The analyst also uses these tools to ensure that details
not described in the use cases are specified in the software requirements.
Finally, the analyst uses these tools to describe the requirements in the
language of the developers who will design and implement the solution.
The process in this book implements use cases to represent the user
requirements. This process specifies the software requirements in a software
requirements specification. Together with the various models, these provide a
complete set of requirements for the software. A reader can see the full set of
requirements from the user's point of view. He can then traverse the software
requirements in the context of the use case by following the dependencies in
the software requirements specification.
The process described in this book provides a set of artifacts that express the
software requirements both in the language of the user and in the language of
the developer. The various models provide a direct mapping from the user
requirements onto the software requirements. Because these models are the
same types of models used for design, they provide a direct entry into the
activities of the designer.
Benefits to Testing and Quality Revisited
The process described in this book provides three views of the software. The
first view is provided by the use cases. This view represents the system as
seen through the user's eyes. The class diagrams provide the second view. This
view is the structural view as seen through the software architect's eyes. The
sequence diagrams provide the third view. This view provides a dynamic view
from the developer's eyes by presenting the structure of the software and the
collaborations among objects of the classes represented in the structure. The
software requirements specification brings together both the structural view of
the class diagram and the dynamic view of the sequence diagrams.
Additionally, the software requirements specification presents the details
required for the implementation. New team members can then quickly learn to
use the system through the use cases while at the same time understanding
the structure of the software through the set of class diagrams. Once new
team members have the big picture, the software requirements specification
allows them to delve into the specifics.
Benefit: A good set of requirements also allows for faster and more systematic
testing.
The tester can learn the system much as a new team member would. The
tester can then build test cases a use case at a time. This allows the tester to
organize the use cases from the operational point of view. The software
requirements specification, representing a control flow model of the system,
allows the tester to specify test cases according to paths through the control
flow that are based on specific inputs under specific conditions. The tester can
then use the software requirements specification to predict the outcomes for
each test.
Benefits to the Organization Revisited
The process described in this book ensures a full set of user requirements
mapped to its full set of software requirements. The temptation with
specifications is to consider them an after-the-fact description of the analyst's
work. Such a view of use cases, class diagrams, sequence diagrams, and
software requirements specifications will cause you to miss out on the benefits
of a full set of requirements.
The process described in this book provides a set of tools and a set of practices
for using those tools to actually perform the analysis. Understanding the
changes required in the software requirements when you change a use case
empowers you to change the requirements artifacts as you proceed. If you
change a use case, the class diagram may no longer support that use case. The
collaborations represented in the software requirements specification will most
likely not realize the changed use case. As you make changes to the use case
and the SRS, you will discover impacts in areas you did not consider when you
first changed the use case. This interaction occurs during initial development
and during maintenance of the software. Using these processes and artifacts
gives the organization the added benefit of better initial performance and
better sustained performance over time.
Part 6: Appendices
Appendix A. Planning Model for Requirements
Development
Model Work Breakdown Structure
Table A.1 lists the work breakdown structure (WBS) for the requirements
development process described in this book. This table organizes the tasks by
phase in a manner that describes two workflows: user requirements and
software requirements.
Phase Task
Study domain
Gather Requirements
Identify use cases
Rework
Establish dependencies
Specify interfaces
Review IRS
Rework
Assess SRS
Assess IRS
Table A.2 describes the task network that integrates the user requirements
workflow and the software requirements workflow into a single WBS for a
project. The table lists the activity, the tasks that belong to that activity, and
the dependencies between the tasks.
6 Build storyboards 4
8 Rework 7
10 Establish dependencies 9
11 Specify interfaces 5, 8, 9
12 Rework 15, 16
15 Review SRS 14
16 Review IRS 11
19 Assess SRS 12
20 Assess IRS 12
Model Effort Allocation
Figure A.1 shows actual effort across the activities of the task network. The
project was approximately 2500 function points. This project and six others
yielded the effort allocation listed in Table A.3.
From the graph and the data table you can see that approximately half the
effort is devoted to user requirements. Forty percent is devoted to software
requirements. Twelve percent is devoted to verification activities associated
with the software requirements, and six percent is devoted to independent
evaluations of the artifacts and the process.
Our productivity averages 1.75 function points per hour for specification work.
A large project of about 2500 function points consumes approximately 1500
hours. A medium project of about 1500 function points consumes
approximately 1000 hours.
Table A.4 shows how the effort was distributed across two analysts and one
independent QA analyst. Figure A.2 shows schedule overlap among the
activities.
Table A.5 lists the milestones, defines them, and identifies the tasks from Table
A.2 on which the milestone depends.
Use Cases Use case models and specifications are written and internally reviewed by the
4
Drafted requirements development team.
Sequence
Diagrams Each use case is realized in the class diagram. 5
Drafted
Requirements Storyboard reviews are complete. All defects, issues, and questions have been
Gathering addressed. The use case models, use case specifications, class diagrams, sequence 8
Complete diagrams, and storyboards have been updated to reflect corrections.
The SRS has been specified and internally reviewed by the requirements
SRS Drafted 10
development team.
SRS The SRS has been peer-reviewed, and includes review of the analysts verification
12
Complete results.
An independent verification has been conducted of the use cases, the analysis
QA Complete 17, 18, 19, 20
model, and the SRS.
Baseline The use case specifications, the analysis model, and the SRS have been safely
17, 18, 19, 20
Established stored, uniquely identified, and released for general use.
Appendix B. Change Management System Artifacts
This appendix begins with a complete use case set, including
Revision History
Use Cases
The second and third sections present Class Diagrams and State Diagrams for
the Change Management System presented in the appendix.
Together, these pieces illustrate the entire process described in the book.
Change Management System Use Cases
Table B.1. Revision History
R. Abreo, D. Windle 11/12/01 Add Use Cases; correct minor errors Draft 3
Created By: DW
Actor(s)
Administrator
Analyst
Program Manager
CCB
Description
This Use Case begins when the actor indicates the intent to log in to the
system. Every action in the system will require the user to log in. This Use
Case ends when the user has been successfully authenticated in the system.
Preconditions
Postconditions
None.
Priority
1. The actor will indicate the intent to log in to the system by starting
the system.
The system will prompt the user to enter a user ID and password.
Alternative Courses
None.
Exceptions
Includes
None.
None.
Created By: DW
Actor(s)
Administrator
Description
This Use Case begins when the Administrator indicates the intent to add a new
user record to the system. This Use Case ends when the User Record is added
to the system.
Preconditions
The current user is logged in and authenticated as an administrator.
Postconditions
Priority
The system will present the user with a screen for adding a new user and
set the user default password.
The system will verify the User Record and add it to the system.
Alternative Courses
None.
Exceptions
If the user ID assigned already exists in the system, the system will reject the
addition and require the administrator to assign a different user ID or abandon
the action.
Includes
None.
None.
Created By: DW
Actor(s)
Administrator
Description
This Use Case begins when the Administrator indicates the intent to edit a
User Record. This Use Case ends when the changes to the User Record are
made to the system.
Preconditions
Priority
Alternative Courses
None.
Exceptions
None.
Includes
None.
None.
Created By: DW
Actor(s)
Administrator
Description
This Use Case begins when the Administrator indicates the intent to delete a
User Record. This Use Case ends when the User Record is marked as deleted.
Preconditions
Postconditions
The User Record marked as deleted.
Priority
The system will verify the user's intent to delete the record.
Alternative Courses
None.
Exceptions
None.
Includes
None.
Created By: DW
Actor(s)
Administrator
Description
This Use Case begins when the Administrator indicates the intent to edit a
User Record. This Use Case ends when the changes to the User Record are
made to the system.
Preconditions
Postconditions
Priority
The system will clear all information and present the "Save" and "Abandon"
buttons.
Note The user will be able to set a parent system for the new system.
The system will save the record and present the screen appropriately.
Alternative Courses
None.
Exceptions
None.
Assumptions
None.
None.
Actor(s)
Administrator
Description
This Use Case begins when the Administrator indicates the intent to edit a
User Record. This Use Case ends when the changes to the User Record are
made to the system.
Preconditions
Postconditions
Priority
The system will display the system and present the "Save" and "Abandon"
buttons.
The system will save the record and present the screen appropriately.
Alternative Courses
None.
Exceptions
None.
Includes
None.
None.
Created By: DW
Actor(s)
Administrator
Description
This Use Case begins when the Administrator indicates the intent to edit a user
record. This Use Case ends when the changes to the user record are made to
the system.
Preconditions
Postconditions
Priority
The system will display the system and present the "Save," "Delete," and
"Abandon" buttons.
The system will remove the record from the system and present the screen
appropriately.
Alternative Courses
None.
Exceptions
None.
Includes
None.
None.
2 Change Functions
Use Case 2.1 Submit Work Request
Actor(s)
User
Analyst
Project Manager
CCB
Description
This Use Case begins when the actor indicates the intent to submit a Work
Request. The system will present the appropriate form, based on the selected
request type. This Use Case ends when the request is saved in the system and
the system assigns a unique number to the request.
Preconditions
None.
Postconditions
Priority
High.
The system will present the appropriate form for entering the Work
Request.
The user may select a Work Request type from the list of types.
Note There are four types of Work RequestWork Order, Software Defect
Reports, Change Request, and New System Request.
The system will present the appropriate fields for the given Work Request
type with the Date of Request set to today's date, the Current State set to
Drafted, and the System Name set to a designated system name.
4.1. If the Work Request is a Work Order, the system will prompt for the
Submitter, Description, Remarks, Priority, Problem Area, and System
Name.
4.2. If the Work Request is a Software Defect Report, the system will
prompt for the Submitter, Description, Remarks, Priority, Release
Introduced, Phase Introduced, Test Description, and System Name.
4.3. If the Work Request is a Change Request, the system will prompt for
the Submitter, Description, Remarks, Priority, Requirements Affected, and
System Name.
4.4. If the Work Request is a New System, the system will prompt for the
Submitter, Description, Remarks, Priority, and System Name.
The user will complete the appropriate fields and either save as Draft or
submit the Work Request.
The system will save the request and notify the user of the system-assigned
request number.
If the user submitted the Work Request, the system will send e-mail to the
system's manager.
Alternative Courses
None.
Exceptions
None.
Includes
None.
None.
Actor(s)
User
Analyst
Administrator
Project Manager
Description
This Use Case begins when the actor indicates the intent to view and/or edit a
Work Order. The system will allow only authorized changes by authorized
personnel. This means that changing the state of the request will depend on
the role the actor is playing with respect to the given system. The role of the
Administrator will be allowed to make any changes. If the type of Work
Request is changed, the Work Request will be placed in the Submitted state of
the new type of request. This Use Case ends when the system has presented
the request and saved any edits made.
Preconditions
Postconditions
Priority
High.
Normal Course of Events
3.1. If the state of the work order is Drafted and the user is the
Submitter, the system allows the user to change all the fields.
3.2. If the state of the Work Order is Drafted and the user is the
Submitter, the system allows the user to change the state to Submitted.
3.3. If the state of the Work Order is Submitted and the user is the
Project Manager, the system allows the user to assign/reassign the Work
Order by changing the Current State to Assigned and changing the
Analyst.
3.4. If the state of the Work Order is Submitted and the user is the
Project Manager, the system allows the user to cancel the Work Order by
changing the Current State to Cancelled and changing the Date Closed to
today's date.
3.5. If the Current State of the Work Order is Assigned and the user is
the Project Manager, the Analyst, or the Administrator, the system allows
the user to cancel the Work Order by changing the Current State to
Cancelled and to change the Date Closed.
3.6. If the Current State of the Work Order is Assigned and the user is
the Project Manager, the Analyst, or the Administrator, the system allows
the user to put the Work Order on hold by changing the Current State to
On Hold.
3.7. If the Current State of the Work Order is Assigned and the user is
the Project Manager, the Analyst, or the Administrator, the system allows
the user to declare a Work Order a duplicate by changing the Current
State to Duplicate and changing the Date Closed.
3.8. If the Current State of the Work Order is Assigned and the user is
the Project Manager, the Analyst, or the Administrator, the system allows
the user to change the Current State to In Progress.
3.9. If the Current State of the Work Order is On Hold and the user is
the Project Manager, the Analyst, or the Administrator, the system allows
the user to change the Current State to In Progress.
3.10. If the Current State of the Work Order is In Progress and the user
is the Project Manager, the Analyst, or the Administrator, the system
allows the user to put the Work Order on hold by changing the Current
State to On Hold.
3.11. If the Current State of the Work Order is In Progress and the user
is the Project Manager, the Analyst, or the Administrator, the system
allows the user to declare a Work Order a duplicate by changing the
Current State to Duplicate and changing the Date Closed.
3.12. If the Current State of the Work Order is In Progress and the user
is the Project Manager, the Analyst, or the Administrator, the system
allows the user to cancel the Work Order by changing the Current State
to Cancelled and changing the Date Closed.
3.13. If the Current State of the Work Order is In Progress and the user
is the Project Manager, the Analyst, or the Administrator, the system
allows the user to declare a Work Order a duplicate by changing the
Current State to Duplicate and changing the Date Closed.
3.14. If the Current State of the Work Order is In Progress and the user
is the Project Manager, the Analyst, or the Administrator, the system
allows the user to change the Current State to Completed.
3.15. If the Current State of the Work Order is Completed and the user is
the Project Manager, the Analyst, or the Administrator, the system allows
the user to change the Current State to In Progress.
3.16. If the Current State of the Work Order is Completed and the user is
the Project Manager, the Analyst, or the Administrator, the system allows
the user to change the Current State to Verified and to change the Date
Closed.
Alternative Courses
None.
Exceptions
None.
Includes
None.
None.
Actor(s)
Administrator
Description
This Use Case begins when the actor indicates the intent to view and/or edit a
Change Order. The system will allow only authorized changes by authorized
personnel. This means that changing the state of the request will depend on
the role the actor is playing with respect to the given system. The role of the
Administrator will be allowed to make any changes. If the type of Work
Request is changed, the Work Request will be placed in the Submitted state of
the new type of request. This Use Case ends when the system has presented
the request and saved any edits made.
Preconditions
Postconditions
Priority
Low.
3.1. If the state of the Change Order is Drafted and the user is the
Submitter, the system allows the user to change all the fields.
3.2. If the state of the Change Order is Drafted and the user is the
Submitter, the system allows the user to change the state to Submitted.
3.3. If the state of the Change Order is Submitted and the user is the
Project Manager, the system allows the user to assign/reassign the
Change Order by changing the Current State to Assigned and
providing/changing the Analyst.
3.4. If the state of the Change Order is Submitted and the user is the
Project Manager, the system allows the user to cancel the Change Order
by changing the Current State to Cancelled.
3.5. If the Current State of the Work Order is Assigned and the user is
the Project Manager, the Analyst, or the Administrator, the system allows
the user to cancel the Change Order by changing the Current State to
Cancelled.
3.6. If the Current State of the Change Order is Assigned and the user is
the Analyst, the Project Manager, or the Administrator, the system allows
the user to put the Change Order on hold by changing the Current State
to On Hold.
3.7. If the Current State of the Change Order is Assigned and the user is
the Analyst, the Project Manager, or the Administrator, the system allows
the user to declare a Change Order a duplicate by changing the Current
State to Duplicate.
3.8. If the Current State of the Change Order is Assigned and the user is
the Analyst, the Project Manager, or the Administrator, the system allows
the user to change the Current State to Initial Analysis Complete.
3.9. If the Current State of the Change Order is On Hold and the user is
the Analyst, the Project Manager, or the Administrator, the system allows
the user to change the Current State to Assigned.
3.10. If the Current State of the Change Order is On Hold and the
previous state was Approved For Release and the user is the Project
Manager, or the Administrator, the system allows the user to change the
Current State to Assigned To Release.
3.14. If the Current State of the Change Order is Approved for Release
and the user is the Project Manager, the CCB, or the Administrator, the
system allows the user to schedule a Change Order by changing the
Current State to Assigned to Release and assigning it to a release of a
system.
3.15. If the Current State of the Change Order is Approved for Release
and the user is the Project Manager or the Administrator, the system
allows the user to change the Current State to On Hold.
3.16. If the Current State of the Change Order is Assigned Release and
the user is the Project Manager or the Administrator, the system allows
the user to change the Current State to On Hold.
4.1. If the state of the Change Order has changed, the system records a
Change History to include the Old State, the New State, and the
Date/Time of the Change.
Alternative Courses
None.
Exceptions
None.
Includes
None.
None.
Actor(s)
Administrator
Project Manager
CCB
Description
This Use Case begins when the actor indicates the intent to assign or un-
assign a change order to a version/release. The Project Manager will assign a
Defect Report to a Release. A CCB will assign other Change Order(s) to a
release. This Use Case ends when the given Change Order(s) are assigned or
unassigned from the given release.
Preconditions
Postconditions
Priority
Low.
The system will ensure that the user is authorized to perform the
assignment.
The system will present the Change Order information to the user.
The user will provide a version/release identifier and changes the status of
the Change Order.
Alternative Courses
None.
Exceptions
None.
Includes
None.
None.
Actor(s)
Administrator
Project Manager
CCB
Description
This Use Case begins when the actor indicates the intent to query the system
for a work order or a set of work orders. The user will be allowed to enter
search criteria to limit the set of Work Requests returned. This Use Case ends
when the set of Work Requests that meets the search criteria is returned.
Preconditions
None.
Priority
Low.
1. The user will indicate the intent to query the system for a Work
Request or a set of Work Requests.
The system will prompt the user for the search criteria.
The system will return the set of Work Requests that meet the criteria
provided by the user.
4.1. If the user specified an individual Work Request, the system returns
that Work Request.
4.2. If the user specified a System with a specified status, the system
returns the Work Requests for that system with the status.
Note The user may specify all open, all closed, or a specific status such
as Drafted.
4.3. If the user specified a Release with a specified status, the system
returns the Work Requests for the release with the status.
4.5. If the user specifies a Work Request type, the system returns the
Work Requests of that type.
Note The type may be Work Order, Change Order, Defect Report, Change
Request, or New System Request.
Alternative Courses
None.
Exceptions
None.
Includes
None.
None.
3 Manage Project
Use Case 3.1 Create Version
Created By: DW
Actor(s)
Administrator
Project Manager
Description
This Use Case begins when the actor indicates the intent to add a new version
or release to a system. The user creates versions of systems to implement
Change Orders. Versions are created for individual systems and not for
systems of interconnected systems. This Use Case ends when the new version
is saved to the system.
Preconditions
Postconditions
Priority
High.
1. The actor will indicate the intent to add a new version by clicking
the Create Version button from the main screen.
The system will clear all fields, set the release status to Version Created,
and set the Project Manager to the user.
Note The actor will be required to input a system and a version number. The
user may change the release status to Analysis Completed.
None.
Exceptions
None.
Includes
None.
None.
Created By: DW
Actor(s)
Administrator
Description
This Use Case begins when the Administrator indicates the intent to edit a
version record. The user may change the release number, estimated start date,
actual start date, estimated completion date, actual completion date, and the
version status. This Use Case ends when the changes to the version record are
made to the system.
Preconditions
Postconditions
Priority
Low.
1. The user will indicate the intent to edit a version release of the
system.
The user may change the version release number, the estimated start date,
the start date, the estimated completion date, the completion date, and the
current phase.
Alternative Courses
None.
Exceptions
None.
Includes
None.
None.
Created By: DW
Actor(s)
Administrator
Description
This Use Case begins when the Administrator indicates the intent to edit a user
record. The user may assign change orders to versions of systems. If the
Change Order affects multiple systems, the user may initially assign the
Change Order to a named system of interconnected systems, i.e., The Air
Traffic Control System. Once the impact analysis is complete, the user may
divide the Change Order into one or more change orders and assign each
individual Change Order to a single system. This Use Case ends when the
changes to the User Record are made to the system.
Preconditions
Postconditions
1. The Change Orders are associated with the version.
Priority
Low.
1. The user will indicate the intent to assign a set of Change Orders to
a version release of a system.
The system will present all Change Orders that are approved for release or
on hold and had previously been approved for release and are currently
assigned to the system to which this version is assigned.
The user will indicate which Change Orders to assign to this version.
The system will change the status of the Change Orders to Assigned to
Release and will associate each Change Order with this version.
Alternative Courses
None.
Exceptions
None.
Includes
None.
Notes and Issues
None.
Created By: DW
Actor(s)
Administrator
Description
This Use Case begins when the user indicates the intent to remove a Change
Order from a version. The user is allowed to remove Change Orders whose
status is assigned to release from the version with which the change order is
associated. This Use Case ends when the changes to the User Record are made
to the system.
Preconditions
Postconditions
Priority
Low.
1. The user will indicate the intent to remove one or more change
orders from a version release of a system.
The system will present all change orders associated with the version.
The user will indicate which change orders to remove from the version.
The system will change the status of the change orders to On Hold and will
dissociate the change orders from the version.
Alternative Courses
None.
Exceptions
None.
Includes
None.
None.
Created By: DW
Date Created: April 29, 2001
Actor(s)
CCB
Description
This Use Case begins when the user indicates the intent approve a version to
start work. This Use Case ends when the version is marked as approved to
start work.
Preconditions
The version has at least one Change Order associated with it.
Postconditions
Priority
Low.
The system will change the status of the version to "Approved to begin
work."
Alternative Courses
None.
Exceptions
None.
Includes
None.
None.
Created By: DW
Actor(s)
CCB
Description
This Use Case begins when the user indicates the intent to approve a version
for release to production. This Use Case ends when the version is marked as
Approved to Release to Production.
Preconditions
The version has at least one Change Order associated with it.
Postconditions
Priority
Low.
The system will change the status of the version to "Approved to Release."
Alternative Courses
None.
Exceptions
None.
Includes
None.
None.
Change Management System Class Diagrams
1 Introduction
1.1 Purpose
This document will define all system requirements for the Change Management
System. The intended audience for the SRS includes the users, developers,
and testers.
1.2 Scope
The Change Management System will provide users with the ability to enter
and manage trouble requests and software requests to include request for
software systems, enhancement request, and defect reports. The Change
Management System will allow any software request to be included in a
version of the software. This allows all changes associated with a version to be
managed as a group.
Term Definition
Baseline An established set of artifacts that together represent a given version of a system.
Change A generic term used to refer to any request that will require software baselines to be modified or
Order created.
Change
A request to change an existing version of a system.
Request
Defect
A report that indicates a system is not behaving as specified.
Report
Release An executable version of a system and all artifacts associated with the version
System The hardware and software provided to a customer to meet the customer's needs.
System
A named set of permissions that may be exercised for a given system.
Role
Work
A user-reported issue that will not require baseline changes to the software system.
Order
Work The generic name applied to any request submitted for a system. This includes Work Orders, Defect
Request Reports, Change Requests, and requests for new systems.
1.4 References
1.5 Overview
This document will describe all the specific requirements for the Change
Management System. All nonfunctional requirements will be defined in
statement form. Each nonfunctional requirement will be measurable or be able
to be checked off as met or not met. Software requirements are described in
terms of the entities, or classes, that make up the system. The software
requirements were gathered and analyzed with an object-oriented approach
coupled with a screen prototyping and storyboarding approach. The artifacts
developed through this process will be maintained as attachments to this
document. These artifacts include the Use Case Models, Use Case
Specifications, Analysis Class Diagram, Sequence Diagrams, and the screen
prototypes/storyboards.
2 Overall Description
The Change Management System provides the users a tool that allows each
request to be managed to closure. In addition, the system provides an
effective tool for planning and managing versions of the system.
2.1.6 Memory
2.1.7 Operations
The users are trained software professionals that manage work requests and
the requesters of work for systems. Each user profile is specified below.
2.3.1 User
The term User is generic to describe anyone who may submit a work request.
2.3.2 Analyst
The CCB represents the group that approves work requests to go forward and
approves versions of the system for work and deployment.
2.3.5 Administrator
The Administrator is responsible for granting access to people for a given role
on a given system.
2.4 Constraints
None noted.
3 Specific Requirements
Section 3 of this SRS shall use the A.4 Template of the IEEE standard. One
modification has been made to this template. The messages are included as
references in the functions specified and are not included at the end of class
definitions.
This section specifies each external interface the system will require.
The GUI system will provide users with easy access to needed functions. Below
are the specific requirements.
The Login Screen shall allow the user to authenticate with the system. The
system shall ensure the user is assigned to the correct access to all
appropriate systems.
The system shall display the Login screen whenever the application is started.
The system shall determine what person is attempting to log in (see paragraph
RN C2-M3, Get Person Record). If the given user ID does not match a known
user ID, the system shall display the screen (see paragraph RN C1000-M1,
Display) along with the error. If the given person is found, the system shall
ensure that the given password matches the password of the record (see
paragraph RN C2-M1, Test Password). If the given password does not match
the password in the record, the system shall display the screen (see paragraph
RN C1000-M1, Display) along with the error. Otherwise, the system shall
display the main screen (see paragraph RN C1001-M2, Display).
The Main Screen shall provide users the ability to navigate the system
screens.
The system shall require the user to log in to the system (see paragraph RN
C1000-M1, Display).
3.1.1.2.2 RN C1001-M2, Display
The system shall display the Change Request Screen (see paragraph RN
C1005-M1, Display).
The system shall display the Change Request Screen (see paragraph RN
C1005-M1, Display).
The system shall display the Manage Release Screen (see paragraph RN
C1006-M1, Display).
The system shall display the Query Changes Screen (see paragraph RN C1007-
M1, Display)
The Admin Screen shall provide navigation to the Persons screen and the
Systems screen.
3.1.1.3.1 RN C1002-M1, Display
The system shall display the Person screen (see paragraph RN C1003-M1,
Display).
The system shall display the System screen (see paragraph 3.1.1.5.3. RN
C1004-M1, Display).
This text field shall display the name field of the record. The user shall be
allowed to enter from 0 to 20 alphabetical characters.
This text field shall display the User Identifier field of the record. The user
shall be allowed to enter from 0 to 10 alphabetical characters.
This text field shall display the password field of the record. The user shall be
allowed to enter from 0 to 20 alphabetical characters.
3.1.1.4.4 RN C1003-A4, E-Mail
This text field shall display the e-mail address field of the record. The user
shall be allowed to enter from 0 to 50 alphanumeric characters and allow the
characters "." and "@".
This Boolean field shall display true if the record is for an administrator.
Otherwise, false shall be displayed. The user shall be allowed to set the
indicator to true or false.
The system shall display a list of systems for which the user has not been
assigned a role. The system shall allow the user to select a system from the
list for role assignment.
The system shall display a list of systems for which the user has already been
assigned a role. The system shall allow the user to select a system and remove
access for the given person.
The system shall present a list of roles to which the given user may be
assigned for the selected system.
The system shall retrieve all person records (see paragraph RN C2-M7, Get
Persons). The system shall set the person to the first person in the list. The
system shall retrieve the given person (see paragraph RN C2-M3, Get Person
Record). The system shall determine all systems that are associated with the
given person (see paragraph RN C3-M2, Get System Roles) and retrieve the
associated systems (see paragraph RN C1-M1, Get Systems). The system shall
retrieve all systems not associated with the person (see paragraph RN C1-M1,
Get Systems).
The system shall clear all fields on the screen. The system shall move all
Systems to the available list.
If the action Person does not exist, the system shall create a new Person (see
paragraph RN C2-M2, Create Person Record). The system shall save all person
information to Person (see paragraph RN C2-M5, Set Person Record). The
system shall then display the Person.
The system shall retrieve the given person (see paragraph RN C2-M3, Get
Person Record). The system shall determine all systems that are associated
with the given person (see paragraph RN C2-M4, Get System Roles) and
retrieve the associated systems (see paragraph RN C1-M1, Get Systems). The
system shall retrieve all systems not associated with the person (see
paragraph RN C1-M1, Get Systems).
The system shall delete the user record (see paragraph RN C2-M6, Delete
User). The system shall select the next person (see paragraph RN C1003-M4,
Select Person) for display.
This text field shall display the name field of the record. The user shall be
allowed to enter from 0 to 20 alphabetical characters.
The system shall present a list of all systems, except the given system. The
system shall allow the user to select the parent system from the given list.
The system shall retrieve all systems available (see paragraph RN C1-M1, Get
Systems). The system shall determine the parent of the first System in the list
(see paragraph RN C1-M12, Get Parent) and display the Parent System. All
systems except the System currently being displayed and the Parent System
shall be placed in the available Parents list.
The system shall set the System Name and System Parent attributes to blank.
If the action is creating a new System, the system shall create the new System
(see paragraph RN C1-M2, Create System). The system shall save the system
(see paragraph RN C1-M3, Save System). The system shall select the System
for display (see paragraph RN C1004-M5, Select System).
The system shall delete the System (see paragraph 3.2.1.6. RN C1-M4,
Remove System). The system shall select the next System in the list (see
paragraph RN C1004-M5, Select System) for display.
3.1.1.5.7 RN C1004-M5, Select System
The system shall retrieve the selected system (see paragraph RN C1-M6, Get
System). The system shall determine the parent of the first System in the list
(see paragraph RN C1-M12, Get Parent) and display the Parent System. All
systems except the System currently being displayed and the Parent System
shall be placed in the available Systems list and the available Parents list.
The system shall select the System at the top of the available Systems list
(see paragraph RN C1004-M5, Select System).
The Change Request Screen shall allow the user to create and maintain
change request.
This text field shall display the name field of the record. The user shall be
allowed to enter from 0 to 20 alphabetical characters.
The system shall present a list of all systems. The system shall allow the user
to select the parent system from the given list.
The system shall present a list of all problem types. The system shall allow the
user to select the problem type from the given list.
Note The allowable problem types are Change Request, New System, Defect
Report, and Work Order.
3.1.1.6.4 RN C1005-A4, Description
The system shall present the description of the request. The system shall allow
the user to enter from 0 to 2048 characters to describe the request.
If a Work Request was given, the system shall retrieve the Work Request (see
paragraph RN C5-M3, Get Work Request). The system shall retrieve all
available systems (see paragraph RN C1-M1, Get Systems) and place them
into a list. If a Work Request was given, the assigned System shall be selected.
Otherwise, the system shall select the first System in the list. The system shall
retrieve all Releases associated with the given system (see paragraph RN C1-
M7, Get Releases) and place them into a list. If a Work Request was given, the
assigned Release shall be selected. Otherwise, the system shall select the first
Release in the list.
If this action is creating a new Work Request, the system shall create a new
Work Request of the appropriate type (see paragraph RN C5-M1, Create Work
Request). The system shall ensure the saving of the Work Request (see
paragraph RN C5-M2, Save Work Request). If no error is returned, the system
shall display the Work Request Screen with the Work Request (see paragraph
RN C1005-M1, Display). If an error is returned, the system shall display the
error along with the unsaved information.
The system shall abandon the action and display the Change Request Screen
(see paragraph RN C1005-M1, Display).
The system shall display the Change Request Screen with the given Work
Request (see paragraph RN C1005-M1, Display).
3.1.1.6.9 RN C1005-M5, Select Type
The system shall display the only the Work Requests of the given type.
The system shall display the Change Request Screen with the given Work
Request (see paragraph RN C1005-M1, Display).
The Manage Release Screen shall allow the user to add and modify releases
associated with the given system.
The system shall present a list of all available systems with the currently
selected system highlighted. The system shall allow the user to select a system
from the given list.
The system shall present a list of phases with the currently selected phase
highlighted. The system shall allow the user to select Requirements, Design,
Code, Test, Deployment, or Completed for the phase.
The system shall present the estimated start date. The system shall allow the
user to enter an estimated start date.
The system shall present the estimated completion date. The system shall
allow the user to enter an estimated completion date.
3.1.1.7.5 RN C1006-A5, Start
The system shall present the start date. The system shall allow the user to
enter a start date.
The system shall present the completed date. The system shall allow the user
to enter a completed date.
The system shall present a list of all change orders currently associated with
the release. The system shall allow the user to select a change from the given
list and request that it be moved to the Unassigned List.
The system shall present a list of all change orders currently associated with
the system but not associated with any release. The system shall allow the
user to select a change from the given list and request that it be moved to the
Assigned List.
The system shall retrieve all Systems (see paragraph RN C1-M1, Get Systems)
for which the user plays the role of Project Manager or CCB (see paragraph RN
C3-M2, Get System Roles) and place them into a list. If no System was given,
the system shall select the first System in the list as the active System. The
system shall retrieve all Releases for the active System (see paragraph RN C1-
M7, Get Releases) and place them into a list. If no Release was given, the
system shall set the first Release as the active Release. The system shall
retrieve all Change Request associated with the active Release (see paragraph
RN C4-M9, Get Change Orders) and place them into a list. The system shall
retrieve all Change Orders associated with the System but not currently
assigned to any Release (see paragraph RN C1-M15, Get Work Requests).
3.1.1.7.10 RN C1006-M2, Select Unassigned Orders
The system shall make the currently selected unassigned Change Order the
active Change Order for assignment.
The system shall assign the active, unassigned Change Order to the current
Release (see paragraph RN C1-M9, Assign Change to Release).
The system shall save changes to the version (see paragraph RN C1-M10,
Save Release).
The system shall display the Manage Release Screen with the selected System
(see paragraph RN C1006-M1, Display).
The system shall set all fields blank. The system shall display all unassigned
Change Orders in a list format.
The system shall make the currently selected assigned Change Order the
active Change Order for assignment.
The system shall display the Manage Release Screen with the current System
and selected Release (see paragraph RN C1006-M1, Display).
3.1.1.7.17 RN C1006-M9, Set Approve Work
If the user has the role of CCB (see paragraph RN C3-M2, Get System Roles)
for the current system, the system shall set the Release for Work for the
current Release on the screen.
If the user has the role of CCB (see paragraph RN C3-M2, Get System Roles)
for the current system, the system shall set the Approved for Release to true
for the current Release on the screen.
The Query Change Screen shall allow the user to query the system to find
changes, based on different criteria.
The system shall allow the user to enter the request number.
The system shall present a list of all available systems. The system shall allow
the user to select a system from the given list.
The system shall present a list of all available releases associated with the
selected system. The system shall allow the user to select a release from the
given list.
The system shall present a list of all users that have entered a work request.
The system shall allow the user to select a user from the given list.
The system shall present a list of all phases a work order may be in. The
system shall allow the user to select a phase from the given list.
The system shall retrieve all Systems (see paragraph RN C1-M1, Get Systems)
and place them into a list. The system shall set the first System in the list to
the active System. The system shall retrieve all Releases for the active System
(see paragraph RN C1-M7, Get Releases) and place them into a list. The
system retrieve all Persons that have submitted a change request (see
paragraph RN C2-M7, Get Persons) and place them into a list. The system shall
populate the list for Phase of Change.
The system shall include all selections made by the user into the criteria used
to retrieve changes.
The system shall retrieve all changes that meet the given criteria (see
paragraph RN C5-M4, Get Work Requests). The system shall display the Query
Results Screen (see paragraph RN C1008-M1, Display).
The Query Results Screen shall present the user with all work requests that
were returned from a given query. The system shall allow the user to select a
work request.
The system shall present the System with which each Work Request that is
returned is associated.
The system shall present the problem type of each Work Request returned
from the query.
The system shall present the name of the user that submitted the Work
Request for each of the Work Requests returned from the query.
The system shall display the Change Request Screen with the given Work
Request (see paragraph RN C1005-M1, Display).
3.2 Classes/Objects
This section specifies all classes in the business domain for the system.
The System class represents the software systems that will be managed by the
Change Management System. The system class will include a collection of
Versions and Work Request.
The Change Management System shall maintain the name of each system
managed. The Name shall be inclusively between 1 and 20 alphabetical
characters long and must be unique to the system.
The system shall return the set of systems that meet the criteria given.
The system shall determine Persons related to the system (see paragraph RN
C3-M2, Get System Roles) and remove each of those relationships (see
paragraph RN C3-M4, Delete System Role). The system shall retrieve any
Work Request related to the System (see paragraph RN C5-M4, Get Work
Requests) and delete each request (see paragraph RN C5-M5, Delete Work
Requests). The system shall retrieve any related Versions (see paragraph RN
C4-M1, Get Releases) and delete each version (see paragraph RN C4-M7,
Delete Release).
The system shall return all Releases associated with the given System that
match the given criteria.
The system shall create a new Release (see paragraph RN C4-M4, Create
Release).
If the Release is new, the system shall create a Release (see paragraph RN C4-
M4, Create Release). The system shall save all given values (see paragraph RN
C4-M5, Save Release). The system shall ensure that all assigned Change
Orders are assigned to the Release (see paragraph RN C4-M3, Assign
Changes). If the status has changed, the system shall set the Release status
(see paragraph RN C1-M11, Set Release Status).
The system shall set the Release status (see paragraph RN C4-M6, Set Release
Status).
The system shall add the Work Request to the collection of Work Request for
the system. If the Work Request references a Release, the system shall add
the Work Request to the release (see paragraph RN C1-M9, Assign Change to
Release).
The system shall remove the Work Request from the collection of Work
Request for the system. If the Work Request references a Release, the system
shall remove the Work Request to the release (see paragraph RN C4-M8,
Remove Change Order).
The Person class represents the users of the Change Management System. The
Person class shall include a collection of System Roles that specify a specific
role for a specific system. The Person class shall be related to zero or more
Work Requests.
The system shall maintain the name of the person. The name will be
inclusively between 1 and 20 alphabetical characters long.
The system shall maintain the user ID or login ID for the person. The login ID
shall be inclusively between 1 and 10 alphanumeric characters long and must
be unique to the system.
The system shall maintain the password for the person. The password shall be
inclusively between 1 and 10 alphanumeric characters long.
The system shall return true if the given password matches the Password.
3.2.2.6 RN C2-M2, Create Person Record
The system shall determine whether the given user ID can be found. If the
user ID is found, the system shall return the Person object for the given user
ID. If the user ID cannot be found, the system shall return nothing.
The system shall return each System associated with the Person and the Role
the Person plays on the given System.
The system shall set all attributes to the given values. The system shall delete
all System Roles (see paragraph RN C3-M4, Delete System Role). The system
shall add each System Role for the Person (see paragraph RN C3-M1, Add
System Role).
The system shall determine each System the Person is associated with (see
paragraph RN C2-M4, Get System Roles) and remove each System Role (see
paragraph RN C3-M4, Delete System Role). The system shall then remove the
Person.
The System Role class represents the relationship between a Person object and
a System object. The system Role object shall include a reference to a person
object and a reference to a system object.
The system shall maintain an enumerated value to indicate the role a person
plays for a given system. The role shall be User, Analyst, Project Manager, or
CCB.
The system shall set the given role to the Role attribute and record the Person
and the related System.
The system shall return all system roles for the given user ID.
The system shall set the System Role to the given roles.
The system shall maintain a release number for each Version/Release. The
number shall be 6 numeric characters long.
The system shall maintain a date value to represent the Estimated Start Date.
The system shall maintain a date value to represent the Start Date.
The system shall maintain a date value to represent the Estimated Completion
Date.
The system shall maintain a date value to represent the Completion Date.
The system shall maintain an enumerated value to indicate the current phase
of the release. The system shall allow the values of Created, Analysis
Complete, Planned, Approved, Built, Tested, Fielded, or Complete.
The system shall return the identified Release. If the Release cannot be found,
the system shall return nothing.
The system shall assign the given Change Order to the Release.
The system shall set the Release Status to the given value.
The system shall remove the given Change Order from the collection of
Change Requests for the Release.
The Work Request class represents requests to perform some work for the
requestor. This class is an abstract class and serves as the base class for Work
Order and Change Order. The Work Request class shall have a collection of
Work History objects to record all changes.
The system shall maintain the identifier of the person that submitted the
request.
The system shall maintain a date value to represent the date the request was
made.
The system shall maintain the identifier of the person assigned to the request.
The system shall maintain a string to represent the description of the request.
The system shall allow the value to be 0 to 2048 characters long.
The system shall maintain a string to represent the remarks about the
request. The system shall allow the value to be 0 to 2048 characters long.
The system shall maintain an integer value between 1 and 6 to represent the
priority of the request.
The system shall create the Work Request of the appropriate type and create a
Change History to record the event (see paragraph RN C6-M1, Create Change
History) The system shall add the Work Request to the appropriate system
(see paragraph RN C1-M12, Get Parent).
The system shall save the Work Request information. If the status has
changed, the system shall ensure the status change is allowed (see paragraph
RN C5-M6, Check Status). If an error is returned, the system returns the error
to the User. If the System has changed, the system shall remove the change
from the System (see paragraph RN C1-M14, Remove Work Request) and then
assign the Work Request to the given System (see paragraph RN C1-M13, Add
Work Request).
The system shall return a Work Request object of the appropriate type for the
given Work Request ID. If the Work Request ID could not be found, the system
shall return null.
The system shall return the Work Request that matches the given criteria.
If the Work Request is a Work Order, the system shall check the status of the
Work Order (see paragraph RN C7-M1, Check Status). Otherwise, the system
shall check the status of the Change Order (see paragraph RN C8-M1, Check
Status). If no errors are returned, the system shall create a Change History
(see paragraph RN C6-M1, Create Change History).
The system shall maintain the state of the artifact before the change. The
system shall allow the values to be Assigned, Cancelled, Completed, Drafted,
Duplicate, Incident Reported, In Progress, On Hold, Submitted, Verified,
Approved for Release, Assigned to Release, Change Order Reported, or Initial
Analysis Complete.
The system shall maintain the state of the artifact after the change is applied.
The system shall maintain a date and time value to represent date and time
the change occurred.
The system shall create a Change History and add the Old State and New
State to the values given. The system shall set the Date and Time to the
current system date and time.
The Work Order class represents a request to perform some work for the
requestor. The work does not require a change to a software baseline.
The system shall maintain the problem area requiring work. The allowable
values are System Configuration, Software Installation, and User Error.
The system shall ensure that the given person may change the status from the
old status to the new status. Otherwise, the system shall return the error
"Change Not Allowed."
1. If the given Role is "User," the system shall ensure the given status
change is
If the given Role is "Analyst," the system shall ensure the given status
change is
If the given Role is "Project Manager," the system shall ensure the given
status change is
The Change Order class represents a request to perform some work for the
requestor. The work does require a change to software baseline. This class is
an abstract class and serves as the base class for Defect Reports, Change
Request, and New System.
The system shall ensure that the given person may change the status from the
old status to the new status. Otherwise, the system will return the error
"Change Not Allowed."
a. If the given Role is "User," the system shall ensure that the given status
change is
b. If the given Role is "Analyst," the system shall ensure that the given status
change is
c. If the given Role is "Project Manager," the system shall ensure that the
given status change is
d. If the given Role is "CCB," the system shall ensure that the given status
change is
d.1. "Initial Analysis Complete" to "Disapproved" or
The system shall maintain a release number to represent the release number
in which the defect was introduced. The number shall be 6 numeric characters
long.
The system shall maintain the phase in which the defect was introduced into
the system. The allowable values are Requirements, Design, and Code.
The system shall maintain a string to represent the test description in which
the defect was discovered. The allowable values are 0 to 255 characters.
The system shall maintain the severity of the defect. The allowable values are
0, 1, 2, 3, or 4.
The New System class represents a request for a new software system.
The system shall process all user requests within 10 seconds and return the
appropriate screen.
Logical database requirements shall be taken from the attributes of all classes
specified in paragraph 3.2 above. All of the above shall require persistence for
all attributes specified.
The application shall be designed to allow users to access all functions from a
Web browser.
3.7.1 Reliability
The system shall have no more than one failure per calendar week.
3.7.2 Availability
The system shall be available during the working day. The working day is
defined as 8:00 a.m. until 5:00 p.m. Eastern Standard Time.
3.7.3 Security
The system shall ensure that no user is allowed to modify data without proper
authentication.
3.7.4 Maintainability
3.7.5 Portability
Jacobson, Ivar, Grady Booch, and James Rumbaugh. The Unified Software
Development Process. Reading, Massachusetts: Addison-Wesley, 1999.
18881
FC
Figure_11.4 Employee inheritance tree
20996
FC
Figure_10.3 System class
69663
FC
Figure_10.1 Car class
86706
FC
Figure_10.2 Mammal class
[SYMBOL] [A] [C] [E] [F] [G] [I] [M] [O] [P] [S] [T] [U] [V]
Entities
Events 2nd 3rd 4th
[SYMBOL] [A] [C] [E] [F] [G] [I] [M] [O] [P] [S] [T] [U] [V]
Functional Requirements
[SYMBOL] [A] [C] [E] [F] [G] [I] [M] [O] [P] [S] [T] [U] [V]
Generalization 2nd
Guard Conditions
[SYMBOL] [A] [C] [E] [F] [G] [I] [M] [O] [P] [S] [T] [U] [V]
Incremental
Inheritance
Interface 2nd 3rd 4th 5th 6th 7th
Interviewing
[SYMBOL] [A] [C] [E] [F] [G] [I] [M] [O] [P] [S] [T] [U] [V]
Maintenance 2nd
[SYMBOL] [A] [C] [E] [F] [G] [I] [M] [O] [P] [S] [T] [U] [V]
Object
[SYMBOL] [A] [C] [E] [F] [G] [I] [M] [O] [P] [S] [T] [U] [V]
Peer Review
Polymorphism 2nd 3rd
[SYMBOL] [A] [C] [E] [F] [G] [I] [M] [O] [P] [S] [T] [U] [V]
Sequence diagram
Specification 2nd 3rd 4th 5th 6th 7th 8th 9th 10th
State 2nd 3rd 4th 5th 6th 7th 8th 9th 10th 11th 12th 13th
14th 15th 16th 17th 18th 19th 20th 21st
State transition diagram 2nd 3rd 4th 5th
stopped
Storyboard
Swim Lanes
Synchronization Bars 2nd
[SYMBOL] [A] [C] [E] [F] [G] [I] [M] [O] [P] [S] [T] [U] [V]
Tailoring
Test Tree 2nd
Traceability
Transitions 2nd
[SYMBOL] [A] [C] [E] [F] [G] [I] [M] [O] [P] [S] [T] [U] [V]
Verifiability