Table of Contents
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