On the use of genetic programming for automated refactoring and the introduction of design patterns

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

[1]  Mark Harman,et al.  Reformulating software engineering as a search problem , 2003 .

[2]  Lionel C. Briand,et al.  Multi-Objective Genetic Algorithm to Support Class Responsibility Assignment , 2007, 2007 IEEE International Conference on Software Maintenance.

[3]  Mel Ó Cinnéide,et al.  A stochastic approach to automated design improvement , 2003, PPPJ.

[4]  Carl G. Davis,et al.  A Hierarchical Model for Object-Oriented Design Quality Assessment , 2002, IEEE Trans. Software Eng..

[5]  Jean-Marc Jézéquel,et al.  Refactoring UML Models , 2001, UML.

[6]  Robert B. France,et al.  Repository for Model Driven Development (ReMoDD) , 2006, 2012 34th International Conference on Software Engineering (ICSE).

[7]  Nuno Seco,et al.  Using CBR for Automation of Software Design Patterns , 2002, ECCBR.

[8]  Walter F. Tichy,et al.  A Controlled Experiment in Maintenance Comparing Design Patterns to Simpler Solutions , 2001, IEEE Trans. Software Eng..

[9]  Ulf Nilsson,et al.  Logic, programming and Prolog , 1990 .

[10]  Johannes Stammel,et al.  Search-based determination of refactorings for improving the class structure of object-oriented systems , 2006, GECCO.

[11]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[12]  Mel O Cinn eide Automated application of design patterns: a refactoring approach , 2001 .

[13]  Mel Ó Cinnéide,et al.  Journal of Software Maintenance and Evolution: Research and Practice Search-based Refactoring: an Empirical Study , 2022 .

[14]  Mel Ó Cinnéide,et al.  Search-based refactoring: an empirical study , 2008 .