Thursday, April 05, 2007

Software Engineering: No Physics

"'Software Engineering' is something of an oxymoron," L. Peter Deutsch, a software veteran who worked at the fabled Xerox Palo Alto Research Center in the seventies and eighties, has said. "It's very difficult to have real engineering before you have physics, and there isn't anything even close to a physics for software."

"Dreaming in Code" p. 276


Jay Parlar said...

Except that a Software Engineer should be able to intelligently discuss physics with a Physicist, to such a level that the two could work together to implement the software for a physics problem.

In Canada, where engineering is a professional discipline with legal backing behind it (ie. it's illegal to call yourself a professional engineer if you haven't met the correct accreditation requirements), this is a large part of Software Engineering.

Software Engineering recently became a professional engineering discipline, and while most of the focus is on formal methods, you also *have* to take multiple classes on physics, chemistry, mechanics, thermodynamics, ethics, etc.

A Software Engineer should not be an expert in any of those fields, but must be able to work with domain experts to implement a solution in software.

Shannon -jj Behrens said...

I read "Professional Software Engineering", so I am familiar with what you are saying.

There are no physics laws governing software in such a way as to guarantee that the safeguards are "strong" enough to keep the software from falling over. I know if a bridge is strong enough; I don't know if a piece of software is strong enough.

Jay Parlar said...

And that of course is why Software Engineering is so difficult :) But someone saying that "Software Engineering" is an oxymoron just because it's not based around physics seems... old fashioned.

It's a young field that still needs a lot of work, but you have to start somewhere. We'll probably never have a software equivalent to f=ma, but you *can* formally prove software designs. It's just really really hard.

sigfpe said...

Software engineering is called 'engineering' because it has some analogies with other forms of engineering. But there's no reason to believe that different forms of engineering are literally isomorphic so that a feature of one is or should be present in some form in the other.

Chui Tey said...

Engineering started with only basic understanding of gross material behavior. There was certainly very little material science or knowledge of physics.

Take a look at the invention of steam engines, they were prone to explosions, and most of the refinement came through practice, observation and refinement. I'd challenge anyone to say this is the actual process of engineering, and not very different from what software engineers do.

Shannon -jj Behrens said...

Chui Tey, very well spoken.