Software Quality

Note: Much of this is based upon writings of Bertrand Meyer.

In assessing a product such as an automobile, we judge it according to whether or not (or to what degree) it possesses certain properties that are deemed to be important. Among the properties in which most people are interested are reliability, safety, fuel efficiency, ease of handling, smoothness of ride, passenger space, storage space, etc. Of course, people differ in which properties they value and how much they value them. Also, different vehicles are intended to be used for different purposes. As a result, each kind of automobile is designed to possess certain desirable qualities at the expense of lacking others. For example, an SUV has more storage space than a typical sedan but less fuel efficiency.

Similarly, we assess a software "artifact" according to the degree to which it possesses those properties deemed to be important in the realm of software. What are some of these properties? They include the following:

Correctness and robustness together yield reliability. Extendability and reusability together yield modularity.

Note that the relative importance of these qualities differs according to the intended purpose of the software. For example, robustness is of extreme importance in "safety-critical" software (such as that controlling a nuclear reactor or a space shuttle in flight), but not so important in a computer game.