by Adam Kolawa

Developing Bug-Free Software

Aug 15, 20024 mins

The software industry produces bad products. Rather than accept that, we should do something about it. In other industries, making shoddy products is an incredible liability. Can you imagine the fallout if auto manufacturers produced cars that were as unreliable as the software that currently floods the market? It would be a catastrophe! Other industries have learned to incorporate better production methods into their manufacturing processes to ensure quality in their products. How come the software industry is not doing the same?

Software makers have done nothing to utilize better production methods because of the mistaken belief that creating software is not a traditional manufacturing process?that it is somehow different and unique. Many believe it impossible to establish a software production line that converts human intelligence into computer instructions in the same efficient way that traditional manufacturing companies produce cars or appliances. That is simply wrong.

The software production line already exists in the transition of raw ideas into products that provide intelligence to computers?this transition is called the software development process. What is missing is a methodology to make this production line work correctly and efficiently. This methodology is called automatic error prevention, and it has been successfully adopted in other industries.

So why hasn’t it been adopted by the software industry? The answer: It has not been economical. Take the example of chip testers, which are widely used in the microprocessor industry. These machines verify that chips are functioning properly. Chip testers are expensive, but since the behavior of the chips they test is well defined, you can program the tester once and run millions of chips through it and effectively amortize its cost per chip. With software this is not possible because every piece of software is unique.

The difficulty of this situation is enormous. Think about it. To be effective, automatic error-prevention tools for software development must be able to adapt to each test subject without human intervention. In other words, such tools must be intelligent themselves. Developing automatic error-prevention tools for the software industry is more complicated and expensive?by several hundred orders of magnitude?than simply preprogramming chip testers.

Yet software developers are lucky; their products contain the key to overcoming this difficulty. Automatic error-prevention tools for software are based on the simple principle that the intelligence needed to automatically test a software product is built into that product when it is created. Chips carry no information on how they should be tested, and so the test equipment must be preprogrammed. Yet if you read the source code for a piece of software, you can figure out how to test it. This breakthrough technology has become available only in the past few years. Now automatic error-prevention tools can immediately test code as it is written, regardless of the application.

Despite the availability of automatic error-prevention tools (and, might I add, of the efforts of Parasoft to bring them to fruition), this advance is still considered so complicated and unrealistic that many in the software industry refuse to believe in it. This is unfortunate. These tools are available, and they must be utilized in order to completely conquer the crippling industrywide “bugs are the way it is” mentality. Automatic error-prevention tools are the only way to guarantee quality in software products. Not embracing these tools requires software companies to seriously consider their longevity in a business that can no longer ignore quality lapses, but must?and now can?do everything to prevent them.

Adam Kolawa is cofounder and CEO of Parasoft ( in Monrovia, Calif. Kolawa is coauthor of Bulletproofing Web Applications (John Wiley & Sons, 2001).