Foreword
Preface to the Second Edition
Preface to the First Edition
Introduction
Chapter I The Requirements Problem
The Goal of Software Development
A Look at the Data
The Root Causes of Project Success and Failure
The Frequency of Requirements Errors
The High Cost of Requirements Errors
Summary
Chapter 2 Introduction to Requirements Management Definitions
What Is a Software Requirement?
What Is Requirements Management?
Application of Requirements Management Techniques
Types of Software Applications
Systems Applications
The Road Map
The Problem Domain
Stakeholder Needs
Moving Toward the Solution Domain
Features of the System
Software Requirements
Summary
Chapter 3 Requirements and the Software Lifecycle
Traditional Software Process Models
The Waterfall Model
The Spiral Model
The Iterative Approach
Lifecycle Phases
Iterations
Disciplines
Requirements in the Iterative Model
Summary
Chapter 4 The Software Team
Software Development as a Team Activity
Requisite Team Skills for Effective Requirements Management
Team Members Have Different Skills
The Organization of Software Teams
The Case Study
Background for the Case Study
The HOLIS Software Development Team
Summary
Team Skill 1 Analyzing the Problem
Chapter 5 The Five steps in Problem Analysis
Step 1: Gain Agreement on the Problem Definition
The Problem Statement
Step 2: Understand the Root Causes--The Problem Behind
the Problem
Addressing the Root Cause
Step 3: Identify the Stakeholders and the Users
Step 4: Define the Solution System Boundary
Step 5: Identify the Constraints to Be Imposed on the Solution
Summary
Looking Ahead
Chapter 6 Business Modeling
The Purpose of Business Modeling
Using Software Engineering Techniques for Business Modeling
Choosing the Right Technique
The Unified Modeling Language
Business Modeling Using UML Concepts
From the Business Model to the Systems Model
When to Use Business Modeling
Summary
Looking Ahead
Chapter 7 Systems Engineering of Software-Intensive Systems
What Is Systems Engineering?
Pragmatic Principles of Systems Engineering
The Composition and Decomposition of Complex Systems
Requirements Allocation in Systems Engineering
On Derived Requirements
A Quiet Revolution
When Generations Collide: Graying Baby Boomer
Meets Generation X-er
Avoiding the Stovepipe System Problem
When Subsystems Are Subcontracts
Addressing the Conundrum
The Case Study: Systems Engineering for HOLIS
Preliminary User Needs
Problem Analysis
HOLIS: The System, Actors, and Stakeholders
HOLIS Systems Engineering
The Subsystems of HOLIS
Summary
Team Skill 1 Summary
rout
Team Skill 2 Understanding User and Stakeholder Needs
Chapter 8 The Challenge of Requirements Elicitation
Barriers to Elicitation
The "Yes, But" Syndrome
The "Undiscovered Ruins" Syndrome
The "User and the Developer" Syndrome
Summary
Chapter 9 The Features of a Product or System
Stakeholder and User Needs
Features
Managing Complexity by Picking the Level of Abstraction
Attributes of Product Features
Summary
Chapter 10 Interviewing
Context-Free Questions
Solutions-Context Questions
The Moment of Truth: The Interview
Compiling the Needs Data
The Analyst's Summary: 10 + 10 + 10 ;e 30
The Case Study
A Note on Questionnaires
Summary
Chapter 11 Requirements Workshops
Accelerating the Decision Process
Preparing for the Workshop
Selling the Concept
Ensuring the Participation of the Right Stakeholders
Attending to Logistics
Providing Warm-Up Materials
Choosing the Facilitator
Setting the Agenda
Running the Workshop
Problems and Tricks of the Trade
Brainstorming and Idea Reduction
Production and Follow-Up
Summary
Chapter 12 Brainstorming and Idea Reduction
Live Brainstorming
Idea Reduction
Pruning Ideas
Grouping Ideas
Defining Features
Prioritizing Ideas
Web-Based Brainstorming
The Case Study: The HOLIS Requirements Workshop
The Attendees
The Workshop
The Session
The Analysis of Results
Summary
Chapter 13 Storyboarding
Types of Storyboards
What Storyboards Do
Tools for Storyboarding
Tips for Storyboarding
Summary
Team Skill 2 Summary
Team Skill 3 Defining the System
Chapter 14 A Use Case Primer
The Benefits of Use Cases
Use Case Basics
On Actors
Use Case Anatomy
A Step-by-Step Guide to Building the Use-Case Model
Step 1: Identify and Describe the Actors
Step 2: Identify the Use Cases and Write a Brief Description
Step 3: Identify the Actor and Use-Case Relationships
Step 4: Outline the Individual Use Cases
Step 5: Refine the Use Cases
On Use Cases, Storyboarding, and User Interface Design
Use Cases and User Interfaces
Use Cases and Storyboarding
A Use Case Storyboard Example
The Case Study: The HOLIS Use Cases
Find the HOLIS Actors
Find the HOLIS Use Cases
Associate the Actors and Use Cases
Outline the Use Cases
Summary
Chapter 15 Organizing Requirements Information
Organizing Requirements of Complex Hardware
and Software Systems
Organizing Requirements for Product Families
On "Future" Requirements
The Case Study: Organizing the HOLIS Requirements
Summary
Looking Ahead
Chapter 16 The Vision Document
Components of the Vision Document
The Delta Vision Document
The Vision Document for Version 1.0
The Vision Document for Version 2.0
The Delta Vision Document in a Legacy System Environment
Summary
Chapter 17 Product Management
The Role of the Product Champion
The Product Manager in a Software Product Company
Primary Activities for a Product Manager
Driving the Vision
Maintaining the Product Road Map
Defining the Whole Product Plan
Sponsoring the Use-Case Model and Supplementary
Requirements
Testing the Product Concept
Completing the User Experience
Defining Commercial Terms
Positioning and Messaging
Supporting Activities
Branding and Product Labeling
End User Training Materials
Product Demo
Sales and Marketing Collateral
The Product Champion in an IS/IT Shop
Summary
Team Skill 3 Summary
Team Skill 4 Managing Scope
Chapter 18 Establishing Project Scope
The Problem of Project Scope
The Hard Question
The Requirements Baseline
Setting Priorities
Assessing Effort
Adding the Risk Element
Reducing Scope
A Reasonable First Estimate
Summary
Chapter 19 Managing Your Customer
Engaging Customers to Manage Their Project Scope
Communicating the Result
Negotiating with the Customer
Managing the Baseline
Official Changes
Unofficial Changes
Summary
Team Skill 4 Summary
Team Skill 5 Refining the System Definition
Chapter 20 Software gequirements---A More Rigorous Look
Looking Deeper into Software Requirements
The Relationship between Software Requirements and Use Cases
The Relationship between Features and Software Requirements
The Requirements Dilemma: Whatversus How
Excluding Project Information
Excluding Design Information
More on Requirements versus Design
Iterating Requirements and Design
A Further Characterization of Requirements
Functional Software Requirements
Nonfunctional Software Requirements
Design Constraints
Summary
Looking Ahead
Chapter 21 Refining the Use Cases
How Use Cases Evolve
The Scope of a Use Case
The Case Study: Anatomy of a Simple Use Case
Reviewing the Actors
Reviewing the Name
Refining the Description
Defining and Refining the Flow of Events
Identifying the Pre-and Post-conditions
Identifying Special Requirements
Summary of Our Refined Use Case
Extending Use Cases
Including Use Cases in Other Use Cases
Summary
Looking Ahead
Chapter 22 Developing the Supplementary Specification
The Role of the Supplementary Specification
Expressing Functional Requirements in the Supplementary
Specification
Exploring Nonfunctional Requirements
Usability
Reliability
Performance
Supportability
Understanding Design Constraints
Sources of Design Constraints
Handling Design Constraints
Are Design Constraints True Requirements?
Identifying Other Requirements
Linking the Supplementary Specification to the Use Cases
Template for the Supplementary Specification
Summary
Looking Ahead
Chapter 23 On Ambiguity and Specificity
Finding the "Sweet Spot"
Mary Had a Litfie Lamb
Techniques for Disambiguation
Summary
Chapter 24 Technical Methods for Specifying Requirements
Pseudocode
Finite State Machines
Decision Tables and Decision Trees
Activity Diagrams
Entity-Relationship Models
Summary
Team Skill 5 Summary
Team Skill 6 Building the Right System
Chapter 25 From Use Cases to Implementation
Mapping Requirements Directly to Design and Code
The Orthogonality Problem
Object Orientation
The Use Case as a Requirement
Managing the Transition
Modeling Software Systems
The Architecture of Software Systems
The Role of the Use-Case Model in Architecture
Realizing Use Cases in the Design Model
Structural and Behavioral Aspects of Collaborations
Using Collaborations to Realize Sets of Individual Requirements
From Design to Implementation
Summary
Looking Ahead
Chapter 26 From Use Cases to Test Cases
A Tester's Perspective: Musings on the Big Black Box
Is a Use Case a Test Case?
Common Testing Terms
Relationships of Test Artifacts
The Role of the Test Cases
Use-Case Scenarios
Deriving Test Cases from Use Cases: A Four-Step Process
Step l: Identify the Use-Case Scenarios
Step 2: Identify the Test Cases
Step 3: Identify the Test Conditions
Step 4: Add Data Values to Complete the Test Case
Managing Test Coverage
Black-Box versus White-Box Testing with Use Cases
Summary
Chapter 27 Tracing Requirements
The Role of Traceability in Systems Development
The Traceability Relationship
A Generalized Traceability Model
Tracing Requirements in the System Definition Domain
Tracing Requirements to Implementation
Tracing from Requirements to Testing
Using Traceability Tools
Proceeding without Traceability Tools
Summary
Chapter 28 Managing Change
Why Do Requirements Change?
External Factors
Internal Factors
"We Have Met the Enemy, and They Is Us"
A Process for Managing Change
Step 1: Recognize That Change Is Inevitable, and Plan for It
Step 2: Baseline the Requirements
Step 3: Establish a Single Channel to Control Change
Step 4: Use a Change Control System to Capture Changes
Step 5: Manage Change Hierarchically
Requirements Configuration Management
Tool-Based Support for Change Management
Elements Impacted by Change
Audit Trail of Change History
Configuration Management and Change Management
Summary
Looking Ahead
Chapter 29 Assessing Requirements Quality in Iterative
Development
Software Project Quality
Assessing Quality in Iterative Development
Requirements Artifacts Sets
Performing the Assessment
Quality Assessment Checklists for Requirements
Summary
Team Skill 6 Summary
Looking Ahead
Getting Started
Dedication
What You've Learned So Far
Introduction
Team Skill 1: Analyzing the Problem
Team Skill 2: Understanding User and Stakeholder Needs
Team Skill 3: Defining the System
Team Skill 4: Managing Scope
Team Skill 5: Refining the System Definition
Team Skill 6: Building the Right System
Chapter 30 Agile Requirements Methods
Mitigating Requirements Risk with Effective Requirements Practices
Methodology Design Goals
Documentation Is a Means to an End
An Extreme Requirements Method
An Agile Requirements Method
A Robust Requirements Method
Summary
Chapter 31 Your Prescription for Requirements Management
Selecting Your Requirements Approach
The Simplifying Assumptions
The Prescription
On to the Next Release!
Appendixes
Appendix A HOLIS Artifacts
Appendix B Vision Document Template
Appendix C Use-Case Specification Template
Appendix D Supplementary Specification Template
Appendix E Requirements Management in the Rational
Unified Process
Appendix F Requirements Management in the SEI-CMM
and within ISO 9000:2000
Bibliography
Index