Requirements: An Introduction: Scott Mcewen
Requirements: An Introduction: Scott Mcewen
Level: Introductory
16 Apr 2004
Do these stories sound familiar? Why do things like this happen? According to a
recent survey by the Standish Group1 of more than 352 companies reporting on
more than 8,000 software projects:
31 percent of all software projects are canceled before they are completed
(a waste of $81 billion).
53 percent of projects cost 189 percent of their original estimate.
In large companies, 9 percent of projects are on time and within budget.
In small companies, 16 percent of projects are on time and within budget.
The Standish Group survey also asked respondents to identify the causes of
these failures. Table 1 shows the top three reasons why projects are "impaired."
Project scoping
Cost estimating
Budgeting
Project scheduling
Software design
Software testing
Documentation and training manuals
Requirements are not requirements unless they are written down. In other words,
neither hallway conversations nor "mental notes" constitute requirements. We
typically capture requirements in three separate documents:
1. Stakeholder Needs
2. Software Features
3. Software Requirements Specification
Using these three separate documents also helps to simplify the process of
requirement reviews. Although an executive manager might be a reader/approver
for the Stakeholder Needs and Software Features documents, he/she may
delegate responsibility for reading and approving the more detailed Software
Requirements Specification. Maintaining separation among these different
documents allows specific readers to understand specific parts of the system. It
also promotes better accountability -- a key element for a successful software
development process.
Documenting stakeholder needs
Let's look at what each of these documents contains (see Figure 1). We'll start
with the Stakeholder Needs document.
Stakeholder needs, which are part of the problem domain, describe what
stakeholders require for a successful project. In other words, needs describe
what the application should do to help improve or lower the cost of a business
process, increase revenue, or meet regulatory or other obligations.
You should identify (and recruit) at least one representative from each
stakeholder class who will speak for the entire class. Also, document your list of
stakeholders so that everyone knows who is representing each class.
You can elicit needs from stakeholders using various techniques, including one-
on-one meetings, questionnaires, storyboarding, and Joint Application
Development (JAD) sessions. Explanations of these specific techniques would
be beyond the scope of this article, so for now, just be aware that how you ask
questions and the format you use are important aspects of the process.
Note that this need requirement provides little detail, but it clearly conveys what
the client wants at a high level. Ambiguity is expected at this stage; you will
capture more detail later.
But not all the needs you gather will describe system functionality. For example,
a stakeholder from procurement or finance might say, "The budget for the initial
implementation of the application help desk project cannot exceed $350
thousand." Of course, this perfectly valid need might conflict with other
stakeholders' needs that might cause the budget to exceed $350 thousand;
resolving conflicting needs is a normal part of the requirements management
process. However, in the beginning, you should focus on eliciting and recording
the perspective of each stakeholder; conflict resolution can come later in the
process.
After you have defined stakeholder needs, you must translate them into a set of
distinct system features. What's the difference between needs and features?
Needs do not indicate a particular solution; they simply describe the business
need. For example, if a stakeholder says, "We need to streamline the help desk's
application support process because we can't keep up with the calls," that person
is expressing a need that the development team can translate into a feature.
A feature is a service that the system provides to fulfill one or more stakeholder
needs.2
It is important for the development team to understand the distinction between
needs and features and to record them in separate documents. Why must they
separate needs from features? Needs are part of the problem domain, and
features are part of the solution domain. It is critically important to fully
understand the problem domain before deciding on a solution; often, you will find
opportunities to generalize the solution once you fully understand the problem. In
other words, by separating needs from features, you can find a common set of
features that will meet multiple needs. Like the Stakeholder Needs document, the
Software Features document should be available to all team members
throughout the process. And it is important to maintain traceability from each
feature to its corresponding need(s).
Let's return to our example of a help desk support application. Table 2 shows
three stakeholder requests expressed as needs.
After you analyze and generalize needs and features, it's time to move deeper
into the solution domain by analyzing and capturing the system requirements.
Now we have enough understanding to define a requirement as:
Simply put, requirements must satisfy one or more of the following criteria:
1. Contract obligations
2. Standards
3. Desired needs and features
Here are some qualities that should characterize the descriptions in your
Software Requirements Specification document:
1. Use cases
2. Functional capabilities
3. Business rules
Use cases define a step-by-step sequence of actions between the user and the
system. Organizations are rapidly adopting use cases as a means to
communicate requirements because they:
The end result of a use case is a complete requirement. In other words, when
you communicate via uses cases, you don't leave it up to the developers to
determine the application's external behavior. Specifying the format and details
for creating a use case goes beyond the scope of this article, but it is important to
capture use cases using a standard template that contains all the components of
a complete specification. These include a use case diagram, primary and
assisting actors, triggering events, use case descriptions, preconditions, post
conditions, alternative flows, error and exception conditions, risks and issues,
functional capabilities, and business rules.
Note that use cases do not result in requirements until you define functional
capabilities and any business rules that apply to the use case.
Functional capabilities define what specific action the system should take in a
given situation. You can relate functional capabilities directly to a specific use
case or define them globally for the entire system. A functional capability for our
example application might be, "When creating the support request, populate the
"created by" field with the user's logon id."
Business rules state the condition under which a use case is applicable and the
rule to be applied. For instance, a business rule related to a use case might
state, "Only the system administrator may modify the name of the customer in
use case UC01." Like functional capabilities, business rules can be directly
related to a use case or defined globally for the entire system.
1. Usability
2. Reliability
3. Performance
4. Supportability
5. Security
Usability describes the ease with which the system can be learned or used. A
typical usability requirement might state:
The system should allow novice users to install and operate it with little or
no training.
The end user shall be able to place an order within thirty seconds.
The end user shall be able to access any page within four seconds.
Reliability describes the degree to which the system must work for users.
Specifications for reliability typically refer to availability, mean time between
failures, mean time to repair, accuracy, and maximum acceptable bugs. For
example:
All Web pages must download within three seconds during an average
load, and five seconds during a peak load.
While executing a search, the system must be able to display 500 search
results per page.
The system shall allow users to create new workflows without the need for
additional programming.
The system shall allow the system administrator to create and populate
tax tables for the upcoming tax year.
Security refers to the ability to prevent and/or forbid access to the system by
unauthorized parties. Some examples of security requirements are:
Conclusion
It is typically very costly to fix requirement errors that remain undiscovered until
all the code has been written. Use cases can help you avoid such errors by
communicating requirements to all project stakeholders; developing the system
in iterations will help you identify what requirements you might need to specify in
more detail or change.