Wednesday, September 26, 2007
The Difference Between Reliability and Quality
byThey sound similar. And they are often used (erroneously) interchangeably. Both terms, reliable and quality, can be used to describe a software application that has a low degree of error. But there is one fundamental difference between the two.
Software Reliability is objective, measurable, and can be estimated, whereas Software Quality is based on primarily subjective criteria.
When looking at software quality, Dr. Scott Pressman, in his book Software Engineering: A Practitioner’s Approach, defines it as the following:
The term “measures” in this definition is slightly misleading in my opinion, since many if not all of the aspects of software quality are entirely subjective. Some of the factors that go into determining software quality are:In the context of software engineering, software quality measures how well software is designed (quality of design), and how well the software conforms to that design (quality of conformance).
- Understandability - Do variables have descriptive names? Are methods commented so that their purpose is clear? Are any deviations in logic flow adequately commented?
- Conciseness - Is all code reachable? Is any code redundant? How many statements within loops could be placed outside the loop, thus reducing computation time? Are branch decisions too complex?
- Portability - Does the program depend upon system or library routines unique to a particular installation? Have machine-dependent statements been flagged and commented?
- Maintainability - Have design patterns that lend themselves to ease of maintainability been employed, (i.e. Code to Interface)?
Reliability, on the other hand, is defined by ANSI as “the probability of failure-free operation of a computer program in a specified environment for a specified time.” It is arguable that Dr. Pressman’s definition can be applied to reliability as well, and this would be the “quality of conformance” half of the equation. This would mean that reliability is simply another factor of quality. However, I tend to separate the two, for one very important reason. Because reliability can be measured with quantitative metrics, two benefits can be realized. 1) The amount of effort needed to achieve a certain threshold of reliability can be estimated in the planning phase. And 2) the reliability of a released application can be objectively measured.
Bottom line, because quality is subjective, there is no way to compare the quality of two software applications, or more importantly, set minimum quality standards for a piece of software. But because measures of reliability are objective and quantitative, you can.