In the June 28, 2010 print edition of Information Week, a long-standing friend of DCG's, Capers Jones, identifies three keys to ensuring software quality:
- Defect Potentials - Make sure they stay below three per function point
- Defect Removal Efficiency - Keep it above 95%
- Quality Metrics - Apply them from requirements through maintenance
For those of us who, like me, need an occasional reminder on definitions, Defect Potentials are the probable numbers of defects that will be found in the various stages of the software development life cycle. Defect Removal Efficiency is the percentage of the defect potentials that will be removed (or actually are removed) before an application or project is delivered to users. Which brings me to a conversation that I had today with a client team who are seeing the numbers of defects increasing on a monthly basis this year.
The explanation is that resources are being diverted from the maintenance teams so less bugs are getting fixed. The client team has been told that all will be well when resources and budget ad diverted back to the bug fixers. "Aaargh!" was my thoughtful and considered response. The client team asked what they could do instead to improve the defect numbers. I told them that the money =resources=time) needs to be invested further up the supply chain where it can make a much bigger proportional difference to quality. Peer reviews of requirements, designs, code and test scripts are the most cost effective and quickest way for an organization to change quality outcomes.
To be fair, the client team then remembered that some development teams do conduct code reviews ("... and the quality is pretty good") but the other teams "... don't have time." This is a classic misunderstanding of the value of time spent in different phases of the software development life cycle. So I get home this evening and start to catch up on my reading. The first article I pick up is the Capers Jones article and my conversation earlier today jumps fresh into my mind when I see that Capers has included the following table: Software Defect Removal Efficiency Ranges: Activity Range Formal Requirement Inspections 50% - 90% Formal Design Inspections 45% - 85% Formal Code inspections45% - 85% Automated Static Analysis 55% - 90% Automated Unit Test 20% - 60% Regression Test15% - 30% Integration Test 25% - 40% Performance 20% - 40% System Test 25% - 55%