Developer.* is running an article Code as Design: Three Essays by Jack W. Reeves. In the third essay, a Letter to the Editor (of the C++ Journal), Reeves includes the following point in his summary:
rnrn
Testing and debugging are design activities – they are the software equivalent of the analysis, simulation, modeling, and testing phases of other engineering disciplines. The goal is to validate and improve the design before the final product is built. A good software design process recognizes this and doesn’t try to disown or short change the steps.
rnrn
Reeves makes the point that software is the stuff that computers execute, not the source code from which it is built. The source code is a description (a design) of the software (“machine code” if you like) that must be built. Comparisons between software development and civil engineering invariably equate programming with construction; Reeves contends that it is more accurate to equate compilers and linkers with construction. By extension all programming is a design activity, and testing and debugging are part of the engineering process.
rn