An Introduction to Software Quality
In two recent papers, David Chappell, Principal of Chappell & Associates, outlines the different aspects of software quality – functional, structural, and process-, the groups of people directly interested in quality –users, developers, and sponsors-, and the outcome of defects in externally or internally facing software over time.
In the paper The Three Aspects of Software Quality: Functional, Structural, and Process (PDF), Chappell outlines three facets of the quality of a software: functional, structural, and process, each one being related in some way to the three groups of people directly interested in the final product or service: users, developers, sponsors. Functional quality expresses how well the software performs the tasks requested by its users. Chappell distinguishes four attributes of this type of software quality:
- The software meets the specified requirements
- It has few defects
- It has reasonable performance
- It is easy to learn and use
Structural quality measures how well the software is organized, being defined by the following attributes:
- Code testability
- Code maintainability
- Code understandability
- Code efficiency – does it manage resources efficiently?
- Code security – does it prevent common security threats?
While functional and structural quality “get the lion’s share of attention in discussions of software quality,” Chappell considers that process quality is also very important, its most known attributes being:
- The software meets delivery dates
- It meets budgets
- A repeatable development process is in place, one that reliably delivers quality software
Chappell considers that users are mostly interested in functional quality, and have some interest in the delivery dates attribute of process quality. Developers care mostly about structural quality, because it has a direct impact on their work, but they also are interested in functional quality, but not as much as the users, and in process quality because “it provides many of the metrics by which they are measured.” The sponsors of a project should care about all aspects of software quality, knowing that each facet has an impact on the final results.
In the paper The Business Value of Software Quality (PDF), Chappell discusses the impact of low quality software on a business. He distinguishes two types of software: externally facing software – used by an organization’s customers, and internally facing software – used by an organization’s own employees.
Chappell recalled the damages following a security breach of Sony’s PlayStation Network in April 2011 when 70 million accounts were compromised due to an exploit of a known security vulnerability in a certain database, and a backup system failure affecting RIM’s customers worldwide for three days in October 2011. Such quality defects have the following impact on the business over time, according to Chappell:
- Financial losses due to lost business
- Financial losses due to reparations needed to be performed
- Financial losses due to lost customers
- Financial losses due to legal lawsuits
- Brand value losses
Lack of quality in internally facing software can lead to the following outcome over time:
- Slower user adoption
- Reduced business benefits
- More challenges for IT leaders
- Lower brand equity for the IT department
- Greater chances for outsourcing the software
All three quality aspects need to be attended to – functional, structural, process – both for internally or externally facing software in order to reach a successful outcome.
Arrows between 3 aspects of quality.
The diagram that shows the relationship between aspects of software quality and the people who care about it has an arrow from Process Quality > Structural Quality > Functional Quality > Users. And, the the circle that represents structural quality has arrows pointing to all people.
Do the arrows in the diagram indicate the relationships between different aspects of quality? If so, how?