Neither traditional process improvement nor development dynamics focus on error prevention. They are a step in the right direction, certainly, but they do not address fixing the actual software development lifecycle when a development error or application bug is found. What really needs to be addressed with the software industry is the question of "How can software be better manufactured?" The only answer is: through error prevention. Manufacturers of traditional consumer goods learned long ago how to prevent production errors by correlating functionality and quality problems to the production line. Errors were fixed in the assembly process, not after the product was finished. The Japanese used this approach to corner the global market for economy cars in the 1970s and 1980s (the Germans and Swedes did the same for luxury autos), and it is a lesson that American industries, while slow to learn, have started to take to heart.
Error prevention is very different from error detection, which is the process of finding and fixing errors after an application is built. Unfortunately, this leaves the flawed process that generated those errors uncorrected. This is how the software industry currently deals with bugs, by treating the "symptom" (bugs) and not the "disease" (the development process). Correlating errors to the exact point in the software development process that spawns them, and fixing that part of the process, prevents the need to debug applications after the fact, and produces an exponential increase in product quality.
Error prevention methodology is the best way to improve software quality and reliability. It goes beyond traditional testing practices to combine the intelligence, tools, techniques, and services, to automatically prevent errors in software. What makes an automated error prevention method effective is taking the information gained from software measurement, monitoring, and testing, and use it to progressively improve the development process.
A good automated error prevention method adapts to any software lifecycle and follows five simple steps:
- Identify an error
- Find the cause of an error
- Locate the point in production that created the error
- Implement preventative practices to ensure that errors do not recur
- Monitor the process
An automated error prevention method should use well-known techniques in the software industry. These include coding standards, unit testing, load testing, and functional testing, as well as less frequently used techniques such as firewalls and defensive programming. This places a transparent layer on top of key development processes, allowing error prevention and monitoring techniques to be integrated seamlessly into the full production lifecycle of any software development project. When an error is found in an application during development, the automated error prevention method helps you correlate that error to a specific point in the development process and allows you modify your processes to remove it, and more importantly, prevent it from happening again.
Preventing errors rather than chasing them dramatically improves software reliability, allowing you to stay competitive and not risk your valuable reputation on unforeseen bugs.