#Google Analytic Tracker


Feb 5, 2008

What is Software Engineering

Recently, I find an interesting article on Slashdot about software engineer in Canada. Basically in Canada, the title "Engineer" is reserved specifically for licensed engineer under CCPE (Canadian Council of Professional Engineers). I read one person comment about saying that there is not such thing as software engineering.

I totally disagree, so I wrote the following comment:

" Hi, I have to disagree the following points that you made about software engineering:

A. "there's no way to learn software engineering the way Engineering disciplines are learned."

B. [Software] discipline simple doesn't exist.

C. "cannot use mathematics" design system software.

From my study in my computer engineering courses, we learn what is software engineering. Software Engineering doesn't mean just "programming", it involves many other aspect of software development, like collecting specifications, designing, implementation, testing and software maintenance.

In design phrase, software engineers have to consider the cost, quality, reliability, delivery time and many other matters just like any other engineer in the traditional disciplines.

Although it seems to there is no mathematically involve in general software design, but if you take computer science courses, you learn that your software performance rely on mathematical calculation (i.e. O(n)). If you are working on assembly level software development, you definitely require mathematically skills to solve complex problem because your software is limited by your hardware performance (memory and speed).

Just like any other engineering, software quality also based on statistic and software engineering models. Think about highway engineering, the quality of the road material is mostly base on statistical calculation. In software engineering, we have Lines of Codes, function-points, function metrics measurement and many others determine the software quality, maintainability and flexibility.

So, what is the obvious difference comparing to other traditional engineering fields? 1. The cost of correcting an engineering mistake is a lot less. If your bridge design is incorrectly, it will cost a lot rebuild or re-enforce bridge compare with solving software deflect. 2. Software “usually” doesn't have a direct impact on public safety. Billing system maybe a bad example, but think others, like automobile, airplane, traffic light, it is controlled by software. If the software crashes, it could cause death.

Unfortunately because software engineering doesn't have a total clear understand among the public, and mostly not even to CCPE I bet, therefore it is hard to distinguish one from a software engineer to just a programmer. It is probably very hard to have regulation on software that require engineer's stamp because the definition is not clear.

Does medical charting software require an engineering stamp before it can be use in a hospital? What happen if there is a defect in the software and doctor incorrectly prescribes drugs which cause a patient to die?

It is pretty much impossible to write a useful software that is flawless, even a bridge cannot participate every possible environmental hazards and combinations. It can be statistically said a bridge can last for 200 years, but it is not definite.

If you do claim yourself to be a software engineer, you have to do your job professionally with high standard and due diligence. This is a standard and common ground for all engineers in Canada. And yes, software engineering stream (usually from Computer Engineering discipline) does exist in a number of Universities in Canada. "

No comments: