Solid requirements engineering has increasingly been recognized as the key to improved, on-time, and on-budget delivery of software and systems projects. New software tools are emerging that are empowering practicing engineers to improve their requirements engineering habits. However, these tools are not usually easy to use without significant training. Requirements Engineering for Software and Systems, Fourth Edition is intended to provide a comprehensive treatment of the theoretical and practical aspects of discovering, analyzing, modeling, validating, testing, and writing requirements for systems of all kinds, with an intentional focus on software-intensive systems. It brings into play a variety of formal methods, social models, and modern requirements writing techniques to be useful to practicing engineers. The book is intended for professional software engineers, systems engineers, and senior and graduate students of software or systems engineering. Since the first edition, there have been made many changes and improvements to this textbook. Feedback from instructors, students, and corporate users was used to correct, expand, and improve the materials. The fourth edition features two newly added chapters: "On Non-Functional Requirements" and "Requirements Engineering: Road Map to the Future." The latter provides a discussion on the relationship between requirements engineering and such emerging and disruptive technologies as Internet of Things, Cloud Computing, Blockchain, Artificial Intelligence, and Affective Computing. All chapters of the book were significantly expanded with new materials that keep the book relevant to current industrial practices. Readers will find expanded discussions on new elicitation techniques, agile approaches (e.g., Kanpan, SAFe, and DEVOps), requirements tools, requirements representation, risk management approaches, and functional size measurement methods. The fourth edition also has significant additions of vignettes, exercises, and references. Another new feature is scannable QR codes linked to sites containing updates, tools, videos, and discussion forums to keep readers current with the dynamic field of requirements engineering. Cover Half Title Title Page Copyright Page Table of Contents Preface Acknowledgments Authors 1 Introduction to Requirements Engineering Motivation What Is Requirements Engineering? You Probably Don’t Do Enough Requirements Engineering What Are Requirements? Requirements vs. Features vs. Goals Requirements Classifications Requirements Level Classification Requirements Specifications Types Functional Requirements Nonfunctional Requirements Domain Requirements Domain Vocabulary Understanding Requirements Engineering Activities Requirements Elicitation/Discovery Requirements Analysis and Agreement Requirements Representation Requirements Validation Requirements Management Bodies of Knowledge The Requirements Engineer Requirements Engineer Roles Requirements Engineer as Software or Systems Engineer Requirements Engineer as Subject Matter Expert Requirements Engineer as Architect Requirements Engineer as Business Process Expert Ignorance as Virtue Role of the Customer Problems with Traditional Requirements Engineering Complexity Gold-Plating and Ridiculous Requirements Obsolete Requirements Four Dark Corners Difficulties in Enveloping System Behavior The Danger of “All” in Specifications Exercises References 2 Preparing for Requirements Elicitation Product Business Goals and Mission Statements Encounter with a Customer Identifying the System Boundaries Context Diagrams Stakeholders Negative Stakeholders Stakeholder Identification Stakeholder Identification Questions Rich Pictures Stakeholder/User Classes Stakeholders vs. Use Case Actors User Characteristics Customer Wants and Needs What Do Customers Want? What Don’t Customers Want? Why Do Customers Change Their Minds? Stakeholder Prioritization Communicating with Customers and Other Stakeholders Managing Expectations Stakeholder Negotiations Uncovering Stakeholder Goals Exercises Note References 3 Requirements Elicitation Introduction Requirements Elicitation - First Step Elicitation Techniques Survey Brainstorming Card Sorting Crowdsourcing Designer as Apprentice Domain Analysis Ethnographic Observation Goal-Based Approaches Group Work Interviews Introspection Joint Application Design Laddering Protocol Analysis Prototyping Quality Function Deployment Questionnaires/Surveys Repertory Grids Reverse Engineering Scenarios Task Analysis Use Cases User Stories Viewpoints Workshops Eliciting Nonfunctional Requirements Elicitation Summary Which Combination of Requirements Elicitation Techniques Should Be Used? Prevalence of Requirements Elicitation Techniques Eliciting Hazards Misuse Cases Antimodels Formal Methods Exercises Notes References 4 Writing the Requirements Document Requirements Agreement and Analysis Requirements Representation Approaches to Requirements Representation ISO/IEC/IEEE Standard 29148 Recommendations on Representing Nonfunctional Requirements Recommendations on Representing Functional Requirements Operating System Command Validation UML/SysML The Requirements Document Users of a Requirements Document Requirements Document Requirements Preferred Writing Style Text Structure Analysis Requirement Format Use of Imperatives Shall or Shall Not? Avoiding Imprecision in Requirements Requirements Document Size Behavioral Specifications Best Practices and Recommendations Exercises References 5 On Nonfunctional Requirements Motivation to Consider NFRs Earlier in Development What Is an NFR? What Are the Different Types of NFRs? Quality Requirements in Practice Specifying with Quality Attribute Scenarios Specifying with Planguage Popular Quality Requirements Security Modifiability Interoperability Performance Testability Usability Other Approaches to Handle NFRs in RE NFR Framework Incorporating NFRs with UML Models Exercises References 6 Requirements Validations and Verifications What Is Requirements Risk Management? Validation and Verification Techniques for Requirements V&V Walkthroughs Inspections Goal-Based Requirements Analysis Requirements Understanding Validating Requirements Use Cases Prototyping Tools for V&V Requirements V&V Matrices Standards for V&V ISO/IECIEEE Standard 29148 Singularity Feasibility Ambiguity Completeness Consistency Verifiability Traceability Ranking Example Validation of Requirements Singular Feasible Unambiguous Complete Consistent Verifiable Traceable Ranked The Importance of Measurement in Requirements V&V Goal/Question/Metric Analysis NASA Requirements Testing NASA ARM Tool Imperatives Continuances Directives Options Weak Phrases Incomplete Subjects Specification Depth Readability Statistics Summary of NASA Metrics Exercises Note References 7 Formal Methods Motivation What Are Formal Methods? Formal Methods Classification A Little History Using Formal Methods Examples Formalization of Train Station in B Formalization of Space Shuttle Flight Software Using MurΦ Formalization of an Energy Management System Using Category Theory Example: An Energy Management System Other Notable Formal Methods for Requirements Engineering Requirements Validation Consistency Checking Using Truth Tables Consistency Checking by Inspection Consistency Checking Limitations Theorem Proving Program Correctness Hoare Logic Model Checking Integrated Tools Which Formal Approach to Use? Objections, Myths, and Limitations Objections and Myths Limitations of Formal Methods Combining Formal and Informal Methods Bowen and Hinchey’s Advice Exercises Notes References 8 Requirements Specification and Agile Methodologies Introduction to Agile Methodologies Principles Behind the Agile Manifesto Benefits of Agile Software Development Extreme Programming Scrum Kanban Lean Development Requirements Engineering for Agile Methodologies Technical Debt Example Application of Agile Software Development When Is Agile Recommended? Requirements Engineering in XP Requirements Engineering in Scrum Gathering User Stories Writing User Stories Estimating User Stories Prioritizing User Stories User Stories vs. Use Cases Agile Requirements Engineering vs. Requirements Engineering in Agile Story-Test-Driven Development State of Practice for Requirements Engineering in Agile Methodologies Challenges for Requirements Engineering in Agile Methodologies Exercises Notes References 9 Tool Support for Requirements Engineering Introduction Traceability Support Requirements Linkage Traceability Matrix Requirements Source Traceability Matrix Requirements Stakeholder Traceability Matrix Requirements Management Tools Tool Evaluation Open-Source Requirements Engineering Tools FreeMind FitNesse Requirements Engineering Tool Best Practices Elicitation Support Technologies Using Wikis for Requirements Elicitation Mobile Technologies Virtual Environments Content Analysis Artificial Intelligence Requirements Metrics Exercises References 10 Requirements Management Introduction Requirements Management Process Configuration Management and Control Reconciling Differences Managing Divergent Agendas Consensus Building Analytical Hierarchical Process (AHP) Wideband Delphi Technique Expectation Revisited: Pascal’s Wager Global Requirements Management Antipatterns in Requirements Management Environmental Antipatterns Divergent Goals Process Clash Management Antipatterns Metric Abuse Mushroom Management Other Paradigms for Requirements Management Requirements Management and Improvisational Comedy Requirements Management as Scriptwriting Standards for Requirements Management Capability Maturity Model Integration ISO 9001 ISO/IEEE 12207 Six Sigma Exercises Notes References 11 Value Engineering of Requirements What, Why, When, and How of Value Engineering What Is Value Engineering? When Does Value Engineering Occur? Challenges to Simple Cost vs. Risk Analysis Estimating Software Effort The Aspect of Software Size Software Length Software Complexity Functional Size Estimating Using Function Points Function Point Cost Drivers Estimating Using COSMIC The Relationship between Functional Size and Effort Estimating Using COCOMO and Its Derivatives COCOMO WEBMO COSYSMO Feature Points Use Case Points Considerations for Nonfunctional Requirements in Size Measurements Software Effort Estimation in Practice Requirements Feature Cost Justification Return on Investment Net Present Value Internal Rate of Return Profitability Index Payback Period Discounted Payback Putting It All Together Exercises Note References 12 Requirements Engineering: A Road Map to the Future Shaping Factors of the Future Landscape of Requirements Engineering The Changing Landscape of Requirements Engineering Requirements Engineering for Small Businesses Requirements Engineering and Disruptive Technologies Requirements Engineering and Blockchain Requirements Engineering and Internet of Things Requirements Engineering and Artificial Intelligence (AI) Requirements Engineering and Cloud Computing Requirements Engineering and Affective Computing References Appendix A: Software Requirements Specification for a Smart Home Appendix B: Software Requirements for a Wastewater Pumping Station Wet-Well Control System Appendix C: Unified Modeling Language (UML) Appendix D: User Stories Appendix E: Use Cases Appendix F: IBM DOORS Requirements Management Tool Glossary Index "Solid requirements engineering has increasingly been recognized as the key to improved, on-time and on-budget delivery of software and systems projects. This book provides practical teaching for graduate and professional systems and software engineers. It uses extensive case studies and exercises to help students grasp concepts and techniques. With a focus on software-intensive systems, this text provides a probing and comprehensive review of recent developments in intelligent systems, soft computing techniques, and their diverse applications in manufacturing. The second edition contains 100% revised content and approximately 30% new material"-- "This textbook provides a comprehensive treatment of the theoretical and practical aspects of discovering, analyzing, modeling, validating, testing, and writing requirements for software systems. New chapters examine nonfunctional requirements and requirements of systems using disruptive technologies such as blockchain"-- Provided by publisher