Search Based Software Engineering

In this keynote address I survey recent success and momentum in the subfield of automated program repair. I also encourage the search-based software engineering community to rise to various challenges and opportunities associated with test oracle generation, largescale human studies, and reproducible research through benchmarks. I discuss recent advances in automated program repair, focusing on the search-based GenProg technique but also presenting a broad overview of the subfield. I argue that while many automated repair techniques are “correct by construction” or otherwise produce only a single repair (e.g., AFix [13], Axis [17], Coker and Hafiz [4], Demsky and Rinard [7], Gopinath et al. [12], Jolt [2], Juzi [8], etc.), the majority can be categorized as “generate and validate” approaches that enumerate and test elements of a space of candidate repairs and are thus directly amenable to search-based software engineering and mutation testing insights (e.g., ARC [1], AutoFix-E [23], ARMOR [3], CASC [24], ClearView [21], Debroy and Wong [6], FINCH [20], PACHIKA [5], PAR [14], SemFix [18], Sidiroglou and Keromytis [22], etc.). I discuss challenges and advances such as scalability, test suite quality, and repair quality while attempting to convey the excitement surrounding a subfield that has grown so quickly in the last few years that it merited its own session at the 2013 International Conference on Software Engineering [3,4,14,18]. Time permitting, I provide a frank discussion of mistakes made and lessons learned with GenProg [15]. In the second part of the talk, I pose three challenges to the SBSE community. I argue for the importance of human studies in automated software engineering. I present and describe multiple “how to” examples of using crowdsourcing (e.g., Amazon’s Mechanical Turk) and massive online education (MOOCs) to enable SBSE-related human studies [10,11]. I argue that we should leverage our great strength in testing to tackle the increasingly-critical problem of test oracle generation (e.g., [9]) — not just test data generation — and draw supportive analogies with the subfields of specification mining and invariant detection [16,19]. Finally, I challenge the SBSE community to facilitate reproducible research and scientific advancement through benchmark creation, and support the need for such efforts with statistics from previous accepted papers. G. Ruhe and Y. Zhang (Eds.): SSBSE 2013, LNCS 8084, pp. 1–3, 2013. c © Springer-Verlag Berlin Heidelberg 2013

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

[2]  Hideyuki Takagi,et al.  Interactive evolutionary computation: fusion of the capabilities of EC optimization and human evaluation , 2001, Proc. IEEE.

[3]  E. Burton Swanson,et al.  Characteristics of application software maintenance , 1978, CACM.

[4]  Derrick G. Kourie,et al.  Towards proving preservation of behaviour of refactoring of UML models , 2005 .

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

[6]  Jesfis Peral,et al.  Heuristics -- intelligent search strategies for computer problem solving , 1984 .

[7]  John R. Koza,et al.  Genetic programming - on the programming of computers by means of natural selection , 1993, Complex adaptive systems.

[8]  Shari Lawrence Pfleeger,et al.  Software Metrics : A Rigorous and Practical Approach , 1998 .

[9]  Mark Kent O'Keeffe,et al.  Search-based software maintenance , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[10]  Ying Tan,et al.  GPU-based parallel particle swarm optimization , 2009, 2009 IEEE Congress on Evolutionary Computation.

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

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

[13]  Tom Mens,et al.  A formal approach to model refactoring and model refinement , 2007, Software & Systems Modeling.

[14]  Sung-Bae Cho,et al.  Application of interactive genetic algorithm to fashion design , 2000 .

[15]  Naouel Moha,et al.  DECOR : Détection et correction des défauts dans les systèmes orientés objet. (DECOR : Detection and Correction of Smells in Object-oriented Systems) , 2008 .

[16]  Mario Piattini,et al.  Empirical validation of class diagram metrics , 2002, Proceedings International Symposium on Empirical Software Engineering.

[17]  Gabriele Bavota,et al.  Putting the Developer in-the-Loop: An Interactive GA for Software Re-modularization , 2012, SSBSE.

[18]  Ying-ping Chen,et al.  Interactive music composition with the CFE framework , 2007, SEVO.

[19]  Hafedh Mili,et al.  Understanding design patterns — what is the problem? , 2012, Softw. Pract. Exp..

[20]  Hafedh Mili,et al.  Detecting Patterns of Poor Design Solutions Using Constraint Propagation , 2008, MoDELS.

[21]  David E. Goldberg,et al.  Genetic Algorithms in Search Optimization and Machine Learning , 1988 .

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

[23]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[24]  H. Sahraoui,et al.  Model Transformation as an Optimization Problem , 2008, MoDELS.

[25]  Tom Mens,et al.  Analysing refactoring dependencies using graph transformation , 2007, Software & Systems Modeling.

[26]  Enrico Biermann,et al.  EMF Model Transformation Based on Graph Transformation: Formal Foundation and Tool Environment , 2010, ICGT.