It is important to recognize that software quality improvement, like software development, is an iterative process. There is no need to accomplish everything within a single step; improvement can be accomplished in incremental steps. Even small changes can make a tangible difference, including adjusting the organizational attitude towards quality. Software quality improvement requires a commitment from business leadership and a mindset change that begins at the top. The business benefits of good software quality are both broad and deep.
Not only does quality facilitate innovation by increasing predictability, lowering risk, and reducing rework; but it also serves as a differentiator, since it enables a business to set itself apart from its competitors. Most importantly, continuously ensuring quality will always cost less than ignoring quality. Quality is more than free when it is done right. The key strategy for reducing the cost of poor software quality is to find and fix problems and deficiencies as close to the source as possible, or better yet, prevent them from happening in the first place.
This strategy implies that wise investments in software engineering discipline and the cost of good software quality will dramatically reduce the cost of poor-quality. The concept of Continuous Testing is gaining traction and is entering the mainstream for exactly this reason. Continuous Testing is generally defined as making testing an ongoing, automated and constant part of the software development life cycle—so that defects can be found and corrected as soon as they are introduced. Measuring the cost of software quality in your organization is a recommended first step.
Quality is a different concept when focusing on a tangible software product versus the perception of a quality service enabled by software. The meaning of quality is time based or situational. Consumers now view quality as a fundamental measure of their total perception/ experience with a product or service, as well as of the company, delivery and maintenance network that provides and supports it—a kind of unified “quality-value” metric.
Poor-quality is not an inevitable attribute of software. It results from known causes. It can be predicted and controlled, but only if its causes are understood and addressed. The primary causes of poor software quality are:
- • Lack of domain knowledge (resulting in poor requirements)
- • Lack of technology knowledge (resulting in uncertainty about goodness of components)
- • Unrealistic schedules (from poor estimation practices)
- • Badly engineered software (resulting from immature, undisciplined practices; and using less qualified software engineers)
- • Poor acquisition practices
- • Communication and coordination breakdowns among teams
- • Lack of useful data about the state of software quality
By understanding and addressing these top causes, quality can be designed in from the start, substantially reducing both the 40% of project effort typically spent on rework and the risks to which software exposes the organization, such risks are lost goodwill, and expenses incurred in recalls, refund, replacement, rework, waste, fixing deficiencies, cancelled projects, etc.
Factors about the cost of poor quality
We have broken down the cost of poor software quality into the following four main buckets:
- External deficiencies and failures The largest chunks of which are: finding and fixing operational deficiencies, and massive failure consequences
- Internal deficiencies and failures The largest chunks of which are: finding and fixing unreleased deficiencies, rework, cancelled projects, and troubled projects.
- Technical debt The largest chunks of which are the violations of good practices, and fixing problems that may cause future disruptions
- Management failures The largest chunks of which are unanticipated costs, customer damages, and reactive crisis-mode management behaviors.
And it costs heavily!
In the area of internal deficiencies and failures, we found that:
- • From the perspective of the total portfolio of current IT projects, we know that about 1/3 of them will be cancelled or will fail in a significant way. That places about $300 billion of the total US IT labor base at risk. Cancelled projects due to schedule slippage or cost overruns are most frequently caused by poor software quality. We estimate that $130 billion is lost in troubled projects, and $47.5 billion is lost in cancelled projects.
- • Finding and fixing internal problems and deficiencies—assuming that about 50% of the US IT development effort is spent in this area, the cost would be about $500 billion.
- • The largest chunks are the violations of good practices, and fixing known, postponed problems that may cause significant disruptions. We estimate that the CPSQ in this area is $.54 trillion in technical debt in 2018; a huge number. This represents a potential future cost, and there may be many situations in which this debt is not paid or is forgiven.
Poor-quality is opportunity lost. Understanding where and why these opportunities exist is a chance to improve the bottom line. Although there’s good value to be gained by reducing waste, rework, and warranty costs, there's an even greater value in looking for the root causes of these problems, because the return is normally much greater. The poor-quality software costs more to build and to maintain than good quality software, and it can degrade operational performance, increase users error rates, and reduce revenues by decreasing the ability of employees to handle customer transactions or attract addition clients. For the software industry, not only is quality free, but it benefits the entire economic situations of both developers and clients. The details of exactly how much can be saved through a focus on good quality is seen in the results of industry-wide improvement programs for software.