scispace - formally typeset
Search or ask a question
Topic

Program transformation

About: Program transformation is a research topic. Over the lifetime, 2468 publications have been published within this topic receiving 73415 citations.


Papers
More filters
Journal ArticleDOI
TL;DR: Meta-AspectJ is a language for generating AspectJ programs using code templates that minimizes the number of metaprogramming (quote/unquote) operators and uses type inference to reduce the need to remember type names for syntactic entities.
Abstract: Meta-AspectJ (MAJ) is a language for generating AspectJ programs using code templates. MAJ itself is an extension of Java, so users can interleave arbitrary Java code with AspectJ code templates. MAJ is a structured metaprogramming tool: a well-typed generator implies a syntactically correct generated program. MAJ promotes a methodology that combines aspect-oriented and generative programming. A valuable application is in implementing small domain-specific language extensions as generators using unobtrusive annotations for syntax extension and AspectJ as a back-end. The advantages of this approach are twofold. First, the generator integrates into an existing software application much as a regular API or library, instead of as a language extension. Second, a mature language implementation is easy to achieve with little effort since AspectJ takes care of the low-level issues of interfacing with the base Java language.In addition to its practical value, MAJ offers valuable insights to metaprogramming tool designers. It is a mature metaprogramming tool for AspectJ (and, by extension, Java): a lot of emphasis has been placed on context-sensitive parsing and error reporting. As a result, MAJ minimizes the number of metaprogramming (quote/unquote) operators and uses type inference to reduce the need to remember type names for syntactic entities.

18 citations

Book ChapterDOI
29 Mar 2008
TL;DR: This approach to consistently refactor systems in a model-driven manner is described in detail, along with its formal infrastructure, including a conformance relationship between object models and programs.
Abstract: Evolutionary tasks, specially refactoring, affect source code and object models, hindering correctness and conformance. Due to the gap between object models and programs, refactoring tasks get duplicated in commonly-used model-driven development approaches, such as Round-Trip Engineering. In this paper, we propose a formal approach to consistently refactor systems in a model-driven manner. Each object model refactoring applied by the user is associated with a sequence of behavior preserving program transformations, which can be semiautomatically performed to an initially conforming program. As a consequence, this foundation for model-driven refactoring guarantees behavior preservation of the target program, besides its conformance with the refactored object model. This approach is described in detail, along with its formal infrastructure, including a conformance relationship between object models and programs. A case study reveals evidence on issues that will surely recur in other model-driven development contexts.

18 citations

Journal ArticleDOI
TL;DR: This paper presents a formal system of ‘transformation rules’ that incorporates induction, a kind of ’Gentzen-style calculus’, impoverished, however, to a degree that just meets the needs of program transformation.

18 citations

Journal ArticleDOI
TL;DR: A non-standard, residualizing semantics for multiparadigm declarative programs and the proof of equivalence is a crucial result to demonstrate the correctness of (existing) partial evaluation schemes.

18 citations

Journal ArticleDOI
05 Apr 2004
TL;DR: The paper describes the requirements for such a tool, the shortcomings of this approach, and describes one such tool for the Smalltalk language, the Refactoring Browser Rewrite Engine, which is based on pattern matching of parse trees.
Abstract: In a commercial system, performing large, invasive changes, such as changing an entire infrastructure layer, is often impossible because development on a system cannot be halted for any significant amount of time. Performing such changes require tools that can perform mass transformations on the source code. One approach is to use tools that can do global search and replace on the entire program structure. However, simple text-based tools are too simplistic for program text. To make accurate changes in a large program the tool must be based on parsing the program text. The paper describes the requirements for such a tool, the shortcomings of this approach, and describes one such tool for the Smalltalk language. This tool, the Refactoring Browser Rewrite Engine, is based on pattern matching of parse trees. The paper then presents three case studies in the successful application of this tool in commercial settings and discusses the shortcomings of such an approach. "impossible adj. - 1 b felt to be incapable of being done, attained, or fulfiled : insuperably difficult. - Merriam-Webster Dictionary".

18 citations


Network Information
Related Topics (5)
Model checking
16.9K papers, 451.6K citations
92% related
Compiler
26.3K papers, 578.5K citations
88% related
Programming paradigm
18.7K papers, 467.9K citations
87% related
Executable
24K papers, 391.1K citations
86% related
Component-based software engineering
24.2K papers, 461.9K citations
86% related
Performance
Metrics
No. of papers in the topic in previous years
YearPapers
20234
202218
202126
202042
201956
201836