Identifying syntactic differences between two programs
Software—Practice & Experience
Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
Reengineering class hierarchies using concept analysis
SIGSOFT '98/FSE-6 Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Detecting defects in object-oriented designs: using reading techniques to increase software quality
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Finding refactorings via change metrics
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
CCFinder: a multilinguistic token-based code clone detection system for large scale source code
IEEE Transactions on Software Engineering
On Software Maintenance Process Improvement Based on Code Clone Analysis
PROFES '02 Proceedings of the 4th International Conference on Product Focused Software Process Improvement
Identifying Refactoring Opportunities Using Logic Meta Programming
CSMR '03 Proceedings of the Seventh European Conference on Software Maintenance and Reengineering
Extensible Language-Aware Merging
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
Refactoring Workbook
Refactoring for generalization using type constraints
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Refactoring class hierarchies with KABA
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Using Origin Analysis to Detect Merging and Splitting of Source Code Entities
IEEE Transactions on Software Engineering
Mining Version Histories to Guide Software Changes
IEEE Transactions on Software Engineering
ARIES: refactoring support tool for code clone
3-WoSQ Proceedings of the third workshop on Software quality
Product Metrics for Automatic Identification of "Bad Smell" Design Problems in Java Source-Code
METRICS '05 Proceedings of the 11th IEEE International Software Metrics Symposium
UMLDiff: an algorithm for object-oriented design differencing
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Program element matching for multi-version program analyses
Proceedings of the 2006 international workshop on Mining software repositories
Detecting similar Java classes using tree algorithms
Proceedings of the 2006 international workshop on Mining software repositories
Automatic Generation of Detection Algorithms for Design Defects
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
Clone Detection Using Abstract Syntax Suffix Trees
WCRE '06 Proceedings of the 13th Working Conference on Reverse Engineering
Approximate Structural Context Matching: An Approach to Recommend Relevant Examples
IEEE Transactions on Software Engineering
Automatic Inference of Structural Changes for Matching across Program Versions
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Determining detailed structural correspondence for generalization tasks
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
On The Detection of Test Smells: A Metrics-Based Approach for General Fixture and Eager Test
IEEE Transactions on Software Engineering
Systematically refactoring inheritance to delegation in java
Proceedings of the 30th international conference on Software engineering
Discovering and representing systematic code changes
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Mining source code to automatically split identifiers for software analysis
MSR '09 Proceedings of the 2009 6th IEEE International Working Conference on Mining Software Repositories
Identification of Move Method Refactoring Opportunities
IEEE Transactions on Software Engineering
Using Cluster Analysis to Improve the Design of Component Interfaces
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Identifying Fragments to be Extracted from Long Methods
APSEC '09 Proceedings of the 2009 16th Asia-Pacific Software Engineering Conference
DECOR: A Method for the Specification and Detection of Code and Design Smells
IEEE Transactions on Software Engineering
Identification of refactoring opportunities introducing polymorphism
Journal of Systems and Software
Playing with refactoring: Identifying extract class opportunities through game theory
ICSM '10 Proceedings of the 2010 IEEE International Conference on Software Maintenance
Identifying Extract Class refactoring opportunities using structural and semantic cohesion measures
Journal of Systems and Software
Recognizing Words from Source Code Identifiers Using Speech Recognition Techniques
CSMR '10 Proceedings of the 2010 14th European Conference on Software Maintenance and Reengineering
Code Bad Smells: a review of current knowledge
Journal of Software Maintenance and Evolution: Research and Practice
Identification of extract method refactoring opportunities for the decomposition of methods
Journal of Systems and Software
Using structural and textual information to capture feature coupling in object-oriented software
Empirical Software Engineering
Automated detection of refactorings in evolving components
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
To what extent can maintenance problems be predicted by code smell detection? - An empirical study
Information and Software Technology
Hi-index | 0.00 |
Generalization refactoring helps relate classes and share functions, including both interfaces and implementation, by inheritance. To apply generalization refactoring, developers should first identify potential generalization refactoring opportunities, i.e., software entities that might benefit from generalization refactoring. For non-trivial software systems, manual identification of these opportunities is challenging and time-consuming. However, to the best of our knowledge, no existing tools have been specifically designed for this task. As a result, people have to identify these opportunities manually or with the help of tools designed for other purposes, e.g., clone detectors. To this end, we propose a tool GenReferee (Generalization Referee) to identify potential refactoring opportunities according to conceptual relationship, implementation similarity, structural correspondence, and inheritance hierarchies. It was first calibrated on two non-trivial open source applications, and then evaluated on another three. Evaluation results suggest that the proposed approach is effective and efficient.