Journal ArticleDOI
Identification of Move Method Refactoring Opportunities
Reads0
Chats0
TLDR
The proposed methodology can be regarded as a semi-automatic approach since the designer will eventually decide whether a suggested refactoring should be applied or not based on conceptual or other design quality criteria.Abstract:
Placement of attributes/methods within classes in an object-oriented system is usually guided by conceptual criteria and aided by appropriate metrics. Moving state and behavior between classes can help reduce coupling and increase cohesion, but it is nontrivial to identify where such refactorings should be applied. In this paper, we propose a methodology for the identification of Move Method refactoring opportunities that constitute a way for solving many common feature envy bad smells. An algorithm that employs the notion of distance between system entities (attributes/methods) and classes extracts a list of behavior-preserving refactorings based on the examination of a set of preconditions. In practice, a software system may exhibit such problems in many different places. Therefore, our approach measures the effect of all refactoring suggestions based on a novel entity placement metric that quantifies how well entities have been placed in system classes. The proposed methodology can be regarded as a semi-automatic approach since the designer will eventually decide whether a suggested refactoring should be applied or not based on conceptual or other design quality criteria. The evaluation of the proposed approach has been performed considering qualitative, metric, conceptual, and efficiency aspects of the suggested refactorings in a number of open-source projects.read more
Citations
More filters
Journal ArticleDOI
When and Why Your Code Starts to Smell Bad (and Whether the Smells Go Away)
Michele Tufano,Fabio Palomba,Gabriele Bavota,Rocco Oliveto,Massimiliano Di Penta,Andrea De Lucia,Denys Poshyvanyk +6 more
TL;DR: The findings mostly contradict common wisdom stating that smells are being introduced during evolutionary tasks, and call for the need to develop a new generation of recommendation systems aimed at properly planning smell refactoring activities.
Journal ArticleDOI
Comparing and experimenting machine learning techniques for code smell detection
TL;DR: The largest experiment of applying machine learning algorithms to code smells to the best of the authors' knowledge concludes that the application of machine learning to the detection of these code smells can provide high accuracy (>96 %), and only a hundred training examples are needed to reach at least 95 % accuracy.
Book
Software Evolution
Tom Mens,Serge Demeyer +1 more
TL;DR: This book is the indispensable source for researchers and professionals looking for an introduction and comprehensive overview of the state-of-the-art software evolution research and its relations with other emerging disciplines.
Proceedings ArticleDOI
When and why your code starts to smell bad
Michele Tufano,Fabio Palomba,Gabriele Bavota,Rocco Oliveto,Massimiliano Di Penta,Andrea De Lucia,Denys Poshyvanyk +6 more
TL;DR: The findings mostly contradict common wisdom, showing that most of the smell instances are introduced when an artifact is created and not as a result of its evolution, and at the same time, 80 percent of smells survive in the system.
Journal ArticleDOI
Mining Version Histories for Detecting Code Smells
Fabio Palomba,Gabriele Bavota,Massimiliano Di Penta,Rocco Oliveto,Denys Poshyvanyk,Andrea De Lucia +5 more
TL;DR: Historical Information for Smell deTection (HIST) is proposed, an approach exploiting change history information to detect instances of five different code smells, namely Divergent Change, Shotgun Surgery, Parallel Inheritance, Blob, and Feature Envy.
References
More filters
Book
Design Patterns: Elements of Reusable Object-Oriented Software
TL;DR: The book is an introduction to the idea of design patterns in software engineering, and a catalog of twenty-three common patterns, which most experienced OOP designers will find out they've known about patterns all along.
Book
A metrics suite for object oriented design
TL;DR: This research addresses the needs for software measures in object-orientation design through the development and implementation of a new suite of metrics for OO design, and suggests ways in which managers may use these metrics for process improvement.
Book
Refactoring: Improving the Design of Existing Code
TL;DR: Almost every expert in Object-Oriented Development stresses the importance of iterative development, but how do you add function to the existing code base while still preserving its design integrity?
Journal ArticleDOI
A validation of object-oriented design metrics as quality indicators
TL;DR: Several of Chidamber and Kemerer's OO metrics appear to be useful to predict class fault-proneness during the early phases of the life-cycle and are better predictors than "traditional" code metrics, which can only be collected at a later phase of the software development processes.
Book
Agile Software Development, Principles, Patterns, and Practices
TL;DR: This comprehensive, pragmatic tutorial on Agile Development and eXtreme programming, written by one of the founding father of Agile development, teaches software developers and project managers how to get projects done on time, and on budget using the power ofAgile Development.