PhD Oral Proposal: Na Meng, Wednesday Oct. 3rd, 2pm. CST, ACES 3.116

Contact Name: 
Lydia Griffith
Oct 3, 2012 2:00pm

PhD Oral Proposal: Na Meng

When: Wednesday Oct. 3rd, 2pm.
Where: ACES 3.116
Research Supervisor:  Kathryn S. McKinley, Miryung Kim

Title: Generating, Locating, and Applying Systematic Edits by Learning
from Example(s)

Programmers make systematic edits—similar, but not identical changes
to multiple places during software development and maintenance.
Finding all the correct locations and making correct edits is a
tedious and error-prone process. Existing tools for automating
systematic edits are limited because they do not support edit
generation, edit location suggestion, or edit application at the same
time, except for specialized or trivial edits. However, since many
similar changes are needed in locations that contain similar context
(the surrounding dependent code and syntactic structures), there is an
opportunity to automate the systematic editing process by inferring
edit scripts and characterizing their context from code that
developers changed already. The challenge is we need to abstract and
generalize from example(s) in order to create an edit script that is
correct in many different contexts. This thesis seeks to substantially
improve the efficiency and correctness of automatic systematic program
transformation. (1) We design and implement Sydit to generate an
abstract, context-aware edit script from a single changed method, and
apply it to user-selected target method(s). This approach correctly
performs many edits, but we show that the edit scripts from one
example are not well suited to finding new locations. (2) We thus
design and implement Lase to generate a partially abstract,
context-aware edit script from multiple changed methods and show how
to use the same script to automatically find edit locations and apply
edits. Our experiments compare the systematic edits generated by Lase
and those created by developers and find that Lase is effective at
finding correct locations and making correct edits. (3) We propose to
explore a new approach to generate high-level, collaborative edit
scripts that span more than one method to handle sophisticated program
transformations, such as class refactoring. (4) Finally, we propose an
approach for checking the correctness of the transformations. Our work
aims at relieving developers from tedious and error-prone code changes
by performing systematic transformations in a consistent way, and by
guiding automated program repair, feature addition, and refactoring.