Announcing Stack Overflow Documentation



Sign up and start helping → Learn more about Documentation →

There are quite a few questions on measuring and proving software quality here, however, to this point, there was no formal definition of software quality itself on Stackoverflow:

Please give formal, all encompassing definition of software product quality.

Since the question is fairly generic I am happy to keep accepting a better definition each time it is submitted. It is OK to copy the gist of previously submitted answer as long as you can add something valuable to it.

share|improve this question
@Totophil - I suggest that your question should be modified slightly as there is indeed a formal definition: ISO 9126. I believe your question does however have great merit in formalizing software quality as a more accessible resource in Stack Overflow – Tom Carter Oct 13 '08 at 10:13
Text should be "the gist of a previously" instead of "the jest of previously"; and "valuable" instead of "valueable" :) – MDCore Oct 13 '08 at 10:20

12 Answers 12

up vote 5 down vote accepted

Here's what Wikipedia has to say about software quality.

The article lists several definitions and views on software quality. Closest it comes to Software Product Quality is

Conformance to requirements or program specification; related to Reliability.

Reliability is "the probability of failure-free operation of a computer program in a specified environment for a specified time."

Along with product quality it lists:

  • Scalability
  • Correctness
  • Completeness
  • Absence of bugs
  • Fault-tolerance
  • Extensibility
  • Maintainability
  • Documentation

A quality factor is defined by "a non-functional requirement for a software program which is not called up by the customer's contract, but nevertheless is a desirable requirement which enhances the quality of the software program." Here's the list:

  • Understandability
  • Completeness
  • Conciseness
  • Portability
  • Consistency
  • Maintainability
  • Testability
  • Usability
  • Reliability
  • Structuredness
  • Efficiency
  • Security

Edit: Clarified what quality factors are supposed to mean.

I once heard that quality is like Oxygen. When it's there, you take it for granted. When it's not there, you'd notice it and you complain. So it may be easier to define quality from the stand point of what "bad quality" software is. For example, an insecure online bank website would be a "low quality" product.

share|improve this answer
While these factors can and do affect the quality of a software product, the sum of them do not garauntee a quallity product. – Shane MacLaughlin Oct 13 '08 at 9:26
Quality factors are the categorization of elements of software that can be thought of having a level of quality. They are defined so that quality can be measured according to identified criteria. They permit the comparison of quality (based on a single set of criteria and metrics) – Tom Carter Oct 13 '08 at 9:36
@Tom, true of course, but while these metrics can provide value, they don't necessarily make for a 'good product'. A brilliantly implemented yet ill conceived software product is still a bad product, and none of the above measures will fix it. – Shane MacLaughlin Oct 13 '08 at 9:44
@smacl, please read the definition of a quality factor. It is not meant to serve as something to guarantee a quality/good product. – Eugene Yokota Oct 13 '08 at 9:50
@smacl - I agree - and according to the formal definition ISO 9126 (see my post below) Suitability is indeed a defined Quality factor and I would suggest that a poor rating for this would indeed outway the other factors – Tom Carter Oct 13 '08 at 9:54

A formal definition of software quality is in fact available in the form of ISO-9126 as referenced by the wikipedia article: http://en.wikipedia.org/wiki/ISO_9126

http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=22749 defines the quality model

share|improve this answer

A quality software product must

  • do what it should, and only this (no side effects, no bugs)
  • be usable for the intended audience
  • be maintainable for the programmers intended to do so
  • not make the system it is running on less secure

EDIT: (Things like documentation, portability, efficiency etc. are desirable bonus values, but not required to make it "quality", but to make it comparable, IMHO)

share|improve this answer
I voted for this primarily on the first two points. The maintainability and security IMO fall in with the other desirable bonus factors. – Shane MacLaughlin Oct 13 '08 at 9:23
If you are very strict on it, yes. At least the security point is a strong must-have for me, and the maintainability point... well is is not much of a software product if no-one is gonna maintain it. But this is more on the desirable bonus side, really. – Tomalak Oct 13 '08 at 9:27
The point about the quality factors is that they divide the software up into measurable units. You then weigh the factors accordingly for your specific situation. If security is important for your specific situation then your conclusion will be mostly influenced by that quality factor – Tom Carter Oct 13 '08 at 9:43

Our programs are FUN to use.

Our instructions are CLEAR and complete.

share|improve this answer
The picture can’t be displayed anymore. – Xufox Jun 26 at 5:58

Software product quality is the inverse of the rate at which software product defects are noticed.

This does not mean that if no bugs are reported you have good quality, because you might have made it too difficult to report problems. Also, if a problem exists, but isn't actively noticed, it does not affect quality much, but if it is noticed constantly, it is a major quality influence. A button that is badly misaligned seriously degrades quality, even if it does not affect functionality.

Since it is often the user who notices a defect, it also doesn't matter whether something is a bug or a feature according to the developer. If the user perceives something to be a defect, it is a defect, whether in user training, user documentation, user interface or actual functionality.

share|improve this answer

There is no one answer to this and many accepted answers directly contradict one another. Some popular ones include;

"Quality is value to some person or persons" - Jerry Weinberg, in Quality Software and Testing, April 2006

"Quality is conformance to standards" - Philip Crosby

"Quality is the ability to stay in business" - Demming

We had a good discussion on this over at SQAforums here. The broad consensus is that quality is largely subjective. Personally, I go with Jerry Weinbergs take on it.

share|improve this answer

My favourite quote regarding quality is:

Quality is never an accident; It is always the result of high intention, sincere effect, intelligent direction and skillful execution; it represents the wise choice of many alternatives.

share|improve this answer

Product quality is a multitude of all its functional and non-functional characteristics. The measure of quality varies depending on the context of the actual product use.

A software product can be characterised by:

  • Functional attributes (or what work the product performs)

  • Non-functional attributes (product properties other than work it performs)

    a) Look and Feel

    b) Usability and Humanity

    c) Performance

    d) Operational

    e) Maintainability and Support

    f) Security

    g) Cultural and Political

    h) Legal

Classification of functional and non-functional properties as suggested by James and Suzanne Robertson http://www.volere.co.uk

share|improve this answer

If I was to slap a metric on quality, I think the best external metric is "how much are people willing to pay for it". No one wants to pay for lousy product.

share|improve this answer

There is a nice little PowerPoint presentation on this from Winthrop University with some good examples and definitions. You might find it useful.

share|improve this answer

Software quality may depend upon two criteria such as following:

  1. Outcome of interaction with external users
  2. Outcome of interaction with internal stakeholders

Both of the above have characteristics that can be used to determine the overall quality of a software. In nutshell, it may not be a nice idea to provide a generic definition of software quality. Different software serve different purpose and may have different quality requirements. For example, Google as search engine can be termed as a very high quality software from relevance of search, and speed with which search results are obtained. However, if one considers look & feel as the criteria, it is not the most beautiful looking design.

You may want to check the details on software quality definition on this page.

share|improve this answer

Software quality is defined as conformance to explicitly stated functional and non-functional requirements, explicitly documented development standards, and implicit characteristics that are expected of all professionally developed software

share|improve this answer

Your Answer


