Software smells indicate design or code issues that might degrade the evolution and maintenance of software systems. Detecting and identifying these issues are challenging tasks. This paper explores, identifies, and analyzes the existing software smell detection techniques at design and code levels. We carried out a systematic literature review (SLR) to identify and collect 145 primary studies related to smell detection in software design and code. Based on these studies, we address several questions related to the analysis of the existing smell detection techniques in terms of abstraction level (design or code), targeted smells, used metrics, implementation, and validation. Our analysis identified several detection techniques categories. We observed that 57% of the studies did not use any performance measures, 41% of them omitted details on the targeted programing language, and the detection techniques were not validated in 14% of these studies. With respect to the abstraction level, only 18% of the studies addressed bad smell detection at the design level. This low coverage urges for more focus on bad smell detection at the design level to handle them at early stages. Finally, our SLR brings to the attention of the research community several opportunities for future research.
Software refactoring solutions aim at mitigating the negative effects of code and design smells on the overall software quality. Many efforts have been exerted to improve the software refactoring process. However, most of these efforts, despite their contributions, overlooked the side effects of the identified refactoring opportunities that may lead to new smells that will go unnoticed. This paper addresses the side effects of software refactoring and proposes sound solutions for handling them. Unlike current practices in software maintenance, we recommend three different approaches to handle the refactoring side effects. In the first approach, called the baseline, we opt to ignore the smells, caused by refactoring, while executing the identified refactoring decisions. In the second one, refactoring decisions are continually updated to fix all smells caused by side effects. In the last approach, only a subset of these smells is appended to the original smell sequence during the execution of the refactoring decisions. Thanks to the proposed approaches, optimal refactoring decisions are identified using a multi‐objective (MO) optimization algorithm commonly known as the MO covariance matrix adaptation evolution strategy (MO‐CMA‐ES). Experiment results corroborate our assumptions and show the superiority of the second approach over the other ones.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.