Solid requirements engineering has increasingly been recognized as the key to improved, on-time, and on-budget delivery of software and systems projects. This textbook provides 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 for writing techniques to be useful to the practicing engineer.
This book was written to support both undergraduate and graduate requirements engineering courses. Each chapter includes simple, intermediate, and advanced exercises. Advanced exercises are suitable as a research assignment or independent study and are denoted by an asterisk. Various exemplar systems illustrate points throughout the book, and four systems in particular—a baggage handling system, a point of sale system, a smart home system, and a wet well pumping system—are used repeatedly. These systems involve application domains with which most readers are likely to be familiar, and they cover a wide range of applications from embedded to organic in both industrial and consumer implementations. Vignettes at the end of each chapter provide mini-case studies showing how the learning in the chapter can be employed in real systems.
Requirements engineering is a dynamic ﬁeld and this text keeps pace with these changes. Since the ﬁrst edition of this text, there have been many changes and improvements. Feedback from instructors, students, and corporate users of the text was used to correct, expand, and improve the material. This third edition includes many new topics, expanded discussions, additional exercises, and more examples. A focus on safety critical systems, where appropriate in examples and exercises, has also been introduced. Discussions have also been added to address the important domain of the Internet of Things. Another signiﬁcant change involved the transition from the retired IEEE Standard 830, which was referenced throughout previous editions of the text, to its successor, the ISO/IEC/IEEE 29148 standard.
Table of Contents
About the Author
1 Introduction to Requirements Engineering
2 Preparing for Requirements Elicitation
3 Requirements Elicitation
4 Writing the Requirements Document
5 Requirements Risk Management
6 Formal Methods
7 Requirements Specification and Agile Methodologies
8 Tool Support for Requirements Engineering
9 Requirements Management
10 Value Engineering of Requirements
Appendix A Software Requirements Specification for a Smart Home
Appendix B Software Requirements for a Wastewater Pumping Station Wet Well Control System
Appendix C UML
Appendix D User Stories
Appendix E Use Cases
Appendix F Doors NG