Requirements Engineering
A Concise Guide to Modern Ideas and Practices
This online book is based on my requirements engineering course at UCL. It is a work in progress: materials are in draft form and many chapters are still missing.
The book will include lecture slides and exercises. I’m happy to share my current materials with anyone teaching –or considering teaching– this subject.
Questions, comments, ideas for improvements, or simply words of encouragement are highly appreciated! You can reach me at e.letier@ucl.ac.uk.
Current Status (September 2025):
- Part I: All chapters have a complete first-draft, except the chapter on requirements facts and beliefs.
- Part II: A first draft for the overview chapter is completed.
- Part III: First draft are available for:
- Context diagrams
- Domain conceptual models
- Domain scenarios (nearly completed)
About this book
This book is an introduction to requirements engineering for software engineers. It is structured into three parts:
Foundations. The first part introduces the foundations of requirements engineering, defines key technical terms, and discusses the various contexts in which requirements engineering takes place.
Process. The second part describes the requirements engineering process, organised into six phases: initiation, exploration, decision, formulation, quality assurance, and evolution. For each phase, the book introduces common practices and provides concrete guidance on how to apply them effectively.
Models. The third part focuses on requirements modelling languages commonly used in the requirements engineering process. Each chapter is a concise reference guide to one specific modelling language and its variants, defining the language precisely and supplementing it with practical advice and tips for effective use.
Who is this book for?
The primary audience is computer science students at intermediate and advanced levels. The book assumes readers are familiar with the software engineering lifecycle and modern software engineering practices typically covered in introductory software engineering courses.
The book is also aimed at experienced software engineers, researchers, and academics interested in modern approaches to requirements engineering. Much has changed since the early days when requirements engineering was closely tied to the waterfall process. Agile methods, the shift from client projects to product development, the challenges of legacy systems, the rise of AI, and the growing societal impact of software have transformed the field. Requirements engineering today looks very different from what it was 30, 20, or even 10 years ago—when many readers may first have encountered it.
What readers will learn
In this book, readers will learn how to:
- discover and analyse stakeholder goals;
- understand the real-world contexts in which the software operates;
- explore candidate solutions that satisfy stakeholder goals in their real-world context;
- prioritise software features and quality requirements based on stakeholder goals and contexts;
- formulate software requirements in a precise, readable, and testable way;
- review and improve the quality of formulated requirements;
- evolve requirements throughout the software lifecycle.
The book emphasises modelling as a means to enhance our natural communication and reasoning capabilities. The modelling techniques covered in the book include:
- context diagrams
- domain conceptual models
- domain scenarios
- goal models
- requirements templates
- specification by example
- formal specification of properties
Other important requirements modelling tools such as process models and state machines may also be added.
Relation to other books
This book aims to provide a concise yet comprehensive and practical introduction to requirements engineering.
Its content draws on the best ideas from many other books. This includes one of the foremost academic textbooks (Lamsweerde 2009), influential professional books covering the whole requirements engineering process (Robertson and Robertson 2012; Wiegers and Beatty 2013), and many excellent books covering specific topics such as requirements workshops (Gottesdiener 2002), requirements management and traceability (Dick, Hull, and Jackson 2017), specification by example (Rose, Wynne, and Hellesoy 2015; Nagy and Rose 2018; Rose and Nagy 2021; Smart 2023), impact mapping (Adzic 2012), user story mapping (Patton 2014), and domain storytelling (Hofer and Schwentner 2021). In total, these works amount to nearly 5,000 pages. Academic and professional books covering the full requirements engineering process are typically around 600-700 pages long. The goal of this book is to distil the most important ideas from these sources (and more) into fewer than 250 pages — we will see if I succeed.
Another goal is to present requirements engineering ideas and techniques using precise and consistent terminology. One of the challenges of learning requirements engineering from multiple sources is that important terms (such as goals and requirements) are often used inconsistently and rarely well defined. Vagueness and inconsistencies are to be expected, and even welcomed, in a discipline as large and lively as requirements engineering, but they make the subject difficult to learn for newcomers. The book will guide readers through the requirements engineering terminology by clarifying core concepts and mentioning the many other terms by which these concepts are known in practice and other publications. This approach will help readers understand the relations between different requirements engineering techniques and how these techniques can be adapted or combined to suit specific situations.
I also hope this book will make you want to learn more about requirements engineering. For this, each chapter ends with notes about the origins of ideas, variants to these ideas, and pointers to the best resources for learning more about each topic.