Software Engineering Paradigm for Real-Time Accurate Decision Making for Code Smell Prioritization

Randeep Singh, Amit Kumar Bindal, Ashok Pon Kumar · 2021

Software maintenance is a cost-intensive, prolonged, and necessary phase of software development in order to incorporate the changing functional and non-functional requirements of the user. Software maintenance aims at improving software design by identifying and mitigating structural characteristics that may cause future design problems. Data science requires the presence of complex intelligent software systems that automates the task of complex analysis, data visualization aspects of big data available in the modern era of human life. The complex design of such software systems and frequent changing user requirements mandate reducing maintenance efforts for such software systems. Code smell can be present at many levels in the source-code and there is a large number of code smells that a maintenance team may be dealt with during the process of maintaining a software system. Moreover, not all of these code smells are involved in the degradation of the quality aspect of a software system. Thus, such code smells can be temporarily ignored in order to focus only on the key code smells that are responsible for the quality degradation of the software system. This mandates that the existing code smells of a software system are prioritized in order to reduced maintenance efforts and save time and involved cost. Moreover, efficient methods are required to detect various code smells of a software system with higher accuracy. Therefore, this chapter considers efficiently identifying various code smells and further reducing maintenance effort by prioritizing code smells present in the software system. This book chapter aims at efficiently detecting seven kinds of code smells, namely, feature envy, long method, god class, long parameter list, refused bequest, duplicated code, and shotgun surgery. Further, the proposed approach of this chapter is empirically validated by carrying extensive experimentation on state-of-art object-oriented software systems. The obtained results are encouraging and useful.

Read the paper · More papers on PaperTik