How to maintain software quality

Software quality measures if the software meets both its functional and nonfunctional requirements.

Functional requirements identify what the software should do. They include technical details, data manipulation and processing, calculations and any other function that specifies what an application aims to accomplish.

Nonfunctional requirements, also known as quality attributes, determine how the system should work. Nonfunctional requirements include portability, disaster recovery, security, privacy and usability.

Software testing detects and solves technical issues in the software source code and assesses the overall usability, performance, security and compatibility of the product to ensure it meets its requirements.

The dimensions of software quality include the following characteristics:

Accessibility. This is the degree to which a diverse group of people, including individuals who require adaptive technologies such as voice recognition and screen magnifiers, can comfortably use the software.
Compatibility. This is the suitability of the software for use in a variety of environments. Software compatibility is important for different OSes, devices and browsers.
Efficiency. This is the ability of the software to perform well without wasting energy, resources, effort, time or money.
Functionality. This is software’s ability to carry out its specified functions.
Installation. This is the ability of the software to be installed in a specified environment.
Localization. For software to function correctly, it needs localization, which entails the various languages, time zones and other features a software program can works in.
Maintainability. This is how easily the software can be modified to add and improve features and fix bugs.
Performance. This is how fast the software performs under a specific load.
Portability. This is the ease with which the software can be transferred from one location to another.
Reliability. This is the software’s ability to perform a required function under specific conditions and for a defined period without any errors.
Scalability. A software’s ability to increase or decrease performance in response to changes in its processing demands is its scalability.
Security. This is the software’s ability to protect against unauthorized access, invasion of privacy, theft, data loss and malicious software.
Testability. This is how easy it is to test the software.
Usability. This is how easy it is to use the software.