Emerald Group Publishing Limited
This book appears in Springer‐Verlag’s Applied Computing Series but could well be at home in any series that is concerned with systems development and those areas of cybernetics which have always been involved in the design and use of computing machines.
It is not easy for the reader to decide what the authors really mean by a system and even more difficult to understand what a “correct” system is meant to be. This, of course, has always been a problem for computer systems developers. Academics can usually provide a reasonably acceptable definition which can describe “correctness” in all its facets. That is, a system may be “correct” if it does what it was specified to do and there is proof available of such “correctness”. The trouble occurs when authors produce texts that are aimed at simplifying the established mathematically accepted process. This book moves between what the user’s concept of a “correct” system should be, and what a scientist’s view has to be if a system is to be accepted as a proven one.
The difficulty is that if the text was indeed couched in suitable mathematical notation, with the accompanying proofs, it would certainly not be suitable for the average user or, dare we say it, the so‐called “computer” expert. The latter breed still contains designers and developers of systems who call “tested” systems “proven” systems.
What this book does is to bring a little reality into the discussion by pointing out some obvious concerns that are still often neglected by everyday systems designers. For example even the most inexperienced practitioner should know that systems are designed with testing in view. Even so, it does provide an extremely useful taste of theory with practice and many systems people will benefit from the book’s approach, which combines the viewpoints of established software engineering with practical and current application.
This thesis provides a bridge between these two approaches to systems development. Most academics realise that strict mathematical definitions, specifications and proving strategies will not appeal to the current software fraternities. But the authors of this book by taking their innovative approach to software development may well have inspired many practitioners to use new methodologies for their systems specifications and testing. Certainly their institutions and organisations will benefit, as will the business and industrial communities. To that end this book has much to offer.