Program Manipulation via Interactive Transformations

Marat Boshernitsan

EECS Department
University of California, Berkeley
Technical Report No. UCB/EECS-2006-100
July 25, 2006

http://www2.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-100.pdf

Software systems are evolving artifacts. Keeping up with changing requirements, designs, and specifications requires software developers to continuously modify the existing software code base. Many conceptually simple changes can have far-reaching effects, requiring numerous similar edits that make the modification process tedious and error-prone.

Repetitive and menial tasks demand automation. Given a high-level description of a change, an automated tool can apply that change throughout the source code. We have developed a system that enables developers to automate the editing tasks associated with source code changes through interactive creation and execution of formally-specified source-to-source transformations. We applied a task-centered design process to develop a language for describing program transformations and to design a user-interaction model that assists developers in creating transformations in this language. The transformation language combines textual and graphical elements and is sufficiently expressive to deal with a broad range of code-changing tasks. The transformation environment assists developers in visualizing and directing the transformation process. Its "by-example" interaction model provides scaffolding for constructing and executing transformations on a structure-based representation of program source code. We evaluated our system with Java developers and found that they were able to learn the language quickly and to use the environment effectively to complete a code editing task.

By enabling developers to manipulate source code with lightweight language-based program transformations, our system reduces the effort expended on making certain types of large and sweeping changes. In addition to making developers more efficient, this reduction in effort can lessen developers' resistance to making design-improving changes, ultimately leading to higher quality software.

Advisor: Susan L. Graham


BibTeX citation:

@phdthesis{Boshernitsan:EECS-2006-100,
    Author = {Boshernitsan, Marat},
    Title = {Program Manipulation via Interactive Transformations},
    School = {EECS Department, University of California, Berkeley},
    Year = {2006},
    Month = {Jul},
    URL = {http://www2.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-100.html},
    Number = {UCB/EECS-2006-100},
    Abstract = {Software systems are evolving artifacts. Keeping up with changing requirements, designs, and specifications requires software developers to continuously modify the existing software code base.  Many conceptually simple changes can have far-reaching effects, requiring numerous similar edits that make the modification process tedious and error-prone.

Repetitive and menial tasks demand automation. Given a high-level description of a change, an automated tool can apply that change throughout the source code.  We have developed a system that enables developers to automate the editing tasks associated with source code changes through interactive creation and execution of formally-specified source-to-source transformations.  We applied a task-centered design process to develop a language for describing program transformations and to design a user-interaction model that assists developers in creating transformations in this language.  The transformation language combines textual and graphical elements and is sufficiently expressive to deal with a broad range of code-changing tasks. The transformation environment assists developers in visualizing and directing the transformation process.  Its "by-example" interaction model provides scaffolding for constructing and executing transformations on a structure-based representation of program source code. We evaluated our system with Java developers and found that they were able to learn the language quickly and to use the environment effectively to complete a code editing task.

By enabling developers to manipulate source code with lightweight language-based program transformations, our system reduces the effort expended on making certain types of large and sweeping changes. In addition to making developers more efficient, this reduction in effort can lessen developers' resistance to making design-improving changes, ultimately leading to higher quality software.}
}

EndNote citation:

%0 Thesis
%A Boshernitsan, Marat
%T Program Manipulation via Interactive Transformations
%I EECS Department, University of California, Berkeley
%D 2006
%8 July 25
%@ UCB/EECS-2006-100
%U http://www2.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-100.html
%F Boshernitsan:EECS-2006-100