CORRECT SYSTEMS -

BUILDING A BUSINESS PROCESS SOLUTION.

Mike Holcombe

(University of Sheffield)

Florentin Ipate

(Romanian-American University, Bucharest)

A volume in the Applied Computing Series, Springer-Verlag. To be published in Summer 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 will ask the following questions:

o What do we mean by a CORRECT system?

o What do we mean by a SYSTEM?

o How can we build correct systems?

o 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

PART ONE

BUILDING CORRECT SYSTEMS

CHAPTER 1 MODELS OF COMPUTER BASED SYSTEMS.

1.1 Introduction to the modelling of systems.

1.2 Finite state machines.

1.3 Statecharts.

1.4 A general computational model - the X-machine.

1.5 An X-machine example.

CHAPTER 2 BUSINESS PROCESSES, PROBLEMS AND SOLUTIONS.

2.1 Problems and solutions.

2.2 Design methods - old and new.

2.3 Business process models.

2.4 A simple business process case study.

2.5 Another example of a business process and an enterprise model.

2.6 A microprocessor example.

2.7 Implementation.

CHAPTER 3 TESTING, TESTING, TESTING!

3.1 What is testing?

3.2 Fundamental issues of correct systems design.

3.3 An approach to quality oriented testing.

3.4 Testing based on a computational modelling approach.

3.5 Stream X-machines and the fundamental theorem of testing.

3.6 Discussion.

CHAPTER 4 BUILDING CORRECT SYSTEMS.

4.1 Refining correct solutions.

4.2 Components.

4.3 An integrated design and test refinement strategy.

4.4 A first simple refinement.

4.5 Testing refined machines.

4.6 Components revisited.

CHAPTER 5 A CASE STUDY.

5.1 Building a requirements description.

5.2 Developing the specification.

5.3 Data design.

5.4 Testing.

5.5 Implementation.

5.6 A summary of the facilities provided by the complete system.

PART TWO

THEORETICAL FOUNDATIONS

CHAPTER 6 THE THEORY OF X-MACHINES.

6.1 The basic theory of X-machines.

6.2 Stream X-machines.

6.3 Stream X-machine refinement.

CHAPTER 7 COMPLETE FUNCTIONAL TESTING.

7.1 Some state machine theory.

7.2The theoretical basis for finite state machine testing.

7.3The theoretical basis for stream X-machine testing.

CHAPTER 8 REFINEMENT TESTING.

8.1 The theoretical basis of refinement testing.

8.2 The refinement testing method.

BIBLIOGRAPHY