YOUR FEEDBACK
andy.mulholland wrote: intriguing !!! We have full scale 'Mashup Factories' in Chicago USA and Utrec...


2008 East
DIAMOND SPONSOR:
Data Direct
Frontiers in Data Access: The Coming Wave in Data Services
PLATINUM SPONSORS:
Red Hat
The Opening of Virtualization
Intel
Virtualization – Path to Predictive Enterprise
Green Hills
IT Security in a Hostile World
JBoss / freedom oss
Practical SOA Approach
GOLD SPONSORS:
Software AG
The Art & Science of SOA: How Governance Enables Adoption
PlateSpin
Effective Planning for Virtual Infrastructure Growth
Fujitsu
Automated Business Process Discovery & Virtualization Service
Ceedo
Workspace Virtualization
Click For 2007 West
Event Webcasts

2008 East
PLATINUM SPONSORS:
Appcelerator
Think Fast: Accelerate AJAX Development with Appcelerator
GOLD SPONSORS:
DreamFace Interactive
The Ultimate Framework for Creating Personalized Web 2.0 Mashups
ICEsoft
AJAX and Social Computing for the Enterprise
Kaazing
Enterprise Comet: Real–Time, Real–Time, or Real–Time Web 2.0?
Nexaweb
Now Playing: Desktop Apps in the Browser!
Sun
jMaki as an AJAX Mashup Framework
POWER PANELS:
The Business Value
of RIAs
What Lies Beyond AJAX?
KEYNOTES:
Douglas Crockford
Can We Fix the Web?
Anthony Franco
2008: The Year of the RIA
Click For 2007 Event Webcasts
SYS-CON.TV
TOP THREE LINKS YOU MUST CLICK ON


Software Engineers Aren't Doing Enough To Really Create Error-Free Software
The problem with defects is that while they occur, the cost of finding and preventing them has a diminishing return

London, the capital of my home country England, has a beautiful gothic style lifting bridge built by the Victorians in 1894 that magnificently spans the river Thames. It allows tall ships to access the river upstream by lifting its center sections, which for the first 82 years of its life was powered by huge steam engines.

Steam has since given way to electricity and in 1998 a $3M overhaul was done to upgrade the kit and make it ready for the 21st century. On June 3, 2005, however, everything did not go according to plan and the bridge was stuck open. For 10 hours it remained jammed open while police diverted angry motorists to alternative crossings and the engineers worked against the clock to figure out what had cause the historic monument to malfunction. The reason given when she finally came down was that a software error had caused the problem http://news.bbc.co.uk/1/hi/england/london/4605743.stm. This problem is not an isolated one and was the fourth to occur in three months.

Two thousand years ago the Romans employed an interesting motivational technique: once engineers had finished building a bridge they had to stand under it while the first legion of soldiers marched across. I wonder if the Tower Bridge IT manager wished he'd have done similarly with his programmers when he got hauled before his superiors to answer why one of the main thoroughfares from South to North London was out of action.

One of my very first IT managers used to ban us from using the word "bug" and had us the noun "defect" instead. His wisdom was that the word "bug" was used by a programmer as a way of shirking responsibility, that the problem was of his or her own making and poor workmanship had caused it to occur. The origin of the term is reputed to have arisen from a moth found between the relay terminals of a calculating machine; it's sobering that despite all of the advances in software engineering that have occurred since, problems still occur and, worse than that, are expected and even planned for.

Bugs are expensive to fix, and in Keynesian Economics the value of anything is determined as being the cost of the alternative. What is the cost of errors in code?

In 1996 the European Space Agency rocket Ariane 5 exploded 40 seconds after launch at a cost of $7B due to a straightforward software defect. A data conversion from 64-bit floating point to 16-bit integer threw an exception when the floating point became too large.

The Mars Climate Orbiter in 1998 was destroyed when instead of entering the atmosphere at 90 miles above the surface, it dropped in at around 40 and subsequently burned up. The reason was that some data on the ground was calculated in imperial pounds and reported to the navigation team who thought it was metric newtons.

More recently on January 21, 2004, the NASA Mars Spirit Rover on Mars stopped communicating with Earth. The problem was the file management software that wrote to the rover's flash memory was unable to deal with the volume of data that was occurring at the time and threw an exception fault that crippled the whole unit. Fortunately this was corrected, although by a wing and a prayer - the fix would use the rover's RAM instead of the flash memory, delete a set of in-flight data files no longer needed to reclaim space, reformat the memory and, after three weeks, the Spirit was up and running again.

