Deliver feature-rich products faster, cheaper, and more reliably using state-of-the-art SSRE methods and modeling procedures. Written by global experts, Software & Systems Requirements Engineering: In Practice explains how to effectively manage project objectives and user needs across the entire development lifecycle. Gather functional and quality attribute requirements, work with models, perform system tests, and verify compliance. You will also learn how to mitigate risks, avoid requirements creep, and sidestep the pitfalls associated with large, complex projects.
Define and prioritize customer expectations using taxonomies
Elicit and analyze functional and quality attribute requirements
Develop artifact models, meta-models, and prototypes
Manage platform and product line development requirements
Derive and generate test cases from UML activity diagrams
Deploy validation, verification, and rapid development procedures
Handle RE for globally distributed software and system development projects
Perform hazard analysis, risk assessment, and threat modeling
Review By: Harry Acosta 05/17/2010The authors of this book describe in great detail how to properly elicit and document accurate and concise requirements. Then, they continue into a whole course on requirements modeling based on the model-driven requirements engineering (MDRE). This great book on requirements engineering contains enough charts and diagrams to enhance the learning experience for all—even for those who haven't yet been introduced to software quality engineering.
In chapter five, the authors describe some of the expectations from the quality perspective and how they fit into the overall requirements engineering process. Then they explain in chapter six some of the intricacies and challenges when dealing with platform projects, especially when stakeholders are from different organizations and are required to support a large variety of customers with different application situations. Chapter seven helps the project manager or business analyst in creating a requirements management process to ensure that changes to the project scope are in control, traceable, and can provide project and quality metrics for management reporting. Chapter eight provides some insight into best practices regarding testing and review for improved test efficiency.
The last three chapters delve into applying the requirements engineering practices described herein to rapid development processes, followed by a brief discussion on distributed requirements for geographically distributed project teams in chapter ten, and then ending the book with a concise description of hazard analysis and threat modeling.
Suggestions on creating and managing a requirements database are included in Appendix A as a nice bonus for requirements newcomers. Even though there is no media included with this edition of the book and there is no specific mention of a suitable relational database product, the suggestions provided should help enhance even the simplest database applications for the specific use of requirements management.
Applicable to any project in any type of industry, requirements engineering, as described by the authors, seems rather straightforward but provides quite a discussion on all aspects of writing, managing, testing, and analyzing metrics related to software and systems projects. The book is written in a style devoid of abstract concepts but with plenty of graphs, tables, and illustrations that get the learning across and provide easy-to-understand examples.
Having worked as a quality professional for almost my entire career, I appreciated the discussion in regards to quality in chapter five (quality attribute requirements) and chapter eight (requirements-driven testing). Testing requirements in an efficient way will greatly enhance the quality of the deliverables and these two chapters provide good tips on how to accomplish this, especially in Section 8.5 where the authors describe a few rules of thumb or best practices to ensure efficient and appropriate testing.
I recommend this book to all project managers, business analysts, and requirements engineers that are tasked with eliciting, writing, managing, and testing requirements.