In the fast-growing software market today, the requirements for quality are growing as well. Also, people expect developers to design apps faster than ever. The use of a flexible architecture and various design techniques can certainly boost the quality to satisfy the end-user. As for formal quality criteria like code metrics, they are still relevant.
With new techniques such as extreme programming or Scrum, development can be done more quickly, and the availability of new platforms and abstraction from the lower levels allow avoiding many mistakes. Nevertheless, quality control should be carried out at a variety of levels – from the methodological to technological level, when quality control processes proceed in automatic mode (e.g., during automatic project builds). However, any control presupposes the presence of metrics that allow you to assess the achievement of the desired application quality.
Experts divide software metrics into several groups to understand which factors to consider while improving the quality.
Some indicators fall into several categories instead of a single one.
What Are the Software Quality Metrics?
So, why do the categories mentioned above matter? Those are metrics used to concentrate on the quality of the applications. Here is what you have to consider:
- Level of product quality
- Quality indicators in the process
- Quality of service metrics
To evaluate the quality, it’s necessary to take into account both external and internal metrics. The first group contains features that can be visible to the eye. In the second category, those are traits visible just to the developers. External factors involve credibility and functionalities that establish the presence and correctness of the product feature implementation. They also include maintenance necessary to measure product resources, such as speed, memory, and environment). External factors also include the applicability of the product – how available for study and use this product is. Finally, this category is about the value of the created product.
As for the internal factors, those are the size and complexity of the product in the first turn. Add style metrics that are used to define approaches and technologies for creating individual components of the product and its documents. It’s vital to decide on all metrics prior to the development itself. The indicators should be included in the project’s requirements and discussed by all team members to make sure that everyone understands their roles.
Product metrics are often described by a set of models to establish various properties, quality model values, or predictions. Measurements are usually taken after calibration of metrics in the early stages of the project. A general measure is the degree of traceability, which is determined by the number of traces traced using UML scenario models and the estimated number of:
- Requirements
- Scenarios and participants
- The objects included in the script
- Parameters and operations of the object, etc.
ISO/IEC 9126−2
A special measure is the level of use of reusable components. It is the ratio of the product’s size – finished components to the size of the system as a whole. This measure is also used in determining the cost and quality of software. Examples of metrics:
- Total number of objects and number of reusables
- Total number of operations, both reused and new operations
- The number of classes that inherit specific operations
- The number of classes on which a given class depends
- Number of class or operation users
As a rule, measures are largely subjective and depend on the knowledge of experts who make quantitative assessments of the attributes of the software’s components.
An example of widely used external program metrics are Halstead metrics, which are characteristics of programs that are determined based on the static structure of a program in a particular programming language: the number of occurrences of the most common operands and operators; the length of the program described as the sum of the number of occurrences of all operands and operators, etc.
Based on these attributes, you can calculate the programming time, the level of the program (structuring and quality) and the programming language (abstractions of language tools and focus on the problem), etc.