Monday, October 30, 2006

What is Software Quality ?

Definitions of Quality:
(IEEE 610.12-1990) Standard Glossary of Software Engineering Terminology:

"the degree to which a system. component, or process meets (1) specified requirements, and (2) customer or user needs or expectations".

(ISO 9003-3-1991) Guidelines for the application of ISO 9001 to the Development, Supply and Maintenance of Software:

"the totality of features and characteristics of a product or service that bear on its ability to satisfy specified or implied needs".

Meeting customer needs is key in these definitions. But only with adequate quality assurance techniques quality can give you a competitive advantage.
One could argue that "the quality of your software makes your customers happy" or "the customers define the quality of your software" ? For the latter, throwing a lot of testing at the product can improve your external quality to an extend that it is satisfactory for you customers, however at a significant cost.
Testing shows you the (lack of) external quality: correctness, efficiency, reliability. External quality displays the visible symptons when there are issues, but the roots are invisible internal quality attributes: program structure, complexity, coupling, testability, reusability, readability, maintainability, ...
A nice metaphore is the Software Quality Iceberg (Code Complete, Steve McConell)
Software Quality Assurance (SQA) is the set of methods used to improve internal and external qualities. SQA aims at preventing, identifying and removing defects throughout the development cycle as early as possible, as such reducing test(!) and maintenance costs.

No comments: