DevTeam Blog

About Software Maintainability

29 Oct 2014

By Pablo Acuña

Maintainability is an important factor in software development. As developers, we need to ensure the best quality in our products in the event that other developers must continue developing the product at a later stage. It’s hard to define maintainability, but some questions that can indicate how maintainable our software is, are:

The easiest way to evaluate the quality of a product is to use Quality Models. But we can’t just use any model. We need to choose wisely and then adapt it to the context of the product.

A typical and widely used standard is the ISO 9126, recently updated and renamed to ISO/IEC 25010. This upgraded version contains new characteristics that are more relevant to current software systems.

The ISO/IEC 25000 standard consists of 5 divisions:

In order to realize an evaluation, we can take the quality model in the quality model division, choose the characteristics and sub characteristics that are relevant to our product, and then find metrics that can give us objective results for the software. We also can realize a formal evaluation using the guides present in the Quality Evaluation Division.

The ISO/IEC 25010 model consists of the following characteristics:

Our main focus is on maintainability, which consists of:

With these sub characteristics we can start to choose metrics. Some examples are:

There are many alternatives that can help us to obtain these metrics. The most-used ones are static program analyzers. This type of software can bring a huge benefit to the quality of the product if is used and interpreted properly.

It’s important to notice that these measures should not be performed by someone who doesn’t understand the software architecture and metrics correctly, especially since some should not be applied without previous analysis. For example, is not the same to analyse server-side code heavily object-oriented and client-side not object-oriented (like Javascript). There are different metrics for different purposes and that is when experience and expertise play a huge role.

Developers should be aware of this software quality characteristics in order to build better software and reach a high level of maintainability on their products. When the software is maintainable, not only is good for the authors, but also for the future developers that will work on the code source.

comments powered by Disqus