Quality assurance (QA) is a way of preventing mistakes or defects in manufactured products and avoiding problems when delivering solutions or services to the customers. When you talk about software quality, you’re actually talking about the analysis of the software based on certain attributes. Its quality is based on the study of external and internal features of the software. The user focuses on how the software works at the external level, but the quality at external level are often maintained only if the coder has written a meaningful quality code. The external quality is based on how software performs in real time situation in operational mode and how useful it is. The internal quality focuses on the intrinsic aspects that depend upon quality of the code written.
There are two approaches that are used to determine the quality of the software, they are:
- Defect Management Approach
- Quality Attributes Approach
Anything that is not in line with the requirement of the client can be considered as a defect. The development team fails to fully understand the requirement of their client which leads to design error. Also the error can be caused due to improper data handling, wrong coding or poor functional logic. In order to keep a track of defect a defect management approach can be applied. In defect management, categories of defects are defined based on severity, the number of defects is counted and actions are taken as per the severity defined. Control charts can be created to measure the development process capability.
Quality Attributes Approach
- Functionality: Refers to complete set of important functions that are provided by the software.
- Reliability: This refers to the capability of software to perform under certain conditions for a defined duration. This also defines the ability of the system to withstand component failure.
- Usability: Refers to the ease of use of a function.
- Efficiency: Generally depends on good architecture and coding practices followed while developing software.
- Maintainability: Also known as supportability. It is greatly dependant on code readability and complexity and refers to the ability to identify and fix a fault in a software.
- Portability: Ability of the system to adopt to changes in its environment.