Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
Lifecycle and refactoring patterns that support evolution and reuse
Pattern languages of program design
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Journal of Systems and Software - Special issue on Evaluation and assessment in software engineering
Finding refactorings via change metrics
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
IEEE Transactions on Software Engineering
Two case studies of open source software development: Apache and Mozilla
ACM Transactions on Software Engineering and Methodology (TOSEM)
Evolving Object-Oriented Designs with Refactorings
Automated Software Engineering
Evolution in Open Source Software: A Case Study
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
Architectural Level Hypothesis Testing through Reverse Engineering of Object-Oriented Software
IWPC '00 Proceedings of the 8th International Workshop on Program Comprehension
The Role of Constructors in the Context of Refactoring Object-Oriented Systems
CSMR '03 Proceedings of the Seventh European Conference on Software Maintenance and Reengineering
Identifying Refactoring Opportunities Using Logic Meta Programming
CSMR '03 Proceedings of the Seventh European Conference on Software Maintenance and Reengineering
Laws and Principles of Evolution
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
Trends in Java code changes: the key to identification of refactorings?
PPPJ '03 Proceedings of the 2nd international conference on Principles and practice of programming in Java
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Refactoring to Patterns
Extracting Facts from Open Source Software
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Open Source Software Development: A Case Study of FreeBSD
METRICS '04 Proceedings of the Software Metrics, 10th International Symposium
Proceedings of the 2006 ACM symposium on Applied computing
A framework for the simulation of structural software evolution
ACM Transactions on Modeling and Computer Simulation (TOMACS)
How we refactor, and how we know it
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Code smell eradication and associated refactoring
ECC'08 Proceedings of the 2nd conference on European computing conference
Sub-clone refactoring in open source software artifacts
Proceedings of the 2010 ACM Symposium on Applied Computing
Is a strategy for code smell assessment long overdue?
Proceedings of the 2010 ICSE Workshop on Emerging Trends in Software Metrics
Issues arising from refactoring studies: an experience report
ACM SIGSOFT Software Engineering Notes
Empirical support for two refactoring studies using commercial C# software
EASE'09 Proceedings of the 13th international conference on Evaluation and Assessment in Software Engineering
Systematic testing of refactoring engines on real software projects
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Hi-index | 0.00 |
Refactoring, as a software engineering discipline has emerged over recent years to become an important aspect of maintaining software. Refactoring refers to the restructuring of software according to specific mechanics and principles. In this paper, we describe an analysis of the results from a tool whose purpose was to identify and extract refactorings from seven open-source Java systems. In particular, we analyzed the mechanics of the most commonly and least commonly applied refactorings to try and account for their frequency. Results showed the most common refactorings of the fifteen coined a 'Gang of Six', to be generally those with a high in-degree and low out-degree when mapped on a dependency graph; the same refactorings also featured strongly in the remedying of bad code smells. Remarkably and surprisingly, inheritance and encapsulationbased refactorings were found to have been applied relatively infrequently - we offer explanations for why this may be the case. The paper thus identifies 'core' refactorings central to many of the changes made by developers on open-source systems. While we can not guarantee that developers consciously undertake refactoring in any sense, the empirical results demonstrate that simple renaming and moving fields/methods between classes are common components of open-source system re-engineering. From a wider software engineering perspective, knowledge of what a modification will incur in likely sub-tasks is of value to developers whether working on open-source or other forms of software.