Source Code Evolution with Interactive Transformations

98
Опубликовано 6 сентября 2016, 5:27
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.
Случайные видео
05.05.22 – 1 080 7170:16
This Collab Was Insane. #Shorts
29.07.16 – 4 274 7313:42
The Triple Monitor Mega MacBook!
автотехномузыкадетское