Crashing rockets is a very visible and costly failure, but it doesn't have to be such a stellar failure when shipping defective code. Is there any such thing as an inexpensive bug, given that any defective piece of software represents bad function?

The problem with defects is that while they occur, the cost of finding and preventing them has a diminishing return, so the approach often taken is that once no more serious defects can be found in a test pass, all that remains must be minor and the programming is complete. The whole act of testing is an odd part of the software engineering process, because the expectation is that bugs will be found and then fixed before the next round of testing occurs. Edsger Dijkstra, one of the grandfathers of modern computing, once wrote: "Testing can only prove the presence of bugs, not their absence."

Testing therefore is not the verification that a program works, but a search for whatever bugs can be found within the time and scope constraints of its execution. In an odd way the whole process of testing sort of vindicates the fact that programming creates malfunctioning code that needs checking and rechecking before it can be shipped.

What troubles me is that we, as software engineers, aren't doing enough to really create error-free software. Does software have to be buggy because of its size and complexity, or do we use that as an excuse to throw more code at an application when we know its existing code base is flawed? Why is a successful test pass measured as one that finds lots of bugs, and not one that gives the program a clean bill of health? Another of Edsger's words of wisdom summarize eloquently; "If debugging is the process of removing bugs, then programming must be the process of putting them in."

About Joe Winchester
Joe Winchester, JDJ's Desktop Technologies Editor, is a software developer working on development tools for IBM in Hursley, UK.

YOUR FEEDBACK
rjx wrote: simple. get a team to write software without requirements, no specification, no research, in a time-frame as tight as possible (or worse). put on top whining managers and salesman and then count the bugs (defects). or, instead of that, look at microsoft, which made it ok to have bugs in software. btw, how the heck did those people calculate something in pounds???? probable the transformation leagues - meters failed too...
Java Developer's Journal wrote: Software Engineers Aren't Doing Enough To Really Create Error-Free Software. The problem with defects is that while they occur, the cost of finding and preventing them has a diminishing return, so the approach often taken is that once no more serious defects can be found in a test pass, all that remains must be minor and the programming is complete. The whole act of testing is an odd part of the software engineering process, because the expectation is that bugs will be found and then fixed before the next round of testing occurs.
LATEST JAVA STORIES & POSTS
The one thing that unifies the distributed computing style known as SOA, in most of its manifestations, is self-describing data via the Extensible Markup Language (XML). The benefits of XML over opaque message formats in data interchange are well established. No matter if your fo...
In the past couple of years, interest in Jetty has surged. Jetty is an open source Java-based web and application server and servlet container, but what else do you know about it? To commemorate the 12th anniversary of Jetty, here are 12 things that might surprise you
JavaScript is one of the most interesting and misunderstood programming languages in common use today. Most developers will go their entire careers without realizing its full potential. It's not often that you get a language that supports the feature set that JavaScript does, whi...
JavaScript 2 is becoming increasingly important. Learn how to take advantage of JavaScript 2 while still running in today's browsers. Leverage your current JavaScript and HTML skills to build applications that run in Flash 7-9, DHTML and more with no code changes! OpenLaszlo 4.2 ...
JavaScript is a language with more than its share of bad parts. It went from non-existence to global adoption in an alarmingly short period of time. It never had an interval in the lab when it could be tried out and polished. JavaScript has some extraordinarily good parts. In Jav...
Cloud computing is an opportunity for businesses to implement low-cost, low-power and high-efficiency systems to deliver scalable infrastructure. But moving to a cloud infrastructure is not necessarily as nice and clean as the providers would want you to think. With cloud infrast...
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021


SYS-CON FEATURED WHITEPAPERS

SPONSORED BY INFRAGISTICS
In every field of design one of the first things students do is learn from the work of others. They ...
There are many forces that influence technological evolution. After a decade of building enterprise ...
2008 is going to be an important year for Rich Internet Applications. Most organizations are deliver...
The OpenAjax Alliance is developing an Ajax industry wishlist for future browsers, using a dedicated...
Infragistics announced the availability of two Community Technology Preview (CTP) User Interface (UI...
The YUI development team has released version 2.5.2; you can download the new release from SourceFor...
ADS BY GOOGLE