10th Symposium on Search-Based Software Engineering

Montpellier September 8-10, 2018

Important dates


Deploying Search Based Software Engineering with Sapienz at Facebook

We describe the deployment of Sapienz, a system for automated test case design that uses Search Based Software Engineering (SBSE) that has been deployed at Facebook since October 2017 to design test cases, localise and triage crashes to developers and monitor their fixes. Facebook continues to build on the Sapienz infrastructure, extending it to provide other software engineering services and we hope this will yield sustained interest in SBSE and hybridisation of it as a result. We explain how Sapienz is deployed, how it collaborates with other tools, such as Facebook's FBLeaner Machine Learning Infrastructure, its One World Device and Emulator platform and other testing and verification tools, such as Infer, the Facebook Static Analysis tooling. We also outline some open problems and challenges for the SBSE community, based on our experience of deploying Sapienz at Facebook scale.

Mark Harman

Engineering Manager at Facebook

Mark was the director of CREST (the Centre for Research on Evolution Search and Testing) from its inception on 28th June 2006 to 5th February 2017, and was head of SSE (Software Systems Engineering) at UCL from 2012 to 2017. Since February 6th 2017 he has been a full-time Engineering Manager at Facebook London and a part-time professor of Software Engineering in CREST, SSE and the CS department at UCL.


Search-Based Software Refactoring

Marouane Kessentini

University of Michigan

Due to the growing complexity of software systems, there has been a dramatic increase and industry demand for tools and techniques for software refactoring in the last ten years, defined traditionally as a set of program transformations intended to improve the system design while preserving the behavior. The challenges to be addressed by refactoring work are nowadays beyond code transformation to include, but not limited to, scheduling the opportune time to carry refactoring, recommendations of specific refactoring activities, detection of refactoring opportunities and testing the correctness of applied refactorings. Therefore, the refactoring research efforts are fragmented over several research communities, various domains, and different objectives. Based on our recent analysis of 2556 research papers on refactoring, we found that search-based software engineering was widely adopted to automate or semi-automate several activities of the refactoring life cycle in multiple domains. In this tutorial, I will give an overview about the current state of search-based refactoring, why the use of computational search is ideal to address refactoring challenges and what factors contributed to the growth of the field. Then, I will focus on our recent work and tools to interactively integrate the preferences of programmers during the search for refactoring candidates to avoid the natural reluctance of programmers to trust the fully-automated search tools. A tool demo will be presented, as well, and participants will have the opportunity to practice our interactive search-based refactoring and antipatterns detection tools, licensed to industrial partners, on two open source projects. Finally, I will conclude the tutorial with different suggestions to enhance the adoption of SBSE research into industry, and the lessons that we learned along this journey and my vision about the future of search-based refactoring.

Astor: An automated software repair framework

Matías Martínez

University of Valenciennes

Astor is a framework for repairing buggy Java program, which includes 6 publicly available repair approaches. Those repair approaches take as input a buggy Java program (having at least one failing test case that exposes the bug) and search for a patch that produces all test cases to pass. Astor provides twelve extension points that form the design space of program repair. Using those extension points, program repair researchers can create new repair approaches or extend those included in the framework by choosing existing components (among 33 ones) or implementing new ones. In this tutorial, we will first discuss the main techniques proposed on the field of automated software repair. Then, we will discuss how to execute repair approaches included in Astor framework, how to extend them, and how to implement new repair approaches reusing components provided by Astor.