Stepwise refinement: http://en.wikipedia.org/wiki/Top-down_and_bottom-up_design
Both were written about by Niklaus Wirth, (co-)inventor of Pascal, Modula, Oberon, etc.:
http://en.wikipedia.org/wiki/Niklaus_Wirth
From the above page:
http://sunnyday.mit.edu/16.355/wirth-refinement.html
Not a panacea, but useful, and can be used together with other techniques like OOP / OOAD.