Paper Summary:Systematic Editing: Generating Program Transformations from an Example

A summary of the paper: Systematic Editing:
Generating Program Transformations from an Example

  1. Focus / Problem to be solved
    1. Existing tools for systematic program transformations are limited
  2. Importance
  3. Method
    1. abstracts variable, method and type names and encodes edit positions relative to the extracted context. This identifier and edit position abstraction makes the edits applicable to similar yet not identical context
      1. context extraction
      2. Identifier abstraction
      3. Edit position abstraction
      4. Edit script application
    2. Syntactic Program Differencing
      1. Change Distiller
        1. AST trees for all updated, moved and unchanged nodes
        2. bigram string similarity for leaf nodes
        3. subtree similarity for inner nodes
        4. measure similarity
        5. The bigram similarity of two strings is the size of their bigram set intersection divided by the average of their sizes. If the similarity is above an input threshold, σ, ChangeDistiller includes the two leafs in its pair-wise mappings.
      2. Modified Change Distiller
        1. inner nodes to perform equivalent control-flow functions
          1. while match only to while or for
        2. match leaf nodes to inner nodes using bigram string similarity
  4. Context
    1. search and replace in text editor
    2. IDE, a set of semantics-preserving transformations
    3. Program differencing
      1. lines
      2. abstract syntax tree
      3. control flow graph nodes
      4. program dependence graph nodes
    4. Refactoring
    5. Source transformation languages
    6. Simultaneous editing
    7. Suggesting edit locations
    8. Example based program migration and correction
  5. Results
    1. For 82% of the edits (46/56), SYDIT matches the context and applies an edit, producing code that is 96% similar to the oracle. Overall, SYDIT mimics human programmers correctly on 70% (39/56) of the edits.
  6. Unique contributions
    1. how to generalize a program transformation from an example to make it applicable to similar but not identical contexts, and
    2. a rigorous empirical validation of SYDIT.
  7. Possible applications
  8. Notes
    1. systematic changes:
      1. changes with similar contexts, such as calling the same method or accessing the same field
This entry was posted in Programming Language. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s