Comments on book review

mark at umcp-cs.UUCP mark at umcp-cs.UUCP
Thu May 3 15:40:05 AEST 1984

>   Well, I for one subscribe to the notion of "stepwise refinement" or
> (more poetically) "creeping elegance."  The idea is to write a program that
> (1) is small (2) does at least some of what you want the final program to
> do, or shoots in that direction (3) works and (4) is easy to modify.

That is a wonderful way to program, and I am an advocate of it myself.
However, it has an actual name in the computer science literature and it is NOT
"stepwise refinement", which means something totally different.  You
are describing "iterative enhancement". [Basili and Turner.  "Iterative
Enhancement: a practical technique for software development".  IEEE
Transactions on Software Engineering.  December 1975].

Stepwise refinement is Edgar Dijkstra's programming method, in
which each refinement is a "pearl", and all the pearls together
form a beautiful string of beads which (a) prove the program
correct (b) explain why each refinement was made.  The idea
is to start with a program which is provably correct but inefficient
(or not yet in an actual programming language) and refine it into
final form, preserving correctness along the way.  (And when
Edgar says correctness, he means CORRECTNESS).

For what its worth, I think stepwise refinement is only for
programs that can fit in a couple of textbook pages, and iterative
enhancement is for anything bigger.
Spoken: Mark Weiser 	ARPA:	mark at maryland
CSNet:	mark at umcp-cs 	UUCP:	{seismo,allegra}!umcp-cs!mark

More information about the Comp.lang.c mailing list