A recent European survey showed that the principal problem areas in software development and production are the requirements specification and the management of customer requirements. There is no doubt that this is equally true in other parts of the world. Improving the processes of discovering, documenting and managing system requirements is critical for future business success.
The aim of this book is to give you advice which can help you improve your requirements engineering process. By improving these processes, you will create descriptions of system requirements which are easier to understand and contain fewer errors and inconsistencies. You will also have more effective procedures for managing changes to these requirements and assessing the impact and costs of these changes.
This book has something to say to everyone who is involved in either software or systems requirements engineering or who have to wrestle with the problems caused by poor system requirements. It is particularly relevant for systems engineers and their managers and for everyone involved in organisational process improvement programmes. It doesn't focus on any specific application domain but we have paid particular attention to the problems of requirements engineering for critical systems. Requirements engineering is a relatively new name and systems analysis is more or less the same thing. If you think of yourself as a systems analyst, you'll find useful advice in the book. We use the term 'engineer' in the book to mean anyone involved in requirements engineering irrespective of their technical background or job title.
We take for granted that you are committed to quality improvement and have good quality management procedures in place. Our suggestions for process improvement are therefore based around changing your process by introducing new or improved practices. We give practical advice on improving your presentation of requirements, your processes for discovering, understanding and analysing requirements and your systems for requirements management.
We have written this handbook because we know that many organisations have problems with discovering, analysing and negotiating requirements for the systems they are developing. Different ways of tackling these problems have been devised but we don't know of any book which collects together this good practice. Existing books on requirements engineering are mostly designed for students who need to develop an awareness of system requirements and the requirements engineering process. They don't say much about practical solutions to requirements engineering problems. We believe that the practical advice which we offer here is more relevant to practitioners who are responsible for system and software requirements engineering.
Standards such as the ISO 9000 standard have emphasised the importance of process definition and standardisation. Surprisingly, however, requirements engineering has been largely neglected in the move towards process definition and standardisation. ISO 9000 says nothing about processes to establish system requirements. The other major influence on software process improvement, namely the Software Engineering Institute's Capability Maturity Model (CMM), simply says that you should manage your requirements but only gives brief guidelines on what this involves. Everything in this book is consistent with both ISO 9000 and the CMM.
The book is organised into three logical parts:
We recommend that everyone should read the introductory part then skim through the guidelines to get a general understanding of them. You should think about your process improvement strategies and then return to a more detailed reading of the guidelines which seem most relevant to your needs. The material in Part 3 is intended to help implement some of the guidelines and to help you decide if these guidelines are likely to be useful to you. You don't need to read it until you are planning the implementation of the relevant guidelines.
To supplement the book, we have established a World-Wide-Web site which includes detailed information which we felt was not appropriate to include in the book. This includes information which changes rapidly and information about systems which seemed interesting but which we didn't know in detail. On the web site, you can find:
The guidelines here have been developed as part of the work of a collaborative European project called REAIMS (Project number 8649) whose aim was to develop new techniques and strategies for requirements engineering process improvement, particularly for safety-critical systems. In addition to this handbook, the results of the REAIMS project are:
We would like to thank all of our partners in the REAIMS project for their support in developing this handbook. These are GEC-Alsthom Transport, Adelard, Aerospaciale Avions, Aerospaciale Protection Systems (APSYS), Digilog, TUVit and the University of Manchester. We would also like to acknowledge the support of the European Commission for the REAIMS project and to thank the REAIMS reviewing team Andrea Servida, Michael Jackson, Roberto Santoro and Werner Philipp for their advice throughout the project.
Particular thanks to Stephen Shirlaw (GEC-Alsthom), Robin Bloomfield (Adelard) and Jean-Pierre Heckman (Aerospaciale) for their constructive suggestions on how to improve the first draft of the book and to Steve Viller, Tom Rodden, Jacqui Forsyth, Gerald Kotonya and John Bowers (Manchester University) who were part of the Lancaster REAIMS team.
We'd also like to thank Watts Humphrey, Peter Wegner, Martyn Ould, Pat Hall, Roel Wieringa and Neil Maiden who reviewed the first draft of the book and provided helpful advice on how it could be improved.