ABSTRACT
Maintaining an object-oriented design for a piece of software is a difficult, time-consuming task. Prior approaches to automated design refactoring have focused on making small, iterative changes to a given software design. However, such approaches do not take advantage of composition of design changes, thus limiting the richness of the refactoring strategies that they can generate. In order to address this problem, this paper introduces an approach that supports composition of design changes and makes the introduction of design patterns a primary goal of the refactoring process. The proposed approach uses genetic programming and software engineering metrics to identify the most suitable set of refactorings to apply to a software design. We illustrate the efficacy of this approach by applying it to a large set of published models, as well as a real-world case study
- J. Bansiya and CG Davis. A hierarchical model for object-oriented design quality assessment. IEEE Transactions on Software Engineering, 28(1):4--17, 2002. Google ScholarDigital Library
- Marcel Birkner. Object-Oriented Design Pattern Detection using Static and Dynamic Analysis in Java Software. Master's thesis, University of Applied Sciences Bonn-Rhein-Sieg, Sankt Augustin, Germany, 2007.Google Scholar
- M. Bowman, LC Briand, and Y. Labiche. Multi-objective genetic algorithm to support class responsibility assignment. In IEEE International Conference on Software Maintenance, 2007. ICSM 2007, pages 124--133, 2007.Google ScholarCross Ref
- J. Clarke, JJ Dolado, M. Harman, R. Hierons, B. Jones, M. Lumkin, B. Mitchell, S. Mancoridis, K. Rees, M. Roper, et al. Reformulating software engineering as a search problem. IEEE Proceedings - Software, 150(3):161--175, 2003.Google ScholarDigital Library
- R. France, J. Bieman, and B. H. C. Cheng. Repository for model driven development (ReMoDD). Lecture Notes in Computer Science, 4364:311, 2007. Google ScholarDigital Library
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design patterns: elements of reusable object-oriented software. Addison-Wesley Reading, MA, 1995. Google ScholarDigital Library
- P. Gomes, F.C. Pereira, P. Paiva, N. Seco, P. Carreiro, J. L. Ferreira, and C. Bento. Using CBR for Automation of Software Design Patterns. Lecture Notes in Computer Science, pages 534--548, 2002. Google ScholarDigital Library
- U. Nilsson and J. Maluszyński. Logic, programming and Prolog. Wiley, 1990. Google ScholarDigital Library
- M. Ó Cinnéide. Automated Application of Design Patterns: A Refactoring Approach. PhD thesis, University of Dublin, Trinity College, 2001.Google Scholar
- M. O'Keee and M. Ó Cinnéide. A stochastic approach to automated design improvement. In Proceedings of the 2nd international conference on Principles and practice of programming in Java, pages 59--62. Computer Science Press, Inc. New York, NY, USA, 2003. Google ScholarDigital Library
- M. O'Keee and M. Ó Cinnéide. Search-based refactoring: an empirical study. Journal of Software Maintenance and Evolution: Research and Practice, 20(5), 2008. Google ScholarDigital Library
- L. Prechelt, B. Unger, W.F. Tichy, P. Br¨ossler, and L.G. Votta. A controlled experiment in maintenance comparing design patterns to simpler solutions. IEEE Transactions on Software Engineering, pages 1134--1144, 2001. Google ScholarDigital Library
- O. Seng, J. Stammel, and D. Burkhart. Search-based determination of refactorings for improving the class structure of object-oriented systems. In Proceedings of the 8th annual conference on Genetic and evolutionary computation, pages 1909--1916. ACM New York, NY, USA, 2006. Google ScholarDigital Library
- G. Sunye, D. Pollet, Y. Le Traon, and J. M. Jezequel. Refactoring UML Models. Lecture Notes in Computer Science, pages 134--148, 2001.Google Scholar
Index Terms
- On the use of genetic programming for automated refactoring and the introduction of design patterns
Recommendations
Role-based refactoring of crosscutting concerns
AOSD '05: Proceedings of the 4th international conference on Aspect-oriented software developmentImproving the structure of code can help developers work with a software system more efficiently and more consistently. To aid developers in re-structuring the implementation of crosscutting concerns using aspect-oriented programming, we introduce a ...
Automated refactoring to the Strategy design pattern
Context: The automated identification of code fragments characterized by common design flaws (or ''code smells'') that can be handled through refactoring, fosters refactoring activities, especially in large code bases where multiple developers are ...
Automated Refactoring for Testability
ICSTW '11: Proceedings of the 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation WorkshopsCurrent software practice places a strong emphasis on unit testing, to the extent that the amount of test code produced on a project can exceed the amount of actual application code required. This illustrates the importance of testability as a feature ...
Comments