REQUIREMENTS Engineering
PROCESSES AND TECHNIQUES

Preface

In spite of new and effective software engineering techniques, software system development projects are still prone to failure. All too often, large, complex software systems are delivered late, over-budget and do not meet the real needs of either the system end-users or of the organisation that is paying for the system. In the vast majority of cases, these system failures are not due to incompetent staff or poor software engineering. Rather, they are a consequence of problems with the requirements for the system.

System requirements are specifications of the services the system should provide, the constraints on the system and background information which is necessary to develop the system. Requirements engineering is the systematic process of eliciting, understanding, analysing and documenting these requirements. Although it may seem strange to call this an ‘engineering’ process, the term engineering is used to indicate that this is a practical, systematic process where trade-offs have to be made to find the best solution.

There are many different aspects of requirements engineering and different books interpret the subject in different ways. Some authors focus on the early stages of the process and mostly discuss the human and organisational problems of discovering what people want from a system. Others, take a different approach and describe the detailed modelling of a system using structured methods or formal mathematical methods. In contrast to these books which have concentrated on parts of the topic, we have tried to provide comprehensive coverage of the whole of the requirements engineering process from initial requirements elicitation through to requirements validation. We supplement this with a description of a range of techniques which may be applied including viewpoint-oriented techniques and techniques for modelling the requirements for interactive systems.

Our emphasis on a broad coverage of requirements engineering means that we do not discuss particular approaches such as object-oriented analysis or formal specification in depth. This is not just for reasons of space but also because we believe that there is no single requirements engineering technique which is applicable to all types of system. Requirements engineers need to know about a range of different techniques and should select the technique which is appropriate to their application.

After the introductory chapter, the book is split into two logical parts. The first part is process-oriented and describes different activities in the requirements engineering process. These include requirements elicitation and analysis, requirements validation and requirements management. The second part of the book focuses on requirements engineering techniques. It covers the use of structured methods in requirements engineering, viewpoint-oriented approaches, the specification of non-functional requirements and the specification of interactive systems. Finally, we present a case study which illustrates the application of a viewpoint-oriented approach to requirements engineering. This is based on a real system which is currently being developed for users of a group of university libraries.

It is always difficult when writing a book of this nature to find the right balance between tried and tested techniques and new, promising research work. The majority of the material in this text is based on good requirements engineering practice but the chapters on viewpoints and interactive system specification represent recent research which is not yet in widespread use. We have tried to ensure the relevance of this by basing our description on real system descriptions which demonstrate the applicability of the approach.

The book is primarily intended as a student text for senior undergraduate and graduate students studying computer science, software engineering or systems engineering. It can be used to support a one or two-semester course in requirements engineering or as a supplement to other software engineering texts. Possible ways in which the book may be used include:
 

Software and systems engineers in industry may also find the book useful if they are new to requirements engineering. Experienced requirements engineers may find the description of some techniques useful particularly if the book is read in conjunction with its companion text Requirements Engineering: A Good Practice Guide (Ian Sommerville and Pete Sawyer, Wiley, 1997).

There is very little overlap between the material here and Requirements Engineering: A Good Practice Guide. That book is also concerned with requirements engineering processes but it is aimed specifically at practitioners and managers who are already involved in requirements engineering. It assumes that readers already have an understanding of the problems of requirements engineering and requirements process improvement. That book proposes a set of specific guidelines for requirements engineering process improvement, information on formal methods for safety-critical systems specification and an alternative viewpoint-oriented approach to that presented here. Although designed for practising requirements engineers, students who have worked through this book may find that the practical advice on process improvement useful.

Finally, we would like to thank our families for their support while this book was being written and the members of the EDDIS consortium for their permission to use the case study material in Chapter 10.

Gerald Kotonya and Ian Sommerville
December 1997

Back to Preface; Back to Home Page

Part 1: The Requirements Engineering Process

Summary

The goal of this part of the book is to introduce the processes involved in eliciting, analysing, validating and managing requirements for complex systems. The focus of this part is on ‘what’ is involved in requirements engineering in contrast to Part 2, which focuses on ‘how’ specific techniques may be applied during these processes. Chapter 2 introduces processes in general and discusses models of the overall requirements engineering process. Chapter 3 covers requirements elicitation and associated requirements analysis and Chapter 4 discusses the validation of requirements after an initial version of the requirements document has been issued. Finally, Chapter 5 discusses the critically important process of managing requirements which are evolving as the customer’s business and priorities change.

Back to Preface; Back to Home Page

Part 2: Requirements Engineering Techniques

Summary

The goals of this part of the book are to introduce various techniques and methods for requirements elicitation and formulation and to explain ‘how’ these techniques may be applied during the requirements engineering process. Chapter 6 introduces structured techniques and methods. These include requirements techniques based on data-flow and and object-oriented models and (briefly) techniques based on formal methods. Chapter 7 describes emerging viewpoint-oriented requirements engineering methods which support analysis of the system from multipline perspectives. Chapter 8 covers non-functional requirements, discusses why these are often critical for a system’s success and suggests some techniques for modelling them. Chapter 9 develops some of the viewpoints work introduced in Chapter 7 to explain how this approach may be used in the specification of interactive systems. Lastly, Chapter 10 introduces a detailed case study and shows how a viewpoint-based technique was used to develop the system requirements.

Back to Preface; Back to Home Page