Chapter 22: Developing the Supplemental Specification
A. Nonfunctional requirements are the most
important part of the supplemental spec:
1. These are “Attributes of the system” or its
environment and must be managed well, just like functional requirements
(features, etc.)
2. As a requirements
manager --
Your goal on both
functional and
nonfunctional requirements
is to capture
requirements in a way which shows
how the system must
function or
operate,
a way that leads to
progressive elaboration during development
& testing
and so satisfies
customer requirements.
With functional requirements, we employ
use cases for this.
With nonfunctional requirements, we
employ scenarios for this.
3. What are some of these nonfunctional
requirements?
·
Leffingwell & Widrig’s “Nonfunctional” (quality) requirements to consider
include these:
o
Usability
o
Reliability
o
Performance
o
Supportability
4. How to capture these nonfunctional
requirements in Scenarios (from
Bass, et al, p. 75), in “a way that
leads to progressive elaboration during development & testing and so
satisfies customer requirements” :
Source
of stimulus: This is some
entity (a human, a computer system, or any other actuator) that generated the
stimulus.
Stimulus: The stimulus is a condition that needs
to be considered when it arrives at a system.
Environment: The stimulus occurs within certain
conditions. The system may be in an
overload condition or may be running when the stimulus occurs, or some other
condition may be true.
Artifact:
Some artifact is stimulated. This may be the whole system or some pieces
of it.
Response:
The response is the activity undertaken after
the arrival of the stimulus.
Response
measure: When the response occurs, it should be
measurable in some fashion so that the requirement can be tested.
à We’re going
to use Bass et al’s list of principal nonfunctional requirements (Availability,
Modifiability, Performance, Security, Testability, Usability) in our Template,
which otherwise is like that shown in Ch 22, because Bass has specific details
of these Scenarios associated with his principal nonfunctional requirements.
5. What
are these nonfunctional requirements, anyway? – a closer look (quote from
Bass et al, pp. 79+):
Availability – Concerned
with system failure and its associated consequences. A system failure occurs when the system no
longer delivers a service consistent with its specification. Availability is the probability that it will
be operational when it is needed. This
is defined as
mean time to
failure
a =
-------------------------------------------------------
mean
time to failure + mean time to repair
Reliability
and Serviceability are related measures, and you should know how these relate
to Availability. Reliability, for
example, is the probability the system will operate correctly in a specified
environment up till time t. So, say, if the system needs to operate for
10 hours at a time, that’s the reliability target. All these terms are often described as a part
of Dependability – See for example, http://www.cs.virginia.edu/~jck/cs651/slides/terminology.pdf
.
Modifiability – This is
about the cost of change. The two
concerns are (1) What can change (the artifact)? And
(2) When is that change made and who makes it (the
environment)?
Performance – Performance
is about timing. Events (interrupts,
messages, requests from users, or the passage of time) occur, and the system
must respond to them. Capacity is a
related issue. Basically, performance is
concerned with how long it takes the system to respond when an event occurs. Typically performance requirements focus-in
on the peak load that a system must handle, and try to characterize the
priorities and relative responsiveness expected during that most stressed
period of time.
The
calculation of system capacity
requires that one describe the operational
profile for that system – what does it have to do under different modes of
operation? Especially, what does is
normal operating load look like during the day, and what off-hours maintenance
activity must it handle?
Security – This is a
measure of the system’s ability to resist unauthorized usage while still
providing its services to legitimate users.
An attempt to breach security is called an attack (or threat) and can
take a number of forms, such as an attempt to access data or services or to
modify data, or an attempt to deny service to legitimate users.
Testability – This refers
to the ease with which software can be made to demonstrate its faults through
(typically) execution based testing. At
least 40% of the cost of developing well-engineered systems is taken up by
testing. In particular, testability
refers to the probability, assuming that the software has at least one fault
that it will fail on its next test
execution.
Usability – This is
concerned with how easy it is for the user to accomplish a desired task and the
kind of user support the system provides.
It can be broken down into (1) Learning system features, (2) Using the
system efficiently, (3) Minimizing the impact of errors, (4) Adapting the
system to user needs, and (5) Increasing confidence and satisfaction. We’ll talk more about usability later in this
class. Lots of good
references to this subject out there on the web, etc. E.g., the Yale Web Style Guide, as tips for
gathering requirements for web-based interfaces – See http://www.webstyleguide.com/ .
B. What else goes into the Supplementary
Spec?
·
Design Constraints --
o
Restriction of Design Options (e.g. what database to use)
o
Process (e.g. must use ISO or IEEE software engineering standards)
o
Regulations (e.g. FDA)
o
Why are these in the requirements, if they involve
design? Because it is part of what the customer wants or needs in the
system to be developed.
·
“Other” Requirements (Leffingwell’s
categorization) --
o
Deliverables (e.g. user documentation, other artifacts to be
supplied by the developer – may in part depend on who’s doing the maintenance
o
Technical Support
o
Training Requirements
o
Some organizations will include these in the “nonfunctional
requirements” (as in Bass, et al, above)
·
Don’t get bogged down on, say, whether something is a
nonfunctional requirement or a design constraint – just make your best guess
and include it!
C. How to do the Supplementary Spec for your
project:
·
Supplemental Specification template:
http://www.rose-hulman.edu/class/csse/csse371/Handouts/SupplementarySpecTemplate.htm
(includes description of nonfunctional scenarios, and adjusted to show Bass et al’s
list of nonfunctional requirements)
·
Supplemental Specification examples (not necessarily in same
format as template and don’t show nonfunctional scenarios):
http://www.rose-hulman.edu/class/csse/csse371/Handouts/SupplementarySpecExamples.htm
·
We also will use the Scenario Format described in A 4, above, for non-functional requirements.
D. In class – Let’s try doing one of these
together, say, for security. (Ref the Template
document.)
E. Exercise – In your new teams, use the
Supplementary Spec template to write two (new) scenarios for performance based on what you know of
the term project. Then do one for availability.
[1] Software Architecture in Practice, Second Edition, by Len Bass, Paul Clements and Rick Kazman. Addison-Wesley, 2003, ISBN 0-321-15495-9, pp. 71+.