Monday, 24 September 2012

What is Quality in Terms of Software?


First I would like to highlight the question what is Quality? Quality definitions may differ from person to person. But finally there should be some standards. So Quality can be defined as

a.       Degree of excellence – Oxford dictionary
b.      Fitness for purpose – Edward Deming
c.       Best for the customer’s use and selling price – Feigenbaum
d.      The totality of characteristics of an entity that bear on its ability to satisfy stated or implied needs - ISO

-There are two important views on quality of software:

  1. The producer’s view of quality of software means meeting the requirements.
&
  1. Customer’s/User’s view of quality of software means fit for use or Required functionality is provided with user friendly manner.
These two definitions are not inconsistent. Meeting requirements is the producer’s definition of quality; it means that the person building the software builds it in accordance with requirements. The fit for use definition is a user’s definition of software quality; it means that the software developed by the producer meets the user’s need regardless of the software requirements.

The Two Software Quality Gaps

In most IT groups, there are two gaps as illustrated in “Figure”, the different views of software quality between the customer and the producer.


Figure:  The Two Software Quality Gaps

The first gap is the producer gap. It is the gap between what is specified to be delivered, meaning the documented requirements and internal IT standards, and what is actually delivered. The second gap is between what the producer actually delivers compared to what the customer expects. A potential role of software testing becomes helping to close the two gaps.

The IT quality function must first improve the processes to the point where IT can produce the software according to requirements received and its own internal standards. The objective of the quality function closing the producer’s gap is to enable an IT function to provide its user consistency in what it can produce. Usually, we call this the “McDonald’s effect.” This means that when you go into any McDonald’s in the world, a Big Mac should taste the same. It doesn’t mean that you as a customer like the Big Mac or that it meets your needs, but rather, that McDonald’s has now produced consistency in its delivered product. To close the customer’s gap, the IT quality function must understand the true needs of the user. This can be done by the following:

• Customer surveys
• JAD (joint application development) sessions – the producer and user come together and negotiate and agree upon requirements
• More user involvement while building information products

It is accomplished through changing the processes to close the user gap so that there is consistency, and producing software and services that the user needs. Software testing professionals can participate in closing these “quality” gaps.
These are some quality definitions from different perspective. Now let’s see how can one measure some quality attributes of product or application.
Following factors are used to measure software development quality. Each attribute can be used to measure the product performance. These attributes can be used for Quality assurance as well as Quality control. Quality Assurance activities are oriented towards prevention of introduction of defects and Quality control activities are aimed at detecting defects in products and services.
  • Functionality - A set of attributes that bear on the existence of a set of functions and their specified properties. The functions are those that satisfy stated or implied needs.
    1. Suitability
    2. Accuracy
    3. Interoperability
    4. Security
    5. Functionality Compliance
  • Reliability - A set of attributes that bear on the capability of software to maintain its level of performance under stated conditions for a stated period of time.
    1. Maturity
    2. Fault Tolerance
    3. Recoverability
    4. Reliability Compliance
  • Usability - A set of attributes that bear on the effort needed for use, and on the individual assessment of such use, by a stated or implied set of users.
    1. Understandability
    2. Learnability
    3. Operability
    4. Attractiveness
    5. Usability Compliance
  • Efficiency - A set of attributes that bear on the relationship between the level of performance of the software and the amount of resources used, under stated conditions.
    1. Time Behavior
    2. Resource Utilization
    3. Efficiency Compliance
  • Maintainability - A set of attributes that bear on the effort needed to make specified modifications.
    1. Analyzability
    2. Changeability
    3. Stability
    4. Testability
    5. Maintainability Compliance
  • Portability - A set of attributes that bear on the ability of software to be transferred from one environment to another.
    1. Adaptability
    2. Installable
    3. Co-Existence
    4. Replaceable
    5. Portability Compliance
Applying above quality attributes standards we can determine whether system meets the requirements of quality or not. As specified above all these attributes are applied on QA and QC process so that tester or customer also can find quality of application or system.

For More Information:
Quality Models:

ISO – 9126
http://www.angelfire.com/nt2/softwarequality/ISO9126.pdf