Ask 10 IT managers what their top three objectives are for a software development project, and you'll probably find that quality is on all of their lists. However, if you ask the same managers to define quality, chances are, you'll receive 10 different answers.

There are many definitions because quality is such a ubiquitous goal in software engineering. For example, a project manager may view quality as meeting project requirements on time and within budget. Conversely, an application development manager may view software quality as error-free code.

While both views are valid, a more precise definition that has its roots in object-oriented development methodologies incorporates the notion of quality attributes. The idea is that there are a number of distinct and measurable elements or attributes that make up the concept of quality. On any given software project, these attributes get various levels of importance during the requirements' solicitation and prioritisation phases. During the product design and development phase, the project team concentrates on meeting these quality attributes.

Therefore, the quality value of the software product is a measure of how well (or to what extent) the software product realises the required set of quality attributes. The following list identifies a number of primary quality attributes that IEEE, ISO, and others define.

  • Correctness: the extent to which the product meets requirements
  • Availability/dependability/reliability: the extent to which the product operates or performs its stated function without error or is available to perform its purpose
  • Efficiency/performance: the extent to which the software performs its function in relation to the optimised use of resources
  • Modifiability/maintainability/extensibility/portability: the extent to which a software system can be easily supported, modified, or ported to new environments
  • Usability/learnability: the ease at which an intended user can learn to operate the product, access information, and interpret system artifacts
  • Testability: the ease and extent to which the software product can be tested
  • Security: the extent to which security functionality is incorporated into the product

By placing emphasis on quality attributes as our mechanism for determining product quality, we increase the need to acquire this information earlier in the project. For example, on an e-commerce storefront project, security may be a primary quality attribute, whereas extensibility may be a low priority. By methodically identifying and receiving commitment (from project stakeholders) about which attributes are important, project architects can make intelligent design decisions for the ultimate system.

If we take this line of logic one step further and assume that there is a finite set of design decisions or "patterns" that relate to optimising a particular quality attribute, then we can begin to build a knowledge base of design best practices to meet individual project requirements. This is the basis for the object-oriented architecture "design patterns" paradigm.

Examining the quality attributes of a software system is just one slice of what is considered the domain of quality software engineering. Another element is the processes behind the standardisation of quality methods followed by development organisations. Together these elements make up the basis for organisational quality certifications, such as SEI's Capability Maturity Model for Software and ISO 900*.

Scott Withrow has more than 20 years of IT experience, including IT management, Web development management, and internal consulting application analysis.

Related links

Log in


Sign up | Forgot your password?

What's on?

  • Optus Deal

    Broadband + home phone + PlayStation®3 in a single package price!