Refactoring with Synthesis from Examples

Speaker: Veselin Raychev , ETH Zurich

Date: Tuesday, October 22, 2013

Time: 12:30 PM to 1:30 PM Note: all times are in the Eastern Time Zone

Public: Yes

Location: 32-D463 (Star)

Event Type:

Room Description:

Host: Armando Solar-Lezama

Contact: Armando Solar-Lezama,

Relevant URL:

Speaker URL: None

Speaker Photo:

Reminders to:,

Reminder Subject: 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.

Research Areas:

Impact Areas:

See other events that are part of the PL/SE Seminar Series 2013/2014.

Created by Armando Solar-Lezama Email at Monday, October 21, 2013 at 10:04 AM.