Advances in Software Quality Through Error Prevention
The tendency to believe that software errors are unique precludes the notion that errors can be found and eliminated in a generic fashion. Studies indicate that groups of software developers make the same errors time and time again irrespective of the software they are trying to build. Software errors are not unique, and this is excellent news since it would seem to indicate that there must be a generic means of modifying the software development process so as to control the introduction of errors.
Some companies now incorporate automated software testing tools in the development process. Called "static analysis," this process puts the burden of error detection on machines by running an automated battery of tests that can reveal errors. There are several automated testing products on the market today, including Compuware's Boundschecker, Rational/IBM's Purify, and Parasoft's Insure++, but even automated testing is still testing after the fact. The true goal is to prevent errors before they happen.
Parasoft coined the phrase "Automatic Error Prevention" (AEP) to describe that preventative next step. AEP takes the results generated from automated testing and connects the errors found during automated testing, to the practice that introduced the errors. AEP can then automate the procedures that prevent the error from recurring. The idea is that each error should occur once and only once.
In Japan, IBM's Technical Competency group has been using Jtest from Parasoft to improve the quality of Java application development. Before implementing Jtest, the testing phase for a group of 20 to 30 programs took 3 to 4 man-weeks. Now the same testing process can be completed in less than half a day by a single individual.
Users not only find errors automatically, but ensure that test results are used to improve the process and make quality progressively better. AEP is actually finding errors and automatically enforcing procedures that prevent recurrence. An extensive pilot using this methodology proved to be successful for increasing the productivity and quality of application development. IBM U.S. has since signed a global corporate-wide license contract with Parasoft.
Microsoft has its own internal tools for improving quality, although these have not yet been productized. But such products are not only used by large enterprises, there are hundreds of other companies using these kinds of products. These error prevention products are affordable, moreover the return on investment can be realized overnight.
As a software development trainer I have had the opportunity to work with hundreds of software development teams around the world. More than 90 percent of these teams have been completely unaware of the existence of AEP tools. Software quality will continue to suffer until a commitment to quality becomes more than just a catch phrase. This will require a major change in mindset for senior management, since it does not seem to be originating from the developers themselves. But for the time being I will remain suspicious of devices that merge software and hardware.