Source Code Evolution with Interactive Transformations

Keeping up with changing requirements, designs, and specifications requires software developers to continuously modify the existing software code base. Many conceptually simple modifications can have far-reaching effects, causing the editing process to become tedious and error-prone. For example, a change to the argument signature of a widely used function might require a systematic modification of all calls to that function to add, remove, or combine argument expressions. Although certain generic changes can be supported by a supplied set of canned transformations, tool providers cannot practicably anticipate all possible changes desired by the developers.

Our research enables developers to automate the editing tasks associated with source code changes through interactive creation and execution of formally-specified source-to-source transformations. In addition to being used to describe systematic editing operations, program transformations can be used to generate stylized code derived from the linguistic structure, such as serialization or data structure initialization code. When used interactively, transformation tools must meet unique challenges – they must be (1) sufficiently lightweight to be used “in-line” with other coding activities, (2) sufficiently powerful to deal with a broad range of code changing tasks, and (3) sufficiently understandable by programmers, despite exposing a non-textual linguistic representation of program source code. Our system is designed to address those challenges.

In this talk, I will present iXj, a hybrid visual/textual notation for describing source-to-source transformations on Java programs, as well as an integrated environment for creating and executing iXj transformations. I will discuss how we applied the programmer-oriented design methodology to create iXj, and how the iXj environment empowers the transformation developer through a number of carefully designed interactive techniques such as assisted pattern generation, partial result visualization, and exposure of the execution model. Additionally, I will present the techniques that we are using for evaluating the expressiveness of the language and the usability of the iXj environment.

Speaker Details

Marat Boshernitsan is a Computer Science Ph.D. candidate at the University of California, Berkeley, where he also received his B.A. (1997) and M.S. (2001) degrees in Computer Science. His research focus lies at the junction of software engineering, programming languages, and human-computer interaction. As part of his dissertation work with Professor Susan L. Graham, Marat has developed a tool for interactive creation and execution of source code editing transformations, which significantly decreases the effort required for making systematic edits to source code. In collaboration with Michael Van De Vanter of Sun Microsystems Laboratories, Marat was involved in design and development of CodeProcessor, an advanced source-code editor that uses automatic formatting based on the typographic conventions to improve readability of program source code.

Date:
Speakers:
Marat Boshernitsan
Affiliation:
Berkeley
    • Portrait of Jeff Running

      Jeff Running