Skip to content

Managing Quality throughout the Application Lifecycle

2010 April 7
by Ashish Gupta

The highest priority for every software development organization is delivering quality software.  How is quality in software defined?  The most obvious measure of quality is that the software is reasonably free of defects (commonly referred to as bugs).  Another quality measure is based on how well the software meets requirements and customer expectations.  A third measure of quality is the maintainability of the software.  When software is so complex or poorly written that it’s difficult to change, it becomes nearly impossible to fix defects without introducing new problems.

Targeting Software Defects
Of all the software quality issues, software defects are the costliest.  According to a 2002 study conducted by the U.S. Department of Commerce’s National Institute of Standards and Technology (NIST), software bugs cost the U.S. economy roughly $59 billion per year.  The increasing complexity of software has led to a far great potential for defects, causing the typical software development organization to spend approximately 80% of their costs on finding and fixing defects.

“More than half of the costs are borne by software users, and the remainder by software developers and vendors,” NIST said in summarizing the findings. “More than a third of these costs … could be eliminated by an improved testing infrastructure that enables earlier and more effective identification and removal of software defects.”

You can read the full NIST report here.

A 2008 study conducted by IDC focused on the impact of software defects on 139 U.S. corporate development organizations.  This study found that the cost of fixing defects ranges from $5.2 million to $22 million annually, depending on the size of the organization. A statement issued by IDC summarized the report findings:

“The increased complexity of software development environments and the cost of fixing defects in the field (rather than early in the software cycle) combine in exorbitant ways to drain income and to hamstring businesses as a result of critical software downtime.”

See the full IDC report here.

The purpose of modern development methodologies such as Agile software development is to build quality into the software development process.  Most software organizations have come to the realization that improving software review and testing processes can help reduce the number of defects that are released with a software product.
    
Tracking Software Defects
Even when methodologies such as Agile project management are in place, a certain number of defects will go undetected.  It then becomes critically important to track software defects.  If an organization has no idea how many defects have been found in its software, then it really doesn’t know where it stands in terms of quality.
Software development teams that achieve long-term success define a target number of acceptable defects for product release.  When target defect numbers have been defined, the quality of a software system that’s in development can be determined by comparing the current number of bugs against the target goal.

A software defect tracking system allows a development organization to record, assign and prioritize defects.  It can be used to determine quality metrics such as the rate at which defects are found by testers, resolved by developers and the distribution of defects in different areas of the code.  Once a defect has been assigned and fixed, the defect tracking system can be used to record the cause of the defect.  The information derived from defect causal descriptions can then be used by development managers to help determine which areas of a system are prone to more errors or which teams need additional resources.

Defect trending reports such as those shown below allow managers to measure processes and take appropriate action to improve the overall efficiency and effectiveness of the development organization.

defect-cumulative1

defect-report

Integrating Software Development with Defect Tracking
A common mistake in software development is to work on system implementation for some amount of time and then turn the system over to a quality assurance team for testing.  Due to the complex nature of software development and the tendency of requirements to shift and grow, testing is often squeezed into a brief period of time right before product release.

This approach is no longer viable in the modern world of software development.  In order to meet product release schedules with quality, software defect tracking must be used throughout the software development life cycle.  Organizations that establish interim development milestones with clearly defined defect goals stand a much better chance of avoiding a release delay due to quality issues.

The integration of software development and defect tracking fits well within the Agile process.  Some Agile methodology tools incorporate a defect tracking system that allows development organizations to monitor defects from the time they are reported, associate these with the requirements, and assigned until they are resolved.  Identifying and fixing high priority defects early in the development life cycle will decrease the risk of regressions from fixes turning up in the software product.

WoodRanch Agile Project (WRAP) provides Agile methodology tools that help software development organizations improve productivity and efficiency.  The WRAP toolset includes defect management functions that allow organizations to track the progress of defects throughout the software development life cycle.  With WRAP, defects can be prioritized when found and tracked through resolution, helping organizations to minimize the number of defects in the finished project or product.

case-defects

Defect tracking can play a significant role in reducing the rate at which defects are introduced and the severity of defects.  Effectively tracking defects can reduce costs and improve software quality, resulting in higher customer satisfaction.  Defect tracking also helps management prioritize tasks and monitor the overall quality of a software release.

No comments yet

Leave a Reply

Note: You can use basic XHTML in your comments. Your email address will never be published.

Subscribe to this comment feed via RSS