Quality software refers to a software which is reasonably bug or defect free, is delivered
in time and within the specified budget, meets the requirements and/or expectations, and
is maintainable. In the software engineering context, software quality reflects both
functional quality as well as structural quality.
Software Functional Quality ─ It reflects how well it satisfies a given design,
based on the functional requirements or specifications.
Software Structural Quality ─ It deals with the handling of non-functional
requirements that support the delivery of the functional requirements, such as
robustness or maintainability, and the degree to which the software was produced
correctly.
Software Quality Assurance ─ Software Quality Assurance (SQA) is a set of
activities to ensure the quality in software engineering processes that ultimately
result in quality software products. The activities establish and evaluate the
processes that produce products. It involves process-focused action.
Software Quality Control ─ Software Quality Control (SQC) is a set of activities
to ensure the quality in software products. These activities focus on determining
the defects in the actual products produced. It involves product-focused acction.
The Software Quality Challenge
In the software industry, the developers will never declare that the software is free of
defects, unlike other industrial product manufacturers usually do. This difference is due to
the following reasons.
Product Complexity
It is the number of operational modes the product permits. Normally, an industrial product
allows only less than a few thousand modes of operation with different combinations of its
machine settings. However, software packages allow millions of operational possibilities.
Hence, assuring of all these operational possibilities correctly is a major challenge to the
software industry.
Product Visibility
Since the industrial products are visible, most of its defects can be detected during the
manufacturing process. Also the absence of a part in an industrial product can be easily
detected in the product. However, the defects in software products which are stored on
diskettes or CDs are invisible.
Product Development and Production Process
In an industrial product, defects can be detected during the following phases:
Product development: In this phase, the designers and Quality Assurance (QA)
staff checks and tests the product prototype to detect its defects.
1
, Product production planning: During this phase, the production process and
tools are designed and prepared. This phase also provides opportunities to inspect
the product to detect the defects that went unnoticed during the development
phase.
Manufacturing: In this phase, QA procedures are applied to detect failures of
products themselves. Defects in the product detected in the first period of
manufacturing can usually be corrected by a change in the product’s design or
materials or in the production tools, in a way that eliminates such defects in
products manufactured in future.
However, in the case of software, the only phase where defects can be detected is the
development phase. In case of software, product production planning and manufacturing
phases are not required as the manufacturing of software copies and the printing of software
manuals are conducted automatically.
The factors affecting the detection of defects in software products versus other industrial
products are shown in the following table.
These characteristics of software such as complexity and invisibility make the development
of software quality assurance methodology and its successful implementation a highly
professional challenge.
2