In http://www.developerdotstar.com/mag/articles/reeves_design_main.html there are links to three essays by Jack W. Reeves, in which he claims that source code is software design, and that the software design process contains both high level design, coding, debugging and testing.
According to his point of view, software testing is the equivalent in software engineering of testing airplane models in wind tunnels in aeronautical engineering.
Now, the question is why haven’t people thought of this at the beginning of computer era?
One possibility is that the languages available for building the software for the first computers were very very very low level. Assemblers were nonexistent or very primitive. Compilers were not there yet, either.
Therefore, people had to do the equivalent of modern software building by hand. They had to manually translate their ideas into machine language (or low level assembly language), adjust addresses and offsets by hand, link code pieces by hand. In short, they had to manufacture software (in Reeves’ sense of the word) by hand. The process was relatively labor intensive. Therefore, at the early years of the computer era, design was really separate from coding, more or less.
However, the sixty years, which elapsed since those days, brought us better assemblers, good compilers and high-level programming languages. There were also changes in software development processes. However, our concepts about software design and manufacturing did not change to fit the new reality – until Reeves pointed out the discrepancy.