A volume in the Applied Computing Series, Springer-Verlag. 1998. ISBN 3-540-76246-9

PREFACE.

"A correct system is one that works, one that I understand how to use, one that does not keep going wrong and one that solves the problems that I face."

*A user.*

"A correct system is one that has been formally proven to satisfy the mathematical formula that defines it."

*An academic computer scientist.*

Are these two statements talking about the same thing? The first statement is a perfectly reasonable desire. Does the second statement offer anything relevant to this desire? In order to try to bridge what seems to be an enormous gap, a chasm in fact, that exists between the two points of view we need to consider further the fundamental issues involved.

We ask the following questions:

What do we mean by a CORRECT system?

What do we mean by a SYSTEM?

How can we build correct systems?

What has software engineering to offer in our endeavours to do this?

These and other questions will form the focus of this book. We will also try to look at some of the wider issues involved in building systems that work, examine a number of myths about the subject and look a little into the future. Some of the emphasis on the development of correct systems is oriented around the use of mathematical techniques, notations and proofs. Although mathematics is an important facet of the process of creating a correct systems we will not let ourselves become too obsessed with it! It will be necessary from time to time but we hope to emphasise the use of simple user-friendly mathematical methods rather than the usual battery of high powered techniques.

Contents .