How high is your cost of quality? The answer might surprise you. Yes, it includes reviews, the QA infrastructure, and preparing tests. Those are your appraisal costs. But how high are your failure Cost (the cost of defects)?
Your engineers spend time in diagnosis and rework, development schedules slip, support costs climb, and your company's and products' reputations sink. These failure costs, which are the more significant cost of quality, are beyond your direct control. You can, however, gain control over them indirectly, by investing in appraisal costs that minimize failure costs, reducing your total cost of quality and making it more predictable.
Cost of Quality: Appraisal versus Failure Costs
The cost of quality is a significant cost on any project, so prudent managers look for ways to keep those costs in check. The quality costs we can control include performing reviews, preparing tests, maintaining our QA infrastructure, and appraisal costs. There are also the quality costs we cannot control.
Failure costs are the ones that happen to us. We incur these costs of poor quality every time a defect comes to light, both during testing and after release. Failure costs take many forms:
· The effort that our developers spend investigating and diagnosing defects, and then reworking designs and code to correct them.
· Slips in schedules as testing uncovers defects that require rework and re-testing.
· Our customer support costs, most of which are for helping customers to deal with all of the defects we shipped to them, while developers spend even more time in investigation and rework.
· The biggest failure costs are nearly impossible to quantify: loss of customer good will, tarnished reputation in the market, and loss of product momentum.
Since some components of the cost of quality are under our direct control and others are not, it seems to make sense to reduce those costs that we can, and hope for the best with those that we cannot control. Unfortunately, a focus on reducing appraisal costs can increase our total cost of quality, because it is likely to result in an even larger increase in failure costs.
As reported consistently in our industry, failure costs rise exponentially as the project progresses. Reducing appraisal activities delays the detection of defects, thereby ensuring that they are much more expensive to address when they aredetected.
Leveraging Appraisal to Reduce Failure Costs
Most organizations depend upon the compiler and various types of testing to remove most or all of the defects from their products. As we can see from Figure 1, these are not the most effective methods of removing defects. They each tend to detect no more than 50% of the defects in the product and often do much worse than that. In addition, they happen late in the project lifecycle, when defects are the most expensive to fix. These activities are classified as "failure cost of quality" because the vast majority of the time is spent dealing with failures.
Activity* | Cost of Quality | Effectiveness |
Structured personal reviews | Appraisal | *********** |
Formal (Fagan) software inspections | Appraisal | ********** |
Informal peer reviews | Appraisal | ********* |
Compiling | Failure | ******** |
Unit testing | Failure | ******* |
Integration | Failure | ****** |
Beta testing | Failure | ***** |
System testing (and performance and other testing) | Failure | **** |
Acceptance testing | Failure | *** |
Walkthroughs | Appraisal | * |
Figure 1: Appraisal versus failure activities
Contrast this with the various kinds of reviews and inspections. They are relatively more effective, not only because they can detect 60-80% of the defects in the product, but also because those defects are detected earlier, when they cost much less to correct. They are classified as "appraisal cost of quality" because only a small proportion of the time is spent responding to failures. So appraisal activities tend to remove many more defects for each engineer-hour spent than do the failure activities. Notes on Figure 1:
· The cost of quality column indicates whether the majority of the time in that activity is spent appraising or dealing with failures. (It is important to realize that only the first compile is not failure-related. If there were no defects, we would have to run the compiler only once. By the same token, only the first run of any test is not failure-related. All diagnosis, rework and re-testing is necessitated by failures.)
· The effectiveness column indicates both the percentage of defects that are likely to be detected and the total cost in engineer-hours to detect, diagnose, and remove each defect.
· The placement of reviews and inspections in the list is based on best practices. In some cases, their effectiveness is quite low.
· The order of compiling, unit testing, integration, beta testing, system testing and acceptance testing in the above list really does indicate their relative efficiency in removing defects (not just their lifecycle order).
· The placement of unit testing in the list is based on best practices. Many developers have never been trained in testing, and are ineffective at it.
· Walkthroughs are more effective for training purposes than for defect removal.
These economics point us toward the principle of leveraging appraisal costs (the ones we directly control) in order to reduce failure costs (the ones that are less controllable). This principle leads us to the counter-intuitive proposition that if we wish to achieve dramatic reductions in our total cost of quality, we must increase appraisal costs dramatically. Does this proposition really work?
Consider that all of our failure costs (every single dollar of them) are caused by a finite number of defects in our software. Every defect that we can remove more economically than we currently do represents money on our companies' bottom lines. Every defect we can remove in a more timely way represents hours or days (or weeks) of schedule saved. Every defect that we avoid shipping to our customers reduces support costs, and every useful feature that we do ship is priceless good will that builds our companies' reputations and market share.
Reviews and inspections are the most economical way to detect and remove defects. Testing is a relatively less effective way to remove defects, but it is still a necessary part of our development lifecycle. Rather than continuing to make it our main defect removal mechanism, we would do better to use it to verify the effectiveness of our earlier primary defect removal activities: reviews and inspections.
Being in Control
The only way to be in control of our total cost of quality is to shift it from the uncontrollable: failure costs to the controllable appraisal costs. With each incremental increase in appraisal activities like reviews (assuming they are done well), we can expect a corresponding and larger reduction in our Failure activities.
If we carry this principle to its logical conclusion, we will find ourselves in the enviable position of having shifted the majority of our cost of quality to the appraisal side of the equation! This will mean that our cost of quality will not only be reduced significantly, but it will also be more predictable and more manageable. Instead of happening to us, our quality costs will be a tool that we can wield to control our projects and assure their success.