Thursday, September 16, 2004

Software bugs and the FAA

Yet another example of how dangerous software bugs can be...
http://www.msnbc.msn.com/id/6021929/

Here's my favorite part:
"So what caused it all? Human error. Because of a software glitch in an FAA computer, a technician is required to reset the computer that controls the radios every 30 days — something that was not done. The FAA says they've known about the glitch for a year now — and that it exists at 20 other control centers across the country. Now, the FAA says they'll fix it within a month."

WHAT!?!?! The FAA relies on HUMANS to reboot the system every 30 days because of a software bug! And, as if that's not bad enough, they've known about this for over a YEAR now!

Reflecting back on my years as a software engineer in the private sector, I would sometimes get hounded by management and penny counters because my time estimates were sometimes deemed to be "too long" for their time frames. So, what would happen? The product would end up shipping before proper verification and validation testing was completed. It was justified using the excuse that, "We can just supply software updates at a later date." What was the result? BUGS! I worked on one project that had over a dozen software updates within the first six months of release. Why? Simply because it was released well before we said it was ready. But, fortunately, as they saw proof of what happens when projects are pushed too fast, we learned to work together on these fictitious schedules. :-)

I'm very thankful that I never worked on mission-critical applications that could result in a matter of life or death if it didn't work properly. I stress the importance of software engineering discipline with people with good reason. You may, one day, work for a company that develops embedded software for medical devices such as a pacemaker, or an X-ray machine, or software for an aviation control tower, or software to control a robot on Mars, etc. There is no room for human error with some of these devices, but as long as humans are developing software, there will be errors... that's a sobering thought. You can minimize the likelihood of bugs by following a structured discipline with your software development.