The Code is The Design

In software development, software design has traditionally been considered as a previous, distinct and separate part from the programming stage. But,… what is really a design?

Civil Engineering

For instance, a bridge design: before such a design is actually built the engineers do structural analysis; they build computer models and run simulations; they build scale models and test them in wind tunnels or other ways. In short, the designers do everything they could think of to make sure the design is a good design before it is built.

When the design effort is complete, the design documentation is turned over to the manufacturing team. This is a completely different group with completely different skills from the design team. Then, the manufacturing team can proceed to build the product. In fact, they can proceed to build lots of the product, all without any further intervention of the designers.

Software Engineering

If we review in detail the software development life cycle, we can conclude that the only software documentation that actually seems to satisfy the criteria of an engineering design is the source code listings:

  • The source code is created before it is built
  • In software engineering, building software is done by compilers and linkers
Programming is not about building software; Programming is about designing software.

In software, even the smallest piece of code is likely to be revised or completely rewritten during testing and debugging. We accept this sort of refinement during a creative process like design, not as part of a manufacturing process. No one expects an engineer to create a perfect design the first time. Even if she does, it must still be put through the refinement process just to prove that it was perfect.

Therefore, the software design is not complete until it has been coded and tested; it means that final source code is the real software design. Final source code is the design documentation that is turned over to the compilers and linkers (the manufacturing process) to build the software.

Summing-up: Software may be cheap to build (it is made by the compilers and linkers), but it is incredibly expensive to design (to create a working code). Software is so complex that there are plenty of different design aspects and their resulting design views.

(There are of course exceptions and we have to separate safety-software from security-software. Critical safety-software has an special life cycle).

These Notes have been taken from:

the place for my online diary
Do you remember what you did last week? and what about how you felt? and last month? and last year?
sign up free 

Leave a Reply

Your email address will not be published. Required fields are marked *