The aim of the software developer is to develop high-quality software within a specified time and budget. To achieve this, software should be developed according to the functional and performance requirements, document development standards, and characteristics expected from professionally developed software. Note that private metrics are collected by software engineers and then assimilated to achieve project-level measures. The main aim at the project level is to measure both the errors and defects. These measures are used to derive metrics, which provide an insight into the efficacy of both individual and group software quality assurance and software control activities.
Many measures have been proposed for assessing software quality such as interoperability, functionality, and so on. However, it has been observed that reliability, correctness, maintainability, integrity, and usability are most useful as they provide valuable indicators to the project team.
- Reliability: The system or software should be able to maintain its performance level under given conditions. Reliability can be defined as the ability of the software product to perform its required functions under stated conditions for a specified period of time or for a specified number of operations. Reliability can be measured using Mean Time Between Failure (MTBF), which is the average of time between successive failures. A similar measure to MTBF is Mean Time To Repair (MTTR) which is the average time taken to repair the machine after a failure occurs. MTBF can be combined with Mean Time To Failure (MTTF), which describes how long the software can be used to calculate MTBF, that is,
- MTBF = MTIF + MTIR.
- Correctness: A system or software must function correctly. Correctness can be defined as the degree to which software performs its specified function. It can be measured in terms of defects per KDLOC. For quality assessment, defects are counted over a specified period of time.
- Maintainability: In software engineering, software maintenance is one of the most expensive and time-consuming activities. Maintainability can be defined as the ease with which a software product can be modified to correct errors, to meet new requirements, to make future maintenance easier, or adapt to the changed environment. Note that software maintainability is assessed by using indirect measures like Mean Time to Change (MTTC), which can be defined as the time taken to analyze change request, design modifications, implement changes, testing, and distribute changes to all users. Generally, it has been observed that programs having lower MITC are easier to maintain.
- Integrity: In the age of cyber-terrorism and hacking, software integrity has become an important factor in the software development. Software integrity can be defined as the degree to which unauthorized access to the components of software (program, data, and documents) can be controlled.
For measuring integrity of software, attributes such as threat and security are used. Threat can be defined as the probability of a particular attack at a given point of time. Security is the probability of repelling an attack, if it occurs. Using these two attributes, integrity can be calculated by using the following equation.
Integrity = ∑/1-(threat*(1-security))] .
- Usability: Software, which is easy to understand and easy to use is always preferred by the user. Usability can be defined as the capability of the software to be understood, learned, and used under specified conditions. Note that software, which accomplishes all the user requirements but is not easy' to use, is often destined to fail.
In addition to the afore-mentioned measures, lack of conformance to software requirements should be avoided as these form the basis of measuring software quality. Also, in order to achieve high quality both explicit and implicit requirements should be considered.
Defect Removal Efficiency (DRE)
Defect removal efficiency (DRE) can be defined as the quality metrics, which is beneficial at both the project level and process level. Quality assurance and control activities that are applied throughout software development are responsible for detecting errors introduced at various phases of SDLC. The ability to detect errors (filtering abilities) is measured with the help of DRE, which can be calculated by using the following equation.
DRE = E/(E + D)
E = number of errors found before software is delivered to the user
D = number of defects found after software is delivered to the user.
The value of DRE approaches 1, if there are no defects in the software. As the value of E increases for a given value of D, the overall value of DRE starts to approach 1. With an increase in the value of E, the value of D decreases as more errors are discovered before the software is delivered to the user. DRE improves the quality of software by establishing methods which detect maximum number of errors before the software is delivered to the user.
DRE can also be used at different phases of software development. It is used to assess the software team's ability to find errors at each phase before they are passed on to the next development phase. When DRE is defined in the context of SDLC phases, it can be calculated by the following equation.
DREi = K/ (Ei + Ei+1)
Ei = number of errors found in phase i
Ei + 1 = number of errors that were ignored in phase i, but found in phase i + 1.
The objective of the software team is to achieve the value of DREi as 1. In other words, errors should be removed before they are passed on to the next phase.