Tuesday, April 26, 2005

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.


Anonymous Anonymous said...

Software quality must also include aspects related to maintainability. We cannot meet our customers' (future) needs if our software is not easily maintained. This leads to questions of readability of code -- not often a concern of programmers, but vital to maintainability. Maintainability concerns also require attention to protective mechanisms, such as the Ada language's built-in exceptions for array overruns. A popular source of pain for maintainers is the ability in many popular languages to inadvertently overrun array bounds.

Friday, May 06, 2005 2:08:00 PM  
Blogger Ronny De Winter said...

As indicated in the Software Quality Iceberg picture above, maintainability and readability are internal software quality attributes. As such problems with them are not found in final system testing. Early lifecycle reviews of design and code are necessary to find and fix issues on internal quality.
Using a robust programming language like Ada indeed helps. Another frequent source of nasty bugs are memory leaks (ie. in C/C++).
I would not generalise that readability of code is not often a concern of programmers. Experienced programmers in mature organisations understand the value of readability and act accordingly.

Friday, May 06, 2005 11:14:00 PM  
Blogger Joshua said...

I can say that a software is of the highest quality if it primarily meets its goals as well as its users' expectation. Getting an ISO certification 9001 is a rigorous process yet yields rewards brought about by high quality.

Getting an ISO registration is one of the ways for developers to be sure that the software they're building is at par with current quality criteria.

Thursday, September 30, 2010 11:11:00 AM  
Anonymous Clark Adams said...

In today's world, software quality has been more meticulous and has become even more customer-centric while being abreast with the latest tech trends, so much that its accreditation has become stricter. I see it as normal though because any facet of business - management, sales, marketing - is just so fast-paced nowadays. Each system used should meet its intended goals efficiently.

Friday, March 25, 2011 11:45:00 AM  

Post a Comment

Read more about Software Quality at the <<Software Quality Weblog Home