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.
- Dr. Marouane Kessentini is an Assistant Professor in the Department of Computer and Information Science at the University of Michigan, Dearborn, MI. He is the founder of the Search-Based Software Engineering (SBSE@Michigan) research lab. He is the co-founder of the International Workshop on Refactoring (IWoR) and recognized by many research surveys as a leading researcher in the areas of search-based refactoring and software refactoring. Dr. Kessentini has several collaborations with different industrial companies on the use computational search, machine learning and evolutionary algorithms to address several software engineering and services computing problems such as software quality, software migration, software evolution, services quality, services composition, services refactoring, etc. He received many grants from both industry and federal agencies and published over 100 papers in software engineering, services computing and computational intelligence journals and conferences. He was also the co-chair of the SBSE track at the GECCO2014 and GECCO2015 conferences and he was the general chair of the 8th Search Based Software Engineering Symposium (SSBSE2016). He is the founder of the North American Symposium on Search Based Software Engineering and an invited speaker at the 2016 IEEE World Congress on Computational Intelligence (Vancouver, Canada). He will be the PC chair of MODELS2019.
Astor: An automated software repair framework
- Matías Martínez
University of Valenciennes and LAMIH UMR CNRS 8201
- 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.
- Matías Martínez is an assistant professor at the University of Valenciennes (France) and LAMIH UMR CNRS 8201. He received his diploma in computer science from UNICEN (Argentina) and his PhD from University of Lille (France). Prior to moving to academia, he worked as software developer and consultant at a multinational consulting company. His research interests are focused on software evolution, automated software repair, software testing and mobile applications. He is one of the founders and core developers of Astor, an automated program repair framework.
Search-based unit test generation with EvoSuite
10th Edition SSBSE special tutorial - voted best tutorial of the last nine SSBSE
- Gordon Fraser
University of Passau
- EvoSuite automatically generates test cases with assertions for classes written in Java code, using a search-based approach that evolves whole test suites towards satisfying a coverage criterion. For the produced test suites, EvoSuite suggests possible oracles by adding small and effective sets of assertions that concisely summarize the current behavior; these assertions allow the developer to detect deviations from expected behavior, and to capture the current behavior in order to protect against future defects breaking this behaviour. In this tutorial, we will discuss how to use of the EvoSuite search-based test generation infrastructure to apply search-based test generation, and how to build on EvoSuite to develop new techniques using, or extending, search-based testing.
- Prof. Gordon Fraser is a Full Professor in Computer Science at the University of Passau. He received his Ph.D. from Graz University of Technology, Austria, in 2007, then worked as a post-doc researcher at Saarland University, Germany, and as a (Senior) Lecturer at the University of Sheffield until 2017. He has published on improving software quality and programmer productivity at all major software engineering venues (e.g., TSE, TOSEM, ICSE, ISSTA, FSE, ASE, ICST) and has received six ACM SIGSOFT Distinguished Paper Awards (FSE'14, ISSTA'14, ASE'14, ASE'15, ESEC/FSE'15, ICSE'17), as well as best paper awards at SSBSE and GECCO. He is chair of the steering committees of the International Symposium on Search-Based Software Engineering (SSBSE). He has been programme chair of software engineering conferences (ASE, ICST, TAP, TAIC PART, SSBSE) and workshops, is a regular member of many programme and organising committees in the field (e.g., ICSE, FSE, ASE, ISSTA), is associate editor of the IEEE Transactions on Software Engineering (TSE) and Software Testing, Verification, and Reliability (STVR) journals.