Custom Search

Wednesday, March 11, 2009

Software Engineering

Software Engineering is an approach to developing software that attempts to treat it as a formal process more like traditional engineering than the craft that many programmers believe it is. We talk of crafting an application, refining and polishing it, as if it were a wooden sculpture, not a series of logic instructions. The problem here is that you cannot engineer art. Programming falls somewhere between an art and a science.
Programming - Art or Engineering?
There has always been considerable debate about the nature of programming. If bridges were designed like software then there would be a lot of ferries operating. You can't have a second go if a bridge fails. That's the argument that the Software Engineering proponents put forward.

How do I Stop my Software Killing Someone?
Manufacturers cannot build complex life-critical systems like aircraft, nuclear reactor controls, medical systems and expect the software to be thrown together. They require the whole process to be thoroughly managed, so that budgets can be estimated, staff recruited, and to minimize the risk of failure or expensive mistakes.

In safety critical areas such as aviation,space, nuclear power plants,medicine, fire detection systems, and roller coaster rides the cost of failure can be enormous as lives are at risk. A divide by zero error that brings down an aircraft is just not acceptable.
So It Never Goes Wrong?
In spite of this there have been a few high profile disasters. Ariane 5, a rocket system for delivering satellites into orbit blew up in June 1996, 40 seconds after takeoff due to an arithmetic overflow bug. The system had used specifications from an earlier rocket Ariane 4 without having been fully tested.

What Is Computer Aided Software Engineering?
The whole design process has to be formally managed long before the first line of code is written. Enormous design documents- hundreds or thousands of pages long are produced using C.A.S.E. (Computer Aided Software Engineering) tools then converted into Design Specification documents which are used to design code.

C.A.S.E suffers from the "not quite there yet" syndrome. There are no systems that can take a set of design constraints and requirements then generate code that satisfies all the requirements and constraints. Its far too complex a process. So the available C.A.S.E. systems manage parts of the lifecycle process but not all of it.
So it is Paper Work?
One distinguishing feature of Software Engineering is the paper trail that it produces. Designs have to be signed off by Managers and Technical Authorities all the way from top to bottom and the role of Quality Assurance is to check the paper trail. Many Software Engineers would admit that their job is around 70% paperwork and 30% code. It's a costly way to write software and this is why avionics in modern aircraft are so expensive.

(source: cplus.about.com)

0 comments: