Mastering
the Requirements Process
A
New Book from Suzanne and James Robertson
Foreword by Gerald Weinberg
Mastering the Requirements Process describes an industry-tested
process for gathering and verifying requirements. It provides techniques
and insights for discovering precisely what the customer wants and needs.
"Mastering the Requirements Process shows,
step by step, template by template, example by example, one well-tested
way to assemble a complete, comprehensive requirements process." -
Gerald Weinberg
The specification template in this book provides the basis for your own
requirements specifications. It guides you to the correct specification
content as each part of the process reveals different aspects of the products
functionality and properties.
This book shows you how to make the requirement measurable and testible.
By providing a measurement a fit criterion for each requirement,
the requirements analyst can describe precisely what the customer wants,
the designer can construct a product that exactly matches the requirement,
and the tester can determine whether or not the final solution satisfies
the requirement.
"The Robertsons' concept of fit criteria
is -- all by itself -- worth the investment of your time to read the whole
book. Fit criteria and the allied discipline of quality gateways enable
you to build requirement sets that are measurable, provably correct and
testibly complete." - Tom DeMarco
The book includes the experience that the authors have gained from over
two decades of requirements and systems analysis experience, in various
countries around the world.
"This is an important and timely book, written
in an easy and clear style. The authors are well known and respected consultants,
and have many years of experience in teaching and advising organisations
about their requirements process." - Bashar Nuseibeh, Imperial College,
London.
"This is a nicely crafted, well-thought-through,
complete, up-to-date view of the task of creating a requirements specification
for a software project." Bob Glass
Complete review by Bob Glass, Editor-in-Chief, Journal
of Systems and Software
"The book soon began to impress me with its
practical knowledge. It became apparent that Suzanne and James Robertson
have dealt with the real-world problems of gathering software requirements.
As a result, I think the book makes a valuable contribution to the literature
of software engineering." Capers Jones
Complete review by Capers Jones, Chief Scientist
Artemis Management Systems

Mastering the Requirements Process is published
by Addison-Wesley
US and Addison-Wesley UK.
Available from Addison-Wesley,
Barnes & Noble, Amazon.co.uk
and your local bookseller.


