Requirements Engineering for Software and Systems Second Edition Phillip A. Laplante CRC Press Taylor & Francis Group Boca Raton London New York CRC Press is an imprint of the Taylor & Francis Croup, an Informs business AN AUERBACH BOOK
Contents Acknowledgments About the Author Introduction xiii xv xvii 1 Introduction to Requirements Engineering 1 Motivation 1 What Is Requirements Engineering? 2 You Probably Don't Do Enough Requirements Engineering 3 What Are Requirements? 3 Requirements versus Goals 4 Requirements Level Classification 4 Requirements Specifications Types 6 Functional Requirements 6 Nonfunctional Requirements 7 Domain Requirements 10 Domain Vocabulary Understanding 11 Requirements Engineering Activities 11 Requirements Elicitation/Discovery 11 Requirements Analysis and Agreements 12 Requirements Representation 12 Requirements Validation 12 Requirements Management 13 Bodies of Knowledge 13 Requirements Engineer 17 Requirements Engineering Paradigms 17 Requirements Engineer as Software Systems Engineer 18 Requirements Engineer as Subject Matter Expert 18 Requirements Engineer as Architect 18 Requirements Engineer as Business Process Expert 18 Ignorance as Virtue 18 v
vi Contents Customer's Role 19 Problems with Traditional Requirements Engineering 20 Complexity 21 Four Dark Comers 22 Difficulties in Enveloping System Behavior 23 Danger of "All" in Specifications 25 Exercises 25 References 26 2 Preparing for Requirements Elicitation 29 Product Mission Statement 29 Encounter with a Customer 30 Stakeholders 32 Negative Stakeholders 33 Stakeholder Identification 33 Stakeholder Questions 33 Stakeholder/Customer Classes 35 Stakeholder Characteristics 36 Customer Wants and Needs 37 What Do Customers Want? 37 What Don't Customers Want? 39 Why Do Customers Change Their Minds? 40 Stakeholder Prioritization 41 Communicating with Customers and Other Stakeholders 43 Managing Expectations 44 Stakeholder Negotiations 45 Uncovering Stakeholder Goals 46 Exercises 47 References 48 3 Requirements Elicitation... 49 Introduction 49 Preparing for Requirements Elicitation 50 Elicitation Techniques Survey 51 Brainstorming 51 Card Sorting 52 Designer as Apprentice 53 Domain Analysis 54 Ethnographic Observation 55 Goal-Based Approaches 56 Group Work 57 Interviews 58 Introspection 59
Contents vii Joint Application Design (JAD) 60 Laddering 61 Protocol Analysis 62 Prototyping 62 Quality Function Deployment 63 Questionnaires/Surveys 66 Repertory Grids 68 Scenarios 68 Task Analysis 69 User Stories 69 Viewpoints 70 Workshops 71 Elicitation Summary 71 Which Combination of Requirements Elicitation Techniques Should Be Used? 72 Prevalence of Requirements Elicitation Techniques 72 Eliciting Hazards 73 Misuse Cases 77 Antimodels 77 Formal Methods 78 Exercises 78 References 79 4 Writing the Requirements Document 81 Requirements Agreement and Analysis 81 Requirements Representation Approaches 82 IEEE Standard 830-1998 85 IEEE Standard 830 Recommendations on Representing Nonfunctional Requirements 86 IEEE Standard 830 Recommendations on Representing Functional Requirements 87 Operating System 88 Command Validation 89 ISO/IEC Standard 25030 90 Use Cases 92 Requirements Document 93 Users of a Requirements Document 93 Requirements Document Requirements 94 Preferred. Writing Style 95 Text Structure Analysis 95 Requirement Format 96 Use of Imperatives 98 Behavioral Specifications 98
viii Contents Best Practices and Recommendations 100 Exercises 102 References 103 5 Requirements Risk Management 105 What Is Requirements Risk Management? 105 Requirements Validation and Verification 108 Techniques for Requirements V&V 109 Walkthroughs 110 Inspections 110 Goal-Based Requirements Analysis 110 Requirements Understanding Ill Validating Requirements Use Cases 112 Prototyping 113 Requirements Validation and Verification Matrices 113 Importance ofmeasurement in Requirements Validation and Verification 115 Goal/Question/Metric Analysis 116 Standards for Validation and Verification 116 IEEE Standard 830 117 Correctness 117 Ambiguity 119 Completeness 120 Consistency 120 Ranking 121 Verifiability 121 Modifiability 122 Traceability 122 Example Validation of Requirements 122 NASA Requirements Testing 124 NASA ARM Tool 124 Imperatives 126 Continuances 126 Directives 127 Options 127 Weak Phrases 127 Incomplete 128 Subjects 131 Specification Depth 131 Readability Statistics 131 Summary of NASA Metrics 133 Exercises 136 References 136
Contents ix 6 Formal Methods 139 Motivation 139 What Are Formal Methods? 140 Formal Methods Classification 142 A Little History 142 Using Formal Methods 143 Examples 143 Formalization of Train Station in B 144 Formalization of Space Shuttle Flight Software Using MurO 147 Formalization of an Energy Management System Using Category Theory 148 Example: Energy Management System 149 Requirements Validation 152 Theorem Proving 153 Program Correctness 154 Hoare Logic 154 Model Checking 159 Integrated Tools 159 Objections, Myths, and Limitations 159 Objections and Myths 160 Limitations of Formal Methods 162 Bowen and Hinchey's Advice 163 Exercises 164 References 164 7 Requirements Specification and Agile Methodologies 167 Introduction to Agile Methodologies 167 Principles behind Agile Manifesto 168 Extreme Programming (XP) 170 Scrum 171 Requirements Engineering for Agile Methodologies 172 General Practices in Agile Methodologies 173 Example Application of Agile Software Development 173 When Is Agile Recommended? 175 Agile Requirements Best Practices 175 Requirements Engineering in XP 177 Requirements Engineering in Scrum 177 Writing User Stories 178 Agile Requirements Engineering 180 Story-Test-Driven Development 181 Challenges for Requirements Engineering in Agile Methodologies 182 Exercises 183 References 183
x Contents 8 Tool Support for Requirements Engineering 185 Introduction 185 Traceability Support 187 Requirements Linkage Traceability Matrix 188 Requirements Source Traceability Matrix 190 Requirements Stakeholder Traceability Matrix 191 Requirements Management Tools 192 Open Source Requirements Engineering Tools 193 FreeMind 193 Open Source Requirements Management Tool (OSRMT) 196 FitNesse 196 Requirements Engineering Tool Best Practices 198 Elicitation Support Technologies 198 Using Wikis for Requirements Elicitation 199 Mobile Technologies 199 Virtual Environments 199 Content Analysis 200 Metrics 201 Exercises 202 References 202 9 Requirements Management 205 Introduction 205 Reconciling Differences 206 Managing Divergent Agendas 206 Consensus Building 207 Expectation Revisited: Pascal's Wager 209 Global Requirements Management 211 Antipatterns in Requirements Management 212 Environmental Antipatterns 213 Divergent Goals 213 Process Clash 214 Management Antipatterns 214 Metric Abuse 214 Mushroom Management 216 Other Paradigms for Requirements Management 217 Requirements Management and Improvisational Comedy 217 Requirements Management as Scriptwriting 218 Standards for Requirements Management 219 ISO 9001 221 Six Sigma 221 Capability Maturity Model Integrative (CMMI) 222 IEEE 830 223
Contents xi ISO/IEEE 12207 224 Usage of Standards 224 A Case Study: FBI Virtual Case File 225 Exercises 226 References 227 10 Value Engineering of Requirements 229 What, Why, When, and How of Value Engineering 229 What Is Value Engineering? 230 When Does Value Engineering Occur? 231 Challenges to Simple Cost versus Risk Analysis 232 Estimating Using COCOMO and Its Derivatives 234 COCOMO 234 WEBMO 235 COSYSMO 237 Estimating Using Function Points 238 Function Point Cost Drivers 239 Feature Points 240 Use Case Points 240 Requirements Feature Cost Justification 241 Return on Investment 241 Net Present Value 242 Internal Rate of Return 243 Profitability Index 244 Payback Period 245 Discounted Payback 245 Putting It All Together 246 Exercises 246 References 247 Appendix A: Software Requirements Specification for a Smart Home 249 Appendix B: Software Requirements for awastewater Pumping Station WetWell Control System 275 Glossary. 287 Index 293