Software Quality is a term coming from Software Engineering. It means how high the quality of our software is? Of course the quality of software can not be determined by only one single factor. There are numerous factors that must be taken into account.
Internal vs. External factors
All the factors can be divided into two distinct categories: internal factors and external factors.
External factors: external to the software. Meaning, factors that reflected in how the software is operating. Even a person with no knowledge in coding or that can not view the code can evaluate their quality.
Internal factors: internal to the software.Meaning, factors that depend heavily in the way the software is written, the quality of the code itself. Those factors can only be evaluated by a person who has access to the code and has enough knowledge in coding to understand what he sees.
The final user only cares about the external factors. However, to the maintainer, or the person that extend the system – it is a completely different story.
The 4 main Factors
- Correctness – the software ability to perform its exact tasks as defined by its specifications (external). Meaning, the software is capable of doing exactly was it should do.
- Robustness – the ability of software systems to react appropriately to abnormal conditions (external). Meaning, in case we will encounter an end case or some unexpected situation the system will know how to function, and will not freeze or get stuck.
- Extendibility – the ability to adapt the software system to changes of specification (internal). Meaning, the ease of changing / adapting the code to new specifications / demands.
- Reusability – The ability of software elements to serve for the construction of many different applications (internal). Meaning, how easy it is to reuse parts of the code in other systems, instead of re-coding them.
Software Quality Minor Factors
- Compatibility – ease of combining software elements with others (internal).
- Efficiency – few demands as possible on the hardware resources (external).
- Portability – ease of transferring software elements to various hardware and software environments (both internal and external).
Ease of use – the ease of which people from various qualifications can learn to use the software (external).