Software Quality

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.


Contents


What is good software?

XKCD guide on how to write Good code Source: XKCD #844 by Randall Munroe

What does it mean to say software is “good”? You will probably think of things like:

  • It performs a task accurately and correctly
  • It doesn’t crash, or I won’t lose significant progress if something goes wrong
  • It’s inexpensive to purchase
  • It runs as fast as needed, and doesn’t use up too many computer resources (memory, processor time, etc.)
  • It can work across multiple devices (PC, Phone)
  • The user interface is easy to work with
  • It looks nice visually
  • It gets regular updates to fix bugs, add new features

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:

  • Are there enough clean plates?
  • How many orders are pending?
  • Has any order come back to the kitchen because of an error?

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.

ISO 9126

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.


Previous submodule:
Next submodule: