"Software Engineering" Is Not Engineering

abrbhat1 pts0 comments

Software, Science, and Math

35 captures<br>07 Apr 2005 - 21 Feb 2025

May<br>JUN<br>Jul

15

2004<br>2005<br>2006

success

fail

About this capture

COLLECTED BY

Organization: Alexa Crawls

Starting in 1996, Alexa Internet has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the Wayback Machine after an embargo period.

Collection: alexa_ed

this data is currently not publicly accessible.

TIMESTAMPS

The Wayback Machine - https://web.archive.org/web/20050615235108/http://www.geocities.com:80/tablizer/science.htm

"Computer Science" is Not Science and<br>"Software Engineering" is Not Engineering

Updated 3/8/2005

I have been in a lot of "software engineering" debates,<br>perhaps too many. It is frustrating that there are heavy<br>opinions about the "right way" to make software, but no<br>easy way to objectively compare them to settle<br>long-standing arguments. I have been pondering and studying<br>why this is the case, and think I am finally able to<br>articulate an answer.

If the software discipline is "science", then the scientific<br>process should be available to settle arguments. But it<br>seems to fail. Some suggest that instead it is<br>"engineering", not "science". But engineering is nothing<br>more than applied science. For example, in engineering,<br>bridge designs are tested against reality in the longer run.<br>Even in the short run, bridge models can be tested in<br>environments that simulate reality. Simulations are a<br>short-cut to reality, but still bound to reality if we want<br>them to be useful. If a bridge eventually fails, and the<br>failure is not a construction or materials flaw, then what<br>is left is the engineering of the bridge to blame. An<br>engineer's model must be tightly bound to the laws of<br>physics and chemistry . The engineer is married to<br>the laws whether he/she wants to be or not.

But we don't have this in software designs for the most<br>part. We have the requirements, such as what the input<br>and output looks and the run-time constraints which<br>dictate the maximum time a given operation is allowed to<br>take. But there is much in-between these that is elusive to<br>objective metrics. Most of the techniques and paradigms<br>under common debate can usually deliver the<br>requirements. This is because they are "Turing<br>equivalent", which basically means they are capable of<br>implementing any clearly-specified algorithm, given<br>enough time and resources. The bottom line is that<br>delivering the required results is not a distinguishing<br>factor; they can all do it.

There are some specialties, such as Artificial Intelligence,<br>where the answer is not necessarily "fixed". The "answer" is<br>judged more or less on a continuous scale. In these situations different<br>algorithms are compared and the results are ranked.<br>For example, a metric similar to a lab-rat maze test for intelligence testing<br>can be performed to evaluate performance.<br>However, just because a given algorithm is known to be better,<br>this does not tell us if it is the "right" or only possible<br>algorithm. It might be the "best known" at a given point in time,<br>but not much can be concluded beyond that. As expounded upon later,<br>we don't know what we don't know.

Some options under debate may run slower, but that is<br>usually not the key point in debates. Somebody will<br>argue that higher developer productivity makes up for the<br>slower speed (or need for bigger machines) or that in a<br>few decades chips will be fast enough such that it does<br>not matter. Developer productivity is possibly another<br>metric that is measurable, but is still elusive because<br>there too many variables. I will return to productivity<br>later because it is indeed an important issue.

So, if physical engineering is really science ("applied<br>science" to be more exact), but software design does not<br>follow the same pattern, then what is software<br>design? Perhaps it is math. Math is not inherently bound<br>to the physical world. Some do contentiously argue that it is<br>bound because it may not necessarily be valid in hypothetical<br>or real<br>alternative universe(s) that have rules stranger than we<br>can envision, but for practical purposes we can<br>generally consider it independent of the known laws of<br>physics, nature, biology, etc.

The most useful thing about math is that it can create<br>nearly boundless models. These models may reflect the<br>known (or expected) laws of nature, or laws that the<br>mathematician makes up out of the blue. Math has the<br>magical property of being able to create alternative<br>universes with alternative realities. The only rule is<br>that these models must have an internal consistency: they<br>can't contradict their own rules. (Well, maybe they can,<br>but they are generally much less useful if they do,<br>like a program that always crashes.)

Software is a lot like math , and perhaps is math<br>according to some definitions. The fact that we can use<br>software to create alternative realities is manifested in the<br>gaming world. Games provide entertainment by creating<br>virtual realities to reflect actual reality to...

software engineering science math reality laws

Related Articles