1,501 research outputs found
Technical Debt Prioritization: State of the Art. A Systematic Literature Review
Background. Software companies need to manage and refactor Technical Debt
issues. Therefore, it is necessary to understand if and when refactoring
Technical Debt should be prioritized with respect to developing features or
fixing bugs. Objective. The goal of this study is to investigate the existing
body of knowledge in software engineering to understand what Technical Debt
prioritization approaches have been proposed in research and industry. Method.
We conducted a Systematic Literature Review among 384 unique papers published
until 2018, following a consolidated methodology applied in Software
Engineering. We included 38 primary studies. Results. Different approaches have
been proposed for Technical Debt prioritization, all having different goals and
optimizing on different criteria. The proposed measures capture only a small
part of the plethora of factors used to prioritize Technical Debt qualitatively
in practice. We report an impact map of such factors. However, there is a lack
of empirical and validated set of tools. Conclusion. We observed that technical
Debt prioritization research is preliminary and there is no consensus on what
are the important factors and how to measure them. Consequently, we cannot
consider current research conclusive and in this paper, we outline different
directions for necessary future investigations
Automatic Detection of GUI Design Smells: The Case of Blob Listener
International audienceGraphical User Interfaces (GUIs) intensively rely on event-driven programming: widgets send GUI events, which capture users' interactions, to dedicated objects called controllers. Controllers implement several GUI listeners that handle these events to produce GUI commands. In this work, we conducted an empirical study on 13 large Java Swing open-source software systems. We study to what extent the number of GUI commands that a GUI listener can produce has an impact on the change-and fault-proneness of the GUI listener code. We identify a new type of design smell, called Blob listener that characterizes GUI listeners that can produce more than two GUI commands. We show that 21 % of the analyzed GUI controllers are Blob listeners. We propose a systematic static code analysis procedure that searches for Blob listener that we implement in InspectorGuidget. We conducted experiments on six software systems for which we manually identified 37 instances of Blob listener. InspectorGuidget successfully detected 36 Blob listeners out of 37. The results exhibit a precision of 97.37 % and a recall of 97.59 %. Finally, we propose coding practices to avoid the use of Blob listeners
On the relation between architectural smells and source code changes
Although architectural smells are one of the most studied type of architectural technical debt, their impact on maintenance effort has not been thoroughly investigated. Studying this impact would help to understand how much technical debt interest is being paid due to the existence of architecture smells and how this interest can be calculated. This work is a first attempt to address this issue by investigating the relation between architecture smells and source code changes. Specifically, we study whether the frequency and size of changes are correlated with the presence of a selected set of architectural smells. We detect architectural smells using the Arcan tool, which detects architectural smells by building a dependency graph of the system analyzed and then looking for the typical structures of the architectural smells. The findings, based on a case study of 31 open-source Java systems, show that 87% of the analyzed commits present more changes in artifacts with at least one smell, and the likelihood of changing increases with the number of smells. Moreover, there is also evidence to confirm that change frequency increases after the introduction of a smell and that the size of changes is also larger in smelly artifacts. These findings hold true especially in Medium–Large and Large artifacts
A Study on Architectural Smells Prediction
Architectural smells can be detrimental to the system maintainability, evolvability and represent a source of architectural debt. Thus, it is very important to be able to understand how they evolved in the past and to predict their future evolution. In this paper, we evaluate if the existence of architectural smells in the past versions of a project can be used to predict their presence in the future. We analyzed four Java projects in 295 Github releases and we applied for the prediction four different supervised learning models in a repeated cross-validation setting. We found that historical architectural smell information can be used to predict the presence of architectural smells in the future. Hence, practitioners should carefully monitor the evolution of architectural smells and take preventative actions to avoid introducing them and stave off their progressive growth.</p
On the correlation between Architectural Smells and Static Analysis Warnings
Background. Software quality assurance is essential during software
development and maintenance. Static Analysis Tools (SAT) are widely used for
assessing code quality. Architectural smells are becoming more daunting to
address and evaluate among quality issues.
Objective. We aim to understand the relationships between static analysis
warnings (SAW) and architectural smells (AS) to guide developers/maintainers in
focusing their efforts on SAWs more prone to co-occurring with AS.
Method. We performed an empirical study on 103 Java projects totaling 72
million LOC belonging to projects from a vast set of domains, and 785 SAW
detected by four SAT, Checkstyle, Findbugs, PMD, SonarQube, and 4 architectural
smells detected by ARCAN tool. We analyzed how SAWs influence AS presence.
Finally, we proposed an AS remediation effort prioritization based on SAW
severity and SAW proneness to specific ASs.
Results. Our study reveals a moderate correlation between SAWs and ASs.
Different combinations of SATs and SAWs significantly affect AS occurrence,
with certain SAWs more likely to co-occur with specific ASs. Conversely, 33.79%
of SAWs act as "healthy carriers", not associated with any ASs.
Conclusion. Practitioners can ignore about a third of SAWs and focus on those
most likely to be associated with ASs. Prioritizing AS remediation based on SAW
severity or SAW proneness to specific ASs results in effective rankings like
those based on AS severity
- …
