465 papers · page 17 of 24
Tetsuo Kamina, Tetsuo Tamai
One limitation of the well-known family polymorphism approach is that each "family" will be a large monolithic program. In this paper, we introduce a minimal lightweight set of language features that treat each member of a family as a reusable programming unit, while preserving t…
Miguel A. Laguna, Bruno González-Baixauli, José M. Marqués
One of the key problems in the development of software product lines is the representation and management of variability and commonality. The customary way to define both aspects is by means of feature models that also allow the configuration of each specific application within t…
Michael Lienhardt, Alan Schmitt, Jean-Bernard Stefani
Programming in an open environment remains challenging because it requires combining modularity, security, concurrency, distribution, and dynamicity. In this paper, we propose an approach to open distributed programming that exploits the notion of locality, which has been used in…
Florence Maraninchi, Tayeb Bouhadiba
Every notion of a component for the development of embedded systems has to take heterogeneity into account: components may be hardware or software or OS, synchronous or asynchronous, deterministic or not, detailed w.r.t. time or not, detailed w.r.t. data or not, etc. A lot of app…
Peter Pirkelbauer, Yuriy Solodkyy, Bjarne Stroustrup
Multiple dispatch - the selection of a function to be invoked based on the dynamic type of two or more arguments - is a solution to several classical problems in object-oriented programming. Open multi-methods generalize multiple dispatch towards open-class extensions, which impr…
Markus Püschel
As the computing world "goes multicore", high performance library development finally becomes a nightmare. Optimal programs, and their underlying algorithms, have to be adapted to take full advantage of the platform's parallelism, memory hierarchy, and available instruction set. …
Ilie Savga, Michael Rudolf
The evolution of a software framework may invalidate existing plugins - modules that used one of its previous versions. To preserve binary compatibility (i.e., plugins will link and run with a new framework release without recompilation), we automatically create an adaptation lay…
Bran Selic
The limited processing power and memory capacities of early computing technologies often forced designers of real-time and embedded software to devise relatively sophisticated and complex architectural and programming patterns. The primary motivation, of course, was to eke out as…
Sahil Thaker, Don S. Batory, David Kitchin, William R. Cook
Programs of a software product line can be synthesized by composing modules that implement features. Besides high-level domain constraints that govern the compatibility of features, there are also low-level implementation constraints: a feature module can reference elements that …
Salvador Trujillo, Maider Azanza, Oscar Díaz
Recent advances in Software Engineering have reduced the cost of coding programs at the expense of increasing the complexity of program synthesis, i.e. metaprograms, which when executed, will synthesize a target program. The traditional cycle of configuring-linking-compiling, now…
Todd L. Veldhuizen
Software is a communication system. The usual topic of communication is program behavior, as encoded by programs. Domain-specific libraries are codebooks, domain-specific languages are coding schemes, and so forth. To turn metaphor into method, we adapt tools from information the…
Philip Weaver, Garrin Kimmell, Nicolas Frisby, Perry Alexander
Modular Monadic Semantics (MMS) is a well-known mechanism for structuring modular denotational semantic definitions for programming languages. The principal attraction of MMS is that families of language constructs can be independently specified and later combined in a mix-and-ma…
Victor L. Winter, Azamatbek Mametjanov
Embedded systems can be viewed as scaled-down versions of their stand-alone counterparts. In many cases, the software abstractions and libraries for embedded systems can be derived from libraries for stand-alone systems. One such example is the Java library for Java Virtual Machi…
Eric Van Wyk, August Schwerdfeger
This paper introduces new parsing and context-aware scanning algorithms in which the scanner uses contextual information to disambiguate lexical syntax. The parser uses a slightly modified LR-style algorithm that passes to the scanner the set of valid symbols that the scanner may…
Vander Alves, Rohit Gheyi, Tiago Massoni, Uirá Kulesza, Paulo Borba, Carlos José Pereira de Lucena
Adoption strategies for Software Product Lines (SPL) frequently involve bootstrapping existing products into a SPL and extending an existing SPL to encompass another product. One way to do that is to use program refactorings. However, the traditional notion of refactoring does no…
Sven Apel, Don S. Batory
Aspect-Oriented Programming (AOP) and Feature-Oriented Programming (FOP) are complementary technologies that can be combined to overcome their individual limitations. Aspectual Mixin Layers (AML) is a representative approach that unifies AOP and FOP. We use AML in a non-trivial c…
Anya Helene Bagge, Valentin David, Magne Haveraaen, Karl Trygve Kalleberg
Dealing with failure and exceptional situations is an important but tricky part of programming, especially when reusing existing components. Traditionally, it has been up to the designer of a library to decide whether to use a language's exception mechanism, return values, or oth…
Peter Barron, Vinny Cahill
This paper presents YABS, a novel domain-specific language for defining entity behavior in pervasive computing environments. The programming model of YABS is inspired by nature and, in particular, the observations made by the French biologist Grassé on how social insects coordina…
Walter Binder, Jarle Hulaas
Code instrumentation is finding more and more practical applications, but the required program transformations are often difficult to implement, due to the lack of dedicated, high-level tools. In this paper we present a novel instrumentation framework that supports the partial ev…
Edwin C. Brady, Kevin Hammond
Dependent types and multi-stage programming have both been used, separately, in programming language design and implementation. Each technique has its own advantages --- with dependent types, we can verify aspects of interpreters and compilers such as type safety and stack invari…