A software quality factor is a non-functional requirement for a software program which is not called up by the customer's contract, but nevertheless is a desirable requirement which enhances the quality of the software program.
Understandability
is possessed by a software product if the purpose of the product is clear. This
goes further than just a statement of purpose - all of the design and user
documentation must be clearly written so that it is easily understandable. This
is obviously subjective in that the user context must be taken into account,
i.e. if the software product is to be used by software engineers it is not
required to be understandable to the layman.
A software product
possesses the characteristic completeness to the extent that all of
its parts are present and each of its parts is fully developed. This means that
if the code calls a sub-routine from an external library, the software package
must provide reference to that library and all required parameters must be
passed. All required input data must be available.
A software product
possesses the characteristic conciseness to the extent that no
excessive information is present. This is important where memory capacity is
limited, and it is important to reduce lines of code to a minimum. It can be
improved by replacing repeated functionality by one sub-routine or function
which achieves that functionality. It also applies to documents.
A software product
possesses the characteristic portability to the extent that it can
be operated easily and well on computer configurations other than its current
one. This is particularly important with PC applications where, for example, a
product is expected to work on all 80486 processors.
A software product
possesses the characteristic maintainability to the extent that it facilitates
updating to satisfy new requirements. Thus the software product which is
maintainable should be well-documented, not complex, and should
have spare capacity for memory usage and processor speed.
A software product
possesses the characteristic testability to the extent that it
facilitates the establishment of acceptance criteria and supports evaluation of
its performance. Such a characteristic must be built-in during the design phase
if the product is to be easily testable - a complex design leads to poor
testability.
A software product
possesses the characteristic usability to the extent that it is
convenient and practicable to use. This is affected by such things as the
human-computer interface. The component of the software which has most impact on
this is the graphical user interface (GUI).
A software product
possesses the characteristic reliability to the extent that it can
be expected to perform its intended functions satisfactorily. This implies a
time factor in that a reliable product is expected to perform correctly over a
period of time. It also encompasses environmental considerations in that the
product is required to perform correctly in whichever conditions it finds itself
- this is sometimes termed robustness.