Software development – is it engineering?

by daniel on February 19, 2009

Is software engineering so different from other branches? There are many analogies for software development, like building a structure or gardening, each one giving a different perspective. One perspective I find lacking from these analogies is the development as a critical path, when development is the act of producing a result from a set of requirements.

Comparing to electronics engineering is very interesting as there is a lot of similitude: (this list is very rough on purpose)

1. Electronic devices are built to specifications

2. The solution must be readily available with existing components, or

3. New components need to be build

4. Pilot products are produced to test the design

5. The end product is built from the design

How this compares to software development?

First, there is no real production phase for software, because the copying of the software is not error prone. Of course there is the deployment phase, but this is comparable to electronic equipment setup.

Second, the development process in software is much more central and has a higher percentage of staff involved. The reason of being the additional phases required for electronics production.

Third, the Quality Control in electronics is relevant to the production phase for assuring that the produced units are within the error margin.

What can be learnt?

Software has the same basics, of creating software to solve a problem, under specific constraints. Unfortunately, since there is no production, the software goes to the user directly from the development phase.

There is also a difference in the rules and tolerances of electronics vs. software. Electronics have rules that help guarantee the end result and the margin of error based on previous experience and limited by safety rules and regulations. The same does not apply to software because software is not relevant to electricity or energy handling so the safety rules do not apply directly.

This short comparison gives a small clue why comparing the rules of software to production rules are misleading and software should be compared with other methodologies, but with a grain of salt.