Practical Software Requirements: A Manual of Content and Style |
|
|
|
|
| Benjamin L. Kovitz |
| October 1998, Manning Publications Company, Paperback, 444 pages, ISBN 1884777597
|
|
|
|
 |
|
Practical
Software Requirements reveals how to write the documentation
needed at the very beginning of the software development process:
documentation of the customer's problem, and specification of the
software so that it can be programmed and tested, and so that the
final user documentation can be written.
Whereas most books on requirements provide a recommended table of
contents, a single one-size-fits-all approach to specification methods,
and writing advice not going much beyond "Every page shall be numbered,"
Practical Software Requirements concentrates heavily on making
the document comprehensible and useful to its readers. But describing
requirements is difficult and tricky in most real-world projects;
it's really a job of technical writing. As a result, many requirements
documents go forever unread, even by the customers who sign off
on them, because they're too difficult to understand.
Practical Software Requirements treats requirements and specifications
as a form of technical writing. Description techniques are presented
for a wide variety of different types of customer problems and software.
Instead of a one-size-fits-all technique such as "data flows and
functions for everything," numerous techniques are presented, suitable
to different types of problems and software. Instead of putting
software into a few broad categories, the techniques apply to small
"problem types" that are useful for breaking down a wide variety
of larger problems. Techniques are supplied even for the smallest
details of the document:
-
how to word individual requirement statements,
-
how to write use cases, common types of ambiguity and
-
how to correct them,
-
how to write a useful definition, and more.
The basics of requirements are also covered, enabling programmers
or managers or others who have stepped into a requirements-gathering
role for the first time to avoid common mistakes.
Practical Software Requirements also includes two full-sized example
documents from real projects, suitable for use as a starting point
in writing new requirements. They're relatively small projects,
but not toy projects. They're real, complete with the unexpected
complexity of the real world.
Whether you're a programmer or project manager writing requirements
for the first time-- or an experienced system analyst-- this book
will help you do it skillfully and effectively.
What's inside:
-
Elements of a software problem
-
User (and other) interface design documentation
-
How useful requirements derive from known programming techniques
-
Describing the problem domain
-
Non-hierarchical methods for breaking down problems
-
Applying Michael Jackson's "problem frames"
-
Common mistakes and how to fix them
-
Example documents from real projects
|
 |
|
PART I GROUNDWORK
Chapter 1 Problem solving
1.1 The myth
of functional decomposition 1.2 Problem solving and design
patterns 1.3 Why software is hard 1.4 Pattern composition and
decomposition
Chapter 2 Problem defining 2.1 Requirements
and design patterns 2.2 Software problems 2.3 Requirements
engineering 2.4 Lessons learned
Chapter 3 Two worlds and three
designs 3.1 The problem domain 3.2 Requirements 3.3
Interface design 3.4 Validation of interfaces and programs 3.5
Description 3.6 Invention vs. validation 3.7 What software
requirements are not 3.8 Summary
Chapter 4 Problem framing
4.1 The knight's tour 4.2 Domains 4.3 Shared
phenomena 4.4 Connection domains 4.5 Realized domains 4.6
Frame diagrams 4.7 From diagram to documentation 4.8 Notation
summary
Chapter 5 Five problem frames 5.1
Overview 5.2 Information problems 5.3 Control problems 5.4
Transformation problems 5.5 Workpiece problems 5.6 Connection
problems
Chapter 6 Multi-frame problems 6.1 Combining
problem frames 6.2 Inventory control system 6.3 Statistics
package 6.4 Digital answering machine 6.5 Compiler 6.6
Electronic mail 6.7 Satellite reconnaissance
PART II CONTENT
Chapter 7 Software development
7.1 A
division of cognitive labor 7.2 Analysis 7.3 User-interface
design 7.4 Programming 7.5 Testing 7.6 User
documentation
Chapter 8 Two documents 8.1 Contents of a
requirements document 8.2 Contents of a specification
Chapter 9
Classes and relations 9.1 Two kinds of sets 9.2
Classes 9.3 All possible values 9.4 Impossible values 9.5
Relations 9.6 Cardinality 9.7 Relations as attributes 9.8
Uniqueness and functional dependence 9.9 Queries 9.10 Naming
classes, attributes, and relations
Chapter 10 Sequences and events
10.1 Structure 10.2 Events 10.3 Event responses 10.4
More sequence notations
Chapter 11 Causation and control
11.1 State transitions 11.2 Actions 11.3
Dependency 11.4 Flow 11.5 Rules
Chapter 12 Special
topics 12.1 Elicitation 12.2 Object-orientation 12.3 Use
cases and feature interaction 12.4 Reviews 12.5 Requirements
jargon 12.6 Cutting corners 12.7 A few good books
PART III STYLE
Chapter 13 Documentation
13.1 Why
document? 13.2 Broad principles 13.3 Decoy text 13.4 More
common mistakes 13.5 Poor uses of documentation
Chapter 14
Organization 14.1 Content first 14.2 Grouping 14.3
Sequence 14.4 Emphasis
Chapter 15 Small Details acronyms "affect/effect" "always"
assumptions "click on" "compose/comprise"
conventions "correct" cross-references "data"
definitions dependencies document titles "entry"
fancy cover first sentence glossary "i.e./e.g."
"invalid" metatext "model" page layout
"paradigm" "represents" requirement statements
tables title page "type" underlining "use"
"valid" voice
PART IV EXAMPLES
Chapter 16 Bug Log requirements
Chapter 17 Bug Log user-interface design
Glossary
Bibliography
|
|
 |
|
Why don't people read requirements documents? That's the problem
solved by this book by focusing on what belongs in the document
and how to write it so people can read, understand and use it. With
Practical Software Requirements, you will give programmers, testors,
user-interface designers and tech writers all the information they
need to do their jobs.
This
fresh view of requirements injects new sparkle and usefulness into
what is often perceived as a dull but necessary task. The book offers
practical advice like how to word a definition, how to name states
and events and even how to avoid boring the reader. It brims with
a wide selection of examples - from embedded applications that control
machinery to large business applications that direct human organizations.
Whether
you're a programmer or project manager writing requirements for
the first time - or an experienced system analyst - this book will
help you do it skillfully and effectively. |
 |
|
| Ben
Kovitz, a freelance consultant, has 15 years of experience in
software engineering, both reading and writing requirements. He has
worked as programmer, tester, system analyst, user-interface designer,
and technical writer. |
 |
|
Booknews, Inc. A guide to writing the types of documents needed by programmers in the early stages of a software development project: a requirements document (what the program will do) and a program specification or interface design (how it will act). The author presents information on underlying principles of program design; specific types of content to include in documents; and stylistic elements, including good technical writing.
Synopsis
By following the techniques in this book, it is possible to write requirements and specifications that customers, testers, programmers and technical writers will actually read, understand and use. These pages provide precise, practical instructions on how to distinguish requirements from design to produce clear solutions.
From Requirenautics Quarterly, August 1999, by Bashar
Nuseibeh:
I found Kovitz's book a pleasure to read. I believe that it is a
"must buy" for all software development practitioners with a serious
intent on applying both novel and established techniques for requirements
writing. It does not try to cover many worthy requirements engineering
topics and practices, but instead focuses on presenting a pragmatic
approach to solving the very real problem of expressing software
requirements. In doing so, it provides a valuable service to the
community and is an excellent addition to the requirements engineering
literature. |
|