Library · paper

Program Development by Stepwise Refinement

Niklaus Wirth
1971·Communications of the ACM

Source: https://dl.acm.org/doi/10.1145/362575.362577

Wirth's method is deceptively simple: start with a high-level statement of what the program should do, then refine it step by step into executable code, making one design decision at each level.

The paper walks through a single example — the eight queens problem — and in doing so demonstrates that program design is a sequence of deliberate choices, not a burst of inspiration followed by debugging.

Stepwise refinement is the intellectual ancestor of iterative development, top-down design, and every decomposition strategy used in modern engineering.

The elegance is in the discipline: each step is small enough to verify and reversible enough to reconsider.

For product people, it is a reminder that the best technical work proceeds by successive clarification, not by big-bang specification.