Flaky software could crash your car
I doubt it will come to that. The basic functions of a car are very well established. People cause a million times more accidents every year from sheer neglect.
My concern is that people will become so confident in the performance of their cars, that they take the car to the limit. If the car yaws, traction control kicks in to correct the angle. If traction control fails, the car will spin. The result? Oh, don't blame the driver for acting like a maniac -- blame the software!
As for things like the radio and A/C, well, those are hardly critical systems. The worst that can happen is that your wipers will engage unexpectedly and cause a distraction. But, if that distraction is enough to cause a crash, you were probably driving too fast to begin with!
Only one thing prevents crashes: SLOW DOWN.
QNX Software Systems makes software for both. Bugs might present minor problems, but the Canadian company has found a way to keep devices from crashing completely, says product management director Sachin Lawande.
The key is to make software in a way that allows parts of the code to fail without crashing the whole system, Lawande said. Instead of trying to make an entire operating system work without a single bug - all but impossible, Lawande says - QNX concentrates on a tiny piece of code called a microkernel that must be foolproof.
But, people don't program like that. Every module plugged into the kernel depends on some other module, and it's all tied together. A microkernel approach may save some low-level processes from really screwing up (like the filesystem), but if one piece of the OS goes down, chances are the whole system will need to be restarted.
What happens if your graphic driver messes up and makes the screen go blank? All most people can do is reach for the reset button.
Microkernel architecture makes it easier to discover and trace bugs, but I doubt it really improves reliability. Besides, the only thing that runs in kernel space these days are drivers, and they have to run very fast and are typically impractical or difficult to run in user space. I wouldn't be surprised if memory protected drivers are less reliable than kernel drivers, simply because all the extra hoops you need to jump through increases complexity.
Besides, most bugs these days don't cause the system to crash... they cause unexpeted behavior. If menus disappear randomly, is that going to cause a fault that will let the OS know something went wrong, or will it just be "one of those things"?
Outside of the microkernel, "any piece of code cannot be trusted not to fail", Lawande says. Glitches might happen, but they'll be non-fatal errors easily caught in testing, he says.
Provided they test properly and adequately. Low-level components of operating systems are usually very clean, simple, and compact. It's the development tools you have to worry about.
Yeah, load up a 2Meg library and only use 2% of its capabilities. Why not use a smaller, more specific library? Too much trouble.
Linux is bombproof, but man, the KDE desktop is provoking me to put my fist throught the monitor. I can't believe people bitch about Windows when Linux desktops are just as slow, inefficient, and full of bugs! Think the Windows System32 folder is a mess? Why not take a look at /usr/bin or /etc! Thousands of files, names that don't make sense, manuals, libraries, and config files scattered all over the place... yeah, that looks much better.
Testing is part of the problem, says Humphrey of Carnegie-Mellon. Software makers test their products based on their assumptions of how the products will be used, he says. Bugs happen when software is asked to do something programmers didn't see coming.
Programmers and engineers are still asked to do things they either hate doing, or lack appropriate skills. Products are developed, debugged by more engineers, and sent over to manufacturing without consulting people trained in usability testing.
If there's one word I can use to describe the computer industry, it is Impatience.
The software industry, still about 40 to 50 years young, was built and pioneered by smart people who didn't follow the rules.
Early computers were purpose-built machines. The people who made them only had to follow their own rules, because people who programmed servers and mainframes were the people who ran them. Or, full-time technicians gave support 24/7. People knew what the computer was supposed to do.
These days, computers are built to do any indiscriminate number of things, and cater to the preferences of millions of different people. There's too much drive to make an all-in-one box that does everything adaquately and nothing very well.
It's about design, not technology.