An Empirical Evaluation of Design Smells and Code Smells Over Multiple Versions of Software Evolution
摘要
Software code smells serve as indicators of potential flaws in code design. It signifies that the code has not been created while following the design principles. Code smells do not mean the software system is faulty, but their persistence may affect the code maintainability, readability, and modularity. In this study, code smell evolution has been identified on three publicly available open-source software systems, and it was observed how design smells and traditional code smells evolve in different versions of each software system. Detection of these anomalies is performed by publicly available source code analyzers PMD and DesigniteJava. DesigniteJava finds design smells based on violation of object-oriented principles like abstraction, encapsulation, modularization, and hierarchy. PMD finds the traditional code smells. Based on the analysis of code smells evolution over multiple versions of software in this study, the findings suggest that the abstraction design smells out of all design smells are abundant, out of which unutilized abstraction is the maximum, and God class code smells, which was most discussed in this domain, are also increasing in subsequent versions. Consequently, on the basis of this analysis, a decision will be made regarding whether code smells are increasing beyond a certain limit, which component of the system the designer ought to center their attention on and whether or not it ought to be taken into consideration for redesigning.