Requirements Engineering For Software and Systems
Requirements Engineering For Software and Systems
Requirements Engineering For Software and Systems
Engineering for
Software and
Systems
Titles in the
Auerbach Series on Applied Software Engineering
Phillip A. Laplante, Pennsylvania State University, Series Editor
Phillip A.Laplante
CRC Press
Taylor & Francis Group
Boca Raton London New York
This book contains information obtained from authentic and highly regarded sources. Reasonable
efforts have been made to publish reliable data and information, but the author and publisher can-
not assume responsibility for the validity of all materials or the consequences of their use. The
authors and publishers have attempted to trace the copyright holders of all material reproduced
in this publication and apologize to copyright holders if permission to publish in this form has not
been obtained. If any copyright material has not been acknowledged please write and let us know so
we may rectify in any future reprint.
Except as permitted under U.S. Copyright Law, no part of this book may be reprinted, reproduced,
transmitted, or utilized in any form by any electronic, mechanical, or other means, now known or
hereafter invented, including photocopying, microfilming, and recording, or in any information
storage or retrieval system, without written permission from the publishers.
For permission to photocopy or use material electronically from this work, please access www.copy-
right.com (http://www.copyright.com/) or contact the Copyright Clearance Center, Inc. (CCC), 222
Rosewood Drive, Danvers, MA 01923, 978-750-8400. CCC is a not-for-profit organization that pro-
vides licenses and registration for a variety of users. For organizations that have been granted a
photocopy license by the CCC, a separate system of payment has been arranged.
Trademark Notice: Product or corporate names may be trademarks or registered trademarks, and
are used only for identification and explanation without intent to infringe.
Laplante, Phillip A.
Requirements engineering for software and systems / Phillip A. Laplante.
p. cm. -- (Auerbach series on applied software engineering)
Includes bibliographical references and index.
ISBN 978-1-4200-6467-4 (hardcover : alk. paper)
1. Software engineering. 2. System design. 3. Requirements engineering. I.
Title.
QA76.758.L326 2009
005.1--dc22 2009002140
Acknowledgments.......................................................................................... xv
Introduction.................................................................................................xvii
About the Author..........................................................................................xxi
1. Introduction to Requirements Engineering............................................1
Motivation....................................................................................................1
What Is Requirements Engineering?.............................................................2
You Probably Don’t Do Enough Requirements Engineering.........................3
What Are Requirements?..............................................................................4
Requirements Versus Goals.................................................................4
Requirements Level Classification.......................................................4
Requirements Specifications Types......................................................6
Functional Requirements...........................................................6
Nonfunctional Requirements.....................................................7
Domain Requirements.............................................................10
Domain Vocabulary Understanding..................................................11
Requirements Engineering Activities..........................................................11
Requirements Elicitation/Discovery..................................................11
Requirements Analysis and Reconciliation........................................12
Requirements Representation and Modeling.....................................12
Requirements Validation...................................................................12
Requirements Management...............................................................13
The Requirements Engineer........................................................................13
Requirements Engineering Paradigms........................................................13
Requirements Engineer as Software Systems Engineer......................14
Requirements Engineer as Subject Matter Expert..............................14
Requirements Engineer as Architect..................................................14
Requirements Engineer as Business Process Expert...........................14
Ignorance as Virtue............................................................................15
Role of the Customer?.................................................................................15
vii
viii Contents
Repertory Grids.................................................................................56
Scenarios............................................................................................57
Task Analysis.....................................................................................57
User Stories........................................................................................58
Viewpoints.........................................................................................59
Workshops.........................................................................................60
Elicitation Summary...................................................................................60
Which Combination of Requirements Elicitation Techniques
Should Be Used?................................................................................60
Prevalence of Requirements Elicitation Techniques...........................63
Elicitation Support Technologies................................................................63
Using Wikis for Requirements Elicitation.........................................63
Mobile Technologies..........................................................................65
Content Analysis...............................................................................65
References.................................................................................................. 66
4. Writing the Requirements Document...................................................69
Requirements Representation Approaches..................................................69
IEEE Standard 830-1998............................................................................71
IEEE Standard 830 Recommendations on Representing
Non-Functional Requirements..........................................................72
IEEE Standard 830 Recommendations on Representing
Functional Requirements...................................................................73
Operating System.....................................................................74
Command Validation...............................................................75
ISO/IEC Standard 25030..................................................................76
Use Cases....................................................................................................78
Behavioral Specifications............................................................................79
The Requirements Document.....................................................................81
Users of a Requirements Document...................................................82
Requirements Document Requirements............................................82
Preferred Writing Style.............................................................83
Text Structure..........................................................................83
Best Practices and Recommendations........................................................ 84
References...................................................................................................86
5. Requirements Risk Management..........................................................87
What Is Requirements Risk Management?.................................................87
Requirements Validation and Verification...................................................89
Techniques for Requirements V&V.................................................. 90
Goal-Based Requirements Analysis......................................... 90
Requirements Understanding...................................................91
x Contents
Theorem Proving.............................................................................128
Program Correctness..............................................................128
Hoare Logic............................................................................129
Model Checking..............................................................................133
Objections, Myths, and Limitations.........................................................134
Objections and Myths.....................................................................134
Limitations of Formal Methods.......................................................135
Final Advice..............................................................................................136
References.................................................................................................137
7. Requirements Specification and Agile Methodologies........................139
Introduction to Agile Methodologies........................................................139
Principles Behind the Agile Manifesto.............................................140
Extreme Programming (XP).....................................................................142
Scrum.......................................................................................................143
Requirements Engineering for Agile Methodologies.................................144
General Practices in Agile Methodologies........................................ 145
Agile Requirements Best Practices................................................... 145
Requirements Engineering in XP....................................................147
Requirements Engineering in Scrum...............................................147
Writing User Stories..................................................................................148
Agile Requirements Engineering...............................................................150
Challenges for Requirements Engineering in Agile Methodologies........... 152
Bibliography............................................................................................. 153
8. Tool Support for Requirements Engineering......................................155
Introduction............................................................................................. 155
Traceability Support.................................................................................156
Commercial Requirements Engineering Tools.......................................... 159
DOORS..........................................................................................160
Rational RequisitePro......................................................................160
Requirements and Traceability Management...................................160
CaliberRM......................................................................................160
QFD/Capture.................................................................................. 161
Open Source Requirements Engineering Tools......................................... 161
FreeMind......................................................................................... 161
Open Source Requirements Management Tool (OSRMT).......................163
FitNesse...........................................................................................166
Requirements Engineering Tool Best Practices.........................................167
References.................................................................................................168
9. Requirements Management.................................................................171
Introduction.............................................................................................171
Managing Divergent Agendas..........................................................171
xii Contents
Glossary.......................................................................................................229
Index............................................................................................................233
This page intentionally left blank
Acknowledgments
Dr. George Hacken of the New York Metropolitan Transportation Authority con-
tributed many ideas and inspiration used in Chapter 6, on formal methods.
Professor Larry Bernstein of Stevens Institute of Technology reviewed the first
draft of the manuscript and provided many suggestions for improvement.
Dr. Colin Neill and Dr. Raghu Sangwan of Penn State read portions of the text
and provided valuable feedback in many discussions.
Over the years, many students read drafts of portions of the text and provided
ideas, exercises, critical feedback, and examples. The author would like to particu-
larly mention Brad Bonkowski for contributing the prototype software require-
ments specification found in the appendix, and Jim Kelly, George Kniaz, Michelle
Reichart, Ann Richards, Ryan Oboril, Sam Okyne, and Julie Palmer. The author
would also like to thank the staff at Taylor & Francis—in particular John Wyzalek,
Acquisitions Editor, and Amy Rodriguez, Project Editor. The author also wishes to
thank his long-suffering wife, Nancy, and children Chris and Charlotte, for their
patience and support.
Of course, any errors of commission or omission are due to the author alone.
xv
This page intentionally left blank
Introduction
Audience
This book is intended for professional software engineers, systems engineers, and
senior and graduate students of software or systems engineering. Much of the mate-
rial is derived from the graduate level “Requirements Engineering” course taught at
Penn State’s Great Valley School of Graduate and Professional Studies, where the
author works. The typical student in that course has five years of work experience as
a software professional and an undergraduate degree in engineering, science, or busi-
ness. Typical readers of this book will have one of the following or similar job titles:
◾◾ Software engineer
◾◾ Systems engineer
◾◾ Sales engineer
xvii
xviii Introduction
◾◾ Systems analyst
◾◾ [XYZ] engineer (where “XYZ” is an adjective for most engineering disci-
plines, such as “electrical” or “mechanical”)
◾◾ Project manager
◾◾ Business analyst
◾◾ Technical architect
◾◾ Lead architect
Exemplar Systems
Before proceeding, three systems are presented that will be used for running exam-
ples throughout the book. These systems were selected because they involve appli-
cation domains with which most readers are bound to be familiar, and because
they cover a wide range of applications from embedded to organic in both indus-
trial and consumer implementations. Consider a domain, however, with which you
(and this author) are likely unfamiliar, say, mining of anthracite coal. Imagining
the obvious difficulties in trying to communicate about such a system highlights
the importance of domain understanding in requirements engineering. This topic
will be discussed at length in Chapter 1.
The first system to be introduced is an airline baggage handling system, prob-
ably similar to the system found in the bowels of every major airport and known to
“eat” your baggage. Check-in clerks and baggage handlers tag your bags at check-
in with a barcode ID tag. Then the baggage is placed on a conveyor belt where it
moves to a central exchange point, and is redirected to the appropriate auxiliary
conveyor for loading on an airplane-bound cart or a baggage carousel. Along the
way, the system may conduct some kind of image scan and processing to detect the
presence of unauthorized or dangerous contents (such as weapons or explosives). A
baggage handling system is an embedded, real-time system; that is, the software is
closely tied to the hardware, and deadline satisfaction is a key goal of the system.
The Denver International Airport tried to build a very sophisticated version of
such a system several years ago. The system used PCs, thousands of remote-controlled
carts, and a 21-mile-long track. Carts moved along the track, carrying luggage from
check-in counters to sorting areas and then straight to the flights waiting at airport
gates. After spending $230 million over 10 years, the project was cancelled.* Much
of the failure can be attributed to requirements engineering mistakes.
The second exemplar system is a point of sale system for one location of a large
pet store chain. This type of system would provide such capabilities as cashier
functions and inventory tracking, tax reporting, and end-of-year closeout. It
might handle self-checkout, coupon scanning, product returns, and more. This is
* de Neufville, R. (1994) The Baggage System at Denver: Prospects and Lessons, Journal of Air
Transport Management, 1(4) Dec., 229–236.
Introduction xix
You can use your imagination, consult the many resources that are available on
the Web, and have fun as you learn to “scope out” one or another of these systems.
Despite these best efforts and those of the reviewers and publisher, there are
still likely errors to be found. Therefore, if you believe that you have found an
error—whether it is a referencing issue, factual error, or typographical error, please
contact the author at plaplante@psu.edu. If your correction is accepted, you will be
acknowledged in future editions of the book.
Disclaimers
Great pains have been taken to disguise the identities of any organizations as
well as individuals that are mentioned. In every case, the names and even ele-
ments of the situation have been changed to protect the innocent (and guilty).
Therefore, any similarity between individuals or companies mentioned herein is
purely coincidental.
About the Author
xxi
This page intentionally left blank
Chapter 1
Introduction to
Requirements Engineering
Motivation
Very early in the drive to industrialize software development, Royce (1975) pointed
out the following truths:
There are four kinds of problems that arise when one fails to do ade-
quate requirements analysis: top-down design is impossible; testing
is impossible; the user is frozen out; management is not in control.
Although these problems are lumped under various headings to sim-
plify discussion, they are actually all variations of one theme—poor
management. Good project management of software procurements
is impossible without some form of explicit (validated) and govern-
ing requirements.
These truths still apply today, and a great deal of research has verified that devot-
ing systematic effort to requirements engineering can greatly reduce the amount
of rework needed later in the life of the software product and can improve various
qualities of the software cost effectively.
Too often systems engineers forego sufficient requirements engineering activ-
ity either because they do not understand how to do requirements engineering
properly or because there is a rush to start coding (in the case of a software product).
1
2 Requirements Engineering for Software and Systems
Clearly, these eventualities are undesirable, and it is a goal of this book to help engi-
neers understand the correct principles and practices of requirements engineering.
The bridge shall replace the existing span across the Brandywine River
at Creek Road in Chadds Ford, Pennsylvania, and shall be a cantilever
bridge of steel construction. It shall support two lanes of traffic in each
direction and handle a minimum capacity of 100 vehicles per hour in
each direction.
The changes we have made to Zave’s definition are in bold. We refer to this modified
definition when we speak of “requirements engineering” throughout this text. And
we will explore all the ramifications of this definition and the activities involved in
great detail as we move forward.
Don't know
Yes
52%
No
29%
believe that we can extrapolate the results of the response to this question to include
software engineers and systems engineers beyond the sample region of the survey.
◾◾ User requirements
◾◾ System requirements
◾◾ Software design specifications
A user requirement
1.2 The system shall be able to process 20 baggage events per minute in opera-
tional mode.
1.2.1 If more than 20 baggage events occur in a one-minute interval,
then the system shall …
1.2.2 [more exception handling] …
A user requirement
◾◾ The system shall accurately compute sale totals including discounts, taxes,
refunds, and rebates; print an accurate receipt; and update inventory counts
accordingly.
6 Requirements Engineering for Software and Systems
1.2 The system shall assign a unique sales ID number to each sale
transaction.
1.2.1 Each sales ID may have zero or more sales items associated with it,
but each sales item must be assigned to exactly one sales ID
◾◾ Functional requirements
◾◾ Nonfunctional requirements (NFRs)
◾◾ Domain requirements
Functional Requirements
Functional requirements describe the services the system should provide and how
the system will react to its inputs. In addition, the functional requirements need to
explicitly state certain behaviors that the system should not do (more on this later).
Functional requirements can be high level and general (in which case they are user
requirements in the sense that was explained previously) or they can be detailed,
expressing inputs, outputs, exceptions, and so on (in which case they are the system
requirements described before).
There are many forms of representation for functional requirements, from natu-
ral language (in our case, the English language), visual models, and the more rig-
orous formal methods. We will spend much more time discussing requirements
representation in Chapter 4.
Introduction to Requirements Engineering n 7
To illustrate some functional requirements, consider the following set for the
baggage handling system.
1.1 The system shall handle up to 20 bags per minute.
1.4 When the system is in idle mode, the conveyor belt shall not move.
1.8 If the main power fails, the system shall shut down in an orderly fashion
within 5 seconds.
1.41 If the conveyor belt motor fails, the system shall shut down the input feed
mechanism within 3 seconds.
For the pet store POS system, the following might be some functional
requirements:
4.1 When the operator presses the “total” button, the current sale enters the
closed-out state.
4.1.1 When a sale enters the closed-out state, a total for each non-sale
item is computed as number of items times the list price of the
item.
4.1.2 When a sale enters the closed-out state, a total for each sale item is
computed.
Nonfunctional Requirements
Nonfunctional requirements (NFRs) are imposed by the environment in which the
system is to operate. These kinds of environments include timing constraints, qual-
ity properties, standard adherence, programming languages to be used, and so on.
Sommerville (2005) suggests the nonfunctional types depicted in Figure 1.2,
and we will discuss a few of these.
Many of these NFRs are beyond the control of the requirements engineer
and customer. For example, in the United States, privacy requirements are
typically based on certain legislation (such as the Health Information Patient
Privacy Act or HIPPA), as are safety requirements. Standards requirements are
based on compliance with national or international standards. Interoperability
requirements may be partially under the control of the requirements engineer
and customer if the system in question is to operate in conjunction with other
systems controlled by the customer (if a third party controls the other systems,
then interoperability is an independent variable). Other nonfunctional require-
ments, such as delivery, usability, performance, and organization, are largely
under the control of the customer. Whatever the case, all of the nonfunctional
requirements need to be tracked by the requirements engineer, typically, using
an appropriate software tool.
To illustrate some nonfunctional requirements, consider the baggage handling
system. Some NFRs might include
8
Non-functional
requirements
Product requirements
◾◾ Efficiency
−− Performance (e.g., number of bags per minute)
−− Space (e.g., physical size of system, amount of memory, power consumption)
◾◾ Reliability (MTBF,* MTFF†)
◾◾ Portability (e.g., can it be used with other hardware?)
◾◾ Usability (amount of training required)
Organizational requirements
◾◾ Delivery (e.g., date of delivery, date when fully operational, training sessions,
updates)
◾◾ Implementation (e.g., full capability in first roll-out or phased capability)
◾◾ Standards (if there are industry standards for baggage handling systems)
External requirements
◾◾ Interoperability (e.g., with other equipment, communications standards)
◾◾ Ethical (e.g., security clearance for REs, professional certification)
◾◾ Legislative
−− Privacy (e.g., HIPPA, FERPA‡)
−− Safety (various OSHA§ regulations)
For the pet store POS system we might have these NFRs:
Product requirements
◾◾ Efficiency
−− Performance (e.g., time to finalize a sale transaction)
−− Space (e.g., physical size of system, amount of memory, power consumption)
◾◾ Reliability (MTBF, MTFF)
◾◾ Portability (e.g., can it be used with other hardware?)
◾◾ Usability (amount of training required)
Organizational requirements
◾◾ Delivery (e.g., date of delivery, fully operational, training sessions, updates)
◾◾ Implementation (e.g., full capability in first roll-out or phased?)
◾◾ Standards (if there are industry standards for POS systems)
External requirements
To conclude this discussion, we note that some NFRs are difficult to define precisely,
making them difficult to verify. Moreover, it is easy to confuse goals with NFRs.
Remember a goal is a general intention of a stakeholder, for example:
Domain Requirements
Domain requirements are derived from the application domain. These types of require-
ments may consist of new functional requirements or constraints on existing functional
requirements, or they may specify how particular computations must be performed.
In the baggage handling system, for example, various domain realities create
requirements. There are industry standards (we wouldn’t want the new system to
under-perform versus other airlines’ systems). There are constraints imposed by
existing hardware available (e.g., conveyor systems). And there may be constraints
on performance mandated by collective bargaining agreements with the baggage
handlers union.
For the pet store POS system, domain requirements are imposed by the conven-
tional store practices. For example:
The appendix also contains some NFRs for the Smart Home.
◾◾ requirements elicitation/discovery
◾◾ requirements analysis and reconciliation
◾◾ requirements representation/modeling
◾◾ requirements verification and validation
◾◾ requirements management
Requirements Elicitation/Discovery
Requirements elicitation/discovery involves uncovering what the customer needs
and wants. But elicitation is not like picking low-hanging fruit from a tree. While
12 Requirements Engineering for Software and Systems
some requirements will be obvious (e.g., the POS system will have to compute
sales tax), many requirements will need to be discovered/or teased from the cus-
tomer through well-defined approaches. This aspect of requirements engineering
also involves discovering who the stakeholders are; for example, are there any hid-
den stakeholders? Elicitation also involves determining the nonfunctional require-
ments, which are often overlooked.
Requirements Validation
Requirements validation is the process of determining if the specification is a
correct representation of the customers’ needs. Validation answers the question
“Am I building the right product?” Requirements validation involves various
semi-formal and formal methods, text-based tools, visualizations, inspections,
and so on.
Introduction to Requirements Engineering n 13
Requirements Management
One of the most overlooked aspects of requirements engineering, requirements
management involves managing the realities of changing requirements over time.
It also involves fostering traceability through appropriate aggregation and subordi-
nation of requirements and communicating changes in requirements to those who
need to know.
Managers also need to learn the skills to intelligently “push back” when scope
creep ensues. Using tools to track changes and maintain traceability can signifi-
cantly ease the burden of requirements management. We will discuss software tools
to aid in requirements engineering in Chapter 8 and requirements management
overall in Chapter 9.
Ignorance as Virtue
Berry (1995) suggested having both novices and experts in the problem domain
involved in the requirements engineering process. His rationale is as follows. The
“ignorant” people ask the “dumb” questions, and the experts answer these ques-
tions. Having the requirements engineer as the most “ignorant” person of the group
is not necessarily a bad thing, then, at least with respect to the problem domain
because it forces him to ask the hard questions and to challenge conventional beliefs.
Of course, the “ignorant” requirements engineer is completely in opposition to the
role of subject matter expert.
Berry also noted that using formal methods in requirements engineering is a
form of ignorance because a mathematician is generally ignorant about an applica-
tion domain before she starts modeling it.
◾◾ helping the requirements engineer understand what they need and want (elic-
itation and validation)
◾◾ helping the requirements engineer understand what they don’t want (elicita-
tion and validation)
◾◾ providing domain knowledge when necessary and possible
◾◾ alerting the requirements engineer quickly and clearly when they discover
that they or others have made mistakes
◾◾ alerting the requirements engineer quickly when they determine that changes
are necessary (really necessary)
◾◾ controlling their urges to have “aha moments” that cause major scope creep
◾◾ sticking to all agreements
In particular, the customer is responsible for answering the following four ques-
tions, with the requirements engineer’s help, of course:
Natural language problems result from the ambiguities and context sensitivity
of natural (human) languages. We know these language problems exist for every-
one, not just requirements engineers, and lawyers and legislators make their living
finding, exploiting, or closing the “loopholes” found in any laws and contracts
written in natural language.
We have already discussed the issue of domain understanding and have observed,
as have others, that the requirements engineer may be an expert in the domain in
which the system to be built will operate. System complexity is a pervasive problem
that faces all systems engineers, and this will be discussed shortly. The problems of
fully specifying system behavior and of missing behavior are also very challenging,
but there are some techniques that can be helpful in missing, at least, the most obvi-
ous functionality in a system.
Complexity
One of the greatest difficulties in dealing with the requirements engineering activi-
ties, particularly elicitation and representation, for most systems is that they are
“complex.” Without trying to invent a definition for “complexity,” we contend that
the challenges and complexity of capturing non-trivial behavior of any kind illus-
trate the notion of complex. Such difficulties are found in even the simplest of
“repeatable” human endeavors.
Imagine, for example, someone asked you to describe the first five minutes of
your morning from the moment you wake up. Could you do it with precision (try
it)? No, you could not. Why? There are too many possible different paths your
activities can take and too much uncertainty. Even with an atomic clock, you can’t
claim to wake up the same time every day (because even atomic clocks are imper-
fect). But of course, you wake up differently depending on the day of the week,
whether you are on vacation from work, if it is a holiday, and so on. You have to
account for that in your description. But what if you wake up sick? How does that
change the sequence of events? What if you accidentally knock over the glass of
water on your nightstand as you get up? Does that change the specification of the
activity? Or if you trip on your dog as you head to the bathroom? We could go on
with this example and repeat this exercise with other simple tasks such as mowing
the lawn or shopping for food. In fact, until you constrain the problem to the point
of ridiculousness, you will find it challenging or even impossible to precisely cap-
ture any non-trivial human activities.
Now consider a complex information or embedded processing system. Such a
system will likely have to have interactions with humans. Even in those systems
that do not directly depend on human interaction, it is the intricacy of temporal
behavior as well as the problems of unanticipated events that make requirements
elicitation and specification so difficult (and all the other requirements activities
hard too).
18 Requirements Engineering for Software and Systems
Rittel and Webber (1973) defined a class of complex problems that they called
“wicked.” Wicked problems have ten characteristics:
by the machine, and which actions of the environment are shared with the
machine.
NN All types of actions are relevant to requirements engineering, and they might
need to be described or constrained formally.
NN If formal descriptions focus on states, then the same basic principles apply in
a slightly different form.
NN The method of formal representation should follow the underlying organiza-
tion of the system. For example, a state-based system is best represented by a
state-based formalization.
4. The primary role of domain knowledge in requirements engineering is in sup-
porting refinement of requirements to implementable specifications.
NN Correct specifications, in conjunction with appropriate domain knowledge,
imply the satisfaction of the requirements.
NN Failure to recognize the role of domain knowledge can lead to unfilled require-
ments and forbidden behavior.
I1 O1
I2 Computer O2
System
In Om
Behavior
specified
Missing
functionality
Undesirable
and some
desirable
behavior
Unwanted
behavior and
Universe of all possible system behaviors desirable
behavior not
specified
Figure 1.4 Universe of all possible behaviors, desired behavior and specified
behavior.
The requirements engineer goes about his business and produces a specification
that is intended to be representative of the behavior desired by the customer (the
rightmost circle of Figure 1.4). Being imperfect, this specification captures some
(but not all) of the desired behavior, and it also captures some undesirable behavior.
The desired behavior not captured in the specified behavior is the missing function-
ality. The undesirable behavior that is captured is forbidden functionality.
The goal of the requirements engineer, in summary, is to make the left and right
circles overlap as much as possible and to discover those missing desirable behaviors
that are not initially encompassed by the specification (leftmost circle).
Recognizing that there is an infinite number of behaviors that could be excluded
from the desired behaviors of the system, we need to, nevertheless, focus on the very
worst of these. Therefore, some of the requirements that we will be discovering and
communicating will take the form
On a snowy January 13th in 1982 an Air Florida Boeing 737 jet departed from
Washington DC’s National Airport and crashed into the 14th Street Bridge less
than a mile from the airport. Of the 79 people on board the plane, only five sur-
vived. The plane also struck seven vehicles on the bridge, killing four motorists and
injuring another four.
The unfortunate passengers on the plane should have known that there was a
risk of the plane crashing, no matter how small that risk may have been. In some
cases, the passengers may have even taken out special crash insurance. But what
were the expectations of the motorists in the vehicles on the bridge who were killed
or injured? Surely, the thought of an airplane crashing into the bridge never crossed
their mind. For the motorists, therefore, this crash represented an unknown but
manifested uncertainty.
As an example of a forbidden behavior, consider the following for the baggage
handling system:
When the “conveyor jam” signal is set to the high state, the feed mecha-
nism shall not permit additional items to enter the conveyor system.
Exercises
1.1 What are some of the major objections and deterrents to proper require-
ments engineering activities?
1.2 Is requirements engineering necessary for “small” systems? Why or why
not?
1.3 What are factors that may cause customers to alter requirements?
1.4 What issues may possibly arise when a requirements engineer, who is not
a subject matter expert, enlists a subject matter expert to assist in defining
requirements.
1.5 List some representative user requirements, system requirements, and
software specifications for the pet store POS system.
1.6 List five typical functional requirements for the baggage handling
system.
22 Requirements Engineering for Software and Systems
1.7 List five forbidden functional requirements for the pet store POS
system.
1.8 Conduct some Web research to discover if there are any regulations or
standards (NFR) for Smart Home systems.
1.9 For the Smart Home system what are the “hazards?” That is, make a
list of what this system shall not do based on these regulations and any
other information you have.
References
Berry, D. (1995) The importance of ignorance in requirements engineering, Journal of Systems
and Software, 28:1, 179–184.
Berry, D.M. (1999) Software and house requirements engineering: Lessons learned in com-
bating requirements creep, Requirements Engineering Journal, 3(3&4): 242–244.
Berry, D.M. (2003) More requirements engineering adventures with building contractors,
Requirements Engineering Journal, 8(2):142–146.
Berry, D.M., and E. Kamsties (2000) The Dangerous ‘All’ in Specifications, Proceedings of
the Tenth International Workshop on Software Specification and Design (IWSSD’00),
San Diego, CA, 5–7 November.
Christensen, M., and C. Chang (1996) Blueprint for the ideal requirements engineer,
Software, March, p. 12.
Gorla, N., and Yan Wah Lam (2004) Who should work with whom?: Building effective
software project teams, Communications of the ACM, 47(6): 79–82.
Laplante, P.A., and C. Neill (2004) The demise of the waterfall model is imminent and other
urban myths of software engineering, ACM Queue, 1(10): 10–15.
Neill, C.J., and P.A. Laplante (2003) Requirements engineering: The state of the practice,
Software, 20(6): 40–45.
Rittel, H., and M. Webber (1973) Dilemmas in a general theory of planning, Policy
Sciences, 4:155–169.
Royce, W. (1975) Practical Strategies for Developing Large Software Systems, Boston, MA:
Addison-Wesley, p. 59.
Sommerville, I. (2005) Software Engineering, 7th edn., Boston, MA: Addison-Wesley.
Voas, J. (1999) Software hazard mining, IEEE Symposium on Application-Specific Systems
and Software Engineering and Technology, pp. 180–184.
Zachman, J.A. (1987) A framework for information systems architecture, IBM Systems
Journal, 26(3): 276–292.
Zave, P. (1997) Classification of research efforts in requirements engineering, ACM Computing
Surveys, 29(4): 315–321.
Zave, P., and M. Jackson (1997) Four dark corners of requirements engineering, ACM Trans.
Softw. Eng. Methodology 6(1): 1–30.
Chapter 2
Mission Statement,
Customers, and
Stakeholders
Mission Statements
The first thing we need to do when undertaking the development of a new system,
or redesign of an old one, is to prepare a mission statement. The mission statement
acts as a focal point for all involved in the system, and it allows us to weigh the
importance of various features by asking the question “how does that functionality
serve the mission?” In agile methodologies, to be discussed later, we would say that
the mission statement plays the role of “system metaphor.”
Writing mission statements can be contentious business, and many people
resent or fear doing so because there can be a tendency to get bogged down on
minutiae. Sometimes, mission statements tend to get very long and, in fact, evolve
into a “vision” statement. A mission statement should be very short, descriptive,
compelling, and never detailed, whereas a vision statement can be long. The mis-
sion statement is the “how” and the statement is the “what.” A mission statement
is almost a slogan.
One of the most widely cited “good” mission statements is the one associated
with the Starship Enterprise from the original Star Trek series. That mission state-
ment read
To seek out new life, to boldly go where no man has gone before.
23
24 Requirements Engineering for Software and Systems
These are not necessarily clever, or awe inspiring mission statements, but they
do convey the essence of the system. And they might be useful downstream when
we need to calibrate the expectations of those involved in its specification. In glob-
ally distributed development in particular, the need for a system metaphor is of
paramount importance.
◾◾ 5 pounds flour
◾◾ 12 large eggs
◾◾ 5 pounds sugar
◾◾ 1 pound butter
Mission Statement, Customers, and Stakeholders 25
Off you go to the nearest convenience mart (which is close to your home). At
the store, you realize that you are not sure if she wants white or brown sugar. So you
call her from your cell phone and ask which kind of sugar she wants; you learn she
needs brown sugar. You make your purchases and return home.
But your wife is unhappy with your selections. You bought the wrong kind of
flour; she informs you that she wanted white and you bought wheat. You bought
the wrong kind of butter; she wanted unsalted. You brought the wrong kind of
sugar too, dark brown; she wanted light brown. Now you are in trouble.
So you go back to the mart and return the flour, sugar, and butter. You find the
white flour and brown sugar, but you could only find the unsalted butter in a tub
(not sticks), but you assume a tub is acceptable to her. You make your purchase and
return with the items. But now you discover that you made new mistakes. The light
brown sugar purchase is fine, but the white flour you brought back is bleached; she
wanted unbleached. And the butter in the tub is unacceptable—she points out
that unsalted butter can be found in stick form. She is now very angry with you
for your ignorance.
So, you go back to the store and sheepishly return the items, and pick up their
proper substitutes. To placate your wife’s anger, you decide to also buy some of her
favorite chocolate candy.
You return home and she is still unhappy. While you finally got the butter,
sugar, and flour right, now your wife remembers that she is making omelets for
supper, and that a dozen eggs won’t be enough for the omelets and the cake—she
needs 18 eggs. She is also not pleased with the chocolate—she informs you she is on
a diet and that she doesn’t need the temptation of chocolate lying around.
One more time you visit the mart and return the chocolate and the dozen eggs.
You pick up 18 eggs and return home.
You think you have gotten the shopping right when she queries: “where did you
buy these things?” When you note that you bought the items at the convenience
mart, she is livid—she feels the prices there are too high—you should have gone to
the supermarket a few miles further down the road.
We could go on and on with this example—each time your wife discovering a
new flaw in your purchases, changing her mind about quantity or brand, adding
new items, subtracting others, etcetera.
But what does this situation have to do with requirements engineering and
stakeholders? The situation illustrates many points about requirements engineer-
ing. First, you need to understand the application domain. In this case, having a
knowledge of baking would have informed you ahead of time that there are dif-
ferent kinds of butter, flour, and sugar and you probably would have asked focus-
ing questions before embarking on your shopping trip. Another point from this
scenario—customers don’t always know what they want—your wife didn’t realize
that she needed more eggs until after you made three trips to the store. And there
is yet one more lesson in the story: never make assumptions about what custom-
ers want—you thought that the tub butter was acceptable; it wasn’t. You finally
26 Requirements Engineering for Software and Systems
learned that even providing customers with more than they ask for (in this case her
favorite chocolate) can sometimes be the wrong thing to do.
But in the larger sense, the most important lesson to be learned from this
encounter with a customer is that they can be trouble. They don’t always know
what they want, and, even when they do, they may communicate their wishes inef-
fectively. Customers can change their mind and they may have high expectations
about what you know and what you will provide.
Because stakeholder interaction is so important, we are going to devote this
chapter to understanding the nature of stakeholders, and more specifically the
stakeholders for whom the system is being built—the customers.
Stakeholders
Stakeholders represent a broad class of individuals who have some interest (a stake)
in the success (or failure) of the system in question. For any system, there are many
types of stakeholders, both obvious and sublime. The most obvious stakeholder of
a system is the user.
We define the user as the class (consisting of one or more persons) who will use
the system. The customer is the class (consisting of one or more persons) who is
commissioning the construction of the system. Sometimes the customer is called
the client (usually in the case of software systems) or sponsor (in the case where the
system is being built not for sale, but for internal use). But in many cases the terms
“customer,” “client,” and “sponsor” are used interchangeably depending on the con-
text. Note that the sponsor and customer can be the same person. And often there
is confusion between who the client is and who the sponsor is that can lead to many
problems.
In any case, clients, customers, users, sponsors—however you wish to redefine
these terms— are all stakeholders because they have a vested interest in the system.
But there are more stakeholders than these. It is said that “the customer is always
right, but there are more persons/entities with an interest in the system.” In fact,
there are many who have a stake in any new system. For example typical stakehold-
ers for any system might include
Negative Stakeholders
Negative stakeholders are those who will be adversely affected by the system. These
include competitors, investors (potentially), and people whose jobs will be changed,
negatively affected, or displaced by the system. There are also internal negative
stakeholders—other departments who will take on more workload, jealous rivals,
skeptical managers, and more. These internal negative stakeholders can provide
passive-aggressive resistance and create political nightmares for all involved. All neg-
ative stakeholders have to be recognized and accounted for as much as possible.
Finally, there are always individuals who are not directly affected by systems
who are, nonetheless, interested (usually opposed) to those systems, and because
they may wield some power or influence, they must be considered. These interested
parties include environmentalists, animal activists, religious zealots, advocates of
all types, the self-interested, and so on. Some people call these kinds of individuals
“gadflies,” and they shouldn’t be ignored.
Stakeholder Identification
It is very important to accurately and completely identify all possible stakeholders
(positive and negative) for any system. Stakeholder identification is the first step
the requirements engineer must take after the mission statement has been writ-
ten. Why do we start with stakeholder identification? Imagine leaving out a key
stakeholder—and discovering them later? Or worse, they discover that a system
is being built, in which they have an interest, and they have been ignored. These
Johnny-come-lately stakeholders can try to impose all kinds of constraints and
requirements changes to the system that can be very costly.
Stakeholder Questions
One way to help identify stakeholders is by answering the following set of questions:
Let’s try this set of questions on the airline baggage handling system. These
answers are not necessarily complete—over time, new stakeholders may be
revealed. But by answering these questions as completely as we can now, we reduce
the chances of overlooking a very important stakeholder late in the process.
◾◾ Who is paying for the system?—Airline, grants, passengers, your tax dollars.
◾◾ Who is going to use the system?—Airline personnel, maintenance personnel,
travelers (at the end).
◾◾ Who is going to judge the fitness of the system for use?—Airline, customers,
unions, FAA, OSHA, the press, independent rating agencies.
◾◾ What agencies (government) and entities (non-government) regulate any
aspect of the system?—FAA, OSHA, union contracts, state and local codes.
◾◾ What laws govern the construction, deployment, and operation of the
system?—Various state and local building codes, federal regulations for bag-
gage handling systems, OSHA laws.
◾◾ Who is involved in any aspect of the specification, design, construction, test-
ing, maintenance, and retirement of the system?—Various engineers, techni-
cians, baggage handlers union, etc.
◾◾ Who will be negatively affected if the system is built?—Passengers, union
personnel.
◾◾ Who else cares if this system exists or doesn’t exist?—Limousine drivers.
◾◾ Who have we left out?
And let’s try this set of questions on the pet store POS system.
Stakeholder/Customer Classes
Assuming that we have answered the stakeholder identification questions as
completely as we can, the next step is to cluster these stakeholders into classes.
Because many of the stakeholders we have identified are likely to be customers,
and because the other stakeholders that we have identified are probably not going
to be directly involved in the requirements elicitation process (we are not going to
interview legislators, for example), we cluster as many stakeholders as possible into
user classes.
The reason that we cluster the classes is that for economy we need to identify
a small number of individuals with whom to have contact in order to represent
the interests and wants of a large swath of customers/stakeholders. So, for each of
the classes that we identify we’ll select an individual or very small representative
group for that class and deal only with those “champions.” As for the other stake-
holders, we will remain wary of their concerns (and legal implications) throughout
the process, but we are not likely to consult with any representatives of those classes
of stakeholder if we can avoid it.
We cluster customers into classes according to interests, scope, authorization,
or other discriminating factors (in effect, these are equivalence classes). Then we
select a champion or representative group for each user class. Then we select the
appropriate technique(s) to solicit initial inputs from each class. This is the elicita-
tion process that will be discussed in the next chapter.
To illustrate the clustering of stakeholders/users into representative classes consider
the baggage handling system. We might select the following representative classes:
For the pet store POS system we might have the following classes:
◾◾ Cashiers
◾◾ Managers
◾◾ System maintenance personnel (to make upgrades and fixes)
◾◾ Store customers
◾◾ Inventory/warehouse personnel (to enter inventory data)
◾◾ Accountants (to enter tax information)
◾◾ Sales department (to enter pricing and discounting information)
◾◾ Others?
For each of these classes, we’ll want to select a champion and deal with them
during the elicitation process. More on this aspect in the next chapter.
Actualization
Esteem
Love/Belonging
Safety
Physiological
Basic needs include food, water, and sleep. These take precedence over one’s
physical safety, however—if you were starving, you would risk crossing a very busy
street to get food on the other side. People risk jail time by stealing bread. Higher
up the Maslow’s pyramid is the need to be loved and to belong to some group,
but he presumes that these needs are fundamentally subordinated to the need for
physical safety. You might argue about this one, but the thinking is that some
people will sacrifice the chance for love in order to preserve their physical wellbeing
(would you continue belonging to the Sky Diving Club just because you liked one
of its members?). Next, one’s self-esteem is important, but not as important as the
need to belong and be loved (which is why you will humiliate yourself and dress in
a Roman costume for your crazy sister-in-law’s wedding). Finally, Maslow defined
self-actualization as “man’s desire for fulfillment, namely to the tendency for him to
become actually in what he is potentially: to become everything that one is capable
of becoming ...” (Maslow 1943).
A variation of Maslow’s hierarchy, depicted in Figure 2.2, can help explain the
needs and wants of customers. Here the lowest level is basic functionality. Being a
point of sale system implies certain functions must be present—such as create a sale,
return an item, update inventory, and so on. At the enabling level, the customer
desires features that provide enabling capabilities with respect to other systems
(software, hardware, or process) within the organization. So the POS system ties
into some management software that allows for real-time sales data to be tracked
by managers for forecasting or inventory control purposes. The functionality at the
enabling level may not meet or exceed competitors’ capabilities. Those functional
32 Requirements Engineering for Software and Systems
Ground
breaking
Competitive
Advantage
Enabling
Basic
needs are met at the competitive advantage level. Here the customer wishes for this
new system to provide capabilities that exceed those of the competition or other
wise create a business advantage. Finally, ground-breaking desires would imply
development of technology that exceeds current theory or practice and has implica-
tions and applications beyond the system in question. For example, some kind of
new data-mining technology might be desired that exceeds current technologies.
As with the Maslow hierarchy, the idea is that the lower-level functionality must
not be sacrificed to meet the higher levels of functionality.
While this hierarchy implies four levels of importance of need, it is likely that
in any situation there can be more or fewer levels. But the basic idea is to discover
and organize customers’ needs according to some meaningful hierarchy, which
will be most helpful with requirements prioritization later. And this is not the first
time that Maslow’s theory was used to explain the needs of customers or users.
For example, Valacich et al. described a modified four-level Maslow hierarchy to
explain user preferences in Web-based user interfaces (Valacich et al. 2007).
In any case, let’s return to our examples to consider some of the wants for the
baggage handling and pet store POS systems.
For an airline baggage handling system customers probably want
◾◾ safety
◾◾ speed
◾◾ reliability
◾◾ fault-tolerance (no broken luggage!)
Mission Statement, Customers, and Stakeholders 33
◾◾ maintainability
◾◾ and so on
◾◾ speed
◾◾ accuracy
◾◾ clarity (in the printed receipt)
◾◾ efficiency
◾◾ ease of use (especially if self-service provided)
◾◾ and more
So we would use our best efforts to attend to these needs. The problem becomes,
however, how do we measure satisfaction of these needs? Because, if these wants
and desires cannot be measured, then we will never achieve them. We will discuss
the issue of requirements satisfaction in Chapter 5.
The “shall not” requirements are often the hardest to capture. Sometimes cus-
tomers don’t know what they don’t want until they see it! For example, upon seeing
the delivered system (or a prototype), they exclaim:
“I know I said I wanted it to do that, but I guess I really didn’t mean that.”
For illustrative purposes, here are some examples of unwanted features of the
baggage handling system:
◾◾ The system shall not shut down if main airport power is lost.
◾◾ The system shall not cause a failure in the main airline computer system.
◾◾ The system shall not cause baggage to be destroyed at a rate higher than 1
bag per minute.
You can see how hard it is to describe what the system is not supposed to do.
More on this later.
34 Requirements Engineering for Software and Systems
And here are some for the pet store POS system:
◾◾ If the register tape runs out, the system shall not crash.
◾◾ If a product code is not found, the system shall not crash.
◾◾ If a problem is found in the inventory reconciliation code, the current trans-
action shall not be aborted.
Many of the elicitation techniques that we will discuss in the next chapter will
tend to uncover unwanted features, but the requirements engineer should always try to
discover what the customer does not want as much as what the customer does want.
Stakeholder Prioritization
Up until now, we have mostly been referring to the customer as the primary stake-
holder, but of course, there are others. Not all stakeholders are of equal impor-
tance. For example, the concerns of the Baggage Handlers Union are important,
but may not be as important as the airport authority (the customer), who is paying
for the baggage handling system. On the other hand, federal regulations trump the
desires of the customer; for example, the system must comply with all applicable
federal standards.
Because we have many stakeholders and some of their needs and desires may
conflict, we rank or prioritize the stakeholder classes to help resolve these situa-
tions. Usually rank denotes the risk of not satisfying the stakeholder (e.g., legal
requirements should be #1 unless you want to go to jail). Ranking the stakeholders
will lead to requirements prioritization, which is the key to reconciliation and risk
mitigation—so get used to it!
Table 2.1 contains a partial list of stakeholders for the baggage handling system
ranked in a simple High, Medium, Low priority scheme. A rationale for the rank
assignment is included.
Table 2.1 Partial Ranking of Stakeholders for the Baggage Handling System
Stakeholder Class Rank Rationale
Airport managers and policy High They are paying for the system.
makers (“the customer”)
36 Requirements Engineering for Software and Systems
Table 2.2 Partial Ranking of Stakeholders for the Pet Store POS System
Stakeholder Class Rank Rationale
Table 2.2 contains a partial list of stakeholders for the pet store POS system ranked
using ratings 1 through 7, where 1 represents highest importance or priority.
You can certainly argue with this ranking and prioritizations; for example, you
may think that the store customer is the most important person in the POS system.
But this disagreement highlights an important point—it is early in the require-
ments engineering process when you want to argue about stakeholder conflicts and
prioritization, not later when design decisions may have already been made that
need to be undone.
Managing Expectations
A big part of communicating with customers is managing expectations. Expectations
really matter—in all endeavors, not just requirements engineering. If you don’t
believe this fact, consider the following situations.
38 Requirements Engineering for Software and Systems
In both situation A and situation B you did exactly the same amount of work
and you were paid exactly the same amount of money. But you would be ecstatic in
situation A, and upset in situation B. Why? What is different?
The difference is in your expectations. In situation A you expected to be paid
$5,000 but the customer surprised you and exceeded your expectations, making
you happy. In situation B your expectations of receiving $10,000 were not met,
making you unhappy.
Some might argue that, in any endeavor, this example illustrates that you should
set customers’ expectations low deliberately and then exceed them, so that you can
make the customer extremely happy. But this will not always work, and certainly
will not work in the long run—people who get a reputation for padding schedules
or otherwise low-balling expectations lose the trust of their customers and clients.*
Also recognize that you exert tremendous conscious and unconscious influence
on stakeholders. When communicating with customers avoid saying such words
as “I would have the system do this…” or “I don’t like the system to do that …”
These phrases may influence the customer to make a decision that will be regretted
later—and blamed on you!
Therefore, our goal as requirements engineers is to carefully manage customers’
expectations. That is understand, adjust, monitor, reset, and then meet customer
expectations at all times.
Stakeholder Negotiations
It is inevitable that along the way the requirements engineer must negotiate with
customers and other stakeholders. Often the negotiations deal with convincing
the customer that some desired functionality is impossible or in dealing with the
* The author often jokes when giving seminars that: “I like to set expectations deliberately low
… and then meet them.”
Mission Statement, Customers, and Stakeholders 39
Exercises
2.1. Why is it important to have a mission statement?
2.2. What is the relationship of a system mission statement to the enterprise’s
mission statement?
2.3. When should a domain vocabulary be established?
40 Requirements Engineering for Software and Systems
2.4. Under what circumstances might the customer’s needs and desires be
considered secondary?
2.5. Think of a system or product you use often and try to guess what the
mission statement is for that product, or the company that makes it.
2.6. Search the Internet for the actual mission statement and compare it to
your guess. Does such a mission statement exist? If it does exist, how
does the actual mission statement compare to your guess?
2.7. At what stage of the requirements development are additions to the
requirements considered scope creep?
References
Cohen, H. (2000) You Can Negotiate Anything, Citadel.
Maslow, A. (1943) A theory of human motivation, Psychological Review, 50: 370–396.
Valacich, J.H., D.V. Parboteeah, and J.D. Wells (2007) The Online Consumer’s Hierarchy of
Needs, Communications of the ACM, 50(9): 84–90.
Chapter 3
Requirements Elicitation
Introduction
In this chapter we explore the many ways that requirements can be elicited—that
is, found, discovered, captured, coerced, whatever the term may be. Remember that
requirements are usually not so easy to come by, at least not all of them. Many of
the more subtle and complex ones have to be teased out through rigorous, if not,
dogged processes.
There are many techniques that you can choose to conduct requirements elicita-
tion, and you will probably need to use more than one, and perhaps different ones
for different classes of users/stakeholders. The techniques that we will discuss are
◾◾ Brainstorming
◾◾ Card Sorting
◾◾ Designer as Apprentice
◾◾ Domain Analysis
◾◾ Ethnographic Observation
◾◾ Goal-Based Approaches
◾◾ Group Work
◾◾ Interviews
◾◾ Introspection
◾◾ Joint Application Development (JAD)
◾◾ Laddering
◾◾ Protocol Analysis
◾◾ Prototyping
41
42 Requirements Engineering for Software and Systems
Brainstorming
Brainstorming consists of informal sessions with customers and other stakeholders
to generate overarching goals for the systems. Brainstorming can be formalized to
include a set agenda, minutes taking, and the use of formal structures (e.g., Roberts
Rules of Order). But the formality of a brainstorming meeting is probably inversely
proportional to the creative level exhibited at the meeting. These kinds of meetings
probably should be informal, even spontaneous, with the only structure embodying
some recording of any major discoveries.
During brainstorming sessions, some preliminary requirements may be gener-
ated, but this aspect is secondary to the process. The JAD technique incorporates
brainstorming (and a whole lot more), and it is likely that most other group-
oriented elicitation techniques embody some form of brainstorming implicitly.
Brainstorming is also useful for general objective setting, such as mission or vision
statement generation.
Card Sorting
This technique involves having stakeholders complete a set of cards that includes
key information about functionality for the system/software product. It is also a
good idea for the stakeholders/customers to include ranking and rationale for each
of the functionalities.
The period of time to allow customers and stakeholders to complete the cards is
an important decision. While the exercise of card sorting can be completed in a few
Requirements Elicitation 43
Update inventory
records
Manage customer
Identify customer Priority – High loyalty feature
returning
Priority – Medium
Priority – High
Priority – High
Figure 3.1 A tiny subset of the unsorted cards generated by customers for the
pet store POS system.
hours, rushing the stakeholders will likely lead to important, missing functionalities.
Giving stakeholders too much time, however, can slow the process unnecessarily.
It is recommended that a minimum of one week (and no more than two weeks) be
allowed for the completion of the cards. Another alternative is to have the custom-
ers complete the cards in a two-hour session, then return one week later for another
session of card completion and review.
In any case, after each session of card generation the requirements engineer
organizes these cards in some manner, generally clustering the functionalities logi-
cally. These clusters form the bases of the requirements set. The sorted cards can
also be used as an input to the process to develop CRC (capability, responsibility,
class) cards to determine program classes in the eventual code. Another technique
to be discussed shortly, QFD, includes a card-sorting activity.
To illustrate the process, Figure 3.1 depicts a tiny subset of cards generated by
the customer for the pet store POS system, lying in an unsorted pile. In this case,
each card contains only a brief description of the functionality and a priority rating
is included (no rationale is shown for brevity).
The requirements engineer analyzes this pile of cards and decides that two of
the cards pertain to “customer management” functions, two cards to “tax func-
tions,” and one card to “inventory features” or functions, and arranges the cards in
appropriate piles as shown in Figure 3.2.
The customer can be shown this sorted list of functionalities for correction or
missing features. Then, a new round of cards can be generated if necessary. The
process continues until the requirements engineer and customer are satisfied that
the system features are substantially captured.
44 Requirements Engineering for Software and Systems
Customer management
Tax functions
Inventory features
Figure 3.2 Sorted cards for the pet store POS system.
Designer as Apprentice*
Designer as apprentice is a requirements discovery technique in which the require-
ments engineer “looks over the shoulder” of the customer in order to learn enough
about the customer’s work to understand their needs. The relationship between
customer and designer is like that between a master craftsman and apprentice. That
is, the apprentice learns a skill from the master just as we want the requirements
engineer (the designer) to learn about the customer’s work from the customer.
The apprentice is there to learn whatever the master knows (and therefore must
guide the customer in talking about and demonstrating those parts of the work).
The designer is there to address specific needs.
It might seem that the customer needs to have some kind of teaching ability
for this technique to work, but that is not true. Some customers cannot talk about
their work effectively, but can talk about it as it unfolds. Moreover, customers don’t
have to work out the best way to present it, or the motives; they just explain what
they’re doing.
Seeing the work reveals what matters. For example, people are not aware of
everything they do and sometimes why they do it. Some actions are the result of
years of experience and are too subtle to express. Other actions are just habits with
no valid justification. The presence of an apprentice provides the opportunity for
the master (customer) to think about the activities and how they came about.
* This discussion is adapted from one found in Laplante (2006), with permission.
Requirements Elicitation 45
Seeing the work reveals details since, unless we are performing a task, it is diffi-
cult to be detailed in describing it. Finally, seeing the work reveals structure. Patterns
of working are not always obvious to the worker. An apprentice learns the strategies
and techniques of work by observing multiple instances of a task and forming an
understanding of how to do it themselves, incorporating the variations.
In order for this technique to work, the requirements engineer must understand
the structure and implication of the work, including
Domain Analysis
We have already emphasized the importance of having domain knowledge (whether
it is had by the requirements engineer and/or the customer) in requirements engi-
neering. Domain analysis involves any general approach to assessing the “land-
scape” of related and competing applications to the system being designed. Such
an approach can be useful in identifying essential functionality and, later, missing
functionality. Domain analysis can also be used downstream for identifying reus-
able components (such as open source software elements that can be incorporated
into the final design). The QFD elicitation approach explicitly incorporates domain
analysis, and we will discuss this technique shortly.
Ethnographic Observation
Ethnographic observation refers to any technique in which observation of indirect
and direct factors inform the work of the requirements engineer. Ethnographic
observation is a technique borrowed from social science in which observations of
human activity and the environment in which the work occurs are used to inform
46 Requirements Engineering for Software and Systems
the scientist in the study of some phenomenon. In the strictest sense, ethnographic
observation involves long periods of observation (hence, an objection to its use as a
requirements elicitation technique).
To illustrate ethnographic observation, imagine the societal immersion of an
anthropologist studying some different culture. The anthropologist lives among the
culture being studied, but in a way in which he is minimally intrusive. While eating,
sleeping, hunting, celebrating, mourning, and so on within the culture, all kinds of
direct and indirect evidence of how that society functions and its belief systems are
collected.
In applying ethnographic observation to requirements elicitation, the require-
ments engineer immerses himself in the workplace culture of the customer. Here, in
addition to observing work or activity to be automated, the requirements engineer is
also in a position to collect evidence of customer needs derived from the surround-
ings that may not be communicated directly. Designer as apprentice is one require-
ments elicitation technique that includes the activity of ethnographic observation.
To illustrate this technique in practice, consider this situation in which ethno-
graphic observation occurs:
◾◾ You are gathering requirements for a Smart Home for some customer.
◾◾ You spend long periods of time interviewing the customer about what she wants.
◾◾ You spend time interacting with the customer as she goes about her day and
ask questions (“why are you running the dishwasher at night, why not in
the morning?”).
◾◾ You spend long periods of time passively observing the customer “in action”
in her current home to get nonverbal clues about her wants and desires.
◾◾ You gain other information from the home itself—the books on the book-
shelf, paintings on the wall, furniture styles, evidence of hobbies, signs of
wear and tear on various appliances, etc.
Goal-Based Approaches
Goal-based approaches comprise any elicitation techniques in which requirements
are recognized to emanate from the mission statement, through a set of goals that
Requirements Elicitation 47
lead to requirements. That is, looking at the mission statement, a set of goals
that fulfill that mission is generated. These goals may be subdivided one or more
times to obtain lower-level goals. Then, the lower-level goals are branched out into
specific high-level requirements. Finally, the high-level requirements are used to
generate lower-level ones.
For example, consider the baggage handling system mission statement:
The associated metric for this requirement, then, is simply the percentage of
luggage lost for a particular [airport/airline/flight/time period/etc.]. Of course, we
really need a definition for “lost luggage,” since so-called lost luggage often reap-
pears days or even months after it is declared lost. Also, reasonable assumptions
need to be made in framing this requirement in terms of an airport’s reported lug-
gage losses over some time period, or for a particular airline at some terminal, and
so forth.
In any case, we deliberately picked a simple example here—the appropriate
question for some goal (requirement) is not always so obvious, nor is the associated
metric so easily derived from the question.
48 Requirements Engineering for Software and Systems
Group Work
Group work is a general term for any kind of group meetings that are used during
the requirements discovery, analysis, and follow-up processes. The most celebrated
of group-oriented work for requirements elicitation is Joint Application Design
(JAD), which we will discuss shortly.
Group activities can be very productive in terms of bringing together many
stakeholders, but risk the potential for conflict and divisiveness. The key to success
in any kind of group work is in the planning and execution of the group meetings.
Here are the most important things to remember about group meetings.
These principles will come into play for the JAD approach to requirements elicitation.
Group work of any kind has many drawbacks. First, group meetings can be
difficult to organize and get the many stakeholders involved to focus on issues.
Problems of openness and candor can occur as well because people are not always
eager to express their true feelings in a public forum. Because everyone has a differ-
ent personality, certain individuals can dominate the meeting (and these may not
be the most “important” individuals). Allowing a few to own the meeting can lead
to feelings of being “left out” for many of the other attendees.
Running effective meetings, and hence using group work, requires highly devel-
oped leadership, organizational, and interpersonal skills. Therefore, the require-
ments engineer should seek to develop these skills whenever possible.
Interviews
The “opposite” of group activities is the one-on-one (or small group) interview.
This is an obvious and easy-to-use technique to extract system requirements from
a customer.
There are three kinds of interviews that can be used in elicitation activities:
Requirements Elicitation 49
◾◾ unstructured
◾◾ structured
◾◾ semi-structured
Unstructured interviews, which are probably the most common type, are con-
versational in nature and serve to relax the customer. Like a spontaneous “confes-
sion” these can occur any time and any place whenever the requirements engineer
and customer are together, and the opportunity to capture information this way
should never be lost. But depending on the skill of the interviewer, unstructured
interviews can be hit or miss. Therefore, structured or semi-structured interviews
are preferred.
Structured interviews are much more formal in nature, and they use pre-
defined questions that have been rigorously planned. Templates are very helpful
when employed with interviewing using the structured style. The main drawback
to structured interviews is that some customers may withhold information because
the format is too “stodgy.”
Semi-structured interviews combine the best of structured and unstructured
interviews. That is, the requirements engineer prepares a carefully thought-out list
of questions, but then allows for spontaneous unstructured questions to creep in
during the course of the interview.
While structured interviews are preferred, the choice of which one to use is
very much an opportunistic decision. For example, when the client’s corporate cul-
ture is very informal and relaxed, and trust is high, then unstructured interviews
might be preferred. In a stodgier, process-oriented organization, structured and
semi-structured interviews are probably more desirable.
Here are some sample interview questions that can be used in any of the three
interview types.
Whatever interview technique is used, care must be taken to ensure that all
of the right questions are asked. That is, leave out no important questions, and
include no extraneous, offensive, or redundant questions. When absolutely neces-
sary, interviews can be done via telephone, videoconference, or email, but be aware
that, in these modes of communication, certain important nuanced aspects to the
responses may be lost.
50 Requirements Engineering for Software and Systems
Introspection
When a requirements engineer develops requirements based on what he “thinks”
the customer wants, then he is conducting the process of introspection. In essence
the requirements engineer puts himself in the place of the customer and opines “if
I were the customer I would want the system to do this …”
An introspective approach is useful when the requirements engineer’s domain
knowledge far exceeds the customer’s. Occasionally, the customer will ask the engineer
questions similar to the following—“if you were me, what would you want?” While
introspection will inform every aspect of the requirements engineer’s interactions,
remember our admonition about not telling a customer what he ought to want.
There can be multiple reviews for each of these artifacts, if necessary. But JAD
reviews are especially important as a requirements elicitation tool.
Planning for a JAD review or audit session involves three steps:
1. selecting participants
2. preparing the agenda
3. selecting a location
* Ibid.
Requirements Elicitation 51
◾◾ users and managers who have ownership of requirements and business rules
◾◾ scribes
◾◾ engineering staff
The sponsor, analysts, and managers select a leader. The leader may be in-house
or a consultant. One or more scribes (note takers) are selected, normally from the
software development team. The analyst and managers must select individuals from
the user community. These individuals should be knowledgeable and articulate in
their business area.
Before planning a session, the analyst and sponsor must determine the scope
of the project and set the high-level requirements and expectations of each session.
The session leader must also ensure that the sponsor is willing to commit people,
time, and other resources to the effort. The agenda depends greatly on the type
of review to be conducted and should be constructed to allow for sufficient time.
The agenda, code, and documentation must also be sent to all participants well in
advance of the meeting so that they have sufficient time to review them, make com-
ments, and prepare to ask questions.
The following are some rules for conducting software requirements, design
audits, or code walkthrough. The session leader must make every effort to ensure
these practices are implemented.
◾◾ Stick to agenda.
◾◾ Stay on schedule (agenda topics are allotted specific time).
◾◾ Ensure that the scribe is able to take notes.
◾◾ Avoid technical jargon (if the review involves nontechnical personnel).
◾◾ Resolve conflicts (try not to defer them).
◾◾ Encourage group consensus.
◾◾ Encourage user and management participation without allowing individuals
to dominate the session.
◾◾ Keep the meeting impersonal.
◾◾ Allow the meetings to take as long as necessary.
The end product of any review session is typically a formal written document
providing a summary of the items (specifications, design changes, code changes,
and action items) agreed upon during the session. The content and organization of
the document obviously depend on the nature and objectives of the session. In the
case of requirements elicitation, however, the main artifact could be a first draft of
the SRS.
Laddering
In laddering, the requirements engineer asks the customer short prompting ques-
tions (“probes”) to elicit requirements. Follow-up questions are then posed to dig
52 Requirements Engineering for Software and Systems
Customer loyalty
management
Application Customer
processing identification
Figure 3.3 Laddering diagram for the pet store POS system.
deeper below the surface. The resultant information from the responses is then
organized into a tree-like structure.
To illustrate the technique, consider the following sequence of laddering questions
and responses for the pet store POS system. “RE” refers to the requirements engineer.
And so on. Figure 3.3 shows how the responses to the questions are then organized
in a ladder or hierarchical diagram.
The laddering technique assumes that information can be arranged in a hierar-
chical fashion, or, at least, it causes the information to be arranged hierarchically.
Protocol Analysis
A protocol analysis is a process where customers, together with the requirements
engineers, walk through the procedures that they are going to automate. During
such a walk-through, the customers explicitly state the rationale for each step that
is being taken.
While you will see shortly that this technique is very similar to designer as appren-
tice, there are subtle differences. These differences lie in the role of the requirements
engineer who is more passive in protocol analysis than in designer as apprentice.
Requirements Elicitation 53
Prototyping
Prototyping involves construction of models of the system in order to discover new
features. Prototypes can involve working models and nonworking models. Working
models can include working code in the case of software systems and simulations
or temporary or to-scale prototypes for non-software systems. Nonworking models
can include storyboards and mock-ups of user interfaces. Building architects use
prototypes regularly (e.g., scale drawings, cardboard models, 3-D computer anima-
tions) to help uncover and confirm customer requirements. Systems engineers use
prototypes for the same reasons.
In the case of working code prototypes, the code can be deliberately designed
to be throwaway or it can be deliberately designed to be reused (non-throwaway).
For example, graphical user interface code mock-ups can be useful for requirements
elicitation and the code can be reused. And most agile methodologies incorporate a
process of continuously evolving non-throwaway prototypes.
In unfortunate cases, prototypes that were not intended to be kept, are in fact
kept because of schedule pressures. This situation is rather unfortunate, since the
code was likely not designed using the most rigorous techniques, but is all too com-
monly found in industry.
Prototyping is a particularly important technique for requirements elicitation.
It is used extensively, for example, in the spiral software development model, and
agile methodologies consist essentially of a series of increasingly functional non-
throwaway prototypes.
To see how widely prototyping is used, consider the summary of the responses
to a question concerning the use of prototyping in the 2003 survey previously men-
tioned, which is shown in Figure 3.4 (Neill and Laplante 2003).
Here we see that 60% of respondents said that their organizations used prototyping
for requirements elicitation. It is noteworthy that more than two-thirds of respondents
did do prototyping and that 4% did not know if their organization did prototyping.
Finally, the survey authors sought to determine what kind of prototyping com-
panies were using. There are a number of different ways to use prototyping—for
example, within a fourth-generation environment (that is, a simulator), throw-away
prototyping, evolutionary prototyping (where the prototype evolves into the final
36% No
60% Don’t Know
Yes
4%
45
40
35
30
25
20
15
10
5
0
4 GL env. Throw away Evolutionary UI Other Don’t know
Figure 3.5 What type of prototyping was performed? Neill-Laplante survey, 186
responses (Neill and Laplante 2003).
system), or user interface (UI) prototyping—and the survey results show the break-
down of these responses (Figure 3.5).
Here it was surprising that 27% of those who used prototyping did evolution-
ary prototyping. Evolutionary prototyping is considered dangerous because proto
types are not ordinarily designed for release, yet the code finds its way into the
release. However, as previously noted, agile methodologies embody evolutionary
prototyping, and so some of these respondents may have been referring to the use
of prototypes in that setting.
* Ibid.
Requirements Elicitation 55
How’s
Competitive
Importance
weighting
weighting
What’s
Relationship
matrix
Target values
Competitive evaluation
Importance weighting
When we refer to the “voice of the customer” we mean that the requirements
engineer must empathically listen to customers to understand what they need from
the product, as expressed by the customer in their words. The voice of the customer
forms the basis for all analysis, design, and development activities, to ensure that
products are not developed from only “the voice of the engineer.” This approach
embodies the essence of requirements elicitation.
QFD has several advantages. QFD improves the involvement of users and
managers. It shortens the development lifecycle and improves overall project
development. QFD supports team involvement by structuring communication
processes. Finally, it provides a preventive tool that avoids the loss of information.
There are some drawbacks to QFD, however. For example, there may be dif-
ficulties in expressing temporal requirements. And QFD is difficult to use with an
entirely new project type. For example, how do you discover customer requirements
for something that does not exist and how do you build and analyze the competi-
tive products? In these cases the solution is to look at similar or related products,
but still there is apt to be a cognitive gap.
Finally, sometimes it is hard to find measurements for certain functions and to
keep the level of abstraction uniform. And, the less we know the less we document.
Finally, as the feature list grows uncontrollably, the house of quality can become
a “mansion.”
Questionnaires
Requirements engineers often use questionnaires and other survey instruments to
reach large groups of stakeholders. Surveys are generally used at early stages of the
elicitation process to quickly define the scope boundaries.
56 Requirements Engineering for Software and Systems
Survey questions of any type can be used. For example, questions can be closed-
(e.g., multiple choice, true-false) or open-ended—involving free-form responses.
Closed questions have the advantage of easier coding for analysis, and they help to
bound the scope of the system. Open questions allow for more freedom and inno-
vation, but can be harder to analyze and can encourage scope creep.
For example, some possible survey questions for the pet store POS system are
Repertory Grids
Repertory grids incorporate a structured ranking system for various features of
the different entities in the system and are typically used when the customers are
domain experts. Repertory grids are particularly useful for identification of agree-
ment and disagreement within stakeholder groups.
The grids look like a feature or quality matrix in which rows represent system
entities and desirable qualities and columns represent rankings based on each of
the stakeholders. While the grids can incorporate both qualities and features, it is
usually the case that the grids have all features or all qualities to provide for consis-
tency of analysis and dispute resolution.
To illustrate the technique, Figure 3.7 represents a repertory grid for various
qualities of the baggage handling system. Here we see that for the airport opera-
tions manager, all qualities are essentially of highest importance (safety is rated as
slightly lower, at 4). But for the Airline Worker’s Union representative, safety is the
most important (after all, his union membership has to interact with the system on
a daily basis).
In essence, these ratings reflect the agendas or differing viewpoints of the stake-
holders. Therefore, it is easy to see why the use of repertory grids can be very helpful
in confronting disputes involving stakeholder objectives early. In addition, the grids
Requirements Elicitation 57
Figure 3.7 Partial repertory grid for the baggage handling system.
can provide valuable documentation for dealing with disagreements later in the
development of the system because they capture the attitudes of the stakeholders
about qualities and features in a way that is hard to dismiss.
Scenarios
Scenarios are informal descriptions of the system in use that provide a high-level
description of system operation, classes of users, and exceptional situations.
Here is a sample scenario for the pet store POS system.
A customer walks into the pet store and fills his cart with a variety of
items. When he checks out, the cashier asks if the customer has a loy-
alty card. If he does, she swipes the card, authenticating the customer.
If he does not, then she offers to complete one for him on the spot.
After the loyalty card activity, the cashier scans products using a bar
code reader. As each item is scanned, the sale is appropriately totaled
and the inventory is appropriately updated. Upon completion of prod-
uct scanning a subtotal is computed. Then any coupons and discounts
are entered. A new subtotal is computed and applicable taxes are added.
A receipt is printed and the customer pays using cash, credit card, debit
card, or check. All appropriate totals (sales, tax, discounts, rebates, etc.)
are computed and recorded.
Scenarios are quite useful when the domain is novel (consider a scenario for the
Space Station, for example). User stories are, in fact, a form of scenario.
Task Analysis
Like many of the hierarchically oriented techniques that we have studied already,
task analysis involves a functional decomposition of tasks to be performed by the
58 Requirements Engineering for Software and Systems
Pet Store
Tax Purchase
Functions Transactions
Discounts
Sales Refunds and
Coupons
Figure 3.8 Partial task analysis for the pet store POS system.
system. That is, starting at the highest level of abstraction, the designer and custom-
ers elicit further levels of detail. This detailed decomposition continues until the
lowest level of functionality (single task) is achieved.
As an example, consider the partial task analysis for the pet store POS system
shown in Figure 3.8. Here the overarching “pet store POS system” is deemed to
consist of three main tasks: inventory control, sales, and customer management.
Drilling down under the sales functions, we see that these consist of the following
tasks: tax functions and purchase transactions. Next proceeding to the purchase
transaction function, we decompose these tasks into sales, refunds, and discounts
and coupons tasks.
The task analysis and decomposition continues until a sufficient level of granu-
larity is reached (typically, to the level of a method or nondecomposable procedure)
and the diagram is completed.
User Stories*
User stories are short conversational text that are used for initial requirements dis-
covery and project planning. User stories are widely employed in conjunction with
agile methodologies.
* Ibid.
Requirements Elicitation 59
User stories are written by the customers in terms of what the system needs to
do for them and in their own “voice.” User stories usually consist of two to four
sentences written on a three-by-five-inch card. About 80 user stories is said to be
appropriate for one system increment or evolution, but the appropriate number will
vary widely depending on the application size and scope and development method-
ology to be used (e.g., agile versus incremental).
An example of a user story for the pet store POS system is as follows:
User stories should only provide enough detail to make a reasonably low-
risk estimate of how long the story will take to implement. When the time
comes to implement, the story developers will meet with the customer to flesh
out the details.
User stories also form the basis of acceptance testing. For example, one or more
automated acceptance tests can be created to verify the user story has been cor-
rectly implemented.
Viewpoints
Viewpoints are a way to organize information from the (point of view of) different
constituencies. For example, in the baggage handling system, there are differing
perspectives of the system for each of the following stakeholders:
By recognizing the needs of each of these stakeholders and the contradictions raised
by these viewpoints, conflicts can be reconciled using various approaches.
The actual viewpoints incorporate a variety of information from the business
domain, process models, functional requirements specs, organizational models, etc.
Sommerville and Sawyer (1997) suggested the following components should be
in each viewpoint:
◾◾ a work plan, with a process model, which defines how to build and check
the specification
◾◾ a work record, which is a trace of the actions taken in building, checking and
modifying the specification
Workshops
On a most general level, workshops are any formal or informal gathering of stake-
holders to hammer out requirements issues. We can distinguish workshops as being
of two types, formal and informal.
Formal workshops are well-planned meetings and are often “deliverable” events
that are mandated by contract. For example, DOD MIL STD 2167 incorporated
multiple required and optional workshops (critical reviews). A good example of a
formal workshop style is embodied in JAD.
Informal workshops are usually less boring than highly structured meetings. But
informal meetings tend to be too sloppy and may lead to a sense of false security and
lost information. If some form of workshop is needed it is recommended that a for-
mal one be held using the parameters for successful meetings previously discussed.
Elicitation Summary
This tour has included many elicitation techniques, and each has its advan-
tages and disadvantages, which were discussed along the way. Clearly, some
of these techniques are too general, some too specific, some rely too much on
stakeholder knowledge, some not enough, etc. Therefore, it is clear that some
combination of techniques is needed to successfully address the requirements
elicitation challenge.
Interviews Interviews
Introspection
Questionnaires
Prototyping Prototyping
Scenarios Scenarios
User stories
Viewpoints Viewpoints
Repertory grids
For example, interview-based techniques are useful for all aspects of require-
ments elicitation (but are very time-consuming). On the other hand, prototyping
techniques are best used to analyze stakeholders and to elicit the requirements.
Ethnographic techniques are good for understanding the problem domain, analyz-
ing stakeholders, and soliciting requirements. And so on.
Finally, there is clearly overlap between these elicitation techniques (clusters) in
that some accomplish the same thing and, hence, are alternatives to each other. In
other cases, these techniques complement one another. In Table 3.3 alternative (A)
and complementary (C) elicitation groupings are shown.
62 Requirements Engineering for Software and Systems
Ethnography
Prototyping
Groupwork
Viewpoints
Interviews
Scenarios
Domain
Goals
Understanding the domain • • • • • • •
Prototyping
Groupwork
Viewpoints
Interviews
Scenarios
Domain
Goals
Interviews C A A A C C C
Domain C C A A A A A
Groupwork A C A C C C C
Ethnography A A A C C A A
Prototyping A A C C C C C
Goals C A C C C C C
Scenarios C A C A C C A
Viewpoints C A C A C C A
◾◾ Wikis
◾◾ Mobile technologies
◾◾ Content analysis
0
10
20
30
40
50
60
te
rv
D ie
w
at
aM s
in
in
Co g
op Q
er FD
D at
iv
es
ig eR
ne eq
In ra .
fo s A ..
rm pp
Se al r..
m m .
i-f od
or eli
m ng
Fo al m
rm od
al e..
m .
Sc od
en eli
a ng
Th rios
ro /U
w-
aw se...
technique(s) do you use? (Neill and Laplante 2003).
a
Fo y p
cu ro
Pr s G ...
ot ro
oc up
ol s
An
aly
sis
Et S
hn SM
og
ra
ph
U y
se
r-C
en JAD
te
re
d
D.
..
O
th
er
Figure 3.9 Summary of answers to the question “Which requirements elicitation
Mobile Technologies
Various mobile technologies such as cell phones and personal digital assistants can
be used to capture requirements information in situ. For example, while physicians
are working with patients, they can transmit information about the activities they
are conducting directly to the requirements engineer, without the latter having to
be on site. Using mobile devices is particularly useful because they enable instan-
taneous recording of ideas and discoveries. Such an approach can support brain-
storming, scenario generation, surveys, and many other standard requirements
elicitation techniques even when the customer is not easily accessible (such as in
off-shore software development situations).
A good discussion of the emergence of the use of mobile technologies in require-
ments discovery can be found in Maiden et al. (2007).
Content Analysis
Content analysis is a technique used in the social sciences for structuring and
finding meaning in unstructured information. That is, by analyzing writ-
ing or written artifacts of speech, things of importance to the stakeholder can
be obtained. In analyzing these writings the objective is to identify recurrent
themes. By written artifacts we mean transcripts from group meetings, unstruc-
tured interviews, survey data, or emails (any text or artifact that can be con-
verted to text).
Content analysis can be done manually by tagging (colored highlighters)
identical words and similar phrases that recur in various writings. For example,
Figure 3.10 contains a sample content analysis of some text. The text is an excerpt
from a notebook of a requirements engineer who has interviewed a customer regard-
ing a “Smart Home.”
As we read the text we begin noticing recurring themes, and as we do so, we
highlight them with a different colored marker. For example, the word “I” is men-
tioned repeatedly, and for whatever reason, we decide that this noun hints at an
important theme, and we highlight it in one color. We then notice that “smart
home” or “the home” is mentioned several times—we highlight these with the
different color from the previous theme. The notion of time is also mentioned fre-
quently (“long periods of time, “time,” and “periods of time,”) and so we highlight
these with a consistent color. And so on.
Free and for-fee tools for content analysis exist to automate this process.
66 Requirements Engineering for Software and Systems
I spend long periods of time interviewing the customer about what she
wants
I spend time interacting with the customer as she goes about her day and
ask questions like (“why are you running the dishwasher at night, why not in
the morning?”)
I spend long periods of time passively observing the customer “in action ” in
their current home to get non–verbal clues about her wants and desires.
I gain other information from the home itself–the books on the book shelf,
paintings on the wall, furniture styles, evidence of hobbies, signs of wear
and tear on various appliances, etc.
Exercises
3.1. What are some difficulties that may be encountered in attempting to
elicit requirements without face-to-face interaction?
3.2. Does the Heisenberg uncertainty principle apply to techniques other
than ethnographic observation? What are some of the ways to alleviate
the Heisenberg uncertainty principle?
3.3. During ethnographic observation what is the purpose of recording the
time and day of the observation made?
3.4. Should requirements account for future scalability and enhancements?
3.5. Which subset of the techniques described in this chapter would be appro-
priate for a setting where the customers are geographically distributed?
3.6. Investigate the concept of “active listening.” How would this technique
assist in requirements elicitation?
3.7. If you are working on a class project, what selection of the techniques
described in this chapter would you use to elicit system requirements
from your customer(s)?
References
Akao, Y. (1990) Quality Function Deployment: Integrating Customer Requirements into Product
Design, Cambridge, MA: Productivity Press.
Aurum, A., and C. Wohlin (eds) (2005) Engineering and Managing Software Requirements,
Springer.
Basili, V.R., and D. Weiss (1984) A methodology for collecting valid software engineering
data, IEEE Transactions on Software Engineering, Nov., pp. 728–738.
The FitNesse project, www.fitnesse.org, last accessed September 15, 2007.
Laplante, P.A. (2006) What Every Engineer Needs to Know About Software Engineering, CRC/
Taylor & Francis.
Requirements Elicitation 67
Writing the
Requirements Document
69
70 Requirements Engineering for Software and Systems
50%
45%
40%
35%
30%
25%
20%
15%
10%
5%
0%
Formal Informal Semi–Formal Other
Figure 4.1 Reported requirements notation used (Neill and Laplante 2003).
Writing the Requirements Document 71
50%
45%
40%
35%
30%
25%
20%
15%
10%
5%
0%
<75 76–150 151–300 301–600 601–1200 1200
45
40
35
30
25
20
15
10
0
<25 2–50 51–100 101–250 251–500 >500
1. Introduction
1.1 Purpose
1.2 Scope
1.3 Definitions and Acronyms
1.4 References
1.5 Overview
2. Overall description
2.1 Product perspective
2.2 Product functions
2.3 User characteristics
2.4 Constraints
2.5 Assumptions and dependencies
3. Specific Requirements
Appendices
Index
There are several benefits to observing its guidelines. First, the guidelines pro-
vide a simple framework for the organization of the document itself. Moreover,
the Standard 830 outline is particularly beneficial to the requirements engineer
because it has been widely deployed across a broad range of application domains
(Figure 4.4). Finally, and perhaps more importantly, Standard 830 provides guid-
ance for organizing the functional and non-functional requirements of the SRS.
The standard also describes ways to represent functional and non-functional
requirements under Section 3, Specific Requirements. These requirements are the
next subject for discussion.
◾◾ external interfaces
◾◾ performance
Writing the Requirements Document 73
◾◾ name of item
◾◾ description of purpose
◾◾ source of input or destination of output
◾◾ valid range, accuracy, and/or tolerance
◾◾ units of measure
◾◾ timing
◾◾ relationships to other inputs/outputs
◾◾ screen formats/organization
◾◾ window formats/organization
◾◾ data formats
◾◾ command formats
◾◾ frequency of use
◾◾ accessing capabilities
◾◾ data entities and their relationships
◾◾ integrity constraints
◾◾ data retention requirements
for every input possibility. Functional requirements may use case-by-case descrip-
tion or other general forms of description (e.g., using universal quantification, use
cases, user stories).
The 830 is not prescriptive in terms of how to organize specific functional
requirements; instead, a menu of organizational options is offered. Specific func-
tional requirements can be organized by
◾◾ system management
◾◾ command management
◾◾ telemetry management
◾◾ payload management
◾◾ health and safety management
◾◾ software management
◾◾ performance requirements
Reviewing the document, under the System Management mode we see the operat-
ing system functionality described as follows:
Operating System
001 The operating system shall provide a common set of mechanisms necessary
to support real-time systems such as multitasking support, CPU scheduling,
basic communication, and memory management.
Writing the Requirements Document 75
Command Validation
211 The flight software shall perform CCSDS command structure validation.
211.1 The flight software shall implement CCSDS Command Operations
Procedure number 1 (COP-1) to validate that CCSDS transfer frames
were received correctly and in order.
211.2 The flight software shall support a fixed-size frame-acceptance and
reporting mechanism (FARM) sliding window of 127 and a fixed
FARM negative edge of 63.
211.3 The flight software shall telemeter status and discard the real-time
command packet if any of the following errors occur:
• checksum fails validation prior to being issued;
• an invalid length is detected;
• an invalid Application ID is detected.
211.4 The flight software shall generate and maintain a Command Link
Control Word (CLCW). Each time an update is made to the CLCW,
a CLCW packet is formatted and routed for possible downlink
(NASA 1996).
A suggested format for the measurable targets based on one suggested in Glinz
(2008) is given in Figure 4.6.
Standard 25030 can be used as a template for organizing the SRS document.
Alternatively, if using the IEEE 830 or another standard template, Figure 4.6 can
also be used to structure metrics and acceptance criteria for requirements, whatever
the overall format being used for the SRS.
* IEEE Std Guide for Developing Systems Requirements Specifications, IEEE, 2002. This stan-
dard is a software agnostic or systems-oriented version of standard 830.
Writing the Requirements Document 77
1. Scope
2. Conformance
3. Normative references
4. Terms and definitions
5. Software quality requirements framework
5.1 Purpose
5.2 Software and systems
5.3 Stakeholders and stakeholder requirements
5.4 Stakeholder requirements and system requirements
5.5 Software quality model
5.6 Software properties
5.7 Software quality measurement model
5.8 Software quality requirements
5.9 System requirements categorization
5.10 Quality requirements life cycle model
6. Requirements for quality requirements
6.1 General requirements and assumptions
6.2 Stakeholder requirements
6.3 System boundaries
6.4 Stakeholder quality requirements
6.5 Validation of stakeholder quality requirements
6.6 Software requirements
6.7 Software boundaries
6.8 Software quality requirements
6.9 Verification of software quality requirements
Annex A (Normative). Terms and definitions
Annex B (Informative), Processes from ISO/IEC 15288
Annex C (Informative), Bibliography
•Attribute: Average time that a scanner unit needs to scan a piece of luggage
•Scale: Seconds (type: ratio scale)
•Procedure: Measure time required to scan a package for forbidden contents, take the average over
1000 pieces of various types.
•Planned value: 50 percent less than reference value
•Lowest acceptable value: 30 percent less than reference value
•Reference value: Average time needed by competing or similar products to scan a piece of luggage
Figure 4.6 Sample requirements attribute metrics for baggage handling system.
78 Requirements Engineering for Software and Systems
Use Cases*
Use cases are an essential element of many SRS documents and are described graph-
ically using any of several techniques. Use cases depict the interactions between the
system and the environment around the system, in particular, human users and
other systems. One representation for the use case is the use case diagram, which
depicts the interactions of the software system with its external environment.
Use cases describe scenarios of operation of the system from the designer’s (as
opposed to customer’s) perspective. Use cases are typically represented using a use
case diagram, which depicts the interactions of the software system with its exter-
nal environment. In a use case diagram, the box represents the system itself. The
stick figures represent “actors” that designate external entities that interact with
the system. The actors can be humans, other systems, or device inputs. Internal
ellipses represent each activity of use for each of the actors (use cases). The solid
lines associate actors with each use. Figure 4.7 shows a use case diagram for the
baggage inspection system.
Three uses are shown—capturing an image of the baggage (“image baggage”),
the detection of a security threat (in which case the bag is rejected from the conveyor
for off-line processing), and then configuration by the systems engineer. Notice
that the imaging camera, product sensor, and reject mechanism are represented
by a human-like stick figure—this is typical—the stick figure represents a system
“actor” whether human or not.
Each use case is, however, a form of documentation that describes scenarios of
operation of the system under consideration as well as pre- and post-conditions
and exceptions. In an iterative development lifecycle these use cases will become
increasingly refined and detailed as the analysis and design workflows progress.
Interaction diagrams are then created to describe the behaviors defined by each use
case. In the first iteration these diagrams depict the system as a “black box,” but
once domain modeling has been completed the black box is transformed into a col-
laboration of objects as will be seen later.
Finally, remember that the use case diagram (the picture) is not a use case. It is
a visual representation of a use case. To illustrate the difference between a model of
* This discussion is adapted from one found in Laplante (2006), with permission.
Writing the Requirements Document 79
Baggage Handler
Image baggage
Camera
Reject Mechanicism
Security Threat
Configure
something and that thing, the cover of Craig Larman’s book on UML and patterns
famously depicts a simple class diagram model of a sailboat with the caption “this
is not a sailboat” (Larman 2004).
Behavioral Specifications
In some cases the requirements engineer may be asked to reverse engineer require-
ments for an existing system when the requirements do not exist, are incomplete,
are out of date, or are incorrect. It may also be necessary to generate requirements
for open source software (software that is free for use and/or redistribution under
the terms of a license) for the purposes of generating test specifications. In these
cases a form of SRS, the behavioral specification, needs to be generated.
80 Requirements Engineering for Software and Systems
Some of these artifacts may have to be scavenged from various sources, such as
customer files, emails, open source community repositories, archives, and so forth.
A brief description of how these artifacts are used in generating the specification is
given below.
Starting with user manuals, statements about the behavior of an application in
response to user input can be directly related to the behavioral specification. User
manuals are particularly well suited for this purpose since describing the response
of software to user stimulus is germane to their existence. Help information, such
as support Web sites and application help menus, are also rich in information that
can either be used directly or abstracted to define behavioral requirements.
Next, release notes can be consulted. Release notes are typically of limited benefit
to the process of developing test cases since they tend to focus on describing which fea-
tures are implemented in a given release. There is usually no description of how those
supported features should function. However, release notes are particularly important
in resolving the conflict that arises when an application does not respond as expected for
features that were partially implemented in or removed from future implementation.
Defect reports can also be a great source for extracting behavioral responses
because they are typically written by users, they identify troublesome areas of the
software, and they often clarify a developer’s intention for the particular behav-
ior. Defect reports, at least for open source systems, are readily found in open
Writing the Requirements Document 81
repositories such as Bugzilla. While it is true that in some cases bug reports contain
too much implementation detail to be useful for extracting behavioral responses,
they can be discarded if behavior cannot be extrapolated from the details.
In many ways, the content of support requests is similar to bug reports in that
they identify unexpected behavior. Unlike bug reports, however, support requests
can sometimes be helpful in identifying features that are not fully implemented
as well as providing information that illuminates the expectations of users. It is
important to investigate both since, in addition to providing the insights men-
tioned, they may also aid in rationalizing unexpected behavior.
For many open source projects, and some closed source projects, there are Web-
based forums associated with the project. Within these forums, various amounts of
behavioral information can be extracted. Ranging from useless to relevant, open-
discussion postings need to be carefully filtered and applied only when other devel-
opment artifacts are lacking. As with other artifacts, these postings can also be used
to clarify behavior.
Finally, in the absence of any other artifacts, the software being tested could
itself be an input to developing structural (glass-box) test cases. Assuming that this
approach is necessary, the reality is that it will really be the tester’s characterization
of correct behavior that will largely prevail in defining the test cases.
Once the discovery process has concluded, the behavioral specification can be
written. The format of the behavioral specification is identical to that for require-
ments specification, and all of the IEEE 830 rules should be applied (Elcock and
Laplante 2006).
◾◾ customers
◾◾ managers
◾◾ developers
◾◾ test engineers
◾◾ maintenance engineers
◾◾ stakeholders
Text Structure
Numbering structure depth is a metric that counts the numbered statements at
each level of the source document. For example, first-level requirements, numbered
1.0, 2.0, 3.0, and so forth, are expected to be very high-level (abstract) require-
ments. Second-level requirements numbered 1.1, 1.2, 1.3, …, 2.1, 2.2, 2.3, …, 3.1,
3.2, etc. are subordinate requirements at a lower level of detail. Even more detailed
requirements will be found at the third level, numbered as 1.1.1, 1.1.2, and so on.
A specification can continue to fourth or even fifth-level requirements, but nor-
mally, third or fourth levels of detail should be sufficient. In any case, the counts
of requirements at level 1, 2, 3, and so on provide an indication of the document’s
organization, consistency, and level of detail.
A thoughtful and well-organized SRS document should have a consistent level
of detail, and if you were to list out the requirements at each level, the resultant
84 Requirements Engineering for Software and Systems
1, 2, 3,4, 5, 6, 7, 8, 9, 10
(a) (b)
(c)
shape should look like a pyramid in that there should be a few numbered state-
ments at level 1 and each lower level should have increasingly more numbered
statements than the level above it (Figure 4.8a).
On the other hand, requirements documents whose requirements counts at
each level resemble an hour-glass shape (Figure 4.8b) are usually those that contain
a large amount of introductory and administrative information. Finally, diamond-
shaped documents, represented by a pyramid followed by decreasing statement
counts at lower levels (Figure 4.8c) indicate an inconsistent level of detail represen-
tation (Rosenberg et al. 2008).
The NASA ARM tool introduced in Chapter 5 computes text structure for a
given SRS document in an appropriate format.
Other bad practices arise from failing to use language that can be verified. For
example, consider this set of “requirements”:
What is wrong with these? The problem is they are completely vague and
immeasurable and therefore unachievable. For example, what does “completely
reliable” mean? Any arbitrary person will have a different meaning for reliability
for a given system. Modularity (in software) has a specific meaning, but how is it
measurable? What does “fast” mean? Fast as a train? Faster than a speeding bullet?
This requirement is just so vague. And finally “errors shall be less than 99%” is a
recipe for a lawsuit. 99% of what?, over what period of time?, and so forth.
For the above set of requirements a slightly better version might be
◾◾ Response times for all level one actions will be less than 100 ms.
◾◾ The cyclomatic complexity of each module shall be in the range of 10 to 40.
◾◾ 95% of the transactions shall be processed in less than 1 s.
◾◾ Mean time before first failure shall be 100 hours of continuous operation.
But even this set is imperfect, because there may be some important details
missing—we really can’t know what, if anything, is missing outside the context of
the rest of the SRS document.
Some final recommendations for the writing of specification documents are
◾◾ Invent and use a standard format and use it for all requirements.
◾◾ Use language in a consistent way.
◾◾ Use “shall” for mandatory requirements.
◾◾ Use “should” for desirable requirements.
◾◾ Use text highlighting to identify key parts of the requirement.
◾◾ Avoid the use of technical language unless it is warranted.
But we are not done yet with the writing of requirements specifications. To this
goal, Chapter 5 is devoted to perfecting the writing of specific requirements.
Exercises
4.1 Under what circumstances is it appropriate to represent an SRS using
informal techniques only?
4.2 What can the behavioral specification provide that a requirements
document cannot?
4.3 If the customer requests that future growth and enhancement ideas be
kept, where can these ideas be placed?
4.4 What are some items to be included under “data retention” in the SRS?
4.5 Here are some more examples of vague and ambiguous requirements
that have actually appeared in real requirements specifications. Discuss
86 Requirements Engineering for Software and Systems
References
Boegh, J. (2008) A new standard for quality requirements, Computer, 25(2): 57–63.
Elcock, A., and P.A. Laplante (2006) Testing without requirements, Innovations in Systems
and Software Engineering: A NASA Journal, 2: 137–145.
Glinz, M. (2008) A risk-based, value-oriented approach to quality requirements, Computer,
25(2): 34–41.
IEEE Standard 830-1998, Recommend Practice for Software Requirements Specifications, IEEE
Standards Press, Piscataway, NJ, 1998.
Laplante, P.A. (2006) What Every Engineer Needs to Know About Software Engineering, CRC/
Taylor & Francis.
Larman, C. (2004) Applying UML and Patterns, 3rd Edition, Prentice-Hall PTR.
NASA WIRE (Wide-Field Infrared Explorer) Software Requirements Specification (1996)
http://sunland.gsfc.nasa.gov/smex/wire/mission/cdhsw/wirrqtop.htm, last accessed
3 February 2008. Neill, C.J., and P.A. Laplante (2003) Requirements engineering: The
state of the practice, Software, 20(6): 40–45.
Norden, B. (2007) Screenwriting for requirements engineers, Software, 26–27.
Rosenberg, L., T. Hammer, and L. Huffman, Requirements, Testing, & Metrics, NASA
Software Assurance Technology Center Report, http://satc.gsfc.nasa.gov, last accessed
2 February 2008.
Chapter 5
Requirements Risk
Management
* A variation of this story first appeared in “End Brake Retarder Prohibitions: Defining ‘Shall
Not’ Requirements Effectively,” Computer, 2009, by Jeff Voas and Phil Laplante.
87
88 Requirements Engineering for Software and Systems
Jake Brake Prohibition,” the term “Jake” being a nick-name of a company that
manufacturers the device, Jacobs Vehicle Systems.
Taking the Pennsylvania form of the sign, if we substitute appropriate synonyms:
The original sign has the paradoxical effect, however, of causing a positive action
(that is, to allow the application of brake retarders).
It is clear that the “brake retarder” sign is a poor one—but perhaps not nearly as
poor as the requirements for installing one. Pennsylvania’s requirements on munici-
palities who wish to implement a “no brake retarder” zone are
and the crash history for the stretch of road a municipality is seeking to keep brake-
retarder free must not include
The italic font was added to the latter section because it highlights the fact that the require-
ments on brake retarder prohibitions contain an embedded shall not requirement.
Given all of this confusion, clearly, a better job in formulating the sign language
is needed, and more work is needed in formulating the requirements for the sign.
Formal methods may have been advisable in this regard. All of these activities fall
under the context of requirements risk management.
Requirements risk management involves the proactive identification, monitor-
ing, and mitigation of any factors that can threaten the integrity of the requirements
Requirements Risk Management 89
engineering process. Requirements risk factors can be divided into two types: tech-
nical and management. Technical risk factors pertaining to the elicitation, agree-
ment, and representation processes have already been discussed in Chapter 3. In
Chapter 6 we discuss the use of formal methods in improving the quality of require-
ments representation through mathematically rigorous approaches. Requirements
management risk factors tend toward issues of expectation management and inter-
personal relationships, and these are discussed in Chapter 9. In this chapter we wish
to focus on the mitigation of requirements risk through the analysis of the require-
ments specification document itself. That is, the validation and verification of the
SRS occur early in order to avoid costly problems further downstream. There are a
variety of complementary and overlapping techniques to check quality attributes of
the SRS, but IEEE Standard 830 contains a set of rules that are extremely helpful
in vetting the technical aspects of the SRS and, in turn, mitigating risk later on.
So in this chapter we will be looking at the nature of SRS verification and valida-
tion, at various qualities of “goodness” for requirements specifications, and finally,
turn to work at NASA that can be very helpful in comprehending these qualities
of goodness.
In other words, validation involves fully understanding customer intent and verifi-
cation involves satisfying customer intent.
There are terrific benefits to implementing a requirements verification and vali-
dation program. These include
Requirements validation involves checking that the system provides all of the
functions that best support the customer’s needs and that it does not provide the
functions that the customer does not need or want. Additionally, validation should
ensure that there are no requirements conflicts and that satisfaction of the require-
ments can actually be demonstrated. Finally, there is some element of sanity check in
terms of time and budget—a requirement may be able to be literally met, but the cost
and time needed to meet the requirement may be unacceptable or even impossible.
Requirements verification (testing) involves checking satisfaction of a number
of desirable properties of the requirements (e.g., IEEE 830 rules). Usually we do
both validation and verification (V&V) simultaneously, and often the techniques
used for one or the other are the same.
when constraints are identified, and when goals are operationalized (Hetzel 1988).
As to operationalization, we’ll refer to goals-based analysis when discussing metrics
generation.
Requirements Understanding
In an early and influential book on software testing, Bill Hetzel proposed several
paradigms for requirements verification and validation. To set the stage for this
V&V, Hetzel addressed the problem of requirements understanding through the
following analogy.
Imagine you are having a conversation with a “customer” in which he says that
he would like for you to develop some kind of health management system, which,
among other things, ensures that patients are eating a “well-balanced meal.” You
readily agree to this requirement. Many weeks later as you begin thinking about a
system design, you reconsider the requirement to provide a “well-balanced meal.”
What does that mean? In one interpretation, it could mean, adding up everything
consumed; were minimum nutritional guidelines in terms of calories, protein, vita-
mins, and so forth met? Another interpretation is that the patient ate exactly three
meals. Yet another interpretation is that the meals were “well balanced” in the sense
that each food item weighed the same amount (Hetzel 1988).
Aside from the more ridiculous interpretations of “well-balanced meal,” the
previous example illustrates a problem. “Well-balanced meal” may have no lan-
guage equivalent in French, Hindi, Mandarin, or any other language. So “well-
balanced meal” would create a problem for any non-native English speaker. What
other colloquialisms do we use in our specifications and then ship out for offshore
development? Clearly, there are various problems that can arise from language and
cultural differences.
One solution to the requirements understanding problem is offered by
Hetzel. He suggests that for correct problem definition it is best to specify
the test for accepting a solution along with the statement of the requirement.
When the statement and test are listed together, most problems associated with
misunderstanding requirements disappear. In particular we want to derive
requirements-based test situations and use them as a test of requirement under-
standing and validation.
For example, when a requirement is found to be incomplete, we can use the
test case to focus on missing information. That is, design the test case to ask the
question, “What should the system do in this case when this input is not supplied?”
Similarly, when a requirement is found to be fuzzy or imprecise, use a test case to
ask the question, “Is this the result I should have in this situation?” The specific
instance will focus attention on the imprecise answer or result and ensure that it is
examined carefully (Hetzel 1988). Today, Hetzel’s approach is called “test-driven
development.”
92 Requirements Engineering for Software and Systems
Prototyping
Prototypes are useful in V&V when very little is understood about the require-
ments or when it is necessary to gain some experience with the working model in
order to discover requirements. The principle behind using working prototypes is
the recognition that requirements change with experience and prototyping yields
that experience.
There are two kinds of prototypes—throwaway and non-throwaway. Throwaway
prototypes are designed to be quickly built and then discarded. Non-throwaway
prototypes are intended to be used as the basis for the working code. The advantage
of throwaway code is that it can be more quickly built. But non-throwaway code
does not waste effort. Of course, care should be taken to ensure that throwaway
code does not end up being kept because it was likely not built robustly.
Incremental and evolutionary development approaches are essentially based on
a series of non-throwaway prototypes. The difference between the two approaches
is, essentially, that in incremental development the functionality of each release is
planned, whereas in evolutionary development, subsequent releases are not planned
out. In both incremental and evolutionary development, lessons learned from prior
releases inform the functionality of future releases’ incremental and evolutionary
development. In essence, early versions are prototypes used for future requirements
discovery.
Table 5.1 A Sample Requirements Validation Matrix for the Smart Home
System SRS in the Appendix
Requirement Test Cases Status
Here the requirements forming the SRS are listed verbatim in the far left col-
umn, the tests that verify those requirements listed in the center column, and
the test case status in the far right column. The status field can contain “passed,”
“failed,” “not run,” “omitted,” or any variation of these keywords. Additional col-
umns can be added to the matrix to indicate when the test was run, who conducted
the test, where the test was run, the status of testing equipment used, and for com-
ments and other relevant information.
The requirements validation matrix is easily made part of the master test plan and
can be updated throughout the project to give a record of all requirements testing.
fights. Still others have looked at the fighting characteristics and results against
similar opponents. You could even argue about training techniques and the qual-
ity of their managers, trainers, and promoters. But there is no conclusive evidence
that one fighter was better than the other or that they were evenly matched because
there are no direct metrics available to make just a value judgment. Now consider
an argument involving who is the best long jumper of all time. The answer should
be easy—Mike Powell, who holds the record at 29 feet, 4 and 3/8 inches (with no
wind at his back). No one has ever jumped farther, and he broke Bob Beamon’s
record, which stood for 23 years. You can try to argue that Beamon was better in
terms of other characteristics—competitive spirit, tenacity, resiliency, sportsman-
ship, etc., but those are all unmeasurable.
Now imagine an argument with a customer involving whether or not a require-
ment that “the software shall be easy to use” was met or not. You contend that the
requirement was met because “look, the software is easy to use.” The customer
disagrees because she feels that “the software is too hard to use.” But you can’t win
the argument because you have no metrics. It is rather disappointing that as soft-
ware engineers we are often no better off than two boxing pundits arguing from
barstools (Laplante et al. 2007).
So which qualities should you consider and measure? Any collection of quali-
ties is sometimes referred to as “the ilities.” There are many possible qualities that
comprise the “ilities” including:
◾◾ accuracy ◾◾ readability
◾◾ completeness ◾◾ reusability
◾◾ consistency ◾◾ reliability
◾◾ correctness ◾◾ safety
◾◾ efficiency ◾◾ security
◾◾ expandability ◾◾ survivability
◾◾ interoperability ◾◾ testability
◾◾ maintainability ◾◾ understandability
◾◾ manageability ◾◾ usability
◾◾ portability
This is not an exhaustive list. In any case, for each requirement containing one
of the ilities there needs to be an associated metric to determine if the requirement
has been met. Requirements measurement is a concept that we will be revisiting
over and over again.
Goal/Question/Metric Analysis
We previously mentioned the use of goal-based analysis for requirements veri-
fication and validation. But how can we generate the metrics that we need?
Requirements Risk Management 95
1. Purpose
2. Referenced documents
3. Definitions
4. V&V overview
4.1 Organization
4.2 Master schedule
4.3 Software integrity level scheme
4.4 Resources summary
4.5 Responsibilities
4.6 Tools, techniques, and methods
5. V&V processes
5.1 Process: Management
5.1.1 Activity: Management of V&V
5.2 Process: Acquisition
5.2.1 Activity: Acquisition support V&V
5.3 Process: Supply
5.3.1 Activity: Planning V&V
5.4 Process: Development
5.4.1 Activity: Concept V&V
5.4.2 Activity: Requirements V&V
5.4.3 Activity: Design V&V
5.4.4 Activity: Implementation V&V
5.4.5 Activity: Test V&V
5.4.6 Activity: Installation and checkout V&V
5.5 Process: Operation
5.5.1 Activity: Operation V&V
5.6 Process: Maintenance
5.6.1 Activity: Maintenance V&V
6. V&V reporting requirements
6.1 Task reports
6.2 Activity summary reports
6.3 Anomaly reports
6.4 V&V final report
6.5 Special studies reports (optional)
6.6 Other reports (optional)
7. V&V Administrative requirements
7.1 Anomaly resolution and reporting
7.2 Task iteration policy
7.3 Deviation policy
7.4 Control procedures
7.5 Standards, practices, and conventions
8. V&V test documentation requirements
But from a risk mitigation standpoint, we are most interested in the qualities of
goodness for requirements document that are described. These are
◾◾ correct
◾◾ unambiguous
◾◾ complete
◾◾ consistent
◾◾ ranked for importance and/or stability
◾◾ verifiable
◾◾ modifiable
◾◾ traceable
Correctness
Correctness means that any requirement listed is one that needs to be met (i.e.,
incorrect requirements specifications specify unwanted behavior). Correctness
is an important quality of an SRS document because unwanted behavior is,
well, unwanted.
Sometimes unwanted behavior is not always obvious. Consider the following
requirement for a computer security system.
There is a problem with this requirement, for, if user A tries to set a password
that is already taken by another user, the system has to indicate so. This gives user
A knowledge of the password of another user, which could be used for an attack.
Clearly this is incorrect behavior that we do not want to specify.
Various techniques can be used to study correctness including reviews and
inspections, but none of these is perfect and it is probably the case that more than
one review and/or inspection needs to be employed to ensure correctness.
Ambiguity
We define ambiguity by complementation—an SRS document is unambiguous if
each specification element can have only one interpretation.
98 Requirements Engineering for Software and Systems
Can you see the problem in this functional definition? Aside from its confus-
ing wording, the requirement doesn’t make sense. If you wait eight hours from the
previous start up, then start the engine to drive somewhere, you have to wait at
least eight hours to start up and drive back to your origin. If you have any warm
start before three consecutive cold starts, the sequence has to begin again. Is the
only possible way to satisfy this condition to drive somewhere, wait there for eight
hours and then drive back to the origin (three times in a row)? Or, drive around for
a while, return to the origin, wait eight hours, then do it again (two times more)?
This sequence of events is very hard to follow, and in fact, after one month of try-
ing, the author could not get the light to reset without disconnecting and recon-
necting the battery.
Another reason why ambiguity is so dangerous is that, in an ambiguous require-
ments specification, literal requirements satisfaction may be achieved but not cus-
tomer satisfaction. “I know that is what I said I wanted, but now that I see it in
action, I realized that I really meant something else” is an unfortunate refrain. Or
consider this fictitious quote—“oh, you meant THAT lever; I thought you meant
the other one.” We would never want this scenario to be played out late in the sys-
tem’s life cycle.
Some of the techniques that could be used to resolve ambiguity of SRS documents
include formal reviews, viewpoint resolution, and formal modeling of the specification.
Completeness
An SRS document is complete if there is no missing functionality, that is, all appro-
priate desirable and undesirable behaviors are specified. Recall from Figure 1.4 that
there is usually a mismatch between desired behaviors and specified behaviors—
there is always some unspecified behavior, as well as undesirable behavior, that finds
* This is not a verbatim quote. It is a representation of the manual’s verbiage to avoid exposing
the identity of the vehicle.
Requirements Risk Management 99
its way into the system that should be explicitly prohibited. Either case can lead to
literal requirements satisfaction but not customer satisfaction.
Completeness is a difficult quality to improve. How do you know when some-
thing is missing? Typical techniques for reducing incompleteness include various
reviews, viewpoint resolution, and the act of test case generation. Test-driven devel-
opment, which will be discussed in Chapter 6, has the effect of asking “what’s
missing from here” and “what can go wrong?” Answering these questions will tend
to lead to systems features being uncovered. QFD is also a powerful technique to
combat incompleteness because of the comparison of the system under consider-
ation with competing systems.
Consistency
The consistency of the SRS document can take two forms: internal consistency—
i.e., satisfaction of one requirement does not preclude satisfaction of another; and
external consistency—i.e., the SRS is in agreement with all other applicable docu-
ments and standards.
When either internal or external inconsistency is present in the SRS, it can
lead to difficulties in meeting requirements and delays and frustration downstream.
Internal and external consistency can be checked through reviews, viewpoint reso-
lution, various formal methods, and prototyping.
Ranking
A requirements set is ranked if the items are prioritized for importance and/or sta-
bility. Importance is a relative term, and its meaning needs to be resolved on a case-
by-case basis. Stability means the likelihood that the requirement would change.
For example, a hospital information system will always have doctors, nurses, and
patients (but governing legislation will change). The ranking could use a numerical
scale (positive integers or real numbers), a simple rating system (e.g., Mandatory,
Desirable, Optional), or could be ranked by mission criticality.
For example, NASA uses a four-level ranking system. Level 1 requirements
are mission-level requirements that are very high level and very rarely change.
Level 2 requirements are “high level” with minimal change. Level 3 requirements
are those requirements that can be derived from level 2 requirements. That is, each
level 2 requirement traces to one or more level 3 requirement. Contracts usually
bid at this level of detail. Finally, level 4 are detailed requirements and are typically
used to design and code the system (Rosenberg et al.).
Ranking is an extremely important quality of an SRS document. Suppose
in the course of system design two requirements cannot be met simultaneously.
It becomes easier to decide which requirement to relax based on its ranking. In
addition to being useful for tradeoff engineering, ranking can be used for cost
100 Requirements Engineering for Software and Systems
estimation and negotiation, and for dispute resolution. Ranking validation is easy
enough through reviews and viewpoint resolution (to agree upon the rankings).
Verifiability
An SRS is verifiable if satisfaction of each requirement can be established using
measurement or some other unambiguous means. This quality is important because
a requirement that cannot be shown to be met has not been met. When require-
ments cannot be measured, they cannot be met and disputes will follow.
Verifiability can be explored through various reviews, through test case design
(design driven development), and through viewpoint resolution.
Modifiability
Modifiability means that the SRS and structure of the document will readily yield
to changes. Usually this means that the document is numbered, stored in a conve-
nient electronic format, and compatible with common document processing and
configuration tools.
It is obvious why modifiability is an important quality of an SRS document—
requirements will change! Ease of modification will also reduce costs, assist in
meeting schedules, and facilitate communications. Reviews and inspections are the
most obvious way to assess a document’s modifiability.
Traceability
An SRS is traceable if each requirement is clearly identifiable, and all linkages to
other requirements (e.g., dependencies) are clearly marked. Traceability is an essen-
tial quality for effective communications about requirements, to facilitate easy mod-
ification, and even for legal considerations. For example, in the case of a dispute, it is
helpful to show that responsible linking of related requirements was done.
In addition, each requirement should have a link to at least one other require-
ment. Traceability can be measured using network-like analyses. For example, we
could count the efferent (inward) and afferent (outward) coupling as indicated by
the key phrases “uses,” “is referenced by,” “references,” “is used by,” and so on.
Generally, we would like each requirement to be tested by more than one test
case. At the same time, we would like each test case to exercise more than one
requirement. The “test span” metrics are used to characterize the test plan and iden-
tify insufficient or excessive testing:
◾◾ Requirements per test
◾◾ Tests per requirement
Research is still ongoing to determine appropriate statistics for these metrics.
But at the very least, you can use these metrics to look for inconsistencies and
non-uniform test coverage. Of course, there is always a tradeoff between time and
Requirements Risk Management 101
cost of testing versus the comprehensiveness of testing. But testing is not the subject
of this book.
Group reviews and inspections and automated tools can also be used to check
for traceability between requirements to/from tests.
In addition, various ratios can be formed using macro- and micro-level indi-
cators. No particular thresholds for the metrics are given (research is still being
conducted in this regard). However, at the end of this section, summary metrics for
56 NASA projects are given for comparison.
A description of the metrics and some excerpts from the ARM report for creat-
ing the Smart Home SRS document found in the appendix. The definitions are
derived from those reported by the tool and described by the authors of the tool in
a related report (Rosenberg et al.).
Requirements Risk Management 103
Imperatives
The first metric, imperatives, is a micro indicator that counts the words and phrases
that command that something must be provided. Imperatives include
responsible for 0
Continuances will 51
Continuances are phrases that follow an
should 7
imperative and precede the definition of
lower-level requirement specifications. Total 367
Continuances indicate that requirements
have been organized and structured.
Examples of and counts of continuances found in the Smart Home SRS document
are shown in Table 5.4. The symbol “:” is treated as a continuance when it follows
an imperative and precedes a requirement definition.
These characteristics contribute to the ease with which the requirement spec-
ification document can be changed. Too many continuances, however, indicate
104 Requirements Engineering for Software and Systems
Figure 5.2 Excerpt of ARM output for Smart Home requirements specification
document.
below 0
as follows 0
following 0
listed 0
in particular 0
support 0
and 85
: 2
Total 87
Requirements Risk Management 105
Note 0
Total 14
Directives
The micro-indicator “directives” count those words or phrases that indicate that the
document contains examples or other illustrative information. Directives point to
information that makes the specified requirements more understandable. Typical
directives and their counts found in the Smart Home SRS document are shown in
Table 5.5. Generally, the higher the number of total directives, the more precisely
the requirements are defined.
Options
Options are those words that give the developer latitude in satisfying the specifica-
tions. At the same time, options give less control to the customer. Options and their
counts found in the Smart Home SRS document are shown in Table 5.6.
Weak Phrases
Weak phrases are clauses that are subject to multiple interpretations and uncertainty
and therefore can lead to requirements errors. Use of phrases such as “adequate”
and “as appropriate” indicate that what is required is either defined elsewhere or
worse, the requirement is open to subjective interpretation. Phrases such as “but not
limited to” and “as a minimum” provide the basis for expanding requirements that
have been identified or adding future requirements. The counts of weak phrases for
the Smart Home SRS document are shown in Table 5.7.
The total number of weak phrases is an important metric that indicates the
extent to which the specification is ambiguous and incomplete.
106 Requirements Engineering for Software and Systems
Table 5.7 Weak Phrases for the Table 5.8 Incomplete Words and
Smart Home SRS Document Phrases Found in the Smart Home
SRS Document
Weak Phrase Occurrence
Incomplete Term Occurrence
adequate 0
TBD 0
as appropriate 0
TBS 0
be able to 3
TBE 0
be capable of 0
TBC 0
capability of 0
TBR 0
capability to 0
not defined 0
effective 0
not determined 0
as required 0
but not limited to 0
normal 1
as a minimum 0
provide for 1
Total 0
timely 0
easy to 1
Total 6
Incomplete
The “incomplete” micro-indicator counts words that imply that something is
missing in the document, for whatever reason (for example, future expansion,
undetermined requirements). The most common incomplete notation is “TBD”
for “to be determined.”
Variations of “TBD” include
◾◾ TBD—“to be determined”
◾◾ TBS—“to be scheduled”
◾◾ TBE—“to be established” or “yet to be estimated”
◾◾ TBC—“to be computed”
◾◾ TBR—“to be resolved”
◾◾ “Not defined” and “not determined” explicitly state that a specification state-
ment is incomplete.
◾◾ “But not limited to” and “as a minimum” are phrases that permit modifica-
tions or additions to the specification.
Incomplete words and phrases found in the Smart Home SRS document are shown
in Table 5.8.
Requirements Risk Management 107
Subjects
Subjects are a count of unique combinations of words immediately preceding
imperatives in the source file. This count is an indication of the scope of subjects
addressed by the specification.
The ARM tool counted a total of 372 subjects in the Smart Home SRS document.
Specification Depth
Specification depth counts the number of imperatives at each level of the docu-
ment and reflects the structure of the requirements. The topological structure of
requirements was discussed in Chapter 4. The numbering and specification struc-
tural counts for the Smart Home SRS document as computed by the NASA ARM
tool are provided in Table 5.9.
These counts indicate that the SRS requirements hierarchy has a “diamond”
shape in the manner of Figure 4.8c.
1 19 1 0
2 71 2 50
3 265 3 258
4 65 4 64
5 0 5 0
6 0 6 0
7 0 7 0
8 0 8 0
9 0 9 0
Readability Statistics
In Chapter 4 we discussed the importance of clarity in the SRS document. There
are various ways to evaluate reading levels, but most techniques use some formula-
tion of characters or syllables per words and words per sentence. For example, the
Flesch Reading Ease index is based on the average number of syllables per word
and of words per sentence. Standard writing tends to fall in the 60–70 range but
apparently, a higher score increases readability.
The Flesch-Kincaid Grade Level index is supposed to reflect a grade-school
writing level, so a score of 12, means that someone with a 12th grade education
would understand the writing. But standard writing averages 7th to 8th grade, and
a much higher score is not necessarily good—higher level writing would be harder
to understand. The Flesch-Kincaid Grade level indicator is also based on the aver-
age number of syllables per word and on words per sentence. There are other grade
level indicators as well (Wilson et al.).
The NASA ARM tool does not provide the ability to count these metrics, but
most versions of the popular Microsoft Word can provide at least some relevant statis-
tics. For example, the version of Word 2007 used to prepare this manuscript will com-
pute various word, character, paragraph, and sentence counts and averages. It will also
compute the Flesch Reading Ease and Flesch-Kincaid Grade level metrics (consult the
user’s manual or on-line help feature to determine how to compute such metrics for
your word processor, if available). In any case, we used Word to calculate the statistics
for the Smart Home SRS document and obtained the output shown in Figure 5.3.
The SRS document is assessed to be at a 12th grade reading level. The low num-
ber of sentences per paragraph (1.2) is an artifact of the way the tool counted each
numbered requirement as a new paragraph.
Readability Statistics ? ×
Counts
Words 7526
Characters 39189
Paragraphs 496
Sentences 485
Averages
Sentences per Paragraph 1.2
Words per Sentence 14.5
Characters per Words 5.0
Readability
Passive Sentences 10%
Flesch Reading Ease 32.3
Flesch‒Kincaid Grade Level 12.3
OK
Figure 5.3 Readability statistics for Smart Home SRS document obtained from
Microsoft Office Word 2007.
Weak Phrases
Lines of Text
(can, may…)
Imperatives
Directives
Option
Minimum 143 25 15 0 0 0 0
Quality Attributes
Understandable
Unambiguous
Validatable
Modifiable
Consistent
Complete
Traceable
Verifiable
Testable
Ranked
Correct
Categories of
Quality Indicators
Imperatives
Continuances
Directives
Options
Weak phrases
Size
Text structure
Specification
depth
Readability
Exercises
5.1 What can be some pitfalls to watch out for in ranking requirements?
5.2 Explain how the following can help remove ambiguity from the SRS.
NN formal reviews
NN viewpoint resolution
NN formal modeling
5.3 Which of the IEEE Standard 830 qualities seem most important? Can
you rank these?
5.4 For an available SRS document, conduct an informal assessment of its
IEEE 830 qualities.
5.5 For each Quality Attribute in Table 5.11 discuss its relationship to the
Categories of Quality Indicators.
Requirements Risk Management 111
References
Basili, V., G. Caldiera, and H.D. Rombach (1994) Goal question metric approach,
Encyclopedia of Software Engineering, pp. 528–532, John Wiley & Sons, Inc.,
Boehm, B.W. (1984) Verifying and validating software requirements and design specifica-
tions, IEEE Software, (1): 75–88.
Hetzel, B. (1988) The Complete Guide to Software Testing, 2nd Edn, QED Information
Sciences, Inc.
IEEE Std 830-1993, IEEE Recommended Practice for Software Requirements Specifications,
Institute for Electrical and Electronics Engineers, Piscataway, NJ, 1993.
IEEE Std 1012-2004, IEEE Standard for Software Verification and Validation, Institute for
Electrical and Electronics Engineers, Piscataway, NJ, 2004.
IEEE Std 12207.0-1996, IEEE/EIA Standard—Industry Implementation of International
Standard ISO/IEC 12207:1995 (ISO/IEC 12207) Standard for Information Tech
nology—Software Life Cycle Processes, Institute for Electrical and Electronics
Engineers, Piscataway, NJ, 1996.
Laplante, P.A., W.W. Agresti, and G.R. Djavanshir (2007) Guest editor’s introduction, spe-
cial section on IT Quality Enhancement and Process Improvement, IT Professional,
November/December, pp. 10–11.
NASA Procedural Requirements, NASA Software Engineering Requirements, NPR 7150.2,
http://nodis3.gsfc.nasa.gov/displayDir.cfm?Internal_ID=N_PR_7150_0002_&page_
name=Chapter3, 27 September 2004, last accessed 1 February 2008.
O’Neil, R. (2004) Pennsylvania’s “No Jake Braking” Signs, OLR Research Report #004-R-0515,
July 1, 2004. Found on the Web at http://www.cga.ct.gov/2004/rpt/2004-R-0515.
htm, last accessed 20 June 2008.
Rosenberg, L., T. Hammer, and L. Huffman, Requirements, Testing, & Metrics, NASA
Software Assurance Technology Center Report, satc.gsfc.nasa.gov, last accessed 1 Feb
ruary 2008.
Voas, J., and P. Laplante End brake retarder prohibitions: Defining “shall not” requirements
effectively, Computer 2009.
Wilson, W.M., L.H. Rosenberg, and L.E. Hyatt, Automated analysis of requirement speci-
fications, http://satc.gsfc.nasa.gov/support/ICSE_MAY97/arm/ICSE97-arm.htm, last
accessed 1 February 2008.
This page intentionally left blank
Chapter 6
Formal Methods
Motivation
Systems have tremendous sensitivity to errors in a requirements specification—even
a misplaced comma can have severe consequences. In code implementation, it is
obvious that misplacing even a single character can make a great deal of difference.
In fact, the accidental substitution of a period for a comma in a single Fortran
statement resulted in the loss of the Mariner 1, the first American probe to Venus
in 1962. But how can such a serious problem exist when misplacing a character in
a requirements specification? Let’s see how that might be so.
The title of Lynne Truss’s 2004 book on punctuation, Eats Shoots and Leaves,*
could refer to either
Clearly the title of the book is not that of a software specification, but we hope
this anecdote illustrates that simple punctuation differences can convey a dramati-
cally different message or intent, especially in a requirements specification.
* Actually, the author heard the joke differently from members of the Royal Australian Air Force
almost 20 years ago. As told, the Panda is an amorous, but lazy creature and is well known
for its ability to scope out a tree occupied by a panda of the opposite sex, where it “eats, roots,
shoots, and leaves.” In a double entendre, the middle portion of the quote refers to the act of
procreation.
113
114 Requirements Engineering for Software and Systems
Aside from punctuation, there are a number of problems with conventional soft-
ware specifications built using only natural language and informal diagrams. These
problems include ambiguities, where unclear language or diagrams leave too much
open to interpretation; vagueness, or insufficient detail; contradictions, that is, two
or more requirements that cannot be simultaneously satisfied; incompleteness or any
other kind of missing information; and mixed levels of abstraction where very detailed
design elements appear alongside high-level system requirements. To illustrate, con-
sider the following hypothetical requirement for a missile launching system.
Aside from the fact that this requirement is written in a confusing man-
ner, the complexity of the logic makes it difficult to know just exactly what the
user intends. And if user's intent is wrongly depicted in the language of the
requirements, then the wrong system will be built. It is sometimes said “syntax
is destiny.”
It is because we need precision beyond that which can be offered by natural
languages that we frequently need to reach for more powerful tools, which can only
be offered by mathematics.
It is clear from the three different but similar definitions that formal methods
have a rigorous, mathematical basis.
Formal methods differ from informal techniques, such as natural language, and
informal diagrams like flowcharts. The latter cannot be completely transliterated
into a rigorous mathematical notation. Of course, all software requirements speci-
fications will have informal elements, and there is nothing wrong with this fact.
However, there are apt to be elements of the system specification that will benefit
from formalization.
Techniques that defy classification as either formal or informal because they
have elements of both are considered to be semi-formal. For example, the UML
version 1.0 is considered to be semi-formal because not all of its meta models have
precise mathematical equivalents.
But what advantage is there in applying a layer of potentially complex math-
ematics to the already complicated problem of behavioral description? The answer
is given by Thomas E. Forster, a giant of formal methods: “One of the great insights
of twentieth-century logic was that, in order to understand how formulae can bear
the meanings they bear, we must first strip them of all those meanings so we can
see the symbols as themselves … [T]hen we can ascribe meanings to them in a sys-
tematic way … That makes it possible to prove theorems about what sort of mean-
ings can be borne by languages built out of those symbols.” (Forster 2003).
A Little History
Formal methods have been in use by software engineers for quite some time. The
Backus-Naur (or “Normal”) Form (BNF) is a mathematical specification language
originally used to describe the Algol programming language in 1959. Since then a
number of formal methods have evolved. These include
116 Requirements Engineering for Software and Systems
Finite State Machines, Petri Nets, and Statecharts or other techniques regularly
used by systems and software engineers can be used formally. Other formal meth-
ods derive from general mathematical frameworks, such as category theory, and a
number of domain-specific and general languages have been developed over the
years, often with specialized compilers or other toolsets.
Formal methods are used throughout Europe, particularly in the UK, but not
as widely in the United States. However, important adopters of formal methods
include NASA, IBM, Lockheed, HP, and AT&T.
Examples
To illustrate the use of formal methods in requirements engineering, we present a
number of examples using several different techniques. Our purpose is not to pres-
ent any one formal method and expect the reader to master it. Rather, we wish to
show a sampling of how various formal methods can be used to strengthen require-
ments engineering practice.
TRAIN STATION
MACHINE Station
INCLUDES TrackSection
VARIABLES
platforms, max_trains, trains_in_station
INVARIANT
trains_in_station Є N ^
max_trains Є N ^ trains_in_station ≤ max_trains ^
platforms Є seq(sections) ^
size(platforms) = card(ran(platforms)) ^
max_trains ≤ size(platforms)
INITIALIZATION
train_departs(ts)
PRE ts ran(platforms) ^
tstate(ts) = blocked
THEN
departure(ts) | |
trains_in_station := trains_in_station ‒ 1
END;
The next operation is the opening platform ts (Figure 6.5). The precondition is
that the platform is in the range of the sequence of platforms for that station and that
the current platform is closed. If so, then platform ts is marked as being opened.
The closing of a platform operation is similar (Figure 6.6). The precondition is
that the platform is in the range of the sequence of platforms for that station and
that the current platform is open. If so, then platform ts is marked as being closed.
Finally, an operation is needed to set the maximum number of trains, mt, that
can be at a given station (Figure 6.7). The preconditions are that mt must be a
natural number and cannot exceed the maximum number of platforms and that
the maximum number of trains for a station cannot be less than the number of
trains already there.
The point behind this is that the mathematical specification is far more precise
than the natural language “translation” of it. In addition, the mathematical represen-
tation of the behavior is less verbose than the natural language version. Finally, the
120 Requirements Engineering for Software and Systems
Figure 6.7 Behavior for setting the maximum number of trains for a train
station.
Formal Methods 121
M : I × S → [O × S] (6.1)
Figure 6.8 Initialization code in PVS for space shuttle functionality (Crow and
Di Vita 1998).
122 Requirements Engineering for Software and Systems
END finite_sequences
requirements: THEORY
BEGIN
IMPORTING finite_sequences
...
jet: TYPE
rot_jet: TYPE FROM jet
jet_bound: posint
jet_count: [rot_jet -> below[jet_bound)]
jet_count_ax: AXIOM injective?(jet_count)
finite_number_of_jets: LEMMA . . .
vernier?: pred[rot_jet]
vernier_jet: TYPE = (vernier?)
there_is_a_vernier: AXIOM (EXISTS j: vernier? (j)
downfiring?: pred[vernier_jet]
...
END requirements
Figure 6.9 Behavior of vernier rockets in space shuttle system (Crow and Di Vita
1998).
* This section is adapted from Formalization of an EMS System Using Category Theory, Master’s
thesis, Ann Richards under the supervision of P. Laplante (Penn State University, 2006).
Formal Methods 123
f
A B
fog
functionality. Finally, for ease of maintenance and troubleshooting for the design-
ers and programmers, the use of CT can show where an error might be contained,
while allowing for the group of functions to be analyzed and troubleshooting on
an input-by-input basis. The following is a brief introduction to category theory for
software specification.
Suppose we have classes of abstract objects, A, B, and C. Further, suppose there
are functions f and g such that and f : A → B and g : B → C. A category is composed
of the objects of the category and the morphisms of the category. A basic functional
relationship can be seen in Figure 6.10 where f g is the composition of f and g.
CT is widely used to model structures and their transformations over time (rep-
resented by finite or infinite sequences of functional compositions). For example, in
Figure 6.11, the sequence of composed relationships between f and g would be given
by gf, gfgf, gfgfgfgf, and so on.
These sequences also represent categories. For example, we just saw the space
shuttle behavioral specification represented as an infinite sequence of state transi-
tions using the PVS notation.
The composition of a system is also appropriate to model the modularity of a
larger system and its interconnections. In comparison to a truth table, which is a
great formalizing and testing tool, CT can associate related items and then decom-
pose each into something that can be examined on a lower level. For example, busi-
ness logic can be placed in a category either intuitively or architecturally.
A B
g
Ems Host A&B Ems Host A&B Ems Host A&B Ems Host A&B
Formal Methods
OAG Host A&B OAG Host A&B OAG Host A&B OAG Host A&B
Figure 6.12 Configuration Monitor (CfgMoni) and Configuration Control (CfgCTRL) EMS
and OAG relationship.
125
126 Requirements Engineering for Software and Systems
C = CfgCtrl
M = CfgMoni
A1 B1
A1
C C
EMS g1 EMS
M M
j(g) j(g)
h(g) h(g )
A2 B2
f2
C C
g2
OAG OAG
M M
C2 D2
To relate this to the EMS and OAG configurations, the set A1 is EMS CfgCtrl A,
the set B1 is EMS CfgCtrl B, and j(g) : (C1 ∪ D1) → (A2 ∪ B2) shows that CfgMoni
from either EMS A or B maps to CfgCtrl on the OAG A or B. And we could con-
tinue with this formalization (only a partial formalization has been presented).
Requirements Validation
We already discussed requirements validation in Chapter 5 using informal tech-
niques, but formal techniques are particularly appropriate for testing the require-
ments to ensure, for example, that the requirements are consistent. By consistent we
mean that the satisfaction of one requirement does not preclude the satisfaction of
any other. One way to formally prove consistency is with a truth table. In this case,
we rewrite each requirement as a Boolean proposition. Then we show that there is
Formal Methods 127
some combination of values for the Boolean variables of this collection of require-
ments for which all propositions (requirements) are true.
To illustrate, consider the following requirements from part of the pet store
POS system:
1.1 If the system software is in debug mode, then the users are not permitted
to access the database.
1.2 If the users have database access, then they can save new records.
1.3 If the users cannot save new records, then the system is not in debug
mode.
1.1 p ⇒ ¬q
1.2 q ⇒ r
1.3 ¬r ⇒ ¬p
Now we construct a truth table (Table 6.1) and determine if any one of these
rows has all “T”s in the columns corresponding to propositions 1.1, 1.2, and 1.3,
meaning each of the requirements is satisfied. If we can find such a row, then the
requirements are consistent.
We see that there are four rows where all three propositions representing the
requirements are true for all combinations of Boolean values. Therefore, this set of
requirements is consistent.
Notice that requirement 1.3 likely does not make logical sense. If the users
cannot save new records then it is likely it was intended to say that the system is in
debug mode (as opposed to not in debug mode). We deliberately left this logically
questionable requirement in place to make a point—this system of requirements
is consistent but not necessarily correct (in terms of what the customer intended).
This consistency checking process will not uncover problems of intent (validity)—
these must be uncovered through other means such as requirements reviews.
Consistency checking using Boolean satisfiability is a powerful tool. However,
although the process can be automated, the problem space grows large very quickly.
For n logical variables in the requirements set, the problem is O(2n). This kind of
problem quickly becomes intractable even for supercomputers—it is a well-known
NP-Complete problem, the Boolean Satisfiability problem. Therefore, we would
128 Requirements Engineering for Software and Systems
T T T F F F F T T
T T F F F T F F F
T F T F T F T T T
T F F F T T T T F
F T T T F F T T T
F T F T F T T F T
F F T T T F T T T
F F F T T T T T T
likely use this technique for requirements verification only for highly mission-
critical situations. For example, the launch/no-launch decision logic for a weapon,
dosage administration logic for some kind of medical equipment, shut-down logic
for a nuclear power plant, and so on.
Theorem Proving
Theorem proving techniques can be used to demonstrate that specifications are cor-
rect. That is, axioms of system behavior can be used to derive a proof that a system
(or program) will behave in a given way. Remember, a specification and program
are both the same thing—a model of execution. Therefore program proving tech-
niques can be used for appropriately formalized specifications. These techniques,
however, require mathematical discipline.
Program Correctness
A system is correct if it produces the correct output for every possible input and if
it terminates. Therefore, system verification consists of two steps:
◾◾ Show that, for every input, the correct output is produced (this is called par-
tial correctness).
◾◾ Show that the system always terminates.
Hoare Logic
Much of the following follows the presentation found in Gries and Gries (2005).
Suppose we view a requirements specification as a sequence of logical statements
specifying system behavior. In 1969 C.A.R (Tony) Hoare introduced the notation
(called the Hoare Triple):
P {S} Q
z = x + 2;
Proof: Suppose that {x = 5} is true, then z = 5 + 2 = 7 after the system begins execu-
tion. So the system is partially correct. That the system terminates is trivial, as there
are no further statements to be executed. Hence, correctness is proved.
Hoare added an inference rule for two rules in sequence. We write this as:
P {S1} Q
Q {S2} R
_______
P {S1; S2} R
* “Execution” means either program execution or effective change in system behavior in the case
of a non-software behavioral segment.
130 Requirements Engineering for Software and Systems
This inference rule means that if the postcondition (Q) of the first system seg-
ment (S1) is the antecedent (precondition) of the next segment, then the postcondi-
tion of the latter segment (R) is the consequent of the concatenated segments. The
horizontal line means “therefore” or, literally, “as a result.”
To illustrate, we show that the following specification is correct under the
given assertions:
x = x + 1;
z = x + y;
Proof: Suppose that {x = 1} is true, then the system executes the first instruction,
x = 2. Next, suppose that {y = 2} is true. Then after the execution of the second
statement z = 2 + 2 = 4. Hence z = 4 after the execution of the last statement and the
final assertion is true, so the system is partially correct. That the system terminates
is trivial, as there are no further statements to be executed.
An inference rule is needed to handle conditionals. This rule shows that
(P ∧ condition){S}Q
(P ∧¬ condition) ⇒ Q
_______
if x > y then
y = x;
Proof: If, upon entry to the segment, y < x, then the if statement fails and no instruc-
tions are executed and clearly, the final assertion must be true. On the other hand,
if upon entry, y > x, then the statement y = x is executed. Subsequently y = x and the
Formal Methods 131
final assertion y ≤ x must be true. That the system terminates is obvious, as there are
no further statements to be executed.
Another inference rule handles if-then-else situations, that is,
(P ∧ condition){S1}Q
(P ∧¬ condition){S2}Q
_______
if x < 0 then
abs = –x;
else
abs = x;
Proof: If x < 0, then abs = –x ⇒ abs is assigned the positive x. If x ≥ 0 then abs is also
assigned the positive value of x. Therefore abs = |x|. That the system terminates is
trivial, as there are no further statements to be executed.
Finally, we need a rule to handle “while” statements:
(P ∧ condition){S}P
________
∴ (P ∧ while condition){S}(¬condition ∧ P)
logic for an insulin pump (or machine that delivers controlled radiation therapy)
might require such logic. The decision to launch a missile, control the life sup-
port system in the Space Station, or shut down a nuclear plant might be based on
simple, but critical logic. This logic, incidentally, could have been implemented
entirely in hardware.
Even our running examples might have some critical logic that needs formal
proof. For example, the baggage counting logic for the baggage handling system or
certain inventory control logic might require the following behavior.
//{sum = 0 ∧ count = n ≥ 0}
{
count = count--;
}
Basis:
Suppose that sum = 0 and n = 0 as given by the assertion. Now upon testing of the
loop guard, the value is false and the system terminates. At this point the value
of sum is zero, which satisfies the postcondition. That the system terminates was
just shown.
Induction hypothesis:
The program is correct for the value of count = n. That is, it produces a value of
sum = n(n + 1)/2 and the system terminates.
Induction step:
Suppose that the value of sum = 0 and count = n + 1 in the precondition.
Upon entry into the loop, we assign the value of sum = n + 1, and then set
count = n. Now, from the induction hypothesis, we know that for count = n, sum =
Formal Methods 133
n(n + 1)/2. Therefore, upon continued execution of the system, sum will result in
(n + 1) + n(n + 1)/2, which is just (n + 1)(n + 1 + 1)/2 and the system is partially
correct.
Since by the induction hypothesis, by the nth iteration of the loop count has
been decremented n times (since the loop exited when count was initialized to n).
In the induction step, count was initialized to n + 1, so by the nth iteration it has a
value or 1. So after the n + 1st iteration it will be decremented to 0, and hence the
system exits from the loop and terminates.
Does this approach really prove correctness? It does, but if you don’t believe
it, try using Hoare logic to prove an incorrect specification segment to be correct,
for example:
//{sum = 0 ∧ count = n ≥ 0}
{
count = count++;
}
This specification is incorrect because “n” is left out of the sum and it will defy
proof (unless you cheat).
It is easy to show that a for loop uses a similar proof technique to the while
loop. In fact, by Böhm and Jacopini (1966), we know we can construct verification
proofs just from the first two inference rules. For recursive procedures, we use a
similar, inductive, proof technique applying the induction to the n + 1st iteration in
the induction step, and using strong induction if necessary.
Model Checking
Given a formal specification, a model checker can automatically verify that certain
properties are theorems of the specification. Model checking has traditionally been used
in checking hardware designs (e.g., through the use of logic diagrams), but it has also
been used with software. Model checking’s usefulness in checking software specifica-
tions has always been problematic due to the combinatorial state explosion and because
variables can take on non-Boolean values. Nevertheless, Edmund M. Clarke, E. Allen
Emerson, and Joseph Sifakis won the 2007 A. M. Turing Award for their body of work
134 Requirements Engineering for Software and Systems
making model checking more practical, particularly in the design of chips. A great deal
of interesting and important research continues in model checking.
1. Myth: Formal methods can guarantee that software is perfect. Truth: Nothing
can guarantee that software will be perfect. Formal methods are one of many
techniques that improve software qualities, particularly reliability.
2. Myth: Formal methods are all about program proving. Truth: We have shown
that formal methods involve more than just program proving and involve
expressing requirements with precision and economy, requirements valida-
tion, and model checking.
3. Myth: Formal methods are only useful for safety-critical systems. Truth: Formal
methods are useful anywhere that high-quality software is desired.
4. Myth: Formal methods require highly trained mathematicians. Truth: While
mathematical training is very helpful in mastering the nuances of expression,
using formal methods is really about learning one or another formal language
and about learning how to use language precisely. Requirements engineering
must be based on the precise use of language, formal or otherwise.
5. Myth: Formal methods increase the cost of development. Truth: While there
are costs associated with implementing a formal methods program, there are
Formal Methods 135
Five years after Hall’s myths, Jon Bowen and Mike Hinchey gave us “Seven
More Myths of Formal Methods” (Bowen and Hinchey 1995):
1. Myth: Formal methods delay the development process. Truth: If properly incor-
porated into the software development lifecycle, the use of formal methods
will not delay, but actually accelerate the development process.
2. Myth: Formal methods lack tools. Truth: We have already seen that there are
a number of tools that support formal methods—editing tools, translation
tools, compilers, model checkers, and so forth. The available tool set depends
on the formal method used.
3. Myth: Formal methods replace traditional engineering design methods. Truth:
Formal methods enhance and enrich traditional design.
4. Myth: Formal methods only apply to software. Truth: Many formal methods were
developed for hardware systems, for example, the use of Petri Nets in digital
design.
5. Myth: Formal methods are unnecessary. Truth: This statement is true only if
high-integrity systems are unnecessary.
6. Myth: Formal methods are not supported. Truth: Many organizations use,
evolve, and promote formal methods. Furthermore, see Myth 2.
7. Myth: Formal methods people always use formal methods. Truth: “Formal meth-
ods people” use whatever tools are needed. Often that means using formal
methods, but it also means using informal and “traditional” techniques too.
Every technique has its shortcomings. These limitations, however, should not be
a deterrent to using formal methods.
Final Advice
Our final advice on the use of formal methods comes from a well-known paper,
“Ten Commandments of Formal Methods” (Bowen and Hinchey 1995).
Exercises
6.1 Are customers more likely to feel confident if formal methods are
explained to them and then used?
6.2 Where in the software development process lifecycle do formal methods
provide the most benefit?
6.3 Rewrite the train station specification in another formal language,
such as Z or VDM.
6.4 Conduct a consistency check for the requirements found in Section 8.2
of the Smart Home SRS (video entry).
6.5 Conduct a consistency check for the requirements found in Section 8.3
of the Smart Home SRS (video playback).
References
Awodey, S. (2005) Category Theory, Pittsburg: Carnegie Mellon University.
Böhm, C., and G. Jacopini (1966) Flow diagrams, turing machines, and languages with only
two formation rules, Communications of the ACM 9(5): 366–371.
Bowen, J.P., and M.G. Hinchey (1995) Seven more myths of formal methods, Software,
12(4): 34–41.
Bowen, J.P., and M.G. Hinchey (1995) Ten commandments of formal methods, Computer,
28(4): 56–63.
Clarke, E.M., and J.M. Wing (1996) Formal methods: state of the art and future directions,
ACM Computing Surveys, 28(4): 626–643.
Crow, J., and B. Di Vita (1998) Formalizing Space Shuttle software requirements: four case
studies, ACM Transactions on Software Engineering and Methodology, 7(3).
Forster, T.E. (2003) Logic, Induction and Sets, Cambridge: Cambridge University Press.
Gries, D., and P. Gries (2005) Multimedia Introduction to Programming Using Java, Springer.
138 Requirements Engineering for Software and Systems
Requirements
Specification and
Agile Methodologies
* Some of this section has been excerpted from Phillip A. Laplante, What Every Engineer Needs
to Know About Software Engineering, CRC/Taylor & Francis, 2006, with permission.
139
140 Requirements Engineering for Software and Systems
chapter because agile methodologies are increasingly being employed, and because
the mindset of the agile software engineer includes some healthy perspectives.
In order to fully understand the nature of agile methodologies, we need to
examine a document called the Agile Manifesto and the principles behind it. The
Agile Manifesto was introduced by a number of leading proponents of agile meth-
odologies in order to explain their philosophy (see Figure 7.1).
Signatories to the Agile Manifesto include many luminaries of modern software
engineering practice such as Kent Beck, Mike Beedle, Alistair Cockburn, Ward
Cunningham, Martin Fowler, Jim Highsmith, Ron Jeffries, Brian Marick, Robert
Martin, Steve Mellor, and Ken Schwaber. Underlying the Agile Manifesto is a set of
principles. Look at the principles below, noting the emphasis on those aspects that
focus on requirements engineering, which we set in bold.
◾◾ Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.
◾◾ The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
◾◾ Working software is the primary measure of progress.
◾◾ Agile processes promote sustainable development. The sponsors, developers,
and users should be able to maintain a constant pace indefinitely.
◾◾ Continuous attention to technical excellence and good design enhances agility.
◾◾ Simplicity—the art of maximizing the amount of work not done—is essen-
tial. “Do the simplest thing that could possibly work.”
◾◾ The best architectures, requirements, and designs emerge from self-organizing
teams. (Beck 2000)
Notice how the principles acknowledge and embrace the notion that require-
ments change throughout the process. Also, the agile principles emphasize fre-
quent, personal communication (this feature is beneficial in the engineering of
non-software systems too). The highlighted features of requirements engineering
in agile process models differ from the “traditional” waterfall and more modern
models such as Iterative, Evolutionary, or Spiral development. These other models
favor a great deal of up-front work on the requirements engineering process and the
production of, often, voluminous requirements specifications documents.
Agile software development methods are a subset of iterative methods* that
focus on embracing change and stress collaboration and early product delivery,
while maintaining quality. Working code is considered the true artifact of the devel-
opment process. Models, plans, and documentation are important and have their
value, but exist only to support the development of working software, in contrast
with the other approaches already discussed. However, this does not mean that an
agile development approach is a free-for-all. There are very clear practices and prin-
ciples that agile methodologists must embrace.
Agile methods are adaptive rather than predictive. This approach differs signifi-
cantly from those models previously discussed, models that emphasize planning
the software in great detail over a long period of time and for which significant
changes in the software requirements specification can be problematic. Agile meth-
ods are a response to the common problem of constantly changing requirements
that can bog down the more “ceremonial” up-front design approaches, which focus
heavily on documentation at the start.
Agile methods are also “people-oriented” rather than process-oriented. This
means they explicitly make a point of trying to make development “fun.” Presumably,
* Most people define agile methodologies as being incremental. But incremental development
implies that the features and schedule of each delivered version are planned. In some cases, agile
methodologies tend to lead to versions with feature sets and delivery dates that are almost always
not as planned.
142 Requirements Engineering for Software and Systems
◾◾ planning
◾◾ coding
◾◾ designing
◾◾ testing
oral report of the previous day’s activities and plans for that day.
Requirements Specification and Agile Methodologies 143
Waterfall Iterative XP
Analysis
Design
Time
Implementation
Test
Testing practices include creating new test cases whenever a bug is found and
having unit tests for all code, possibly using such frameworks as XUnit.
Scrum
Scrum, which is named after a particularly contentious point in a rugby match,
enables self-organizing teams by encouraging verbal communication across all team
members and across all stakeholders. The fundamental principle of Scrum is “empir-
ical challenges cannot be addressed successfully in a traditional ‘process control’
manner,” meaning that the problem cannot be fully understood or defined. Scrum
encourages self-organization by fostering high-quality communication between all
stakeholders. In this case it is implicit that the problem cannot be fully understood
or defined (it may be a wicked problem). And the focus in Scrum is on maximizing
the team’s ability to respond in an agile manner to emerging challenges.
Scrum features a living backlog of prioritized work to be done. Completion of a
largely fixed set of backlog items occurs in a series of short (approximately 30 days)
iterations or sprints. Each day, a brief (e.g., 15-minute) meeting or Scrum is held
in which progress is explained, upcoming work is described, and impediments are
raised. A brief planning session occurs at the start of each sprint to define the back-
log items to be completed. A brief post-mortem or heartbeat retrospective occurs at
the end of the sprint (Figure 7.3).
A “ScrumMaster” removes obstacles or impediments to each sprint. The
ScrumMaster is not the leader of the team (as they are self-organizing) but acts as
a productivity buffer between the team and any destabilizing influences. In some
organizations the role of the ScrumMaster can cause confusion. For example, if two
members of a Scrum team are not working well together, it might be expected by a
senior manager that the ScrumMaster “fix” the problem. Fixing team dysfunction
144 Requirements Engineering for Software and Systems
24
hours
Scrum : 10‒
15 minute
daily
30 meeting
Sprint days
backlog
Figure 7.3 The Scrum development process from Boehm and Turner (2003),
which itself was adapted from Schwaber and Beedle (2001).
is not the role of the ScrumMaster. Personnel problems need to be resolved by the
line managers to which the involved parties report. This scenario illustrates the need
for institution-wide education about agile methodologies when such approaches are
going to be employed.
traditional approaches, the customer has less involvement once the requirements
specification has been written and approved, and typically, the involvement is often
not with the systems developers.
Presumably, the agile approach to requirements engineering is much more
invulnerable to changes throughout the process (remember, “embrace change”)
than in traditional software engineering.
Some of these practices can be found in non-agile development (for example, test-
driven development and prototyping), but these seven practices were consistent
across all of the organizations studied.
As opposed to the fundamental software requirements specification, the fun-
damental artifact in agile methods is a stack of constantly evolving and refining
requirements. These requirements are generally in the form of user stories. In any
case, these requirements are generated by the customer and prioritized—the higher
the level of detail in the requirement, the higher the priority. As new requirements
are discovered, they are added to the stack and the stack is reshuffled in order to
preserve prioritization (Figure 7.4).
There are no proscriptions on adding, changing, or removing requirements from
the list at any time (which gives the customer tremendous freedom). Of course,
once the system is built, or likely while is it is being built, the stack of user stories
can be converted to a conventional software requirements specification for system
maintenance and other conventional purposes.
user
More High stories
Start implementing
requirements from
here
Direction of implementation
Priority
Requirements may be
Detail
Less Low
Figure 7.4 Agile requirements change management process adapted from http://
www.agilemodeling.com/essays/agileRequirements.htm (Ambler 2007).
Ambler also suggests using such artifacts as CRCs, acceptance tests, business
rule definitions, change cases, data flow diagrams, user interfaces, use cases, proto-
types, features and scenarios, use cases diagrams, and user stories to model require-
ments (Ambler 2007). These elements can be added to the software requirements
specification document along with the user stories.
Requirements Specification and Agile Methodologies 147
For requirements elicitation he suggests using interviews (both in-person and elec-
tronic), focus groups, JAD, legacy code analysis, ethnographic observation, domain
analysis, and having the customer on site at all times (Ambler 2007). For the remainder
of this chapter our discussion focuses on the use of user stories to model requirements.
Requirements Engineering in XP
Requirements engineering in XP follows the model shown in Figure 7.4 where the
stack of requirements in Ambler’s model refers to user stories. And in XP, user sto-
ries are managed and implemented as code via the “planning” game.
The planning game in XP takes two forms: release and iteration planning.
Release planning takes place after an initial set of user stories has been written.
This set of stories is used to develop the overall project plan and plan for iterations.
The set is also used to decide the approximate schedule for each user story and
overall project.
Iteration planning is a period of time in which a set of user stories and fixes to
failed tests from previous iterations are implemented. Each iteration is 1‑3 weeks in
duration. Tracking the rate of implementation of user stories from previous itera-
tions (which is called “project velocity”) helps to refine the development schedule.
Because requirements are constantly evolving during these processes, XP cre-
ator Kent Beck says that “in XP, requirements are a dialog, not a document” (Beck
et al. 2001) although it is typical to convert the stack of user stories into a software
requirements specification.
Product
Release sprint
Release sprint
sprint
requirements have evolved to a very high level of detail, and hence, their priority
is high.
Scrum has been adopted in several major corporations, with notable success.
Some of the author’s students also use Scrum in courses. In these cases it proves
highly effective when there is little time for long requirements discovery processes.
◾◾ Title—this is a short handle for the story. A present tense verb in active voice
is desirable in the title.
◾◾ Acceptance test—this is a unique identifier that will be the name of a method
to test the story.
Requirements Specification and Agile Methodologies 149
A sample layout for these elements on an index card is shown in Table 7.1.
Initial user stories are usually gathered in small offsite meetings. Stories can be
generated either through goal-oriented (e.g., “let’s discuss how a customer makes a
purchase”) approaches or through interactive (stream-of-consciousness) approaches.
Developing user stories is an “iterative and interactive” process. The development
team also manages the size of stories for uniformity (e.g., too large—split, too
small—combine).
An example user story for a customer returning items in the pet store POS sys-
tem is shown in Table 7.2.
User stories should be understandable to the customers and each story should
add value.
Developers do not write user stories, users do. But stories need to be small
enough that several can be completed per iteration. Stories should be independent
(as much as possible); that is, a story should not refer back and forth to other stories.
Finally, stories must be testable—like any requirement, if it cannot be tested, it’s not
a requirement! Testability of each story is considered by the development team.
Description
Table 7.3 depicts another example user story describing a security threat detec-
tion in the airport baggage handling system.
Finally, it is worth noting that there is a significant difference between use
cases and user stories. User stories come from the customer perspective and are
simple and avoid implementation details. Use cases are more complex, and may
include implementation details (e.g., fabricated objects). Customers don’t usually
write use cases (and if they do, beware, because now the customer is engaging in
“software engineering”). Finally, it’s hard to say what the equivalence is for the
number of use cases per user story. One user story could equal one or more than
20 use cases. For example, for the customer return user story in Table 7.2, you can
imagine that it will take many more use cases to deal with the various situations
that can arise in a customer return. In agile methodologies user stories are much
preferred to use cases.
Within
WageProcessing
Calculate
Figure 7.6 Using storytest to show how a company calculates pay for ordinary
and overtime hours (Mugridge 2008).
is that instead of the conventional user stories, customers write or review “story
tests.” Storytests are nontechnical descriptions of behavior along with tests that
verify that the behavior is correct. The storytests help “discover a lot of missing
pieces or inconsistencies in a story” (Mugridge 2008).
A nice feature of the storytest is that it uses the Fit framework to allow users to
build test cases into the stories in a tabular fashion (see Chapter 8). Hence, the users
intuitively specify behavior and the tests for that behavior in the requirements.
For example, for a typical payroll system for a business (such as the pet store),
a storytest describing how to calculate ordinary and overtime pay for an employee
based on various clocked hours is given in Figure 7.6.
The table in Figure 7.6 shows, for instance, that if an employee works five con-
secutive nine-hour workdays, then they are considered to have 45 hours in ordinary
and zero hours in overtime pay due. If a worker clocks 10, 11, 12, 13, and 14 hour
days in a week, then they are entitled to 45 hours of regular and 15 hours of over-
time pay. But the Fit framework is an interactive specification—plugging in differ-
ent values into the table that are incorrect will show up as invalid (see Chapter 8).
Storytest-driven development is considered to be complementary to test-driven
development (TDD) in that the former is applied to overall system development
(Mugridge 2008).
152 Requirements Engineering for Software and Systems
Exercises
7.1 How do you fit SRS documentation into an agile framework?
7.2 Is it possible to use agile methodologies when the customer is not on
site. If so, how?
7.3 Why are agile methodologies generally not suitable for hardware-based
projects as opposed to software projects?
7.4 Why can it be difficult for agile methodologies to cover nonfunctional
requirements?
7.5 Are there any problems in encapsulating requirements into user stories?
7.6 For the pet store POS system generate a user story for customer
purchases.
7.7 For the pet store POS system generate use cases for various customer
purchases.
7.8 For the airport baggage handling system generate a user story for deal-
ing with baggage that is to be diverted to another flight.
7.9 For the airport baggage handling system generate use cases for dealing
with baggage that is to be diverted to another flight.
Requirements Specification and Agile Methodologies 153
Bibliography
Ambler, S. http://www.agilemodeling.com/essays, last accessed 2007.
Beck, K. (2000) Extreme Programming Explained: Embrace Change, Longman Higher
Education.
Beck, K., M. Beedle, A. van Bennekum, A. Cockburn, W. Cunningham, M. Fowler,
J. Grenning, J. Highsmith, A. Hunt, R. Jeffries, J. Kern, B. Marick, R.C. Martin,
S. Mellor, K. Schwaber, J. Sutherland, D. Thomas (2001) “Agile Manifesto” and
“Principles Behind the Agile Manifesto.” Online at http://agilemanifesto.org/, last
accessed 12 January 2008.
Boehm, B., and R. Turner (2003) Balancing Agility and Discipline: A Guide to the Perplexed,
Addison-Wesley.
Cao, L., and B. Ramesh (2008) Agile requirements engineering practices: An empirical study,
Software, 25(1): 60–67.
Eberlein, A., and J.C. Sampaio do Prado Leite (2002) Agile Requirements International
Workshop on Time-Constrained Requirements Engineering (TCRE’02), Essen,
Germany, September 2002.
Laplante, P.A. (2006) What Every Engineer Needs to Know About Software Engineering, Boca
Raton, FL: CRC/Taylor & Francis.
Mugridge, R. (2008) Managing agile project requirements with storytest-driven develop-
ment, Software, 25(1): 68–75.
Schwaber, K., and M. Beedle (2001) Agile Software Development with SCRUM, Prentice
Hall.
Sillitti, A., and G. Succi (2006) Requirements engineering for agile methods, in A. Aurum
and C. Wohlin (Editors), Engineering and Managing Software Requirements, Springer,
pp. 309–326.
Williams, L. (2004) Agile Requirements Elicitation. Online at http://ecommerce.ncsu.edu/
studio/materials/AgileRE.pdf, last accessed 1 July, 2007.
This page intentionally left blank
Chapter 8
Introduction
It has been estimated that by 2009 automated approaches to requirements engi-
neering will reduce development costs by 30%. In addition, because of the use
of these tools, user satisfaction with medium to large systems will improve from
“fair” to “good” in that timeframe. Finally, by 2009, maintenance and enhance-
ment costs for medium to large systems developed using such tools will decline by
10% (Light 2005).
Word processors, databases, spreadsheets, content analyzers, concept mapping
programs, automated requirements checkers, and so on are all tools of interest to
the requirements engineer. But the most celebrated requirements tools are large
commercial packages that provide a high level of integrated functionality. The
chief feature of these programs is the ability to represent and organize all “typi-
cal” requirements engineering objects such as use cases, scenarios, and user stories.
Support for user-defined entities is also usually provided. Other typical functional-
ities for these large, commercial requirements engineering tools include
155
156 Requirements Engineering for Software and Systems
Traceability Support
Across the software lifecycle, traceability defines the relationships between require-
ments and their sources, design decisions, source code, and associated test cases.
Within the SRS document, traceability focuses on the interrelationship between
requirements and their sources, stakeholders, standards, regulations, and so on.
Tool Support for Requirements Engineering 157
It is not unusual for one requirement to have an explicit reference to another require-
ment either as a “uses” or “refers to” relationship. Consider the following requirement:
2.1.1 The system shall provide for control of the heating system and
be schedulable according to the time scheduling function (ref.
requirement 3.2.2).
which depicts a “refers to” relationship. The “uses” relationship is illustrated in the
following requirement:
2.1.1 The system shall provide for control of the heating system in
accordance with the timetable shown in requirement 3.2.2 and
the safety features described in requirement 4.1.
The main distinction between “uses” and “refers” to is that the “uses” represents a
stronger, direct link.
The primary artifact of traceability is the requirements traceability matrix. The
requirements traceability matrix can appear in tabular form in the SRS document,
in a stand-alone traceability document, or internally represented within a tool for
modification, display, and printout.
The entries in the requirements traceability matrix are defined as follows:
When a requirement both uses and references another requirement, the entry
“U” supersedes that of “R.” Since self-references are not included, the diagonal of
the matrix always contains blank entries. We would also not expect circular refer-
encing in the requirements so that if Rij = U or Rij = R we would expect Rji to be
blank. In fact, an automated verification feature in a requirements engineering tool
should flag such circular references.
The format of a typical requirements traceability matrix is shown in Table 8.2.
A partial traceability matrix for a hypothetical system with sample entries is
shown in Table 8.3.
Since R is usually sparse, it is convenient to list only those rows and columns
that are non-blank. For example, for the SRS document for the Smart Home found
in the appendix, the traceability matrix explicitly derived from the requirements is
shown in Table 8.4.
158 Requirements Engineering for Software and Systems
1.1
1.1.1
1.2
1.2.1
….
2.1
2.1.1
1 R R
1.1 U
1.1.1 R R
1.1.2 R
1.2 U
1.2.1 R
1.2.2 R
2 U R
2.1 U
2.1.1 R
3 R
Tool Support for Requirements Engineering 159
9.1.1 R
9.10.7 R
◾◾ DOORS
◾◾ Rational RequisitePro
◾◾ Requirements and Traceability Management
◾◾ CaliberRM
◾◾ QFD/Capture
DOORS
Telelogic’s DOORS (Dynamic Object Oriented Requirements System) is essentially
an object database for requirements management. That is, each feature is repre-
sented as an object containing a feature description, feature graph, and use case dia-
gram. Feature attributes include mandatory, optional, single adaptor, and multiple
adaptor, and the user can specify whether an attribute is required or excluded, which
embodies the complementary and supporting nature of requirements. Other attri-
butes are based on use case packages and product instances (Eriksson et al. 2005).
DOORS offers linking between all objects in a project for full traceability and
missing link analysis. The tool can be customized via a C-like programming lan-
guage. Standard templates are available to structure requirements in compliance
with the ISO 12207, ISO 6592, and IEEE 830 software standards (Volere).
Rational RequisitePro
IBM’s Rational RequisitePro is one of the most popular requirements and use case
management tools. The tool integrates with Microsoft Word for easy requirements
organization, integration, and analysis. There is also detailed attribute customiza-
tion and filtering and a variety of traceability views that display parent/child rela-
tionships and highlight requirements that may be affected by later change.
The tool is capable of performing project-to-project comparisons using export-
able XML-based files. Perhaps most importantly, the tool integrates with multiple
tools in the IBM Software Development Platform (Volere).
CaliberRM
Borland’s CaliberRM is another widely used requirements management tool.
Features include a centralized repository for requirements artifacts, a customizable
graphical user interface, full traceability across the lifecycle, and support for online
glossaries (Volere).
Tool Support for Requirements Engineering 161
QFD/Capture
QFD/Capture by International TechneGroup, Inc. provides basic support for
the Quality Function Deployment approach. The tool provides predefined proj-
ect templates, calculations and linkages between views of the “house of qual-
ity.” In the tool, relationships can be defined in several ways, using direct input
into a spreadsheet or through tree diagrams. Metrics for each requirement in a
graphical tree and branch format are also supported. Requirements are linked
so that as the project evolves changes in one area are reflected throughout the
project (Volere).
FreeMind
FreeMind is an open source mind mapping software tool written in Java. FreeMind
allows a user, stakeholder, or requirements engineer to organize ideas in a conve-
nient, hierarchical diagram. The tool is quite useful for brainstorming, task analysis,
laddering, traceability, JAD, focus groups, and many other requirements engineer-
ing activities (FreeMind).
The tool has an easy-to-use graphical user interface. Concepts are mapped in a
hierarchical structure based on a primary concept and subordinate ideas to that con-
cept. Handy icons can be used to mark priorities, important criteria, or hazards for
each idea. Many other icons are available to enrich the content of the mind map.
To illustrate the use of the tool, let’s look at Phil’s concept of the Smart Home
control system. Starting off with the basic concept of a “Smart Home” Phil creates
a parent node (represented by a bubble) as shown in Figure 8.1.
Next, Phil uses the tool to attach
a feature to the system (security) and
assign a priority to that feature. Although Phil’s Smart Home
there are up to seven levels of rankings
available, Phil chose a simple three-level
system. Figure 8.1 Phil’s Smart Home system.
162 Requirements Engineering for Software and Systems
Security system 1
Figure 8.2 Adding the first feature to Phil’s Smart Home system.
1. Mandatory
2. Optional
3. Nice to have
The resultant ranked feature and updated mind map is shown in Figure 8.2.
Phil then adds details to the feature. For example, he wants the security sys-
tem of the Smart Home to use and work with the existing security system in
the home. Another feature he desires is for the HVAC (heating ventilation and
air-conditioning) system to integrate with the Smart Home system. In addition,
because Phil has delicate plants, pets, and collectibles in the house, it is important
that the temperature never exceed 100° Fahrenheit, so this hazard is marked with a
bomb icon. The revised mind map is shown in Figure 8.3.
Phil continues with his brainstorming of features, adding music management,
lawn care, and a telephone answering system. Some of the features include impor-
tant details that are marked with the appropriate symbol (Figure 8.4).
As he sees the system materialize in a visual sense, Phil thinks of more features
and is able to make the appropriate prioritization decisions. Phil adds to his mind
map accordingly, as seen in Figure 8.5.
The mind map shown in Figure 8.5 is not complete. But this mind map can be
used during elicitation discussions with requirements engineers and can be easily
evolved over time.
Of course, there are other open source and commercial “mind mapping” tools
that have similar functionality to FreeMind. We are simply suggesting that such a
tool can be very valuable for many requirements elicitation activities.
Tool Support for Requirements Engineering 163
Security system 1
Figure 8.3 Adding a detail to the first feature to Phil’s Smart Home system and
adding a hazard.
Figure 8.5 Phil’s partial mind map of a Smart Home system.
165
166 Requirements Engineering for Software and Systems
FitNesse
FitNesse is an open source, Wiki-based software collaboration tool that provides a
framework for building interactive test cases. While FitNesse was originally devel-
oped as a testing tool, our interest is in using it for integrated requirements/test
specifications, for example, in an agile environment.
Before briefly describing how FitNesse works, it is appropriate to take a look at
what a FitNesse test case looks like. The test case is, essentially, a table consisting
of the name of the function (or method) to be tested, the set of input parameters
and corresponding expected results parameters, and then a set of typical test cases
across the rows of the table (see Table 8.5).
The FitNesse table is executable; when the actual code is developed, upon click-
ing a button, the results of the corresponding function will be calculated.
Let us illustrate the situation using the SRS for the Smart Home system in the
appendix. In that SRS, Section 9.2.2 specifies that
9.2.2 System shall start coffee maker at any user defined time as long
as water is present, coffee bean levels are sufficient and unit is
powered.
Assuming that the preconditions are satisfied (coffee beans and water are available),
a plausible schedule for making coffee might be as given in Table 8.6.
The schedule shown in Table 8.6 recognizes that the homeowner likes to sleep late
on weekends. We could populate this table all different kinds of ways. Now it is true
that the functionality desired is for dynamic scheduling so that, for example, during a
holiday week, the home owner can sleep late every day. But the table here is used to indi-
cate one scenario of appliance scheduling. In fact, if properly configured via the FitNesse
framework, Table 8.6 constitutes an executable test case for the finished system.
Without going into too much detail, here is roughly how FitNesse works.
FitNesse is a Wiki GUI built on top of the Fit framework. Fit runs the fixture code
(a Java or C# class) corresponding to the test table. For example, in the top row of
Table 8.5 “Activate_Coffee_Pot” specifies the actual class to be called. FitNesse
colors the expected results cells red, green, or yellow, if the test failed, passed, or an
exception was thrown, respectively (Gandhi 2005).
Trace for a purpose. That is, determine which linkages are truly important;
otherwise, a large number of extraneous links will be generated.
Define a suitable trace granularity. For example, linkages should be placed at the
appropriate package, class, or method level.
Support in-place traceability. Provide traceability between elements as they
reside in their native environments.
Use a well-defined project glossary. Create the glossary during initial discovery
meetings with stakeholders and use consistently throughout the requirements
engineering process.
168 Requirements Engineering for Software and Systems
Write quality requirements. Make sure to follow generally accepted best prac-
tices such as IEEE 830, which are particularly important for traceability.
Construct a meaningful hierarchy. Experimental results show that hierarchically
organized requirements are more susceptible to intelligent linking software.
Bridge the intra-domain semantic gap. For example, avoid overloaded terminology,
that is, words that mean completely different things in two different contexts.
Create rich content. Incorporate rationales and domain knowledge in each
requirement.
Finally, be sure to use a process improvement plan for improving the require-
ments engineering process.
Exercises
8.1 What criteria should be used in choosing an appropriate requirements
engineering tool?
8.2 Are there any drawbacks to using certain tools in requirements engi-
neering activities?
8.3 When selecting an open source tool, what characteristics should you
look for?
8.4 How can tools enable distributed, global requirements engineering
activities? What are the drawbacks in this regard?
8.5 If an environment does not currently engage in solid requirements engi-
neering practices, should tools be introduced?
8.6 What sort of problems might you find through a traceability matrix that
you might not see without one?
8.7 Download FreeMind and use it to brainstorm a mind map for your
Smart Home system.
8.8 Construct a FitNesse test table for the requirement described in Section
7.2 of the appendix.
References
Cleland-Huang, J., R. Settimi, E. Romanova, B. Berenbach, and S. Clark (2007) Best prac-
tices for automated traceability, IEEE Computer, June, pp. 27–35.
Eriksson, M., H. Morasi, J. Borstler, and K. Borg (2005) The PLUSS toolkit—Extending
telelogic DOORS and IBM-Rational Rose to support product line in use case model-
ing, Proceedings of the 20th IEEE/ACM international Conference on Automated software
engineering Long Beach, CA, USA, pp. 300–304.
FitNesse project website, www.fitnesse.org, last accessed 13 February 2008.
FreeMind project website http://freemind.sourceforge.net/wiki/index.php/Main_Page, last
accessed 13 February 2008.
Gandhi, P. et al. (2005) Creating a living specification using Fit documents, Agile 2005 Conf.
(Agile 05), IEEE CS Press, pp. 253−258.
Heindl, M., F. Reinish, S. Biffl, and A. Egyed (2006) Value-based selection of requirements
engineering tool support, 32nd EUROMICRO Conference on Software Engineering
and Advanced Applications. SEAA ’06. Aug. 2006, pp. 266–273.
Tool Support for Requirements Engineering 169
Light, M. (2005) Agile requirements definition and management will benefit application devel-
opment. Online at www.cio.com/sponsors/GartnerReportonBenefitsofAgileRDM.
PDF, last accessed 1 July 2007.
Open Source Requirements Management Tool open source community, http://www.osrmt.
com, last accessed 14 February 2008.
Volere requirements resources. Online at http://www.volere.co.uk/tools.htm, last accessed
14 February 2008.
This page intentionally left blank
Chapter 9
Requirements
Management
Introduction
Requirements management involves identifying, documenting, and tracking sys-
tem requirements from inception through delivery. Inherent in this definition is
understanding of the true meaning of the requirements and the management of
customer (and stakeholder) expectations throughout the system’s lifecycle. A solid
requirements management process is the key to a successful project.
Most organizations do not have an explicit requirements management process
in place, but this does not mean that requirements management does not occur
within the organization. The requirements practices probably exist implicitly in the
organization, but these practices are not usually documented. One of our recom-
mendations, obviously, is to document the requirements management practices in
your organization.
171
172 Requirements Engineering for Software and Systems
Project managers may use the requirements to protect them from false accusations
of underperformance in the delivered product.
One way to understand why the existence of different agendas—even among
persons within the same stakeholder group—is the “Rashomon Effect.” Rashomon
is a highly revered 1950 Japanese film directed by Akira Kurosawa. The main
plot involves the recounting of the murder of a samurai from the perspective of
four witnesses to that event—the samurai, his wife, a bandit, and a wood cutter,
each of whom has a hidden agenda, and tells a contradicting accounting of the
event. Stated succinctly “your understanding of an event is influenced by many
factors, such as your point of view and your interests in the outcome of the event”
(Lawrence 1996).
The smart requirements manager seeks to manage these agendas by asking the right
questions up front. Andriole (1998) suggests the following questions are appropriate:
Andriole asserts that by asking these questions up front, hidden agendas can be
uncovered and differences resolved. At the very least, important issues will be raised
up front and not much later in the process.
Requirements Management 173
agree or disagree, the consequence matrix shows that she can expect to get some
praise if the group agrees or some ridicule if the group disagrees. It is also well
known that, in decision making, individuals will tend to make decisions that avoid
loss over those that have the potential for gain—most individuals are risk averse.
The foregoing analysis assumes that the probabilities of agreement and disagree-
ment are the same—the expected consequences are much worse if the stakeholder
believes there is a strong chance that her colleagues will disagree. Of course, later
in the process the feature might suddenly be discovered by others to be important.
Now it is very late in the game, however, and adding this feature is costly. Had the
stakeholder only spoken up in the beginning, in a safe environment for discussion,
a great deal of cost and trouble could have been avoided.
One last comment on Pascal’s wager, expectation, and risk. The author once
worked for a boss—we’ll call him “Bob”—who greeted all new employees with a
welcome lunch. At that lunch he would declare “I am a ‘no surprises’ kind of guy.
You don’t surprise me, and I won’t surprise you. So, if there is ever anything on
your mind, or any problem brewing, I want you to bring that to my attention right
away.” This sentiment sounded great. However, each time the author or anyone
else would bring bad news to Bob, whether the messenger was responsible for the
situation or not, Bob would blow his stack and berate the hapless do-gooder. After
a while, potential messengers would forego bringing information to Bob. The deci-
sion was purely game theoretic—if you had bad news and you brought it to Bob, he
would yell at you. If he didn’t find out about it (as often happened because no one
else would tell him, either), then you escaped his rampage. If he somehow found
out about the bad news, you might get yelled at—but he might yell at the first per-
son in his sight, not you, even if you were the party responsible for the problem. So,
it made sense (and it was rigorously sound via game theory) to shut up.
It was rather ironic that “no surprise Bob” was always surprised because every-
one was afraid to tell him anything. The lesson here is that, if you “shoot the
messenger,” people will begin to realize the consequences of bringing you informa-
tion, and you will soon be deprived of that information. Actively seeking and invit-
ing requirements information throughout the project lifecycle is an essential aspect
of requirements management.
the costs and stresses of physical travel to client and vendor sites when needed,
and the disadvantages of virtual conferencing and telephone. Even simple email
communications cannot be relied upon entirely, even though for many globally
distributed projects informal emails and email distributed documents are the main
form of collaboration. But email use leads to frequent context switching, informa-
tion fragmentation, and the loss of intuition communicated through nonverbal (or
written) means.
When the offshoring takes place in a country with a different native language
and substantially different culture, new problems may arise in terms of work sched-
ules, work attitudes, communication barriers, and customer–vendor expectations
of how to conduct business. Moreover, offshoring introduces a new risk factor:
geopolitical risk—and this risk must be understood, quantified, and somehow fac-
tored into the requirements engineering process and schedule. Finally, there are vast
differences in laws, legal process, and even the expectations of honesty in business
transactions around the world. These issues are particularly relevant during the
requirements elicitation phase.
Bhat et al. (2006) highlighted nine specific problems they observed or experi-
enced. These included
Bhat et al. suggest that the following success factors were missing in these cases,
based on an analysis of their project experiences:
an important role, though there are not many appropriate tools for this purpose.
Appropriate software tools must support
◾◾ Informal collaboration
◾◾ Change management
◾◾ Promote awareness (e.g., auto-email stakeholders when triggers occur)
◾◾ Manage knowledge—provide a framework for saving and associating unstruc-
tured project information
There are several commercial and even open source solutions that claim to pro-
vide these features, but we leave the product research of these to the reader.
* Some of this discussion is excerpted from Laplante and Neill (2006) with permission.
Requirements Management 177
Environmental Antipatterns
Divergent Goals
Everyone must pull in the same direction. There is no room for individual or hid-
den agendas that don’t align with those of the business. The divergent goals antipat-
tern exists when there are those who pull in different directions.
There are several direct and indirect problems with divergent goals.
Process Clash
A process clash is the friction that can arise when advocates of different processes
must work together without a proven hybrid process being defined. The dysfunc-
tion appears when organizations have two or more well-intended but non-comple-
mentary processes; a great deal of discomfort can be created for those involved.
Symptoms of this antipattern include poor communications—even hostility—
high turnover, and low productivity.
The solution to a process clash is as follows: develop a hybridized approach—
one that resolves the differences at the processes’ interfaces. Retraining and cross-
training could also be used. For example, by training the analysis group in XP and
the development group in RUP, better understanding can be achieved.
Another solution is to change to a third process that resolves the conflict.
For example, domain driven modeling might have been used instead of RUP.
Domain driven modeling can be used in conjunction with agile methodologies
with no conflicts.
There is a strong correlation between the aforementioned two antipatterns, and
certain capability maturity models, like the CMMI, can be used to help identify
and reconcile process clashes that lead to divergent goals.
Management Antipatterns
Metric Abuse
The first management antipattern that might arise in requirements engineering is
metric abuse, that is, the misuse of metrics either through incompetence or with
deliberate malice (Dekkers and McQuaid 2002).
At the core of many process improvement efforts is the introduction of a mea-
surement program. In fact sometimes the measurement program is the process
improvement. That is to say, some people misunderstand the role measurement
plays in management and misconstrue its mere presence as an improvement. This
is not a correct assumption. When the data used in the metric are incorrect or the
metric is measuring the wrong thing, the decisions made based upon them are
likely the wrong ones and will do more harm than good.
Of course, the significant problems that can arise from metric abuse depend on
the root of the problem: incompetence or malice.
The solution or refactoring to the problem is as follows: The first thing to do is stop!
Measuring nothing is better than measuring the wrong thing in many cases. When
data are available, people use them in decision making, regardless of their accuracy.
Once the decks have been cleared Dekkers and McQuaid suggest a number
of steps necessary for the introduction of a meaningful measurement program
(Dekkers and McQuaid 2002):
1. Define measurement objectives and plans—perhaps by applying the goal-
question-metric (GQM) paradigm.
2. Make measurement part of the process—don’t treat it like another project that
might get its budget cut or that one day you hope to complete.
3. Gain a thorough understanding of measurement—be sure you understand
direct and indirect metrics; causality versus correlation; and, most impor-
tantly, that metrics must be interpreted and acted upon.
4. Focus on cultural issues—a measurement program will affect the organiza-
tion’s culture; expect it and plan for it.
5. Create a safe environment to collect and report true data—remember that with-
out a good rationale people will be suspicious of new metrics, fearful of a
time-and-motion study in sheep’s clothing.
6. Cultivate a predisposition to change—the metrics will reveal deficiencies and
inefficiencies so be ready to make improvements.
7. Develop a complementary suite of measures—responding to an individual met-
ric in isolation can have negative side-effects. A suite of metrics lowers this
risk.
If you believe that you are being metric mismanaged, then you can try to instigate
the above process by questioning management about why the metrics are being col-
lected, how they are being used, and whether there is any justification for such use. You
can also offer to provide corrective understanding of the metrics with opportunities of
alternate metrics and appropriate use or more appropriate uses of the existing metrics.
Mushroom Management
Mushroom management is a situation in which management fails to communicate
effectively with staff. Essentially, information is deliberately withheld in order to
keep everyone “fat, dumb, and happy.” The name is derived from the fact that
mushrooms thrive in darkness and dim light but will die in the sunshine. As the
old saying goes “keep them in the dark, feed them dung, watch them grow … and
then cut off their heads when you are done with them.”
The dysfunction occurs when members of the team don’t really understand the
big picture; the effects can be significant, particularly with respect to requirements
engineering when stakeholders get left out. It is somewhat insulting to assume that
someone working on the front lines doesn’t have a need to understand the bigger
180 Requirements Engineering for Software and Systems
picture. Moreover, those who are working directly with customers, for example,
might have excellent ideas that may have sweeping impact on the company. So,
mushroom management can lead to low employee morale, turnover, missed oppor-
tunities, and general failure.
Those eager to perpetuate mushroom management will find excuses for not
revealing information, strategy, and data. To refactor this situation some simple
strategies to employ include
With all refactoring, courage and patience are needed to affect change.
◾◾ Listening skills are really important—both to hear what customers and other
stakeholders are saying and to play off your partner(s) in the requirements
engineering effort.
◾◾ When there is disagreement or partial agreement the best response is “yes, and
…” rather than “yes, but …” That is, build on, rather than tear down ideas.
◾◾ Things will go wrong—both improvisational comedy and requirements engi-
neering are about adapting.
◾◾ You should have fun in the face of adversity.
◾◾ Finally, you should learn to react by controlling only that which is controllable (usu-
ally, it is only your own reaction to certain events, not the events themselves).
You can actually practice some techniques from improvisational comedy to help
you develop your listening skills, emotional intelligence, and ability to think on
your feet, which in turn, will improve your practice as a requirements engineer and
as a team-player.
Requirements Management 181
screenwriters, directors, plots, and release date). Software and systems are
often announced in advance of its actual release and with subsequent changes
in announced functionality and release date.
◾◾ Egos are often a significant factor in movies and software and systems.
◾◾ There are often too many hands involved in making movies and software
systems.
◾◾ Sometimes the needs of movies exceed the technology (and new technology
has to be developed as a result). The same is true for software systems.
◾◾ Movies often exceed budget and delivery expectations. Need we say more
about software?
◾◾ Movies are filmed out of order, requirements are given, and software and
some systems may be built this way, too.
◾◾ Movies are shot out of sequence and then assembled to make sense later.
Software is almost always developed this way, too. Some systems are, too.
◾◾ A great deal of work ends up getting thrown away—in movies it ends up as
film left on the cutting room floor, in software, as throwaway prototypes and
one-time-use tools. While systems components are not usually built to be
thrown away, many text fixtures are.
What can we learn from big picture production? In a short vignette within
Norden’s article, Sara Jones provides the following tips for requirements engineers
from screenwriting:
◾◾ Preparation is everything. Don’t leap straight into the detail, but do your
homework first!
◾◾ Expect to work through many drafts. Remember that different versions might
each need to support planning and enable collaboration between stakeholders.
◾◾ Think in detail about the future system users—their backgrounds, attitudes,
habits, likes, and dislikes.
◾◾ Don’t just think about the users’ physical actions. Remember what they might
think (their cognitive actions) and feel.
◾◾ Remember your requirements story’s arc. Requirements should tell the com-
plete story of achieving user goals.
◾◾ Hold your audience—remember that someone must read your requirements doc-
ument. Perhaps there is a place for tension and dramatic irony. (Norden, 2007)
* Some of this section is excerpted from Phillip A. Laplante, What Every Engineer Needs to Know
About Software Engineering, CRC/Taylor & Francis, 2006, with permission.
Requirements Management 183
to inform the requirements engineering effort. These standards are not mutually
exclusive in that they may be used in a complementary manner.
Six Sigma
Developed by Motorola, Six Sigma is a management philosophy based on remov-
ing process variation. Six Sigma focuses on the control of a process to ensure that
outputs are within six standard deviations (six sigma) from the mean of the speci-
fied goals. Six Sigma is implemented using define, measure, analyze, improve, and
control (DMAIC).
Define means to describe the process to be improved, usually through using
some sort of business process model. Measure means to identify and capture rel-
evant metrics for each aspect of the process model. The goal-question-metric para-
digm is helpful in this regard.
Improve, obviously means to change some aspect of the process so that benefi-
cial changes are seen in the associated metrics, usually by attacking the aspect that
will have the highest payback.
Finally, analyze and control means to use ongoing monitoring of the metrics to
continuously revisit the model, observe the metrics, and refine the process as needed.
Six Sigma is more process yield-based than CMMI so CMMI process areas can be
used to support DMIAC (e.g., by encouraging measurement). And, while CMMI iden-
tifies activities, Six Sigma helps optimize those activities. Six Sigma can also provide spe-
cific tools for implementing CMMI practices (e.g., estimation and risk management).
184 Requirements Engineering for Software and Systems
Some organizations use Six Sigma as part of their software quality practice.
The issue here, however, is in finding an appropriate business process model for the
software production process that does not devolve into a simple, and highly artifi-
cial, waterfall process. If appropriate metrics for requirements can be determined
(e.g., 830) then Six Sigma can be used to improve the RE process.
◾◾ understand requirements
◾◾ get all participants to commit to requirements
◾◾ manage requirements changes throughout the lifecycle
◾◾ manage requirements traceability (forwards and backwards)
◾◾ identify and correct inconsistencies between project plans and requirements
Requirements Management 185
Achieving level 3 and higher for the CMM requires that these best practices be
documented and followed within an organization.
IEEE 830
We have already discussed IEEE standard 830 in the context of risk mitigation. In
terms of managing the requirements engineering activities, standard 830 provides
two major things. First, the standard describes the qualities that govern good software
requirements specifications. In addition, 830 provides a framework for approaching
the organization of requirements (e.g., object-oriented, hierarchical, etc.).
From requirements management perspective, the “sample table of contents” is
the least important offering of 830.
ISO/IEC 25030
We have already discussed this standard, which is complementary to IEEE 830, in
Chapter 4.
186 Requirements Engineering for Software and Systems
Exercises
9.1 Should a request to add or change features be anonymous?
9.2 How could metrics abuse begin to develop in an organization?
9.3 Give an example of process clash, from your own experience, if possible.
9.4 Give an example of metrics abuse, from your own experience, if possible.
9.5 Give an example of divergent goals, from your own experience, if possible.
9.6 How can CMMI be used to identify and reconcile process clash?
References
Alfonsi, B. (2005) FBI’s virtual case file living in limbo, Security & Privacy, 3(2): 26–31.
Andriole, S. (1998) The politics of requirements management, IEEE Software, November/
December, pp. 82–84.
Bhat, J.M., M. Gupta, and S.N. Murthy (2006) Overcoming requirements engineering chal-
lenges: Lessons from offshore outsourcing, IEEE Software, September/October, pp.
38–44.
Brown, W.J., R.C. Malveau, H.W. McCormick, and T.J. Mowbray (1998) AntiPatterns:
Refactoring Software, Architectures, and Projects in Crisis, John Wiley and Sons.
Dekkers, C.A., and P.A. McQuaid (2002) The dangers of using software metrics to (mis)
manage, IT Professional, 4(2): 24–30.
Goldstein, H. (2005) Who killed the virtual case file? Spectrum, 42(9): 24–35.
Laplante, P.A., and C.J. Neill (2006) Antipatterns: Identification, Refactoring, and Management,
Auerbach Press.
Lawrence, B. (1996) Unresolved ambiguity, American Programmer, 9(5): 17–22.
Mayhaux, M., and N. Maiden (2008) Theater improvisers know the requirements game,
Software, September/October, pp. 68–69.
Norden, B. (2007) Screenwriting for requirements engineers, Software, July, pp. 26–27.
Sinha, V., and B. Sengupta (2006) Enabling collaboration in distributed requirements man-
agement, Software, September/October, pp. 52–61.
This page intentionally left blank
Chapter 10
Value Engineering
of Requirements
189
190 Requirements Engineering for Software and Systems
the time to complete, the customer will think that you gave her an inflated price
originally. The correct response, in this case, would be to agree to build the system
for $800,000, but with fewer features (or taking much longer time).
To properly manage customer expectations, deal with tradeoffs between func-
tionality, time, and cost, it is therefore necessary to have some way of estimating
costs for system features. Making such estimations is not easy to do accurately at
the early stages of a project, such as during the requirements engineering activities.
However, it is necessary to make such cost effort and estimations. The activities
related to managing expectations and estimating and managing costs are called
value engineering.
* This section is adapted from Phillip A. Laplante, Software Engineering for Image Processing
Systems, CRC Press, September 2003, with permission.
Value Engineering of Requirements 191
structive cost model, which means that estimates are determined from a set of
parameters that characterize the project. There are several versions of COCOMO
including the original (basic), intermediate, and advanced models, each with increas-
ing numbers of variables for tuning the estimates. The latest COCOMO models
better accommodate more expressive modern languages as well as software genera-
tion tools that tend to produce more code with essentially the same effort. There
are also COCOMO derivatives that are applicable for Web-based applications and
software-intensive (but not pure software) systems.
COCOMO
COCOMO models are based on an estimate of lines of code, modified by a num-
ber of factors. The equations for project effort and duration are
9
Effort = A ∏ cd i ( size )P1 (10.1)
i =1
where A and B are a function of the type of software system to be constructed. For
example, if the system is organic—that is, one that is not heavily embedded in the
hardware—then the following parameters are used: A = 3.2, B = 1.05. If the system is
semi-detached, that is, partially embedded, then these parameters are used: A = 3.0,
B = 1.12. Finally, if the system is embedded, that is, closely tied to the underlying hard-
ware like the visual inspection system, then the following parameters are used: A = 2.8,
B = 1.20. Note that the exponent for the embedded system is the highest, leading to the
longest time to complete for an equivalent number of delivered source instructions.
P1 and P2 are dependent on characteristics of the application domain and the cdi
are cost drivers based on a number of factors including
◾◾ architectural cohesion
◾◾ team cohesion
with qualitative ratings on a Likert scale ranging from very low to very high, that
is, numerical values are assigned to each of the responses.
Incidentally, effort represents the total project effort in person-months, and
duration represents calendar months. These figures are necessary to convert the
COCOMO estimate to an actual cost for the project.
In the advanced COCOMO models, a further adaptation adjustment factor is
made for the proportion of code that is to be used in the system, namely, design
modified, code modified, and integration modified. The adaptation factor, A, is
given by Equation 10.3.
WEBMO
WEBMO is a derivative of COCOMO II that is intended specifically for proj-
ect estimation of Web-based projects, where COCOMO is not always as good.
WEBMO uses the same effort and duration equations as COCOMO, but is based
on a different set of predictors, namely
with qualitative ratings on a Likert scale ranging from very low to very high and
numerical equivalents shown in Table 10.1 (Reifer 2002).
Value Engineering of Requirements 193
Table 10.1 WEBMO Cost Drivers and Their Values (Reifer 2002)
Ratings
Cost Driver
Degree of Planned
Similar tables are available for the cost drivers in the COCOMO model but are
embedded in the simulation tools, so the requirements engineer only has to select
the ratings from the Likert scale.
In any case, the net result of a WEBMO calculation is a statement of effort and dura-
tion to complete the project in person-months and calendar months, respectively.
COSYSMO
COSYSMO (COnstructive SYstem engineering MOdel) is a new systems construc-
tive cost model developed by Barry Boehm (inventor of COCOMO) and one of
his students. COSYSMO is intended to be used for cost and effort estimation of
software-intensive systems based on a set of size drivers, cost drivers, and team
characteristics. The formulation of the COSYSMO metrics is similar to that for
COCOMO, using Equations 10.1 and 10.2.
In COSYSMO, the size drivers include the counts of the following items as
taken right from the SRS document:
◾◾ requirements understanding
◾◾ architecture complexity
◾◾ level of service requirements
◾◾ migration complexity
◾◾ technology maturity
In addition, the FP calculation takes into account weighting factors for each
aspect that reflect their relative difficulty in implementation, and the function
point metric consists of a linear combination of these factors, as shown in Equa
tion 10.3.
where the wi coefficients vary depending on the type of application system. Then
complexity factor adjustments are applied for different types of application domains.
The full set of coefficients and corresponding questions can be found by consulting
an appropriate text on software metrics. The International Function Point Users
Group maintains a Web database of weighting factors and function point values for
a variety of application domains.
For the purposes of cost and schedule estimation and project management,
function points can be mapped to the relative lines of source code in particular
programming languages. A few examples are given in Table 10.2.
Now, these lines of code counts can be plugged into the COCOMO estimation
equations to obtain appropriate estimates of effort for various features.
Here is an example of how this might work. A customer asks for a cost estimate
for a desired feature. Based on the details of that feature, and the various weight-
ing factors needed to calculate FP, the FP metric is computed. That number is
converted to a lines of code count using the conversion shown in Table 10.2 (or
another, appropriate conversion). These lines of code count number, along with the
C 128
C++ 64
Java 64
SQL 12
Visual Basic 32
various other aspects of the project, are plugged into a COCOMO estimator—
which yields an estimate of time and effort (meaning person-hours) to complete
the project. Of course, you wouldn’t take this estimate for granted. It would be
appropriate to check the estimate using other techniques that are complementary
to the FP/COCOMO estimation approach (but this subject is out of scope). In
any case, let’s assume that you believe the estimate that COCOMO gives you.
This estimate of number of person-months can be converted into an appropriate
cost estimate for the customer, a task that would probably be done through the
sales department.
Feature Points
Feature points are an extension of function points developed by Software Productivity
Research, Inc. in 1986. Feature points address the fact that the classical function
point metric was developed for management information systems and therefore are
not particularly applicable to many other systems, such as real-time, embedded,
communications, and process control software. The motivation is that these systems
exhibit high levels of algorithmic complexity, but sparse inputs and outputs.
The feature point metric is computed in a similar manner to the function point
except that a new factor for the number of algorithms, A, is added, yielding Equa
tion 10.4.
This metric is then used to provide estimates of project duration and staffing
from data collected from other projects. Use case points are a relatively new esti-
mation technique and at this time, most information about this technique and a
variety of free tools can be found on the Web.
Return on Investment
Return on investment (ROI) is a rather overloaded term that means different things
to different people. In some cases it means the value of the activity at the time it is
undertaken. To others it is the value of the activity at a later date. In other cases it
is just a catchword for the difference between the cost of the system and the savings
anticipated from the utility of that system. To still others there is a more complex
meaning.
One traditional measure of ROI for any activity or system is given as
The challenge with this model for ROI is the accurate representation of average
net benefit and initial costs. But this is an issue of cost accounting that presents
itself in all calculations of costs versus benefits.
* Such a cost is called a “sunken cost” because the money is gone whether one decides to proceed
with the activity or not.
198 Requirements Engineering for Software and Systems
NPV is an indirect measure because you are required to specify the market
opportunity cost (discount rate) of the capital involved.
To see how you can use this notion in value engineering of requirements, sup-
pose that you expect a certain feature, B, to be included in the system at a cost of
$60,000. You believe that benefits of this feature are expected to yield $100,000
two years in the future. If the discount rate is 3%, should the feature be included
in the new system?
To answer this question, we calculate the NPV of the feature using Equation
10.7, taking into account the cost of the feature
* The interest rate charged by the U.S. Federal Reserve. The cost of borrowing any capital will
be higher than this base rate.
Value Engineering of Requirements 199
Since NPV is positive, yes, the feature should be included in the requirements.
Equation 10.7 is useful when the benefit of the feature is realizable after some
discrete period of time. But what happens if there is some incremental benefit of
adding a feature; for example, after the first year, the benefit of the feature doubles
(in future dollars). In this case we need to use a variation of Equation 10.7 that
incorporates the notion of continuing cash flows.
For a sequence of cash flows, CFn, where n = 0,…,k represents the number of
years from initial investment, the net present value of that sequence is
NPV = ∑ (1CF+ r )
n
n
(10.8)
n=0
The CFn could represent, for example, a sequence of related expenditures over
a period of time, such as features that are added incrementally to the system or
evolutionary versions of a system.
0 = FV/(1 + r)Y – c
where c is the cost of the feature and FV its future value. Solving for r yields
r = [FV/c]1/Y – 1 (10.9)
Here, NPV = 100,000/(1 + r)2 – 50,000. We now wish to find the r that makes
the NPV = 0, that is, the “break even” value. Using Equation 10.9 yields
r = [100,000/50,000)]1/2 – 1
This means r = 0.414 = 41.4%. This rate of return is very high for this feature,
and we would likely choose to incorporate it into the system.
Profitability Index
The profitability index (PI) is the NPV divided by the cost of the investment, I:
PI = NPV/I (10.10)
The profitability index method is helpful in conjunction with NPV to help opti-
mize the allocation of investment dollars across a series of feature options.
Payback Period
To the project manager, the payback period is the time it takes to get the ini-
tial investment back out of the project. Projects with short paybacks are preferred,
although the term “short” is completely arbitrary. The intuitive appeal is reasonably
clear: the payback period is easy to calculate, communicate, and understand.
Payback can be used as a metric to decide whether to incorporate a requirement
in the system or not. For example, suppose implementing feature D is expected to
cost $100,000 and result in a cost savings of $50,000 per year. Then the payback
period for the feature would be two years.
Because of its simplicity, payback is the least likely ROI calculation to con-
fuse managers. However, if payback period is the only criterion used, then there is
no recognition of any cash flows, small or large, to arrive after the cutoff period.
Furthermore, there is no recognition of the opportunity cost of tying up funds. Since
discussions of payback tend to coincide with discussions of risk, a short payback
period usually means a lower risk. However, all criteria used in the determination
of payback are arbitrary. And from an accounting and practical standpoint, the
discounted payback is the metric that is preferred.
Exercises
9.1 Why is it so important to determine the cost of features early, but not
too early in the requirements engineering process?
9.2 What factors determine which metric or metrics a customer can use to
help make meaningful cost–benefit decisions of proposed features for a
system to be built?
9.3 How does the role of ranking requirements help in feature selection
cost–benefit decision making?
9.4 What changes (if any) would you need to make to the COCOMO
or feature point equation calculations to incorporate ranking of
requirements?
9.5 Investigate the use of other decision-making techniques, such as integer
programming, in helping to decide on the appropriate feature set for a
proposed system.
9.6 Complete the derivation of Equation 10.8 from Equation 10.6 by set-
ting the NPV equation (less the cost of the investment) to zero and
solving for r.
References
Albrecht, J. (1979) Measuring application development productivity, in Proc. IBM Applications
Develop. Symp., Monterey, CA, Oct. pp. 14–17.
Boehm, B.W., D.J. Reifer, and R. Valerdi (2003) COSYSMO: A Systems Engineering Cost
Model, Proceedings of the First Conference on Systems Integration. On line at http://
valerdi.com/cosysmo/, last accessed 1 September 2008.
Jones, C. (1996) Activity-based software costing. IEEE Computer, May, pp. 103–104.
Laplante, P.A. (2006) What Every Engineer Needs to Know About Software Engineering, CRC/
Taylor & Francis.
Laplante, P.A. (2003) Software Engineering for Image Processing Systems, CRC Press.
Morgan, J.N. (2005) A roadmap of financial measures for IT project ROI. IT Professional,
Jan./Feb., pp. 52–57.
Raffo, D., J. Settle, and W. Harrison (1999) Investigating Financial Measures for Planning of
Software IV&V, Portland State University Research Report #TR-99-05.
Reifer, D.J. (2002) Estimating web development costs: There are differences. On line at
http://www.reifer.com/download.html.
Appendix
Software Requirements
Specification for
a Smart Home
Version 2.0
September 20, 2008
1 Introduction
1.1 Purpose: Mission Statement
Making residential enhancements that will pave the way for an easy and relaxed
transition into retired life.
Document prepared for the Smith family home, a pre-existing building.
1.2 Scope
The “Smart Home” system, herein referred to as “The System,” will be a combina-
tion of hardware and software that will provide an escape from daily routines and
mundane tasks. This product seeks out the items that consume the most time but
do not need to. The goal is to automate that which does not really need human
interaction, to free the occupants to enjoy themselves in their retirement. The sys-
tem will not free the mundane household chores from any human interaction, but
it will require only as little as needed.
203
204 Software Requirements Specification for a Smart Home
1.4 References
802.11 IEEE Specification http://ieeexplore.ieee.org/servlet/opac?punumber=4248376
1.5 Overview
Requirements have been divided into key functional areas, which are decom-
posed into features within those functional areas. Functional and nonfunc-
tional requirements exist within the laid-out document format. The order of
the leading sections and the corresponding requirements should be interpreted
as priority.
2 Overall Description
2.1 Product Perspective
This system consists of many standalone devices. At this time it is not known if
these devices exist in the commercial market or not. The document has a holistic
approach, intermingling the demand for devices with the functions of the system.
The first step in continuing with this project would be to decide on feasibility and
do some cost analysis for some of the requirements contained herein.
This document seeks to lay out areas where all interfaces are abstracted. There
are areas where there would clearly need to be communication between the vari-
ous interfaces, but since there is no targeted device, there is no known protocol for
speaking with that device.
2.2 Product Functions
The functions of this product will be divided into six categories. Accessibility is
the first and most highly desired by the customer. This functional category seeks
to improve the user experience of the system by providing various benchmarks for
Software Requirements Specification for a Smart Home 205
2.3 User Characteristics
The primary users of this system will be two older adults entering retirement. One of
the adults spent his work life doing IT support and has a mild degree of electronic and
computer expertise. The other was a school teacher and is not very familiar or com-
fortable with electronic and computing devices. These individuals are both of sound
physical abilities, although one is a little shorter and suffers from sporadic hip pains.
2.3.1 User/Stakeholder Profiles
Local building Ensuring the safety for the Multiple business codes,
codes building for the inhabitants. especially around
electrical interfaces.
2.4 Constraints
IEC 61508—Providing for functional safety.
None others at this time, as feasibility and cost estimation activities are out of
scope.
Software Requirements Specification for a Smart Home 207
4 Accessibility
Accessibility is defined as the need of the SH system to be usable by all persons,
including those with any physical impairments or those with difficulty operating
and/or understanding complex electronic systems. Priority = High.
208 Software Requirements Specification for a Smart Home
4.1 Use of SH Features
4.1.1 SH System shall be usable by those with slight eye loss.
4.1.1.1 System shall not have any buttons smaller than one (1) inch
square.
4.1.1.2 System shall have all consoles and controlling devices
between four (4) and five (5) feet from ground level.
4.1.1.3 System shall have backlighting on all buttons for nighttime
ease of use.
4.1.1.4 System shall have options to increase and decrease font sizes
on Web interfaces and all console and controlling devices.
4.1.1.5 System shall have liquid layouts for all graphical interfaces
for display on many different types of display devices.
4.1.2 System shall be easy to use.
4.1.2.1 System shall be understood by users of all levels of under-
standing with no more than four (4) hours of training.
4.1.2.2 System shall have a help function associated with all user
entry possibilities.
4.1.2.3 System shall have text to speech capabilities to allow the
user to receive vocal instructions for help and how to menu
items.
5 Environment
Environment encompasses air quality controls, but also includes other environ-
mental elements such as lighting levels, water purification, etc. Priority = High.
5.1.6 System shall incorporate water softener system into water system.
5.1.7 System shall monitor the salt in the water softener.
5.1.8 System shall accept user input for desirable levels of salt in the water
softener device.
5.1.9 System shall send notifications to users when salt in softener gets below
user defined levels.
5.1.10 System shall monitor air filter.
5.1.11 System shall send notification to users when air filter needs to be cleaned
and/or changed.
5.1.12 System shall provide monitors for measuring air quality.
5.1.13 System shall accept user input for air quality thresholds.
5.1.14 System shall notify users when air quality reaches levels outside the user
defined thresholds.
5.2.1 SH shall have at least one (1) multi purpose detector for detecting
smoke and carbon monoxide on each floor.
5.2.2 System shall not interfere in any way with detector’s manufacturer’s
operating procedures.
5.2.3 System shall accept user input for dangerous levels of smoke and carbon
dioxide.
5.2.4 System shall trigger warning and require additional confirmation when
users select levels outside of the manufacturer’s settings for dangerous
levels of smoke and carbon dioxide.
5.2.5 System shall notify proper authorities when levels above user defined
thresholds of smoke or carbon monoxide are detected.
5.2.6 System shall tie into detectors to send remote alert messages to users
when elevated levels of smoke or carbon monoxide are detected.
5.2.7 System shall utilize radon detector in the basement.
5.2.8 System shall allow users to set defined ceiling for radon levels.
5.2.9 System shall accept input from users for notification events for radon
level detections.
5.2.10 System shall send notifications based on user defined notification events
to interested parties when radon levels are more than the user defined
ceiling.
5.2.11 System shall activate basement fan system when radon levels report
above defined ceiling.
5.2.12 System shall record radon levels routinely.
210 Software Requirements Specification for a Smart Home
6 Energy Efficiency
Energy efficiency covers the extent to which the SH system enables the users to
monitor and enhance energy efficiency of the house through “smart” and adaptive
controls and interfaces. Priority = High.
6.1 Air Conditioner/Heating
Controlling and adapting the air conditioning and heating are important aspects
of using energy efficiently. Not only does the SH seek to improve the ease of use of
traditional thermostats, but also to provide intelligence in order to optimize the use
of the system. Priority = High.
6.1.1 SH shall be divided up into zones for heating and cooling.
6.1.2 System shall accept desired temperature settings for each zone, for no
less than four (4) periods in the day.
6.1.3 System shall accept input for desired room temperature when room is
unoccupied.
6.1.4 System shall detect motion to determine if a room is occupied, and
make proper adjustments to the temperature.
6.1.5 System shall differentiate between pets and occupants for motion detec-
tion and temperature adjustment.
6.1.6 System shall monitor outdoor temperature and humidity.
6.1.7 System shall shut down air conditioning and open windows if tempera-
ture outside is cooler than the inside temperature.
6.1.8 System shall not open or close any windows if there is something in the
desired path of the window.
6.1.9 System shall reverse directions of windows if they encounter any
resistance.
6.1.10 System shall send notifications to users if windows need to reverse path
or windows cannot complete desired action (open or close).
6.2 Time-of-Day Usage
Time-of-day usage refers to common utility programs that provide reduced rates
for utilities used during off-peak time periods.
Start Opening/
Closing Window
Reverse Window
No
Done
6.2.3 System shall queue up appliance(s) to run when time of day period
starts if it is a time of day device.
6.2.4 System shall allow user to override the time of day setting to run the
device/appliance immediately.
6.2.5 System may send notification when device has completed its work.
6.3 Water Recovery
Promote reusable resources by capturing rain water to use for irrigation. Priority =
Medium.
6.3.1 System shall have water recovery system for rain water.
6.3.2 System shall use water recovered from rain for lawn irrigation.
212 Software Requirements Specification for a Smart Home
6.4 Alternative Energy
Interface to allow for future expansion and addition of alternative energy sources.
Priority = Low.
6.4.1 System shall provide interface into central electrical supply for alterna-
tive energy to supply power to the house (i.e., solar or wind).
6.4.2 System shall monitor the generation of alternative energy.
6.4.3 System shall present reports to users of the amounts of alternative
energy generated during some user-defined time period.
6.4.4 System shall maintain alternative energy generation data for no less
than two (2) years.
6.5.1 System shall monitor air flow in various rooms within the SH.
6.5.2 System shall present reports for air flow to users.
6.5.3 System shall persist air flow data for no less than three (3) years.
6.5.4 System shall accept input for thresholds for detecting drafts or leaks of
air within the house.
6.5.5 Assuming the house is running centralized air or heat, system shall
send notifications if drafts are detected that exceed the user-defined
threshold.
7 Security
Security includes aspects of home security like alerts in the event of a break-in,
video monitoring of premises or areas of interest, as well as unattended monitoring
while the occupant(s) is away. Priority = High.
7.1 Home Security
Home security centers around controlling the access points to the SH as well
as providing many cameras to provide views into areas of the SH. The SH will
Software Requirements Specification for a Smart Home 213
7.1.1 System shall have biometric and keypad door locks for all points of
entry into the house.
7.1.2 System shall allow users to encode a one time use door code for expected
visitors.
7.1.2.1 System shall allow users to remotely code a one time use
code for visitors (i.e., over the phone, Internet, or some other
mobile device).
7.1.3 System shall record all entries based on code entered or biometrics
presented.
7.1.4 System shall present report to users for all entries.
7.1.5 System shall persist home entry data for no less than ten (10) years.
7.1.6 System shall allow for RFID tags to open garage doors.
7.1.7 System shall allow for biometric and key pad entry to open garage
doors.
7.1.8 System shall allow user to configure maximum duration for garage
door to remain open.
7.1.9 System shall shut open garage door if it is open past the user-defined
maximum.
7.1.10 System shall allow user to override automatically shutting the garage
door, i.e., “Hold Open option”.
7.1.11 Garage door shall reverse course if something is blocking its path.
7.1.12 System shall notify user if the garage door is unable to safely close.
7.1.13 System shall allow users to configure entry routine for all RFID, bio-
metric, and key codes, i.e., upon entry for user X through the garage
door, turn on garage light, hall light, and kitchen light.
7.2 Unattended Home
Unattended Home is a set of responses to various triggers throughout the home
and immediate responses to those triggers. This will aid in security of the home.
Priority = High.
7.2.6 System shall send notification to users if any motion detectors are trig-
gered while the user is away.
7.2.7 User shall be presented options to view various cameras via the Web or
some other mobile device when motion detectors are triggered.
7.2.8 User shall be given the option to alert the authorities when motion
detectors are triggered.
7.2.9 System shall turn on user-defined lights in and outside the house when
motion detectors are triggered.
7.3 Monitoring Anywhere
Occupants and users of the SH’s system should be able to monitor the home from
anywhere they wish. This includes many different cameras within the SH as well
as various points of entry and other triggers placed throughout the home. This will
give the occupants more freedom to travel while feeling their home is secured and
well cared for. Priority = Medium.
7.3.1 System shall show camera data streams to any television in the house.
7.3.2 System shall incorporate cameras at points of entry with doorbells to
allow users to view visitor.
7.3.3 System shall allow user to remotely unlock the door to permit entry to
the visitors.
7.3.4 System shall allow users to notify emergency personnel of possible
intruder.
7.3.5 System shall permit users to view security cameras from a secure Web
site or mobile device for remote viewing of property.
8 Media/Entertainment
Media and entertainment include the ability to create, store, and access multiple
forms of media and entertainment such as audio, video, etc. anywhere in the house.
Priority = Medium.
8.1.3 System shall allow user to record a minimum of two (2) television shows
simultaneously.
8.1.4 System shall make storage for recorded shows expandable.
8.1.5 System shall free storage space as needed by first-in first-out (FIFO) or
some other defined priority schedule.
8.1.6 System shall provide search feature to search through television shows
to select which one to record.
8.1.7 System shall provide user the ability to record all occurrences of a speci-
fied show.
8.1.8 System shall provide user the ability to record only new instances of a
specified show.
8.1.9 System shall provide telephone menu options for customer to dial in
and select channel, time, and duration to record.
8.1.10 System shall present users option to select quality for recording.
8.1.11 System shall present user option to not automatically overwrite the tele-
vision recording.
8.1.12 System shall give user the option to only store X number of episodes
from a certain series at a time.
8.1.13 System may skip commercials when system is able to detect the
commercial.
8.1.14 System shall monitor storage space for future recordings.
8.1.15 System shall send notification when resources get low enough where
recordings will be overwritten.
8.1.16 System shall permit users to not automatically delete a show or a series.
8.1.17 System shall not record any new shows if there is space available for
recovery.
8.1.18 System shall send notifications to users if there is no longer space avail-
able to record new shows.
8.2 Video Entry
Video Entry is the mechanism by which various formats of video data are able to be
loaded into the repository for video playback. Priority = Medium.
8.2.1 System shall allow for video input into digital library.
8.2.2 System shall allow for storage of video meta data such as category,
genre, title, rating, etc.
8.2.3 System shall provide interface to users to edit and update video meta
data.
8.2.4 System shall accept one-button touch support for incorporating VHS
tape into digital library.
8.2.5 System shall accept one-button touch support for incorporating DVD
videos into digital library, where law and technology provide.
216 Software Requirements Specification for a Smart Home
8.3 Video Playback
Video playback allows the users of the SH to be able to enjoy video, both recorded
and preloaded content from anywhere within the house. Priority = Medium.
8.3.1 System shall allow for recorded video playback at any television in the
house.
8.3.2 System shall allow for other video media to be available for playback in
any room with a television.
8.3.3 System shall allow of all common features of a VCR player or DVD
player, such as fast forward, rewind, chapter skip, etc.
8.3.4 System shall allow user to skip commercials where commercials are
detected.
8.3.5 System shall prevent user from playing back identical media on mul-
tiple televisions at the same time.
8.3.6 System shall allow user to remove the recording from storage when they
are done watching.
8.3.7 System shall allow user to remove other video media from the storage.
8.4.1 System shall accept input into digital audio library from CD.
8.4.1.1 System shall allow user to enter a CD into a tray and imme-
diately rip the CD.
8.4.1.2 System shall collect all available meta data from the CD
from the Internet for categorization.
8.4.1.3 System shall store audio binary in a lossless format.
8.4.2 System shall accept input into the digital audio library from a USB
device.
8.4.3 System shall provide interface for users to manually place audio file into
digital audio library.
8.4.4 System shall automatically normalize volume of all audio files loaded
into the digital audio library.
8.4.5 System shall store information about audio files in some searchable
entity.
8.4.6 System shall provide users the ability to alter meta data for any file in
the collection.
Software Requirements Specification for a Smart Home 217
8.4.7 System shall allow users to remove audio files from the digital audio
library.
8.4.8 System shall allow for categorization of audio files by important fields
such as genre, artist, album, etc.
8.4.9 System shall allow audio playback.
8.4.9.1 System shall allow for wired or wireless connection to any
device capable of audio playback.
8.4.9.2 System shall allow centralized panel to play back various
audio files in different rooms of the house.
8.4.9.3 System shall provide access point in garage so digital audio
can be downloaded to an automobile audio system.
8.4.10 System shall allow users to author new CDs.
8.4.10.1 System shall allow users to select tracks for newly authored
CD from a playlist or from the complete library.
8.4.10.2 System shall allow user to select which format to use.
8.4.10.3 System shall allow user to select a CD burning drive.
8.4.10.4 System shall provide guidance to users for available space
depending on the drive and media selected as well as the
format chosen.
8.4.10.5 System shall verify proper media is in the selected drive.
8.4.10.6 System shall allow user to select order for the tracks.
8.4.10.7 System shall allow user to confirm track information to start
authoring the CD.
8.4.10.8 System shall perform necessary audio conversion and burn
the CD based on the user’s authoring details.
8.4.10.9 System may notify user when the authoring process is
complete.
8.4.11 System shall allow users to create, edit, and delete playlists.
8.4.11.1 Playlist shall consist of one to “N” number of tracks selected
from the digital library.
8.4.11.2 A single track may reside in any number of playlists.
8.4.11.3 A single track may not reside in an individual playlist more
than once.
8.4.11.4 System shall allow users to set a name and description for all
playlists created.
8.4.12 System shall allow users to transfer music from the digital library to
portable music players.
8.4.12.1 System shall allow track transfer according to both complete
playlists as well as individual tracks.
8.4.12.2 System shall allow users to format or delete the current selec-
tion of tracks on the portable device before transferring.
218 Software Requirements Specification for a Smart Home
9 Automation
Automation is the processes of making something routine happen automatically,
on some set schedule or by some defined trigger such that little or no human inter-
vention is needed. Priority = Medium.
9.1 Pet Care
The pet care system will be added to ensure that proper unattended care of the pets
in the household takes place. In this instance cats are the pets within the house-
hold, but the system should extend to other future pets as well. The goal is to have
a mostly automated system to take care of the pets’ primary needs such as food,
water, and waste disposal, but the system can also track health care needs such as
appointments and vaccinations. Priority = High.
9.1.2.6 Pet food delivery shall not exceed the amount of the portion
weight; weight includes food already in bowl.
9.1.2.7 Food consumption shall be recorded per pet every feeding
cycle.
9.1.2.8 Alert messages shall be sent if food delivery system dispenses
no food for three (3) consecutive cycles.
9.1.2.9 System shall present a report for food consumption per pet.
UI for intervals of
food and amount Food Delivery
of food
No
Is it time?
Interval or Food Delivery
Amount DB
Amount
No
Interval
Yes
Food
Record Delivery Yes No
delivered?
More than 3
cycles?
Notify Users
9.1.2.10 Pet food consumption data shall persist no less than thirty
(30) days.
9.1.2.11 Pets shall wear RFID tags on their collars.
9.1.2.12 Pet food bowls shall open only when proper RFID tag is
present.
9.1.3 System shall monitor and maintain pet litter box(es).
9.1.3.1 Pet litter box shall be cleaned when odor levels reach a user-
defined mark, and litter disposal unit is not full.
9.1.3.2 System shall notify users if odor levels are above defined ceil-
ing for more than eight (8) hours.
9.1.3.3 System shall notify users every two (2) hours when litter lev-
els are low and continue to send alerts until the litter levels
are within configurable ranges.
9.1.3.4 System shall notify users every four (4) hours when litter dis-
posal container (where dirty litter is stored) is full, and con-
tinue to send alerts until the litter disposal unit is not full.
9.1.4 System shall monitor pet’s health.
9.1.4.1 System may incorporate weight pad to measure weight while
pet is feeding (pet based on RFID).
9.1.4.2 System may send user-defined notifications of weight
change.
9.1.4.3 System may maintain weight data for no less than thirty
(30) days.
9.1.4.4 System shall accept user input for types and intervals for
vaccinations.
9.1.4.5 System shall accept input for when vaccinations have been
administered.
9.1.4.6 System shall send notifications when vaccinations are more
than one (1) week overdue.
9.1.4.7 System shall maintain vaccination records for no less than
five (5) years.
9.2 Making Coffee
The coffee-making system will provide an automated process to make coffee for
users. The system will not be completely autonomous as it does have external depen-
dencies such as power, water supplies, and the users maintaining proper levels of
coffee beans in the repository. The system will, however, expose many configura-
tion options to begin the process as part of a timed sequence or through some other
stimulus. Priority = Medium.
9.2.1 Coffee maker shall be tied into the water purification system.
9.2.2 System shall start coffee maker at any user-defined time as long as water
is present, coffee bean levels are sufficient, and unit is powered.
Software Requirements Specification for a Smart Home 221
9.2.3 System shall send a notification when bean levels are low.
9.2.4 When bean levels are too low to make coffee, system shall send an alert
and coffee maker shall blink a warning indicator.
9.2.5 Coffee maker shall use a reusable filter.
9.2.6 System shall send notification when filter should be cleaned or changed.
9.2.7 Coffee maker shall shut off if weight measured by burner plate is less
than the weight of the carafe or more than the weight of a full carafe.
9.2.8 Coffee maker shall have an emergency stop button clearly visible and
accessible.
9.2.9 Coffee maker shall stop within one (1) microsecond when button is
pressed.
9.2.10 Coffee maker shall turn off if carafe is not removed from burner plate
for thirty (30) consecutive minutes.
Start Coffee
Stop
Enough
Beans? Power? Water?
Yes Yes
No
Yes Emergency Stop
Button Check
No
Get weight on
burner plate
Pressed?
No
Weight in
range?
Brew
Notify User
Coffee Done
9.3.1 System shall monitor temperature of hot tub water at all times.
9.3.2 Hot tub cover shall open with proper biometric credentials or proper
entry of code on numeric key pad.
9.3.3 Hot tub cover shall not open if water temperature is not within a user-
defined safe range.
9.3.4 System shall monitor pH and bacterial levels of hot tub water.
9.3.5 Hot tub cover shall not open if pH and bacterial levels are outside user-
defined norms.
9.3.6 System shall administer chemicals to the hot tub water to maintain
proper pH and bacterial levels.
9.3.7 System shall notify users when chemical levels are low.
9.3.8 System may send notifications of chemical administration information.
9.3.9 Hot tub shall be tied into central water system.
9.3.10 System shall monitor water levels of hot tub.
9.3.11 System shall replenish water to maintain proper water level.
9.3.12 System may send notifications of water level replenishment.
9.3.13 Hot tub cover shall not open if water level is outside user-defined
norms.
9.3.14 Hot tub cover shall close with button press or if no activity/motion is
detected for some time range, and water displacement levels are normal
(no one in the tub).
9.3.15 Hot tub shall sound alarm if no activity or motion is detected for some
defined time range and water displacement indicates there is someone
in the tub.
9.4.1 System shall control any number of indoor irrigation access points.
9.4.2 All access points shall be accompanied with soil moisture detector.
9.4.3 System shall allow user to define desired moisture level and watering
intervals for each watering access point in the house.
Software Requirements Specification for a Smart Home 223
9.4.4 System shall control watering units at each access point to keep soil at a
steady moisture level.
9.4.5 If plants are on an interval, system shall bring the moisture level up to
defined range during each watering interval.
9.4.6 System shall record water used and average soil moisture levels per
access point.
9.4.7 System shall maintain indoor watering information for no less than
forty-five (45) days.
9.4.8 System may accept input for soil moisture warning levels.
9.4.9 System shall send notifications if moisture levels drop below user-
defined floors for more than four (4) hours.
9.5 Outdoor Irrigation
The outdoor irrigation system will promote a healthy lawn as well as landscaping.
The system will depend on water supplies, but will be able to automate the lawn
watering process. Priority = Low.
9.5.16 System shall allow for motion detectors to be present in specified areas
in lawn (i.e., flowerbeds or flower pots).
9.5.17 System shall allow for users to configure settings for when to activate
lawn motion detectors.
9.5.18 System shall deploy counter measures (i.e., loud sound, scent repellent)
when motion detectors are tripped during user-defined time periods
(for scaring off animals trying to eat plants).
9.6.1 SH shall have reservoirs for cleaning different surfaces outside the home
(i.e., windows and siding).
9.6.2 System shall monitor levels of all materials needed to clean exterior
surfaces.
9.6.3 System shall send notifications when materials are low.
9.6.4 System shall accept any number of cleaning devices to control.
9.6.5 System shall allow users to assign category to the type of device under
the system’s control.
9.6.6 System shall accept input on what type of schedule should be used to
deploy devices for cleaning various exterior surfaces.
9.6.7 System shall deploy cleaning devices according to the user inputted
schedule.
9.6.8 System shall store and report information about cleaning material
usages on a daily basis.
9.6.9 System shall maintain cleaning material usage data for no less than
thirty (30) days.
9.8 Voice Activation
The voice activation system currently will consist of a finite set of commands to
which the SH will programmatically respond. In the future this should be extended
such that any commands can be programmed to control any device or system inter-
faced by the SH. Priority = High.
9.8.1 System shall support voice activation in major living areas (i.e., living
room, kitchen, etc.).
9.8.2 System shall support commands to raise the current target temperature
of the thermostat.
9.8.3 System shall support commands to lower the current target tempera-
ture of the thermostat.
9.8.4 System shall support command to draw a bath in the master bathroom
9.8.5 Master bed shall have heating element capable of warming the bed.
9.8.6 System shall support command to begin prewarming the bed in the
master bedroom.
9.8.7 System shall support command to prepare the hot tub for use.
9.8.8 System shall support commands to dim or switch off lights in any room
in the house.
9.8.9 System shall support commands to turn air conditioning or heating on
and off.
9.8.10 System shall support commands to open windows and/or blinds on
various levels of the house.
9.8.11 System shall support command to lock all points of entry.
9.8.12 System shall support command to secure the house, which would lock
all points of entry and close all windows and blinds.
9.9 Driveway
The system is geared to provide ease and safety in the winter months to attempt
to prevent snow accumulation on the driveway surface, and more importantly the
formation of ice. Priority = Low.
226 Software Requirements Specification for a Smart Home
9.10.1 System shall allow users to enter food associated with RFID tag into
the kitchen inventory system.
9.10.2 System shall present reports to users of food inventory.
9.10.3 System shall allow users to call in (i.e., from grocery store) to check on
stock of certain items in the kitchen’s inventory.
9.10.4 System shall monitor and track the usage of certain items.
9.10.5 System shall present users with reports on item usage (i.e., for diets, and
food spending forecasting).
9.10.6 System shall maintain item inventory and usage for no less than eigh-
teen (18) months.
9.10.7 System shall provide interface for recipe center [ref. 9.11] to provide
feedback on stock of items needed for recipe.
9.10.8 System may provide intelligent interface to create shopping list tem-
plates based on average food usage.
9.11.3 System shall provide touch pad interface in the kitchen for users to
search, recall, and view recipes.
9.11.4 System shall provide interface for users to add, modify, and delete reci-
pes from the repository.
9.11.5 System shall provide interface to the food stock to create grocery lists of
what items may be needed for some arbitrary number of recipes.
9.11.6 System shall provide users with recipes in a specified category where all
items are currently in stock. (i.e., “What can I make tonight?”).
9.11.7 System shall provide users the ability to send recipes to friends elec-
tronically (i.e., email, micro Web pages, etc.).
9.11.8 System shall provide users the ability to create/print a categorized cook-
book of all recipes currently within the system.
9.11.9 System shall allow users to store image file linked to any recipe within
the system.
9.11.10 System shall allow user to enter assisted baking mode.
9.11.10.1 System shall automatically preheat the oven.
9.11.10.2 System shall verbalize order of ingredients to add.
9.11.10.3 System shall accept verbal confirmation once item is added
before instructing to add the next item.
9.12 Phone System
The phone system will be a unified approach to handling voice mail for the
occupants of the house. The key functions are allowing for easier retrieval from
anywhere as well as extending the system via multiple virtual inboxes. Priority =
Medium.
9.13 Wall Pictures
The wall pictures allow for occupants of the home to allow for friends and family
members to share pictures with them and have those pictures displayed on select
wall monitors throughout the house. Priority = Low.
9.13.1 System shall provide wireless support for driving any number of wall-
mounted monitors for picture display.
9.13.2 System shall provide Web-based interface for authenticated users to
publish new photos for display on wall monitors.
9.13.3 System shall allow users to configure which pictures get displayed.
9.13.4 System shall allow users to configure which remote users can submit
pictures to which wall monitor.
9.13.5 System shall support the following playback modes:
Random—display random photos.
Slideshow—display photos in order for some user-defined time.
Single—display only selected or most recently submitted photo.
9.13.6 System shall provide remote users with storage for up to 20 pictures in
their repository or 100MB, whichever is greater.
9.14.1 System shall monitor any number of mail and newspaper boxes for
motion and weight.
9.14.2 System shall allow users to set notification events for those boxes.
9.14.3 System shall send notifications when motion is detected coupled with a
change in static weight of the box.
9.14.4 System shall allow user to turn off any notification events for a set
period (i.e., when snow or something else may trigger the motion and
weight sensors).
9.14.5 System shall permit user to query the status of any of the boxes. The
status would be empty or occupied.
Glossary
229
230 Glossary
payback period: the time it takes to get the initial investment back out of the
project.
PI: see profitability index.
protocol analysis: a process where customers and requirements engineers walk
through the procedures that they are going to automate.
process clash: an antipattern in which established processes are incompatible with
the goals of an enterprise.
profitability index (PI): the net present value of an investment divided by the
amount invested. Used for decision making among alternative invest-
ments and activities.
prototyping: involves construction of models of the system in order to discover new
features.
QFD: see Quality Function Deployment.
Quality Function Deployment (QFD): a technique for discovering customer
requirements and defining major quality assurance points to be used
throughout the production phase.
refactoring: a solution strategy to an antipattern.
repertory grids: elicitation technique that incorporates a structured ranking sys-
tem for various features of the different entities in the system.
requirements engineering: the branch of engineering concerned with the real-
world goals for, functions of, and constraints on systems.
return on investment (ROI): the value of an activity after all benefits have been
realized.
ROI: see return on investment.
Scrum: an agile software methodology involving short development increments
called sprints and a living backlog of requirements.
semi-formal technique: one that while appearing informal, has at least a partial
formal basis.
scenarios: informal descriptions of the system in use that provide a high-level descrip-
tion of system operation, classes of users, and exceptional situations.
sponsor: see customer.
stakeholder: a broad class of individuals who have some interest (a stake) in the
success (or failure) of the system in question.
task analysis: a functional decomposition of tasks to be performed by the system.
traceability: a property of a systems requirements document pertaining to the vis-
ible or traceable linkages between related elements.
UML: see Unified Modeling Language.
Unified Modeling Language (UML): a collection of modeling tools for object-
oriented representation of software and other enterprises.
use case: a depiction of the interactions between the system and the environment
around the system, in particular, human users and other systems.
use case diagram: a graphical depiction of a use case.
232 Glossary
use case points: an effort estimation technique based on characteristics of the proj-
ect’s use cases.
user: a class (consisting of one or more persons) who will use the system.
user stories: short conversational text that are used for initial requirements discov-
ery and project planning.
value engineering: the activities related to managing expectations and estimating
and managing costs during all aspects of systems engineering, including
requirements engineering.
viewpoints: a way to organize information from the (point of view) of different
constituencies.
Wiki: a collaborative technology in which users can format and post text and
images to a Web site.
workshop: a formal or informal gathering of stakeholders to determine requirements
issues.
XP: shorthand notation for Extreme Programming.
Index
a management, 178–180
metric abuse, 178–179
ACS, see Automated Case Support mushroom management, 179–180
Agile Manifesto Application domain, mission statement and,
principles behind, 140–142 25
signatories, 140 Automated Case Support (ACS), 186
Agile methodologies, requirements
specification and, 139–153
b
agile requirements change management
process, 146 Backus-Naur Form (BNF), 115
agile requirements engineering, 150–151 BNF, see Backus-Naur Form
challenges, 152 Boolean satisfiability, consistency checking
change management process, 146 using, 127
cookbook approaches, 139 Brainstorming, 61
exercises, 152 formalized, 42
extreme programming, 142–143 mobile technologies, 65
lightweight approaches, 139 preliminary requirements generated
principles behind Agile Manifesto, during, 42
140–142 Smart Home system, 162
project velocity, 147
requirements engineering for agile c
methodologies, 144–148
best practices, 145–147 CaliberRM, 160
general practices, 145 Capability Maturity Model (CMM), 134,
requirements engineering in XP, 147 184–185
requirements engineering in Scrum, Capability Maturity Model Integrative
147–148 (CMMI), 184–185
Scrum, 143–144 Card sorting, 42–43, 61
software development methods, 141 Category Theory (CT), 122
storytest-driven development, 150 CCSDS, see Consultative Committee for
test-driven development, 151 Space Data Systems
working code, 141 CMM, see Capability Maturity Mmodel
writing user stories, 148–150 CMMI, see Capability Maturity Model
Antipatterns, 176–180 Integrative
environmental, 177–178 COCOMO model, 190–192
divergent goals, 177 Consultative Committee for Space Data
process clash, 178 Systems (CCSDS), 74, 75
233
234 Index
ISO 9000-3 (1997), 183 why customers change their minds, 34–35
ISO/IEC 25030, 185 Wiki technology, 37
Mobile technologies, 65
j Model checking, uses, 133
MS Access, 163
JAD, see Joint Application Development Mushroom management, 179
Java, 75 Myers-Briggs thinking, 13
Joint Application Development (JAD), 41, 48, MySQL, 163
50–51, 61
audit session, 50 n
uses, 50
NASA
Procedural Requirements for requirements
l
engineering, 101, 102
Laddering, 51–52, 61 ranking system, 99
requirements testing, 101–111
continuances, 103–105
m directives, 105
Management antipatterns, 178–180 imperatives, 103
metric abuse, 178–179 incomplete, 106–107
mushroom management, 179–180 NASA ARM tool, 101–102, 107
Maslow’s classic hierarchy of self- options, 105
actualization, 30, 31 readability statistics, 108
Meta-modeling languages, 70 specification depth, 107
Mission statement, customers, and subjects, 107
summary of NASA metrics, 108–111
stakeholders, 23–40
weak phrases, 105–111
application domain, 25
WIRE system, 74
communicating with customers and other
Natural language, 114, 115, 119
stakeholders, 36–38
Net present value (NPV), 198–199
customer, encounter with, 24–26
NFRs, see Nonfunctional requirements
customer needs, hierarchy of, 32
Nonfunctional requirements (NFRs), 6, 7–10
customer wants and needs, 30–34
NPV, see Net present value
what customers don’t want, 33–34
what customers want, 30–33
exercises, 39–40 o
FitNesse, 37 OAG, see Open access gateway
managing expectations, 37–38 Object-oriented language, 75
Maslow’s classic hierarchy of self- Offshoring, risk factor of, 175
actualization, 30, 31 Open access gateway (OAG), 124
mission statements, 23–24 Open Source Requirements Management Tool
stakeholders, 26–30 (OSRMT), 163–166
negative stakeholders, 27 Oracle, 163
negotiations, 38–40 Organizational requirements, 9
obvious, 26 OSRMT, see Open Source Requirements
prioritization, 35–36 Management Tool
stakeholder/customer classes, 29–30
stakeholder identification, 27–30
p
stakeholder questions, 27–29
system metaphor, 23 Pascal’s Triangle, 173
telephone calls, 37 Pascal’s wager, 173–174
vision statement, 23 PDI, see Plant digital interface
Index 237