Requirements Engineering: From System Goals to UML Models to Software Specifications
This book provides a systematic and practical approach to the engineering of high-quality requirements. It covers the entire requirements lifecycle and integrates state-of-the-art techniques for requirements elicitation, evaluation, specification, analysis, and evolution. Modeling plays a central role. A method is presented for building and analyzing a multi-view model of the target system, where each step is supported by heuristic rules, tactics, modeling patterns, and bad smells to avoid.
Highlights include:
- A comprehensive introduction to the fundamentals of requirements engineering, including techniques for: requirements elicitation and reuse, risk analysis, conflict management, and requirements prioritization; requirements specification, inspection, validation, and verification; traceability management and change control.
- An in-depth treatment of system modelling for requirements engineering, including constructive techniques for modeling system goals, conceptual objects, responsibilities among system agents, operations, scenarios and intended behaviors, and countermeasures to anticipated hazards and threats.
- A variety of techniques for model-based evaluation of alternative options, model refinement checking, model animation, property verification, inductive model synthesis, and analysis of conflicts, hazards, and security threats.
- Use of standard UML notations wherever applicable. Most techniques are based on a solid formal framework, kept hidden throughout the major part of the book for wider accessibility.
- Numerous examples from running case studies in a variety of domains, including security- and safety-critical ones. Rich set of problems and exercises at the end of each chapter together with bibliographical notes for further study.
The book is primarily written for undergraduates and masters students in software or system engineering to acquire a solid background in requirements engineering and system modelling. It is also intended for practitioners in need of systematic guidance for elaborating and analyzing requirements. The last part on model-based reasoning is more targeted to graduate students. A companion website with additional instructor resources and tool support can be found at www.wileyeurope.com/college/van lamsweerde.
Review By: Noel LeJeune
09/14/2010This book is not for the casual reader and better serves as an intense study or reference guide. The coverage of requirements engineering is thorough, assumes little prior knowledge, and quickly delves deep into the topic. Practicing professionals may find this text to be a reasonable reference to many common and rare techniques and concepts. Agile practitioners might find little of interest in this book as agile development is covered in three pages and viewed negatively. I would not recommend this book to undergraduate students because there are better introductions to the subject in other books.
The book accomplishes its goal of approaching requirements engineering in a systematic way by covering the requirements lifecycle, while integrating state-of-the-art techniques for elicitation, evaluation, specification, analysis, and evolution of requirements. Modeling, as a central theme for requirements engineering, is used throughout. The author presents a goal-oriented approach using the UML for defining and designing system requirements. The book's focus is on the technical activities yet does mention the socio-psychological issues (with references to relevant sources).
The book has three main sections. Part one covers the fundamental concepts, principles, and techniques commonly found in many books for requirements engineering. Part two focuses on system modeling within the context of engineering requirements. This section is heavy on techniques and diagram building. The author introduces the KAOS approach (Keep All Objectives Satisfied) that he claims is based on fifteen years of research and experience. The final section of the book reviews goal-based reasoning techniques that support the book's requirements engineering approach.
The strength of the book is its excellent case studies describing the application of the concepts and practices throughout the entire spectrum of requirements engineering. The case studies are simplifications of a library management system, a train control system, and a meeting scheduling system.
Review By: Daniel Campanelli
09/14/2010Did you ever wonder what it takes to develop a requirements specification that is complete, unambiguous, measurable, pertinent, and realistic? If so, this is the book for you. It presents a constructive, model-driven approach to developing just such a document.
The book is split into three parts. The first section presents a comprehensive overview of the requirements engineering process. The second part discusses the six models used to build the requirements specification. The third part describes how to refine the overall system model to the desired level of precision.
In general, I thought this book was one of the most insightful books ever written on requirements engineering. The book presents a two dimensional approach to requirements specification. It spells out the breadth as well as the depth of constructing such a specification.
The second part of the book is really the heart of the entire work. It presents six models used to "construct" the specification. An iterative approach is used to produce each of the models, with each being traceable back to the original goal model. At the conclusion of the process, the models are all consolidated into an overall system model which is then used to finally document the requirements specification.
What really stands out throughout the book is the author's writing style. On the upside, he constantly provides the reader with a perspective as to where they are in the methodology. Concepts are well illustrated with examples from a library administration system, a meeting scheduling system, a train control system, and a mine control system. Heuristics are also included at the end of each chapter to guide the reader in producing each of the models along with exercises to help the reader apply the material presented. On the downside, the material is a bit hard to follow at times as there are references to mathematical notations and theorem-like logic. So, these sections may have to be read several times in order to really understand them.
This book delivers on its promise to present state-of-the-art techniques and is a must-read for anyone serious about business analysis. Perhaps a better title for this book would be, "Everything You Always Wanted to Know about Requirements Engineering, But Were Afraid to Ask."