Abstract

The interplay between Maintainability and Reliability can be particularly complex and different kinds of trade-offs may arise when developers try to optimise for either one of these two qualities. To further understand how Maintainability and Reliability influence each other, we perform an empirical study using architectural smells and source code file co-changes as proxies for these two qualities, respectively. The study is designed using an exploratory multiple-case case study following well-know guidelines and using fourteen open source Java projects. Three different research questions are identified and investigated through statistical analysis. Co-changes are detected by using both a state-of-the-art algorithm and a novel approach. The three architectural smells selected are among the most important from the literature and are detected using open source tools. The results show that 50% of co-changes eventually end up taking part in an architectural smell. Moreover, statistical tests indicate that in 50% of the projects, files and packages taking part in smells are more likely to co-change than non-smelly files. Finally, co-changes were also found to appear before smells 90% of the times a smell and a co-change appear in the same file pair. Our findings show that Reliability is indirectly affected by low levels of Maintainability even at the architectural level. This is because low-quality components require more frequent changes by the developers, increasing chances to eventually introduce faults.

Highlights

  • The interplay between design-time (e.g. Maintainability) and runtime qualities (e.g. Reliability) can be complex: when developers try to optimise for either one of these two types of qualities, important trade-offs may arise

  • Lower percentages are instead detected when Dynamic Time Warping (DTW) is used to detect the co-changes and only 3 projects exhibit 50% or more of co-changing pairs affected by architectural smells

  • Only 2 projects exhibit smelly file pairs with more than 25% pairs that co-change according to the Fuzzy Overlap (FO) algorithm

Read more

Summary

Introduction

The interplay between design-time (e.g. Maintainability) and runtime qualities (e.g. Reliability) can be complex: when developers try to optimise for either one of these two types of qualities, important trade-offs may arise. This paper focuses on one such aspect: the interplay between Reliability and Maintainability, by studying co-changes and architectural smells as their proxies, respectively. We elaborate on both proxies in the following paragraphs. Answering RQ3 requires to determine when a pair of smelly source code files has started co-changing and when the smell affecting them was introduced. After determining this information, we partition our data set into three groups: 1. Co-changes and smells that have no overlap are left out of this analysis

Objectives
Methods
Results
Discussion
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call