| Preface | xv |
| PART I SOFTWARE REQUIREMENTS: WHAT, WHY, AND WHO | |
| 1 The Essential Software Requirement | 3 |
| Software Requirements Defined | 7 |
| Some Interpretations of Requirement | 7 |
| Levels of Requirements | 8 |
| What Requirements Are Not | 12 |
| Requirements Development and Management | 12 |
| Requirements Development | 13 |
| Requirements Management | 14 |
| Every Project Has Requirements | 15 |
| When Bad Requirements Happen to Nice People | 17 |
| Insufficient User Involvement | 18 |
| Creeping User Requirements | 18 |
| Ambiguous Requirements | 18 |
| Gold Plating | 19 |
| Minimal Specification | 19 |
| Overlooked User Classes | 20 |
| Inaccurate Planning | 20 |
| Benefits from a High-Quality Requirements Process | 20 |
| Characteristics of Excellent Requirements | 22 |
| Requirement Statement Characteristics | 22 |
| Requirements Specification Characteristics | 24 |
| 2 Requirements from the Customer's Perspective | 27 |
| Who Is the Customer? | 29 |
| The Customer-Development Partnership | 31 |
| Requirements Bill of Rights for Software Customers | 33 |
| Requirements Bill of Responsibilities for Software Customers | 36 |
| What About Sign-Off? | 39 |
| 3 Good Practices for Requirements Engineering | 43 |
| Knowledge | 45 |
| Requirements Elicitation | 47 |
| Requirements Analysis | 50 |
| Requirements Specification | 52 |
| Requirements Validation | 53 |
| Requirements Management | 54 |
| Project Management | 56 |
| Getting Started with New Practices | 57 |
| A Requirements Development Process | 59 |
| 4 The Requirements Analyst | 63 |
| The Requirements Analyst Role | 63 |
| The Analyst's Tasks | 65 |
| Essential Analyst Skills | 68 |
| Essential Analyst Knowledge | 70 |
| The Making of an Analyst | 71 |
| The Former User | 71 |
| The Former Developer | 72 |
| The Subject Matter Expert | 73 |
| Creating a Collaborative Environment | 73 |
| PART II SOFTWARE REQUIREMENTS DEVELOPMENT | |
| 5 Establishing the Product Vision and Project Scope | 77 |
| Defining the Vision Through Business Requirements | 78 |
| Conflicting Business Requirements | 80 |
| Business Requirements and Use Cases | 81 |
| Vision and Scope Document | 81 |
| 1. Business Requirements | 83 |
| 2. Vision of the Solution | 85 |
| 3. Scope and Limitations | 86 |
| 4. Business Context | 88 |
| The Context Diagram | 90 |
| Keeping the Scope in Focus | 91 |
| 6 Finding the Voice of the Customer | 95 |
| Sources of Requirements | 96 |
| User Classes | 97 |
| Finding User Representatives | 101 |
| The Product Champion | 103 |
| External Product Champions | 104 |
| Product Champion Expectations | 105 |
| Multiple Product Champions | 106 |
| Selling the Product Champion Idea | 107 |
| Product Champion Traps to Avoid | 108 |
| Who Makes the Decisions? | 109 |
| 7 Hearing the Voice of the Customer | 113 |
| Requirements Elicitation | 115 |
| Elicitation Workshops | 117 |
| Classifying Customer Input | 119 |
| Some Cautions About Elicitation | 125 |
| Finding Missing Requirements | 126 |
| How Do You Know When You're Done? | 129 |
| 8 Understanding User Requirements | 131 |
| The Use-Case Approach | 133 |
| Use Cases and Usage Scenarios | 134 |
| Identifying Use Cases | 138 |
| Documenting Use Cases | 139 |
| Use Cases and Functional Requirements | 145 |
| Benefits of Use Cases | 147 |
| Use-Case Traps to Avoid | 148 |
| Event-Response Tables | 149 |
| 9 Playing by the Rules | 153 |
| The Rules of the Business | 154 |
| Facts | 155 |
| Constraints | 156 |
| Action Enablers | 157 |
| Inferences | 158 |
| Computations | 158 |
| Documenting Business Rules | 160 |
| Business Rules and Requirements | 161 |
| 10 Documenting the Requirements | 165 |
| The Software Requirements Specification | 166 |
| Labeling Requirements | 168 |
| Dealing with Incompleteness | 169 |
| User Interfaces and the SRS | 170 |
| A Software Requirements Specification Template | 171 |
| 1. Introduction | 172 |
| 2. Overall Description | 173 |
| 3. System Features | 175 |
| 4. External Interface Requirements | 176 |
| 5. Other Nonfunctional Requirements | 178 |
| 6. Other Requirements | 180 |
| Appendix A: Glossary | 180 |
| Appendix B: Analysis Models | 180 |
| Appendix C: Issues List | 181 |
| Guidelines for Writing Requirements | 181 |
| Sample Requirements, Before and After | 185 |
| The Data Dictionary | 190 |
| 11 A Picture Is Worth 1024 Words | 193 |
| Modeling the Requirements | 194 |
| From Voice of the Customer to Analysis Models | 195 |
| Data Flow Diagram | 197 |
| Entity-Relationship Diagram | 200 |
| State-Transition Diagram | 203 |
| Dialog Map | 206 |
| Class Diagrams | 210 |
| Decision Tables and Decision Trees | 212 |
| A Final Reminder | 214 |
| 12 Beyond Functionality: Software Quality Attributes | 215 |
| Quality Attributes | 216 |
| Defining Quality Attributes | 218 |
| Attributes Important to Users | 219 |
| Attributes Important to Developers | 225 |
| Performance Requirements | 227 |
| Defining Nonfunctional Requirements By Using Planguage | 228 |
| Attribute Trade-Offs | 229 |
| Implementing Nonfunctional Requirements | 231 |
| 13 Risk Reduction Through Prototyping | 233 |
| Prototyping: What and Why | 234 |
| Horizontal Prototypes | 235 |
| Vertical Prototypes | 236 |
| Throwaway Prototypes | 236 |
| Evolutionary Prototypes | 238 |
| Paper and Electronic Prototypes | 240 |
| Prototype Evaluation | 242 |
| The Risks of Prototyping | 243 |
| Prototyping Success Factors | 245 |
| 14 Setting Requirement Priorities | 247 |
| Why Prioritize Requirements? | 248 |
| Games People Play with Priorities | 249 |
| A Prioritization Scale | 250 |
| Prioritization Based on Value, Cost, and Risk | 252 |
| 15 Validating the Requirements | 259 |
| Reviewing Requirements | 262 |
| The Inspection Process | 264 |
| Requirements Review Challenges | 272 |
| Testing the Requirements | 273 |
| Defining Acceptance Criteria | 280 |
| 16 Special Requirements Development Challenges | 283 |
| Requirements for Maintenance Projects | 283 |
| Begin Capturing Information | 284 |
| Practice New Requirements Techniques | 287 |
| Follow the Traceability Chain | 287 |
| Update the Documentation | 288 |
| Requirements for Package Solutions | 288 |
| Develop Use Cases | 289 |
| Consider Business Rules | 290 |
| Define Quality Requirements | 290 |
| Requirements for Outsourced Projects | 291 |
| Requirements for Emergent Projects | 293 |
| Casual User Requirements Specification | 294 |
| On-Site Customer | 295 |
| Early and Frequent Prioritization | 296 |
| Simple Change Management | 296 |
| 17 Beyond Requirements Development | 297 |
| From Requirements to Project Plans | 298 |
| Requirements and Estimation | 300 |
| Requirements and Scheduling | 303 |
| From Requirements to Designs and Code | 304 |
| From Requirements to Tests | 307 |
| From Requirements to Success | 309 |
| PART III SOFTWARE REQUIREMENTS MANAGEMENT | |
| 18 Requirements Management Principles and Practices | 313 |
| The Requirements Baseline | 315 |
| Requirements Management Procedures | 315 |
| Requirements Version Control | 317 |
| Requirement Attributes | 319 |
| Tracking Requirements Status | 321 |
| Measuring Requirements Management Effort | 324 |
| 19 Change Happens | 327 |
| Managing Scope Creep | 329 |
| The Change-Control Process | 331 |
| Change-Control Policy | 332 |
| Change-Control Process Description | 333 |
| The Change Control Board | 338 |
| CCB Composition | 339 |
| CCB Charter | 339 |
| Change-Control Tools | 341 |
| Measuring Change Activity | 342 |
| Change Isn't Free: Impact Analysis | 344 |
| Impact Analysis Procedure | 345 |
| Impact Analysis Report Template | 350 |
| 20 Links in the Requirements Chain | 353 |
| Tracing Requirements | 354 |
| Motivations for Tracing Requirements | 357 |
| The Requirements Traceability Matrix | 358 |
| Tools for Requirements Tracing | 362 |
| Requirements Traceability Procedure | 364 |
| Is Requirements Traceability Feasible? Is It Necessary? | 365 |
| 21 Tools for Requirements Management | 367 |
| Benefits of Using a Requirements Management Tool | 370 |
| Requirements Management Tool Capabilities | 372 |
| Implementing Requirements Management Automation | 374 |
| Selecting a Tool | 374 |
| Changing the Culture | 375 |
| Making Requirements Management Tools Work for You | 378 |
| PART IV IMPLEMENTING REQUIREMENTS ENGINEERING | |
| 22 Improving Your Requirements Processes | 381 |
| How Requirements Relate to Other Project Processes | 382 |
| Requirements and Various Stakeholder Groups | 384 |
| Fundamentals of Software Process Improvement | 386 |
| The Process Improvement Cycle | 389 |
| Assess Current Practices | 389 |
| Plan Improvement Actions | 390 |
| Create, Pilot, and Implement New Processes | 392 |
| Evaluate Results | 393 |
| Requirements Engineering Process Assets | 395 |
| Requirements Development Process Assets | 396 |
| Requirements Management Process Assets | 398 |
| Requirements Process Improvement Road Map | 399 |
| 23 Software Requirements and Risk Management | 401 |
| Fundamentals of Software Risk Management | 403 |
| Elements of Risk Management | 403 |
| Documenting Project Risks | 404 |
| Planning for Risk Management | 407 |
| Requirements-Related Risks | 408 |
| Requirements Elicitation | 408 |
| Requirements Analysis | 410 |
| Requirements Specification | 410 |
| Requirements Validation | 411 |
| Requirements Management | 411 |
| Risk Management Is Your Friend | 412 |
| Epilogue | 415 |
| A Current Requirements Practice Self-Assessment | 417 |
| B Requirements and Process Improvement Models | 425 |
| The Capability Maturity Model for Software | 425 |
| CMMI-SE/SW | 428 |
| Requirements Management Process Area | 430 |
| Requirements Development Process Area | 430 |
| C Requirements Troubleshooting Guide | 433 |
| Root Cause Analysis | 434 |
| Common Symptoms of Requirements Problems | 435 |
| Common Barriers to Implementing Solutions | 436 |
| D Sample Requirements Documents | 457 |
| Vision and Scope Document | 458 |
| Use Cases | 463 |
| Software Requirements Specification | 469 |
| Business Rules | 482 |
| GLOSSARY | 483 |
| REFERENCES | 491 |
| INDEX | 505 |