The cost of finding and fixing bugs or defects is the largest single expense element in the history of software. Bug repairs start with requirements and continue through development. After release bug repairs and related customer support costs continue until the last user signs off. Over a 25 year life expectancy of a large software system in the 10,000 function point size range almost 50 cents out of every dollar will go to finding and fixing bugs. Given the fact that bug repairs are the most expensive element in the history of software, it might be expected that these costs would be measured carefully and accurately. They are not. Most companies do not measure defect repair costs, and when they do they often use metrics that violate standard economic assumptions such as "lines of code" and "cost per defect" neither of which measure the value of software quality. Both of these measures distort quality economics. Lines of code penalize high-level languages. Cost per defect penalizes quality. A new metric, "technical debt" is a good metaphor but incomplete. Technical debt does not include projects with such bad quality they are canceled and never delivered so there is no downstream debt. Poor measurement practices have led to the fact that a majority of companies do not know that achieving high levels of software quality will shorten schedules and lower costs at the same time. But testing alone is insufficient. A synergistic combination of defect prevention, pre-test defect removal, and formal testing using mathematical methods all need to be part of the quality technology stack.
展开▼