Saturday, August 7, 2010

What is Software Engineering?

Most essentially, it is the art of realizing the significance of simplicity to reasoning about the organization of the machine.

In the production of software we organize the machine for its operation. The most important tools and methods we employ are for reasoning about this process -- to comprehend it.

The ideal organization of the machine in a purely mechanical (performance) perspective is typically very different from the human logical one, as we use the programming language to reason about the organization of a program as a set of desired properties and characteristics.

In the practice of Software Engineering we deal with this central issue in the compromises between the ideal and desired organizations of the code written in the programming language.

With experience it becomes clear that simpler forms tend to narrow the difference between the ideal machine and the desired machine.

When the code is simpler, two possibilities emerge. First, the code is easier to reason about and therefore fewer devices are employed for the sake of comprehension. And second, code design can be more mechanical as a single state machine or stateless function.

No comments: