Perspectives on automated correction of bad smells
Proceedings of the joint international and annual ERCIM workshops on Principles of software evolution (IWPSE) and software evolution (Evol) workshops
An exploratory study of the impact of antipatterns on class change- and fault-proneness
Empirical Software Engineering
Computation of refactoring plans from refactoring strategies using HTN planning
Proceedings of the Fifth Workshop on Refactoring Tools
Hi-index | 0.00 |
Code and design smells are implementation and design problems that come from "poor" recurring design choices. They may hinder development and maintenance of systems by making them hard for software engineers to change and evolve. A semi-automatic detection and correction are thus key factors to ease the maintenance and evolution stages.Techniques and tools have been proposed in the literature both for the detection and correction of smells. The detection techniques proposed consist mainly in defining rules for detecting smells and applying them to the source code of a system. As for the correction techniques, they consist in applying automatically refactorings in the source code of the system analysed to restructure it and correct the smells. However, software engineers have to identify manually how the system must be restructured. Thus, it is not possible to correct directly and automatically the detected smells. This problem is due to the fact that the detection and the correction of smells are treated independently.Thus, we propose DECOR, a method that encompasses and defines all steps necessary for the detection and correction of code and design smells. This method allows software engineers to specify detection rules at a high level of abstraction and to obtain automatically suggestions for code restructuring.We apply and validate our method on open-source object-oriented systems to show that our method allows a precise detection and a suitable correction of smells.Keywords. design smells, antipatterns, code smells, specification, detection, correction, restructuring, refactorings, JAVA.