AntiPatterns: refactoring software, architectures, and projects in crisis
AntiPatterns: refactoring software, architectures, and projects in crisis
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Does Code Decay? Assessing the Evidence from Change Management Data
IEEE Transactions on Software Engineering
Reengineering legacy systems for distributed environments
Journal of Systems and Software
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Journal of Software Maintenance and Evolution: Research and Practice - Seventh European Conference on Software Maintenance and Reengineering (CSMR 2003)
Object-Oriented Metrics in Practice
Object-Oriented Metrics in Practice
Proceedings of the 8th annual conference on Genetic and evolutionary computation
Source Code Analysis: A Road Map
FOSE '07 2007 Future of Software Engineering
Search-based refactoring for software maintenance
Journal of Systems and Software
A Case Study on the Impact of Refactoring on Quality and Productivity in an Agile Team
Balancing Agility and Formalism in Software Engineering
COMPSAC '08 Proceedings of the 2008 32nd Annual IEEE International Computer Software and Applications Conference
Dimensions of precision in reference analysis of object-oriented programming languages
CC'03 Proceedings of the 12th international conference on Compiler construction
Hi-index | 0.00 |
With the rapid growth of the complexity of software systems, the problem of integrating and maintaining legacy software is more relevant than ever. To overcome this problem, many methods for refactoring legacy code have already been proposed such as renaming classes or extracting interfaces. To perform a real modularization, methods have to be moved between classes. However, moving a single method is often not possible due to code dependencies. In this article we present an approach to modularize legacy software by moving multiple related class members. It is shown how to identify groups of class members with similar concerns. We present two different code patterns that the related members and their dependent classes must match to allow a relocation of the related members. We also demonstrate how our pattern-based approach for automated modularization of legacy software can be applied to two open source projects.