Program construction consists of a sequence of refinement steps.

– Niklaus Wirth