Refactoring with Synthesis from Examples
, ETH Zurich
Date: Tuesday, October 22, 2013
Time: 12:30 PM to 1:30 PM Note: all times are in the Eastern Time Zone
Location: 32-D463 (Star)
Host: Armando Solar-Lezama
Contact: Armando Solar-Lezama, firstname.lastname@example.org
Relevant URL: http://www.srl.inf.ethz.ch/raychev.php
Speaker URL: None
TALK: Refactoring with Synthesis from Examples
Refactoring has become an integral part of modern software development, with wide support in popular integrated development environments (IDEs). Modern IDEs provide a fixed set of supported refactorings, listed in a refactoring menu. But with IDEs supporting more and more refactorings, it is becoming increasingly difficult for programmers to discover and memorize all their names and meanings. Also, since the set of refactorings is hard-coded, if a programmer wants to achieve a slightly different code transformation, she has to either apply a (possibly non-obvious) sequence of several built-in refactorings, or just perform the transformation by hand.
In this talk, I present a novel approach to refactoring, based on synthesis from examples, which addresses these limitations. With our system, the programmer need not worry how to invoke individual refactorings or the order in which to apply them. Instead, a transformation is achieved via three simple steps: the programmer first indicates the start of a code refactoring phase (first example); then she performs some of the desired code changes manually (obtaining a second example); and finally, she asks the tool to complete the refactoring.
Our system completes the refactoring by first extracting the difference between the starting program and the modified version, and then synthesizing a sequence of refactorings that achieves (at least) the desired changes. To enable scalable synthesis, we introduce local refactorings, which allow to first discover a refactoring sequence on small program fragments and then extrapolate to a full refactoring sequence.
Bio: Veselin Raychev is a PhD student at ETH Zurich, where he has been working on concurrency analysis and program synthesis. He interest are in: program analysis, machine learning and algorithms. Before joining ETH, he was a Senior Software Engineer at Google developing algorithms for transit directions in Google Maps. He obtained his M.Sc. from Sofia University in 2009.
Created by Armando Solar-Lezama at Monday, October 21, 2013 at 10:04 AM.