Results 1 - 10
of
15
WebDSL: A Case Study in Domain-Specific Language Engineering
"... Abstract. The goal of domain-specific languages (DSLs) is to increase the productivity of software engineers by abstracting from low-level boilerplate code. Introduction of DSLs in the software development process requires a smooth workflow for the production of DSLs themselves. This requires techno ..."
Abstract
-
Cited by 14 (4 self)
- Add to MetaCart
Abstract. The goal of domain-specific languages (DSLs) is to increase the productivity of software engineers by abstracting from low-level boilerplate code. Introduction of DSLs in the software development process requires a smooth workflow for the production of DSLs themselves. This requires technology for designing and implementing DSLs, but also a methodology for using that technology. That is, a collection of guidelines, design patterns, and reusable DSL components that show developers how
Stratego/XT 0.17 -- A Language and Toolset for Program Transformation
- SCIENCE OF COMPUTER PROGRAMMING, SPECIAL ISSUE ON EXPERIMENTAL SYSTEMS AND TOOLS
, 2008
"... ..."
Model-driven software evolution: A research agenda
- IN PROC. INT. WS ON MODEL-DRIVEN SOFTWARE EVOLUTION HELD WITH THE ECSMR’07
, 2007
"... Software systems need to evolve, and systems built using model-driven approaches are no exception. What complicates model-driven engineering is that it requires multiple dimensions of evolution. In regular evolution, the modeling language is used to make the changes. In meta-model evolution, changes ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
Software systems need to evolve, and systems built using model-driven approaches are no exception. What complicates model-driven engineering is that it requires multiple dimensions of evolution. In regular evolution, the modeling language is used to make the changes. In meta-model evolution, changes are required to the modeling notation. In platform evolution, the code generators and application framework change to reflect new requirements on the target platform. Finally, in abstraction evolution, new modeling languages are added to the set of (modeling) languages to reflect increased understanding of a technical or business domain. While MDE has been optimized for regular evolution, presently little or no support exists for metamodel, platform and abstraction evolution. In this paper, we analyze the problems raised by the evolution of model-based software systems and identify challenges to be addressed by research in this area.
Abstract Fusing a Transformation Language with an Open Compiler
"... Transformation systems such as Stratego/XT provide powerful analysis and transformation frameworks and concise languages for language processing, but instantiating them for every subject language is an arduous task, most often resulting in half-completed frontends. Open compilers, like the Eclipse C ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
Transformation systems such as Stratego/XT provide powerful analysis and transformation frameworks and concise languages for language processing, but instantiating them for every subject language is an arduous task, most often resulting in half-completed frontends. Open compilers, like the Eclipse Compiler for Java, provide mature frontends with robust parsers and type checkers, but solving language processing problems in general purpose languages without transformation libraries is tedious. Reusing these frontends with existing transformation systems is therefore attractive. However, for this reuse to be optimal, the functional logic found in the frontend should be exposed to the transformation system – simple data serialization of the abstract syntax tree is not enough, as this fails to expose important compiler functionality, such as import graphs, symbol tables and the type checker. In this paper, we introduce a scriptable analysis and transformation framework for Java built on top of the Eclipse Java compiler. The framework consists of an adapter extracted from the abstract syntax tree of the compiler, and an interpreter for the Stratego language. The adapter allows the Stratego interpreter to rewrite directly on the compiler AST. We illustrate the applicability of our system with scripts written in Stratego that perform framework and library-specific analyses and transformations. 1
Semantics Driven Disambiguation: A comparison of different approaches
"... Context-sensitive languages such as C or C++ can be parsed using a context-free but ambiguous grammar, which requires another stage, disambiguation, in order to select the single parse tree that complies with the language’s semantical rules. Naturally, large and complex languages induce large and co ..."
Abstract
- Add to MetaCart
Context-sensitive languages such as C or C++ can be parsed using a context-free but ambiguous grammar, which requires another stage, disambiguation, in order to select the single parse tree that complies with the language’s semantical rules. Naturally, large and complex languages induce large and complex disambiguation stages. If, in addition, the parser should be extensible, for instance to enable the embedding of domain specific languages, the disambiguation techniques should feature traditional software-engineering qualities: modularity, extensibility, scalability and expressiveness. We evaluate three approaches to write disambiguation filters for SDF grammars: algebraic equations with ASF, rewrite-rules with programmable traversals for Stratego, and attribute grammars with TAG (Transformers Attribute Grammar), our system. To this end we introduce Phenix, a highly ambiguous language. Its “standard” grammar exhibits ambiguities inspired by those found in the C and C++ standard grammars. To evaluate modularity, the grammar is layered: it starts with a small core language, and several layers add new features, new production rules, and new ambiguities.
N U I V
, 2008
"... Modern development practices encourage extensive testing of code while it is still under development, using unit tests to check individual code units in isolation. Such tests are typically case-based, checking a likely error scenario or an error that has previously been identified and fixed. Coming ..."
Abstract
- Add to MetaCart
Modern development practices encourage extensive testing of code while it is still under development, using unit tests to check individual code units in isolation. Such tests are typically case-based, checking a likely error scenario or an error that has previously been identified and fixed. Coming up with good test cases is challenging, and focusing on individual tests can distract from creating tests that cover the full functionality. Axioms, known from program specification, allow for an alternative way of generating test cases, where the intended functionality is described as rules or equations that can be checked automatically. Axioms are proposed as part of the concept feature of the upcoming C++0x standard. In this paper, we describe how tests may be generated automatically from axioms in C++ concepts, and supplied with appropriate test data to form effective automated unit tests. 1
Frontiers of Reverse Engineering: a Conceptual Model
"... Software reverse engineering is a crucial task to reconstruct high-level views of a software system—with the purpose of understanding and/or maintaining it—when the only reliable source of information is the source code, or even the system binaries. This paper discusses key reverse engineering conce ..."
Abstract
- Add to MetaCart
Software reverse engineering is a crucial task to reconstruct high-level views of a software system—with the purpose of understanding and/or maintaining it—when the only reliable source of information is the source code, or even the system binaries. This paper discusses key reverse engineering concepts through a UML conceptual model. Specifically, the model is composed of a set of UML class diagrams describing relationships existing among reverse engineering processes, tools, artifacts, and stakeholders. 1
Compiler
"... title = {Fusing a Transformation Language with an Open Compiler}, booktitle = {Seventh Workshop on Language Descriptions, Tools, and Applications (LDTA’07)}, pages = {18--31}, year = {2007}, editor = {A. Sloane and A. Johnstone}, address = {Braga, Portugal}, month = {March} ..."
Abstract
- Add to MetaCart
title = {Fusing a Transformation Language with an Open Compiler}, booktitle = {Seventh Workshop on Language Descriptions, Tools, and Applications (LDTA’07)}, pages = {18--31}, year = {2007}, editor = {A. Sloane and A. Johnstone}, address = {Braga, Portugal}, month = {March}
Spoofax: An Extensible, Interactive Development Environment for Program
"... title = {Spoofax: An Interactive Development Environment for Program Transformation with {Stratego/XT}}, booktitle = {Seventh Workshop on Language Descriptions, Tools, and Applications (LDTA’07)}, pages = {47--50}, year = {2007}, editor = {A. Sloane and A. Johnstone}, address = {Braga, Portugal}, mo ..."
Abstract
- Add to MetaCart
title = {Spoofax: An Interactive Development Environment for Program Transformation with {Stratego/XT}}, booktitle = {Seventh Workshop on Language Descriptions, Tools, and Applications (LDTA’07)}, pages = {47--50}, year = {2007}, editor = {A. Sloane and A. Johnstone}, address = {Braga, Portugal}, month = {March}

