On the Use of Machine Learning and Search-Based Software Engineering for Ill-Defined Fitness Function: A Case Study on Software Refactoring

The most challenging step when adapting a search-based technique for a software engineering problem is the definition of the fitness function. For several software engineering problems, a fitness function is ill-defined, subjective, or difficult to quantify. For example, the evaluation of a software design is subjective. This paper introduces the use of a neural network-based fitness function for the problem of software refactoring. The software engineers evaluate manually the suggested refactoring solutions by a Genetic Algorithm (GA) for few iterations then an Artificial Neural Network (ANN) uses these training examples to evaluate the refactoring solutions for the remaining iterations. We evaluate the efficiency of our approach using six different open-source systems through an empirical study and compare the performance of our technique with several existing refactoring studies.

[1]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[2]  Steven Guan,et al.  Investigation of Neural Networks for Function Approximation , 2013, ITQM.

[3]  Don Roberts,et al.  Practical analysis for refactoring , 1999 .

[4]  Kaushal K. Shukla,et al.  Neuro-genetic prediction of software development effort , 2000, Inf. Softw. Technol..

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

[6]  Eleni Stroulia,et al.  JDeodorant: identification and application of extract class refactorings , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[7]  Taghi M. Khoshgoftaar,et al.  Can neural networks be easily interpreted in software cost estimation? , 2002, 2002 IEEE World Congress on Computational Intelligence. 2002 IEEE International Conference on Fuzzy Systems. FUZZ-IEEE'02. Proceedings (Cat. No.02CH37291).

[8]  Mohamed Wiem Mkaouer,et al.  High dimensional search-based software engineering: finding tradeoffs among 15 objectives for automating software refactoring using NSGA-III , 2014, GECCO.

[9]  Reiko Heckel,et al.  Local Search-Based Refactoring as Graph Transformation , 2009, 2009 1st International Symposium on Search Based Software Engineering.

[10]  Ian C. Parmee,et al.  Interactive, Evolutionary Search in Upstream Object-Oriented Class Design , 2010, IEEE Transactions on Software Engineering.

[11]  Mark Harman,et al.  The relationship between search based software engineering and predictive modeling , 2010, PROMISE '10.

[12]  Miryung Kim,et al.  Template-based reconstruction of complex refactorings , 2010, 2010 IEEE International Conference on Software Maintenance.

[13]  Jeffrey J. P. Tsai,et al.  Machine Learning and Software Engineering , 2004, Software Quality Journal.

[14]  Mark Harman,et al.  Pareto optimal search based refactoring at the design level , 2007, GECCO '07.

[15]  Mark Kent O'Keeffe,et al.  Search-based refactoring for software maintenance , 2008, J. Syst. Softw..

[16]  Gabriele Bavota,et al.  Detecting bad smells in source code using change history information , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[17]  S. Holm A Simple Sequentially Rejective Multiple Test Procedure , 1979 .

[18]  Mark Harman,et al.  Search-based software engineering , 2001, Inf. Softw. Technol..

[19]  Julian F. Miller,et al.  Genetic and Evolutionary Computation — GECCO 2003 , 2003, Lecture Notes in Computer Science.

[20]  Bernhard Sendhoff,et al.  Comparing neural networks and Kriging for fitness approximation in evolutionary optimization , 2003, The 2003 Congress on Evolutionary Computation, 2003. CEC '03..

[21]  Marouane Kessentini,et al.  Model Refactoring Using Interactive Genetic Algorithm , 2013, SSBSE.

[22]  Hürevren Kiliç,et al.  Search-Based Parallel Refactoring Using Population-Based Direct Approaches , 2011, SSBSE.

[23]  Houari A. Sahraoui,et al.  The use of development history in software refactoring using a multi-objective evolutionary algorithm , 2013, GECCO '13.

[24]  A. Santhakumaran,et al.  Statistical Normalization and Back Propagationfor Classification , 2011 .

[25]  L. Erlikh,et al.  Leveraging legacy system dollars for e-business , 2000 .

[26]  John A. Clark,et al.  Metrics are fitness functions too , 2004 .

[27]  Betty H. C. Cheng,et al.  On the use of genetic programming for automated refactoring and the introduction of design patterns , 2010, GECCO '10.

[28]  W. Kruskal,et al.  Use of Ranks in One-Criterion Variance Analysis , 1952 .

[29]  Mark Harman,et al.  Experimental assessment of software metrics using automated refactoring , 2012, Proceedings of the 2012 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement.

[30]  Yuanyuan Zhang,et al.  Search-based software engineering: Trends, techniques and applications , 2012, CSUR.

[31]  Yann-Gaël Guéhéneuc,et al.  DECOR: A Method for the Specification and Detection of Code and Design Smells , 2010, IEEE Transactions on Software Engineering.

[32]  Houari A. Sahraoui,et al.  Design Defects Detection and Correction by Example , 2011, 2011 IEEE 19th International Conference on Program Comprehension.