In this module, we will discuss the idea of software quality at a high level. The next two modules will dive deeper into focus on External and Internal software quality.
Source: XKCD #844 by Randall Munroe
What does it mean to say software is “good”? You will probably think of things like:
All of these are often what people think of when they think of when they think of quality. And these are good measure of software quality…from the customer perspective. Now consider from the perspective of a developer.
This may seem an odd perspective to take; if this were a restaurant, we’d say “well, the cook is being paid to make the food, only the customer satisfaction really matters.” But consider that kitchen: what if every morning the chef has to make their own cooking fire using two sticks and some kindling before they could start making food? What if the kitchen has no electricity? What if the restaurant is expected to make french fries, but the cook doesn’t have a fire or oil to cook it in? Well, that cook is likely to be unhappy, and that cook is less likely to be able to serve as many customers, or produce as large a menu the customers want.
In order to serve customers effectively, the kitchen needs to have all the necessary tools for the chef to be productive, and it must be kept clean and in good working order. New kitchen staff must be trained in the tools in the kitchen, they need to be trained on how to keep things clean. If an oven or fryer breaks, it must be replaced. The kitchen must constantly monitor and maintain the state of the restaurant:
Ultimately, we cannot make our customers happy if our kitchen is dingy, dirty, broken, and poorly maintained. So just as important as external software quality (are the diners satisifed) is internal software quality (is the kitchen clean and efficient), because we cannot maintain the former without the latter.
–
Enter the organization ISO, the International Organization of Standardization. ISO organizes experts to develop and publish standards (technical and non-technical) The abbreviation ISO doesn’t directly come from an abbreviation in any one language, but rather from the Greek “isos”, meaning equal. ISO 9126 is an internal standard for the evaluation of software quality. ISO 9126 broke software quality down into external and internal measures of quality.
In the next two modules, we will discuss External Software Quality and Internal Software Quality.