Genetic programming: on the programming of computers by means of natural selection
Genetic programming: on the programming of computers by means of natural selection
Software metrics (2nd ed.): a rigorous and practical approach
Software metrics (2nd ed.): a rigorous and practical approach
Detection of Logical Coupling Based on Product Release History
ICSM '98 Proceedings of the International Conference on Software Maintenance
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Mining Version Histories to Guide Software Changes
Proceedings of the 26th International Conference on Software Engineering
Predicting Source Code Changes by Mining Change History
IEEE Transactions on Software Engineering
Predicting Change Propagation in Software Systems
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Clustering Software Artifacts Based on Frequent Common Changes
IWPC '05 Proceedings of the 13th International Workshop on Program Comprehension
Proceedings of the 8th annual conference on Genetic and evolutionary computation
Pareto optimal search based refactoring at the design level
Proceedings of the 9th annual conference on Genetic and evolutionary computation
Using concept analysis to detect co-change patterns
Ninth international workshop on Principles of software evolution: in conjunction with the 6th ESEC/FSE joint meeting
Search-based refactoring for software maintenance
Journal of Systems and Software
Local Search-Based Refactoring as Graph Transformation
SSBSE '09 Proceedings of the 2009 1st International Symposium on Search Based Software Engineering
Template-based reconstruction of complex refactorings
ICSM '10 Proceedings of the 2010 IEEE International Conference on Software Maintenance
Design Defects Detection and Correction by Example
ICPC '11 Proceedings of the 2011 IEEE 19th International Conference on Program Comprehension
A fast and elitist multiobjective genetic algorithm: NSGA-II
IEEE Transactions on Evolutionary Computation
Experimental assessment of software metrics using automated refactoring
Proceedings of the ACM-IEEE international symposium on Empirical software engineering and measurement
Maintainability defects detection and correction: a multi-objective approach
Automated Software Engineering
Search-based refactoring: Towards semantics preservation
ICSM '12 Proceedings of the 2012 IEEE International Conference on Software Maintenance (ICSM)
Search-Based Refactoring Using Recorded Code Changes
CSMR '13 Proceedings of the 2013 17th European Conference on Software Maintenance and Reengineering
Hi-index | 0.00 |
One of the widely used techniques for evolving software systems is refactoring, a maintenance activity that improves design structure while preserving the external behavior. Exploring past maintenance and development history can be an effective way of finding refactoring opportunities. Code elements which undergo changes in the past, at approximately the same time, bear a good probability for being semantically related. Moreover, these elements that experienced a huge number of refactoring in the past have a good chance for refactoring in the future. In addition, the development history can be used to propose new refactoring solutions in similar contexts. In this paper, we propose a multi-objective optimization-based approach to find the best sequence of refactorings that minimizes the number of bad-smells, and maximizes the use of development history and semantic coherence. To this end, we use the non-dominated sorting genetic algorithm (NSGA-II) to find the best trade-off between these three objectives. We report the results of our experiments using different large open source projects.