465 papers · page 16 of 24
Christian Hofer, Klaus Ostermann, Tillmann Rendel, Adriaan Moors
The influential pure embedding methodology of embedding domain-specific languages (DSLs) as libraries into a general-purpose host language forces the DSL designer to commit to a single semantics. This precludes the subsequent addition of compilation, optimization or domain-specif…
Jaakko Järvi, Mat Marcus, Sean Parent, John Freeman, Jacob N. Smith
A user interface, such as a dialog, assists a user in synthesising a set of values, typically parameters for a command object. Code for "command parameter synthesis" is usually application-specific and non-reusable, consisting of validation logic in event handlers and code that c…
Tetsuo Kamina, Tetsuo Tamai
Extensive research efforts have been devoted to implement a group of type-safe mutually recursive classes; recently, proposals for separating each member of the group as a reusable and composable programming unit have also been presented. One problem of these proposals is verbosi…
Chang Hwan Peter Kim, Christian Kästner, Don S. Batory
Feature modules are the building blocks of programs in software product lines (SPLs). A foundational assumption of feature-based program synthesis is that features are composed in a predefined sequence called a natural order. Recent work on virtual separation of concerns reveals …
Vinay Kulkarni, Sreedhar Reddy
We discuss our experience of using model-based techniques to generate model-based code generators. The central idea behind model-driven development (MDD) is to use suitable models to specify various concerns and transform these models to a variety of text artifacts. A business pr…
Michael Lienhardt, Alan Schmitt, Jean-Bernard Stefani
Building complex component-based software architectures can lead to subtle assemblage errors. In this paper, we introduce a type-system-based approach to avoid message handling errors when assembling component-based communication systems. Such errors are not captured by classical…
Erik Meijer
In 1984, John Hughes wrote a seminal paper titled, "Why Functional Programming Matters," in which he eloquently explained the value of pure and lazy functional programming. Due to the increasing importance of the Web and the introduction of many-core machines, in the quarter of a…
Marcílio Mendonça, Andrzej Wasowski, Krzysztof Czarnecki, Donald D. Cowan
Feature modeling is used in generative programming and software product-line engineering to capture the common and variable properties of programs within an application domain. The translation of feature models to propositional logics enabled the use of reasoning systems, such as…
Julien Mercadal, Nicolas Palix, Charles Consel, Julia L. Lawall
Coordinating entities in a networked environment has always been a significant challenge for software developers. In recent years, however, it has become even more difficult, because devices have increasingly rich capabilities, combining an ever larger range of technologies (netw…
Marko Rosenmüller, Norbert Siegmund, Gunter Saake, Sven Apel
Software product lines (SPLs) are used to create tailor-made software products by managing and composing reusable assets. Generating a software product from the assets of an SPL is possible statically before runtime or dynamically at load-time or runtime. Both approaches have ben…
Tom Rothamel, Yanhong A. Liu
High-level query constructs help greatly improve the clarity of programs and the productivity of programmers, and are being introduced to increasingly more languages. However, the use of high-level queries in programming languages can come at a cost to program efficiency, because…
Ilie Savga, Michael Rudolf, Sebastian Goetz, Uwe Aßmann
Although the API of a software framework should stay stable, in practice it often changes during maintenance. When deploying a new framework version such changes may invalidate plugins - modules that used one of its previous versions. While manual plugin adaptation is expensive a…
Ye Zhang, Torben Amtoft, Flemming Nielson
A general constraint solver simplifies the implementation of program analyses because constraint generation can then be separated from constraint solving. In return, a general solver often needs to sacrifice performance for generality. We describe a strategy that given a set of c…
Jeroen Arnoldus, Jeanot Bijpost, Mark van den Brand
Templates are a very common solution to generate code. They are used for different tasks like rendering webpages, creating Java Beans and so on. Most template systems have no notion of the object language and just generate text. The drawback of this approach is the possibility to…
Martin Bravenboer, Eelco Dolstra, Eelco Visser
Software written in one language often needs to construct sentences in another language, such as SQL queries, XML output, or shell command invocations. This is almost always done using unhygienic string manipulation, the concatenation of constants and client-supplied strings. A c…
Ryan Culpepper, Matthias Felleisen
Over the past two decades, Scheme macros have evolved into a powerful API for the compiler front-end. Like Lisp macros, their predecessors, Scheme macros expand source programs into a small core language; unlike Lisp systems, Scheme macro expanders preserve many desirable propert…
Pascal Fradet, Stéphane Hong Tuan Ha
International audience
Joseph Gil, Keren Lenz
Most software applications use a relational database for data man-agement and storage. Interaction with such a database is often done by letting the program construct strings with valid SQL statements, which are then sent for execution to the database engine. The fact that these …
Jaakko Järvi, Matthew A. Marcus, Jacob N. Smith
Large scale software is composed of libraries produced by different entities. Non-intrusive and efficient mechanisms for adapting data structures from one library to conform to APIs of another are essential for the success of large software projects. Concepts and concept maps, pl…
Georg Jung, John Hatcliff
Maintaining integrity, consistency, and enforcing conformance in architectures of large-scale systems requires specification and enforcement of many different forms of structural constraints. While type systems have proved effective for enforcing structural constraints in program…