The process of stepwise refinement produces programs as a series of levels of abstraction, and at each level the designer is encouraged to ignore the details of the lower levels. Prior to this chapter we have concentrated on the refinement of control structures. But when designing programs, especially large ones, it is also necessary to refine the structure of the data hand in hand with control. Proceeding down the development tree, the designer first postulates and uses a structured type, then at a later or lower level it becomes necessary to specify how it is implemented. Usually the implementation can be arranged in a number of different ways, each with its own strengths and weaknesses. But as far as the higher level is concerned the details of the chosen implementation are irrelevant. If the distinction between the two levels of using and implementing a structured type is blurred then the program structure and transparency must necessarily suffer. It is therefore sensible textually to separate the implementation of a structured type from its use in a program.
Unable to display preview. Download preview PDF.