Monday, February 26, 2007

How do you define software quality?

ISO 9126 provides a standardized way to evaluate software quality by defining six sets of attributes by which we can evaluate software. These attribute sets are functionality, reliability, usability, efficiency, maintainability, and portability. What do they mean by these standards?

Functionality refers to the existence of a set of functions and their associated properties. Functionality gets to the fundamental ability of a software application to perform the required tasks necessary to satisfy user and organizational needs.

Reliability refers to the stable performance of these functions under a variety of conditions across time.

Usability as approached by ISO 9126 deals with the effort needed for use, and user assessment and acceptance.

Efficiency is all about performance issues and the resources required to perform the software functions under various conditions over time.

Functionality, reliability, usability and efficiency are all characteristics observable by users or operators. The other two criteria for measuring software quality that are contained in ISO 9126 relate to the developers ability to interact with a given software application. It isn't only an assessment of the tools used, but also how well the tools were used to accomplish the need for these next criteria:

Maintainability looks at the effort required to make specific modifications. We all know that some applications are easier to maintain than others due to variations in documentation, organization and software architecture.

Portability, or the ability to run applications in new environments, can also be impacted by the developer, and not simply by the tools she uses. For example, an application that utilizes many environment specific utilities may be more difficult to port to a new environment where those utilities may be unavailable or handled in a different manner.

With eDeveloper V10, you gain a software development environment for application development, testing, and deployment that enhances software quality in all of these areas for a number of reasons. In future posts, will look at all of these areas in detail.