Program Development by Stepwise Refinement and Related Topics

01 March 1981

New Image

The correct design of nontrivial programs and systems of programs is an intellectually challenging and difficult task. Often programs are designed with very little time spent on the design itself, the effort being concentrated on coding. This could be due to management's desire to see something working as soon as possible to be assured that work is progressing, or it could be due to the programmer's desire to "attack the problem right away." Not only is there no emphasis on design, the approach to it is also not systematic or disciplined. This results in programs that do not meet specifications in terms of correct output and performance requirements. What we want is a programming methodology that puts some discipline and structure in the design process without stifling creativity. A programming methodology should: (t) Help us master the complexity of the problem being solved and give us some guidelines on how to formulate the problem solution. (ii) Provide us with a written record of the design process. The design can then be read by others, and the design decisions can be appreciated or constructively criticized. {Hi) Result in programs that are understandable. 347