Tuesday, January 03, 2006

Software Quality - An Overview

Software quality is a field of study and practice that describes the desirable attributes of software products.

There are two basic apporoaches to Software Quality:

Defect Management Based Approach

A software defect can be regarded as any failure to address the end-user's requirements. Common defects include missed or misunderstood requirements and errors in design, functional logic, data relationships, process timing, validity checking, coding, etc.

The defect management approach is based on counting and managing defects. Defects are commonly categorized by severity, and the numbers in each category are used for planning. More mature software development organizations use tools such as defect leakage matrices (for counting the numbers of defects that pass through development phases prior to detection) and control charts to measure and improve development process capability.

Quality Attributes Approach

This approach to software quality is best exemplified by fixed quality models, such as ISO/IEC 9126. This standard describes a hierarchy of six quality characteristics, each composed of sub-characteristics:

  • Functionality: This attributes determines the ability of the software to confirm to the functional requirements of the end-user. In short, the functionality of a software is directly related to the satisfaction of the client, when he first see's the software product/service.

  • Reliability: The probability that software will not cause the failure of a system for a specified time under specified conditions. The probability is a function of the inputs to and use of the system in the software. The inputs to the system determine whether existing faults, if any, are encountered. (2) The ability of a program to perform its required functions accurately and reproducibly under stated conditions for a specified period of time.

  • Usability: Software Usability usually refers to the elegance and clarity with which the user interface of a software. Complex computer systems are finding their way into everyday life, and at the same time the market is becoming saturated with competing brands. This has lead to usability becoming more popular and widely recognised in recent years as companies see the benefits of researching and developing their products with user-oriented instead of technology-oriented methods.

  • Efficiency: Efficiency in software perspective is the effectiveness of the present systems and services in place in software development. Efficient Software Systems provides innovative software solutions for business process management. Companies can improve their performance by solving work coordination and communication problems through software systems and services.

  • Maintainability: Maintainability is the ease of maintainance of a software once it is installed. For example, an Application designed in an Object Oriented Programming language is more maintainable than an Application written in a legacy programming language.

  • Portability: Portability is the ease with which a software can be distributed across various Operating Systems, Hardware Profiles, Web Browsers etc. For example a Java based application has greater portability than a .NET based application, since the former can run across various operating system, while the latter can run only on a Microsoft Windows based operating system

Though a fixed software quality model is often helpful for considering an overall understanding of software quality, in practice the relative importance of particular software characteristics typically depends on software domain, product type and intended usage. Thus, software characteristics should be defined for, and used to guide the development of, each product.

Quality function deployment provides a process for developing products based on characteristics derived from user needs.

In conclusion, software quality is the set of characteristics of a product which can be assigned to requirements. In addition to this, we also need to take in account, the characteristics that are not related to requirements: Characteristics, which reduce the software quality (contra-productive characterisics) and neutral characteristics, which are not relevant for quality. It is clear that not only the presence of characteristics is important, but also the absence of these contra-productive characteristics is also required for a software product to have a good quality.


Blogger Marc said...

I read your blog and it is really connected to a new business that I am working on.I am currently refining my business idea by doing an international survey.
This survey assesses which tools are used today in software developments to assess/increase their quality,

You need only 3 minutes to answer and your will:

1/ Get the results of this survey with you so you will know what are the current practices all over the world

2/ Be astonished by information on viral marketing and how it works: as I use it to spread the word about my survey,
using mainly my friends, their friends, etc. So you will know how fast it’s spread, where and which media are the best ones, etc.

3/ Have a chance to win a magnum of champagne by betting on how many people will reply to my questionnaire.

To answer: http://membres.lycos.fr/monquestionnaire/

All the details on my blog: http://1-2-3-go.typepad.com/

Thanks for you help and please ask your friends working involved in software development to answer.

12:38 AM  

Post a Comment

<< Home