Addison Wesley, 1999. — 377 p. — ISBN: 0-201-61593-2.
"A comprehensive solution to the requirements challenges faced by every development team. Full of insight and ideas all developers can learn from." --Ivar Jacobson"Many projects fail for the simple reason that the developers fail to build the right thing: They either deliver a system that does not meet the expectations of its intended users, or they deliver a system that focuses on secondary functions at the expense of its primary use. Drawing on their extensive experience, Dean and Don demonstrate how to employ an industrial-strength requirements process, one that helps ensure you will build the right thing. Developers of any kind of application should read this book." --Grady Booch Despite the wealth of development knowledge, experience, and tools generally available today, a substantial percentage of software projects continue to fail, often because requirements are not correctly determined and defined at the outset, or are not managed correctly as the project unfolds. Clients do not always know or express their needs precisely, and too often designers and developers do not ask the right questions at the right times. As a result, projects often spin out of control as "feature bloat" and shifting priorities cause budgets and schedules to exceed expectations. Managing Software Requirements focuses on this critical cause of failure and offers a practical, proven approach to building systems that meet customers' needs--on time and within budget. The authors are skilled practitioners who have spent their careers in the trenches building high-quality applications, including safety-critical, real-time systems. Using an informal, approachable style, their own war stories, and a comprehensive case study they show how designers and developers can effectively identify requirements by employing the power of use cases and more traditional forms of requirements expression. The book illustrates proven techniques for determining, implementing, verifying, and validating requirements. It describes six vital Team Skills for managing requirements throughout the lifecycle of a project: Analyzing the Problem, Understanding User Needs, Defining the System, Managing Scope, Refining the System Definition, and Building the Right System. Managing Software Requirements specifically addresses the ongoing challenge of managing change and describes a process for assuring that project scope is successfully defined and agreed upon by all stakeholders. Topics covered include: *The five steps in problem analysis *Business modeling and system engineering *Techniques for eliciting requirements from clients, users, developers, and other stakeholders *Applying and refining use cases *Prototyping *Organizing and managing requirements information *Establishing project scope and managing customers *Using both informal and technical methods for specifying requirements *How to measure and improve the quality of your product's requirements *Moving from requirements to implementation *Verifying and validating the system *Managing change The book concludes with a step-by-step guide to incorporating these powerful techniques into future projects.
Foreword
The Rock Problem
About This BookContext and Acknowledgments
Requirements Lessons from Building Software for Others
Lessons from Building High-Assurance Systems
Lessons from the Requirements Management Business
Experiences at Rational Software
The Requirements ProblemThe Goal
A Look at the Data
Root Causes of Project Success and Failure
Introduction to Requirements ManagementDefinitions
Application of Requirements Management Techniques
The Road Map
The Software TeamSoftware Development as a Team Activity
The Case Study
Team Skill 1: Analyzing the ProblemThe Five Steps in Problem Analysis
Step 1: Gain Agreement on the Problem Definition
Step 2: Understand the Root Causes—The Problem Behind the Problem
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
Looking Ahead
Business ModelingPurpose of Business Modeling
Using Software Engineering Techniques for Business Modeling
From the Business Models to the Systems Model
When to Use Business Modeling
Looking Ahead
Systems Engineering of Software-Intensive SystemsWhat Is Systems Engineering?
Requirements Allocation in Systems Engineering
The Case Study
Team Skill 1 Summary
Team Skill 2: Understanding User NeedsThe Challenge of Requirements Elicitation
Barriers to Elicitation
Techniques for Requirements Elicitation
The Features of a Product or SystemStakeholder and User Needs
FeaturesInterviewingThe Interview Context
Value-Added Context
The Moment of Truth: The Interview
Compiling the Need Data
A Note on Questionnaires
Requirements Workshops
Accelerating the Decision Process
Preparing for the Workshop
Role of the Facilitator
Setting the Agenda
Running the Workshop
Brainstorming and Idea ReductionLive Brainstorming
Idea Reduction
Web-Based Brainstorming
The Case Study: The HOLIS 2000 Requirements Workshop
StoryboardingTypes of Storyboards
What Storyboards Do
Tools and Techniques for Storyboarding
Tips for Storyboarding
Applying Use Cases
Building the Use-Case Model
Applying Use Cases to Requirements Elicitation
Case Study: The Use Cases for HOLIS
Role PlayingHow to Role Play
Techniques Similar to Role Playing
PrototypingTypes of Prototypes
Requirements Prototypes
What to Prototype
Building the Prototype
Evaluating the Results
Team Skill 2 Summary
Team Skill 3: Defining the SystemOrganizing Requirements InformationOrganizing Requirements of Complex Hardware and Software Systems
Organizing Requirements for Product Families
On "Future" Requirements
Business and Marketing Requirements versus Product Requirements
The Case Study
The Vision DocumentComponents of the Vision Document
The "Delta Vision" Document
The ChampionThe Role of the Product Champion
The Product Champion in a Software Product Environment
The Product Champion in an IS/IT Shop
Team Skill 3 Summary
V:
Team Skill 4: Managing ScopeThe Problem of Project Scope
Components of Project Scope
The Hard Question
Establishing Project ScopeThe Requirements Baseline
Setting Priorities
Assessing Effort
Adding the Risk Element
Reducing Scope
The Case Study
Managing Your CustomerEngaging Customers to Manage Their Project Scope
Communicating the Result
Negotiating with the Customer
Managing the Baseline
Scope Management and Software Development Process ModelsThe Waterfall Model
The Spiral Model
The Iterative Approach
What to Do, What to Do …
Team Skill 4 Summary
Team Skill 5: Refining the System DefinitionSoftware RequirementsDefinition of Software Requirements
Relationship between Features and Software Requirements
The Requirements Dilemma: What versus How
More on Requirements versus Design
A Further Characterization of Requirements
Using Parent-Child Requirements to Increase Specificity
Looking Ahead
Refining the Use CasesQuestions to Ask
Refining Use-Case Specifications
The Case Study: Anatomy of a Simple Use Case
Looking Ahead
A Modern Software Requirements SpecificationThe Modern SRS Package
Documenting Functional Requirements
Looking Ahead
On Ambiguity and SpecificityFinding the "Sweet Spot"
Mary Had a Little Lamb
Techniques for Disambiguation
What to Do?
Quality Measures of Software RequirementsNine Quality Measures
Quality Measures for the Use-Case Model
Quality Measures of the Modern SRS Package
Technical Methods for Specifying RequirementsPseudocode
Finite State Machines
Decision Trees and Decision Tables
Graphical Decision Trees
Activity Diagrams
Entity-Relationship Models
Object-Oriented Modeling
Data Flow Diagrams
Maintenance of Specifications
Case Study
Team Skill 5 Summary
Team Skill 6: Building the Right SystemBuilding the Right System Right: OverviewContinually Confirm that the Development Is on Track
Confirm that the Development Results Are Correct
Learn How to Cope with Change that Occurs during the Development Process
Looking Ahead
From Requirements to ImplementationMapping Requirements to Design and Code
Realizing Use Cases in the Design Model
From Design to Implementation
Looking Ahead
Using Traceability to Support VerificationThe Role of Traceability in Requirements Verification
Using Traceability Tools
Proceeding without Traceability Tools
Thinking about Verification and Traceability
Looking Ahead
Validating the SystemValidation
Case Study: Testing Use Cases
Testing Discrete Requirements
Testing Design Constraints
Looking Ahead
Using ROI to Determine the V&V EffortDepth versus Coverage
What to Verify and Validate
Looking Ahead
Managing ChangeWhy Do Requirements Change?
"We Have Met the Enemy, and They Is Us"
A Process for Managing Change
Requirements Configuration Management
Team Skill 6 Summary
Getting StartedDedication
What We've Learned So Far
Your Prescription for Requirements Management
Now, On to the Next Release!
A. HOLIS Artifacts
Background of the Case Study
Team Skill 1: Analyzing the Problem
Team Skill 2: Understanding User 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