The author proposes a tighter and more elaborate version of Wirth’s stepwise refinement method of program construction [1]. The principal feature is a new kind of development step called “completion” which is carried out after each decomposition step. Completion involves the introduction of (1) any new variables needed for communication between two incompletely defined code segments, and (2) any necessary code for the initialization of variables. Other features of the methodology include interactive test runs at each stage of program development and upkeep of a diagram showing the current “backlog interface” (incompletely defined variables and code segments, and the access relations between them). The methodology is illustrated by using it to develop a date to day-of-the-week conversion program.
This reviewer regards the author’s formulation of stepwise refinement as systematic and quite elegant; the programmer is at all times provided with concrete guidance on what to do next to progress toward a correct program. But the author’s claim to have extended the applicability of stepwise refinement to significantly larger software systems would seem to remain unproven in the absence of large-scale experimentation. Despite its brevity, the paper contains enough typographical and naming errors to sidetrack and confuse the reader in places.