465 papers · page 12 of 24
Sven Efftinge, Moritz Eysholdt, Jan Köhnlein, Sebastian Zarnekow, Robert von Massow, Wilhelm Hasselbring, Michael Hanus
Xtext is an open-source framework for implementing external, textual domain-specific languages (DSLs). So far, most DSLs implemented with Xtext and similar tools focus on structural aspects such as service specifications and entities. Because behavioral aspects are significantly …
John Freeman, Jaakko Järvi, Gabriel Foust
HotDrink is a JavaScript library for constructing forms, dialogs, and other common user interfaces for Web applications. With HotDrink, instead of writing event handlers, developers declare a "view-model" in JavaScript and a set of "bindings" between the view-model and the HTML e…
Geoffrey C. Hulette, Matthew J. Sottile, Allen D. Malony
Twig is a language for writing typemaps, programs which transform the type of a value while preserving its underlying meaning. Typemaps are typically used by tools that generate code, such as multi-language wrapper generators, to automatically convert types as needed. Twig builds…
Jon Rafkind, Matthew Flatt
Honu is a new language that fuses traditional algebraic notation (e.g., infix binary operators) with Scheme-style language extensibility. A key element of Honu's design is an enforestation parsing step, which converts a flat stream of tokens into an S-expression-like tree, in add…
Derek Rayside, Vajih Montaghami, Francesca Leung, Albert Yuen, Kevin Xu, Daniel Jackson
A technique for synthesizing iterators from declarative abstraction functions written in a relational logic specification language is described. The logic includes a transitive closure operator that makes it convenient for expressing reachability queries on linked data structures…
Taylor L. Riché, Rui C. Gonçalves, Bryan Marker, Don S. Batory
A classical approach to program derivation is to progressively extend a simple specification and then incrementally refine it to an implementation. We claim this approach is hard or impractical when reverse engineering legacy software architectures. We present a case study that s…
Uwe Ryssel, Joern Ploennigs, Klaus Kabitzsch
When using product lines, whose variability models are based on derived features, e.g., Simulink variant objects, the dependencies among the features are only described implicitly. This makes it difficult to verify the mapping of the features to the solution space and to create a…
Petr Spacek, Christophe Dony, Chouki Tibermacine, Luc Fabresse
In the context of Component-based Programming, which addresses the implementation stage of a component-based software engineering development process, this paper describes a specification and an operational integration of an inheritance system into a self-contained new component-…
Thomas Thüm, Ina Schaefer, Martin Hentschel, Sven Apel
A software product line is a set of similar software products that share a common code base. While software product lines can be implemented efficiently using feature-oriented programming, verifying each product individually does not scale, especially if human effort is required …
Eric Walkingshaw, Martin Erwig
We present a formal calculus for modeling and implementing variation in software. It unifies the compositional and annotative approaches to feature implementation and supports the development of abstractions that can be used to directly relate feature models to their implementati…
Huaxi (Yulin) Zhang, Lei Zhang, Christelle Urtado, Sylvain Vauttier, Marianne Huchard
Component-based development promotes a software development process that focuses on component reuse. How to describe a desired component before searching in the repository? How to find an existing component that fulfills the required functionalities? How to capture the system per…
B. J. Arnoldus, M. G. J. van den Brand, Alexander Serebrenik
A code generator is a program translating an input model into code. In this paper we focus on template-based code generators in the context of the model view controller architecture (MVC).
Kenichi Asai
A reflective language enables us to access, inspect, and/or modify the language semantics from within the same language framework. Although the degree of semantics exposure differs from one language to another, the most powerful approach, referred to as the behavioral reflection,…
Don S. Batory, Peter Höfner, Jongwook Kim
The relationship between feature modules and feature interactions is not well-understood. To explain classic examples of feature interaction, we show that features are not only composed sequentially, but also by cross-product and interaction operations that heretofore were implic…
Olivier Danvy
This tech talk describes how to write and how to inter-derive formal semantics for sequential programming languages. The progress reported here is (1) concrete guidelines to write each formal semantics to alleviate their proof obligations, and (2) simple calculational tools to ob…
Sebastian Erdweg, Lennart C. L. Kats, Tillmann Rendel, Christian Kästner, Klaus Ostermann, Eelco Visser
Large software projects consist of code written in a multitude of different (possibly domain-specific) languages, which are often deeply interspersed even in single files. While many proposals exist on how to integrate languages semantically and syntactically, the question of how…
Shahram Esmaeilsabzali, Bernd Fischer, Joanne M. Atlee
The output of a code generator is assumed to be correct and not usually intended to be read or modified; yet programmers are often interested in this, e.g., to monitor a system property. Here, we consider code customization for a family of code generators associated with big-step…
Matthias Felleisen
In the world of Racket, software systems consist of inter-operating components in different programming languages. A component's implementation language may provide the full functionality of Racket, or it may support a small domain-specific notation. Naturally, Racketeers constru…
John Freeman, Jaakko Järvi, Wonseok Kim, Mat Marcus, Sean Parent
User interfaces exhibit a wide range of features that are designed to assist users. Interaction with one widget may trigger value changes, disabling, or other behaviors in other widgets. Such automatic behavior may be confusing or disruptive to users. Research literature on user …
Abdelhakim Hannousse, Rémi Douence, Gilles Ardourel
Component based software engineering and aspect orientation are claimed to be two complementary approaches. While the former ensures the modularity and the reusability of software entities, the latter enables the modularity of crosscutting concerns that cannot be modularized as r…