How Accurate Is Software?

The devil is in the details, and these days there are an awful lot of them.


The number of corner cases is growing. In hardware, that means more verification, more testing and more re-spins. But in software there is no comparable verification method.

The Prius braking problem was blamed on a software glitch, but as Synopsys CEO Aart de Geus succinctly noted, none of Toyota’s rivals rushed out to trumpet their own software methodologies. While software adds flexibility, the perpetual mixing of ones and zeros also adds a lot more complexity into the whole process.

A couple decades ago, many software developers consider their applications to be market-ready when more than half of the bugs had been caught. While testing methodology has improved significantly, there are still enough software updates showing up on our computers and handheld devices to give pause to the effectiveness of the testing methodology.

In a smart phone, it really doesn’t matter. Unless you’re calling 911, you can simply reboot. But in a car’s braking system, you can’t. You can’t do that in an implantable medical device, either. And if your device is floating around in outer space, it can be tough to update the software.

Software cuts the cost of chip development. It adds flexibility to designs that can speed time to multiple markets. And it makes derivative chips much easier. But it also makes it much harder to find what in hardware would be considered all the corner cases.

It’s certainly important to begin developing software as early as possible in the design cycle. But given some of the high-profile failures, it’s also important to test it more effectively than in the past. Public perception and consumer demand are riding on getting these problems solved, and so are the future sales of semiconductors.

If Toyota is encountering these problems—a company that has been the poster child of manufacturing quality—then you can bet the problems are far more widespread than just the Prius.