Achieving high instruction cache performance with an optimizing compiler
ISCA '89 Proceedings of the 16th annual international symposium on Computer architecture
Object-oriented metrics that predict maintainability
Journal of Systems and Software - Special issue on object-oriented software
Object-oriented metrics: measures of complexity
Object-oriented metrics: measures of complexity
A Unified Framework for Coupling Measurement in Object-Oriented Systems
IEEE Transactions on Software Engineering
The Jalapeño dynamic optimizing compiler for Java
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Fundamentals of Software Engineering
Fundamentals of Software Engineering
Object Oriented Reengineering Patterns
Object Oriented Reengineering Patterns
Operational Profiles in Software-Reliability Engineering
IEEE Software
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
SODA '03 Proceedings of the fourteenth annual ACM-SIAM symposium on Discrete algorithms
An Automated Refactoring Approach to Design Pattern-Based Program Transformations in Java Programs
APSEC '02 Proceedings of the Ninth Asia-Pacific Software Engineering Conference
CSMR '01 Proceedings of the Fifth European Conference on Software Maintenance and Reengineering
Using Automatic Clustering to Produce High-Level System Organizations of Source Code
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
A Metric-Based Approach to Enhance Design Quality through Meta-pattern Transformations
CSMR '03 Proceedings of the Seventh European Conference on Software Maintenance and Reengineering
A Quantitative Evaluation of Maintainability Enhancement by Refactoring
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
ATOM: a system for building customized program analysis tools
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Refactoring to Patterns
Dynamic Coupling Measurement for Object-Oriented Software
IEEE Transactions on Software Engineering
Refactoring " Improving Coupling and Cohesion of Existing Code
WCRE '04 Proceedings of the 11th Working Conference on Reverse Engineering
Search-based improvement of subsystem decompositions
GECCO '05 Proceedings of the 7th annual conference on Genetic and evolutionary computation
Proceedings of the 8th annual conference on Genetic and evolutionary computation
Selective profiling of Java applications using dynamic bytecode instrumentation
ISPASS '04 Proceedings of the 2004 IEEE International Symposium on Performance Analysis of Systems and Software
Metrics for class cohesion and similarity between methods
Proceedings of the 44th annual Southeast regional conference
Pareto optimal search based refactoring at the design level
Proceedings of the 9th annual conference on Genetic and evolutionary computation
Search-based refactoring for software maintenance
Journal of Systems and Software
Journal of Software Maintenance and Evolution: Research and Practice
Identification of Move Method Refactoring Opportunities
IEEE Transactions on Software Engineering
Measuring behavioral dependency for improving change-proneness prediction in UML-based design models
Journal of Systems and Software
Ranking Refactoring Suggestions Based on Historical Volatility
CSMR '11 Proceedings of the 2011 15th European Conference on Software Maintenance and Reengineering
Automated scheduling for clone-based refactoring using a competent GA
Software—Practice & Experience
Refactoring as Testability Transformation
ICSTW '11 Proceedings of the 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops
Conflict-Aware Optimal Scheduling of Code Clone Refactoring: A Constraint Programming Approach
ICPC '11 Proceedings of the 2011 IEEE 19th International Conference on Program Comprehension
Analysis and visualization of behavioral dependencies among distributed objects based on UML models
MoDELS'06 Proceedings of the 9th international conference on Model Driven Engineering Languages and Systems
Schedule of Bad Smell Detection and Resolution: A New Way to Save Effort
IEEE Transactions on Software Engineering
Hi-index | 0.00 |
Context: Object-oriented software undergoes continuous changes-changes often made without consideration of the software's overall structure and design rationale. Hence, over time, the design quality of the software degrades causing software aging or software decay. Refactoring offers a means of restructuring software design to improve maintainability. In practice, efforts to invest in refactoring are restricted; therefore, the problem calls for a method for identifying cost-effective refactorings that efficiently improve maintainability. Cost-effectiveness of applied refactorings can be explained as maintainability improvement over invested refactoring effort (cost). For the system, the more cost-effective refactorings are applied, the greater maintainability would be improved. There have been several studies of supporting the arguments that changes are more prone to occur in the pieces of codes more frequently utilized by users; hence, applying refactorings in these parts would fast improve maintainability of software. For this reason, dynamic information is needed for identifying the entities involved in given scenarios/functions of a system, and within these entities, refactoring candidates need to be extracted. Objective: This paper provides an automated approach to identifying cost-effective refactorings using dynamic information in object-oriented software. Method: To perform cost-effective refactoring, refactoring candidates are extracted in a way that reduces dependencies; these are referred to as the dynamic information. The dynamic profiling technique is used to obtain the dependencies of entities based on dynamic method calls. Based on those dynamic dependencies, refactoring-candidate extraction rules are defined, and a maintainability evaluation function is established. Then, refactoring candidates are extracted and assessed using the defined rules and the evaluation function, respectively. The best refactoring (i.e., that which most improves maintainability) is selected from among refactoring candidates, then refactoring candidate extraction and assessment are re-performed to select the next refactoring, and the refactoring identification process is iterated until no more refactoring candidates for improving maintainability are found. Results: We evaluate our proposed approach in three open-source projects. The first results show that dynamic information is helpful in identifying cost-effective refactorings that fast improve maintainability; and, considering dynamic information in addition to static information provides even more opportunities to identify cost-effective refactorings. The second results show that dynamic information is helpful in extracting refactoring candidates in the classes where real changes had occurred; in addition, the results also offer the promising support for the contention that using dynamic information helps to extracting refactoring candidates from highly-ranked frequently changed classes. Conclusion: Our proposed approach helps to identify cost-effective refactorings and supports an automated refactoring identification process.