[ top of page ]
Contents:
1 What Are Requirements?
Requirements and systems analysis how
they fit together. We introduce the specification template and the requirements
shell, and tell you where this book will take you.
2 The Requirements Process
An overview of the Volere process. We take you quickly through the
process from the blastoff where the project is prepared to
the delivery of the requirements specification.
3 Project Blastoff
Getting the project underway what you need to get your requirements
project off to a successful and effective start.
4 Event-driven Use Cases
How to determine suitable partitions for the product using
business events as the starting point, and how to determine the best product
to build.
5 Trawling for Requirements
How to gather the requirements. We look at techniques for discovering,
eliciting and inventing requirements.
6 Functional Requirements
Functional requirements are things the product must do. Here we look
at discovering and specifying the product's functionality.
7 Non-functional Requirements
Non-functional requirements are the properties that the product must
have. Here we describe how to discover and specify them.
8 Writing the Specification
How to set all this down in a requirements specification.
9 Fit Criteria
To overcome ambiguity, we introduce measurements for requirements.
This makes the requirements testable so that you can know that the implementation
matches the requirement.
10 Quality Gateway
A device for preventing rogue requirements from becoming part of
the specification.
11 Prototyping and Scenarios
How to bring the requirements to life and discover forgotten and
undreamed of requirements.
12 Reusing Requirements
Products are rarely completely unique. We show you how to take advantage
of requirements that have already been written.
13 Taking Stock of the Specification
A complete review of what you have written, together with the opportunity
to re-measure and re-evaluate the requirements.
14 Whither Requirements?
What happens after the requirements are written? We look at requirements
tools, publishing the specification, traceability, change and managing
the requirements.
Glossary
Bibliography
Appendix A Volere Process
A complete model of the requirements process.
Appendix B Volere Requirements Specification Template
A template for writing a requirements specification which can become
the foundation of your requirements documents.
[ top of page ]
Pre-publication
review by Bob Glass
Requirements are a make or break phase of the software development process.
If the requirements are carefully chosen to represent what the customer
wants, needs, and expects, then the project has a good chance of success.
If not, the project may very well be doomed.
That said, it is easy to say that this book is about an important topic.
But is it a good book about that important topic?
My vote is "yes." This is a nicely crafted, well-thought-through,
complete, up-to-date view of the task of creating a requirements specification
for a software project.
Nicely crafted? It is well-written, readable, never pedantic. Well-thought-through?
The authors base the book on seminars they have given and honed over the
years. Complete and up-to-date? Not only are the basic topics covered, but
the authors also mention such advanced topics as requirements reuse, requirements
patterns, traceability, and an event + use case-driven approach.
The book is written for the requirements novice. There are plenty of detail-level
discussions of steps and approaches, templates for framing the results,
and an elaborated case study (how refreshing it is to see a case study based
on de-icing roadways, rather than one of the traditional, overused topics
like video rental or cruise control!) But the book can also be useful to
the patient requirements expert - there is more verbiage than the expert
will want, but by scanning carefully the essence of the book can be easily
distilled out. Importantly, the essence of the book is conceptual rather
than formula/methodology-driven - the authors say the book is intended "not
as a set of canonical rules that must be obeyed, but as a reliable companion
to intelligent work."
Given all of that, I found some things that were mildly annoying: Some
of the terminology the authors use is cutesy, although often it is appropriate,
but (a) "blastoff: as the term for project start? (the projects I've
been involved with rarely start with a "blast"!); (b) "requirements
leakage" for requirements that erroneously get accepted into a project?
(I would have thought that things leak out of a project, not in!) . The
authors claim that their book can be used not just for customized software
development projects, but also for software maintenance and even for projects
that aggregate pre-built packages. But later they say that the requirements
process should never consider the technology of the solution (all well and
good for customization, but impossible for the latter two categories). .
The authors take the (debatable) position that "object-orientation
has become the standard way of developing systems," but then mix the
two terms "use cases" and "event-driven" as if they
were the same, both related to the OO approaches. In my view, event-driven
approaches are rather different from object-oriented ones (for example,
Visual Basic allows the programmer to build an event-driven system, but
the result may or may not (likely not!) be object-oriented).
The authors speak of a "post-mortem review" (an excellent idea),
but it is not until page 271 (near the end of the book) that it becomes
clear that "post-mortem" means "after the requirements phase,"
not "after the project is complete." (Either could be correct,
but the authors should make it clear which they mean when they first bring
up the topic 250 pages earlier). . There is an appropriate and thorough
discussion of the topic of "fit," by which the authors mean that
requirements should be expressed in a measurable way. But the authors fail
to acknowledge that some things simply don't lend themselves to measurement,
with the result that much mischief is done by those who attempt to measure
the unmeasurable (e.g., the terrible tendency to state "the software
product shall be modular" in terms of the length of program segments
- "modules shall contain no more than 50 lines of code").
Things I particularly like about the book are . Requirements representation
is treated as a pragmatic topic, where requirements are to be readable by
both application customers and software designers. There is none of the
formal specification discussion that computer scientists love to advocate
but that seldom fits the needs of real-world requirements. . There is also
a nice discussion of software tools, appropriately mentioning that they
are a means to an end, not an end in themselves. (Interestingly, there is
no mention of the now-in-disrepute term "CASE"!) . The discussion
of the "quality gateway," which covers the process of making a
final decision as to which requirements to include in the final specification,
is both important and nice. There are very well-done discussions of such
topics as "requirements creep," "gold plating," "traceability,"
and "viability." (I was reminded of the wry comment by Jerry Weinberg
at a conference many years ago that software may be the only discipline
where the answer to the early-project question of feasibility is always
"yes"!) . The discussions of the avant-garde requirements topics
like requirements reuse and requirements patterns are very nice. I was less
pleased with the discussion of traceability - what the book contains is
excellent material, but it fails to go far enough to note that tracing requirements
into design and code, although extremely desirable, is so far an out-of-reach
topic (due to the "explosion" of business requirements into design
requirements as the life cycle proceeds, an explosion estimated by some
to be measured in orders of magnitude).
There should be at least one book on requirements in the library of every
enterprise, even every software professional. You could do a lot worse than
choosing this one.
-----------------------------------------------------------
Robert L. Glass
Editor-in-Chief, Journal of Systems and Software
Editor/Publisher, The Software Practitioner
1416 Sare Road
Bloomington, IN 47401
voice/fax: 812-337-8047
rglass@indiana.edu
[ top of page ]
Pre-publication
review by Capers Jones
Over the past five years the author and his colleagues at Software Productivity
Research have worked as expert witnesses in about a dozen lawsuits involving
breach of contract for software projects.
In every case the plaintiffs charged that the contractors were late in
delivering the products, and that the software contained far too many errors
when delivered. But in every case the defendants claimed that the delays
were caused by excessive changes to the requirements after the contract
had been agreed to.
We have been able to measure the rate at which requirements change over
time, and the observed average in the United States is about 1% per month
for software contracts. If a project is initially sized at 1000 function
points and is delivered 24 months later with a final size of 12,400 function
points, then it clearly grew at a rate of 100 function points a month, which
is 1% of the initial size.
Our studies also have shown that software requirements contribute about
20% of the total number of errors or defects found in software projects.
The U.S. average for errors in software requirements is about 1.0 per function
point. This is only about 20% of the total volume of errors found in software
projects.
However, requirements errors are very difficult to remove compared to
other classes of error such as coding errors. The removal efficiency of
requirement errors is only about 77%, while more than 95% of coding problems
are usually removed before delivery. This means that when software projects
are delivered, the number of latent requirements errors is greater than
any other category. This also means that much of the subsequent high maintenance
costs of software projects are really the costs of fixing requirements problems.
Because errors in requirements are very resistant to later removal the
most effective approach is to prevent them from occurring in the first place.
Consider the example of example the Y2K problem. The Y2K problem actually
originated as an explicit requirement in order to save storage costs. That
explains why millions of Y2K problems were never found by means of normal
testing. Once an error passes from the requirements to other software deliverables
and the code itself, the error cannot be found by normal testing or defect
removal operations.
There is no question that software project requirements have been a very
weak link in the chain of software engineering technologies.
With this kind of background data on software requirements problems,
I started to read Suzanne and James Robertson's book on Mastering the Requirements
Process with some reluctance. I feared the book would be theoretical and
divorced from real-world issues.
But the book soon began to impress me with its practical knowledge. It
became apparent that Suzanne and James Robertson have dealt with the real-world
problems of gathering software requirements. As a result, I think the book
makes a valuable contribution to the literature of software engineering.
There are only a few books that have provided practical guidance for minimizing
requirements problems, and this new book deserves a place beside Jerry Weinberg
and Don Gause's Exploring Requirements: Quality Before Design.
If the book sells well, then it is possible that it might even play a
role in minimizing some of the risks of litigation that are associated with
ambiguous requirements that change rapidly over time. I think the book might
reduce requirements defect levels significantly, and also raise the efficiency
with which these troublesome errors are removed.
The book is solidly grounded with scores of examples of actual requirements.
These requirements are subdivided down into various categories such as functional
requirements and non-function requirements.
Of even more value in the context of reducing potential litigation, the
book is very strong in dealing with ways of validating requirements, exploring
their quality implications, and even dealing with the cost and schedule
implications. Indeed, it is failure to consider quality, costs, and schedules
when specifying requirements that often shows up in a litigation context.
The text is clearly written and the illustrations are both numerous and
helpful. In fact the format and layout of the book is one of the most effective
I've seen in quite a while. The balance of text and graphics is just about
right, and the page layouts are also very well done to achieve optimal readability.
The book emphasizes the general nature of requirements, but also handles
some of the more recent approaches that have been developed for gathering
requirements in an object-oriented context. For example use cases are discussed
and illustrated rather well.
The book also addresses a topic that will grow to considerable importance
in the future: reusing requirements. This is a one of the first treatments
of requirements reuse that I've encountered. Too often the literature on
software reuse focuses on code, and ignores the other artifacts with potential
value for reusability.
The book is very good, but no software book is perfect. In our studies
of software engineering practices we often divide software projects into
six size categories, and explore whether a technology is useful to the whole
software universe or only part of it. The six size categories are an order
of magnitude apart:
- 1 function point
- 10 function points
- 100 function points
- 1,000 function points
- 10,000 function points
- 100,000 function points
Traditional software requirements specifications average about 0.5 pages
per function point. The methods put forth by Suzanne and James would appear
to include somewhat more complete documentation than normal, and so would
probably run a bit larger.
This means that unless a fully-automated method is available for handling
the requirements paperwork, the methods Suzanne and James discuss might
work well up to about 1,000 function points in size. (1000 function points
is equivalent to about 107,000 COBOL source code statements.)
For an application of 1000 function points, the methods suggested in
the book would probably lead to requirements specifications in the 600 page
size range. This might be a bit cumbersome, but not too difficult to deal
with later during development.
However, for applications in the 10,000 and 100,000 function point size
ranges, the volume of requirements paper documents might begin to exceed
the capacity of the development team to handle. In the 10,000 function point
size range, the requirements might top 6,000 pages. In the 100,000 function
point size range, the requirements might top 60,000 pages.
Of course applications in the 1000 function point range are more than
20 times as common as applications in the 10,000 function point range. Therefore
the book certainly is useful for many thousands of applications. However,
the problems of requirements for really large applications above 10,000
function points need some additional guidance outside the current book.
On the whole, the book is well written, will illustrated, and a valuable
addition to the software engineering literature. For typical software projects
in the range of 10 to 1000 function points the book can be highly recommended.
For really massive systems in the 10,000 function point range and beyond,
portions of the book will be very useful. The book's principles will work,
but quite a bit of automation will be needed to handle the volumes of requirements
associated with such large applications.
-----------------------------------------------------------
Capers Jones
Chief Scientist, Artemis Management Systems
Burlington, Massachusetts
[ top of page ]
|