tags:

views:

1475

answers:

9

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.

+4  A: 

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)

Tomalak
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
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
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
+2  A: 

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.

eed3si9n
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
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
@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
@smacl, please read the definition of a quality factor. It is not meant to serve as something to guarantee a quality/good product.
eed3si9n
@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
Smacl and Tom Carter agree with both about suitability, I am going to amend my definition to include it. :-P
Totophil
@eed3si9, the question asked here relates to software product quality, not quality factors. IMHO, software quality is determined by the market, i.e. if the users like it, it has quality, if they don't like it, it is not a good product. These factors can help this but they do not assure it.
Shane MacLaughlin
@smacl, IMO quality is just one component of a good solution. Schedule/timing, value/relevance/validity of the requirements/business needs, pricing, market are some of the other components. You can have high-quality, on-time, and irrelevant solutions. Like a website when you need a hammer.
eed3si9n
There are in fact 3 axes in software development graph : Quality (which includes suitability), Cost and Time. A customer might be happy to sacrifice high quality for lower cost or be prepared to spend a lot of money to have a low quality system in place quickly !
Tom Carter
@Tom: Quality, Scope, Cost and Time. :-) Scope questionably can be included into wider definition of quality.
Totophil
@eed3si9, it depends on your definition of quality. If you go with Weinberg's definition, which after much consideration would be my personal choice, quality equates to subjective value. Thus you can't have high-quality, on-time, and irrelevant solutions as quality demands a subject.
Shane MacLaughlin
+1  A: 

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.

Joeri Sebrechts
+1  A: 

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.

Shane MacLaughlin
+4  A: 

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

Tom Carter
+3  A: 

Our programs are FUN to use.

Our instructions are CLEAR and complete.

Jeff Atwood
A: 

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

Totophil
A: 

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.

selwyn
A: 

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.

Paul Nathan