465 papers · page 15 of 24
Christian Kästner, Sven Apel, Martin Kuhlemann
Physical separation with class refinements and method refinements à la AHEAD and virtual separation using annotations à la #ifdef or CIDE are two competing implementation approaches for software product lines with complementary advantages. Although both approaches have been mainl…
Soonho Kong, Wontae Choi, Kwangkeun Yi
This article, based on Doh, Kim, and Schmidt’s “abstract parsing” technique, presents an abstract interpretation for statically check-ing the syntax of generated code in two-staged programs. Ab-stract parsing is a static analysis technique for checking the syntax of generated str…
Martin Kuhlemann, Don S. Batory, Christian Kästner
Programs can be composed from features. We want to verify automatically that all legal combinations of features can be composed safely without errors. Prior work on this problem assumed that features add code monotonically. We generalize prior work to enable features to add and r…
Yanhong A. Liu, Michael Gorbovitski, Scott D. Stoller
This paper describes a language and framework that allow coordinated transformations driven by invariants to be specified declaratively, as invariant rules, and applied automatically. The framework supports incremental maintenance of invariants for program design and optimization…
Phil McGachey, Antony L. Hosking, J. Eliot B. Moss
The indirection of object accesses is a common theme for target domains as diverse as transparent distribution, persistence, and program instrumentation. Virtualizing accesses to fields and methods (by redirecting calls through accessor and indirection methods) allows interpositi…
Srinivas Nedunuri, William R. Cook
It is well-known that a naive algorithm can often be turned into an efficient program by applying appropriate semantics-preserving transformations. This technique has been used to derive programs to solve a variety of maximum-sum programs. One problem with this approach is that e…
Rishiyur S. Nikhil
Moore's Law has precipitated a crisis in the creation of hardware systems (ASICs and FPGAs)-how to design such enormously complex concurrent systems quickly, reliably and affordably? At the same time, portable devices, the energy crisis, and high performance computing present a r…
Ansgar Radermacher, Arnaud Cuccuru, Sébastien Gérard, François Terrier
The development of embedded Systems becomes more and more complex. Model driven engineering can help to manage this complexity by specifying real-time properties in a declarative way and automating the deployment. The UML profile MARTE is a OMG standard that allows to model real-…
S. Hossein Sadat-Mohtasham, H. James Hoover
Aspect-oriented mechanisms are characterized by their join point models. A join point model has three components: join points, which are elements of language semantics; means of identifying join points; and means of affecting the behaviour at those join A pointcut-advice model is…
Frans Sanen, Eddy Truyen, Wouter Joosen
Mapping problem-space features into solution-space features is a fundamental configuration problem in software product line engineering. A configuration problem is defined as generating the most optimal combination of software features given a requirements specification and given…
Alex Villazón, Walter Binder, Danilo Ansaloni, Philippe Moret
Dynamic aspect-oriented programming (AOP) enables runtime adaptation of aspects, which is important for building sophisticated, aspect-based software engineering tools, such as adaptive profilers or debuggers that dynamically modify instrumentation code in response to user intera…
Alex Villazón, Walter Binder, Danilo Ansaloni, Philippe Moret
Developing tools for profiling, debugging, testing, and reverse engineering is error-prone, time-consuming, and therefore costly when using low-level techniques, such as bytecode instrumentation. As a solution to these problems, we promote tool development in Java using high-leve…
Stefan Wehr, Peter Thiemann
Generalized interfaces are an extension of the interface concept found in object-oriented languages such as Java or C#. The extension is inspired by Haskell's type classes. It supports retroactive and type-conditional interface implementations, binary methods, symmetric multimeth…
Jeremiah Willcock, Andrew Lumsdaine, Daniel J. Quinlan
The optimizations in modern compilers are constructed for a predetermined set of primitive types. As a result, programmers are unable to exploit optimizations for user-defined types where these optimizations would be correct and beneficial. Moreover, because the set of optimizati…
Sven Apel, Christian Kästner, Don S. Batory
A functional aspect is an aspect that has the semantics of a transformation; it is a function that maps a program to an advised program. Functional aspects are composed by function composition. In this paper, we explore functional aspects in the context of aspect-oriented refacto…
Sven Apel, Christian Kästner, Christian Lengauer
Feature-oriented programming (FOP) is a paradigm that incorporates programming language technology, program generation techniques, and stepwise refinement. In their GPCE'07 paper, Thaker et al. suggest the development of a type system for FOP to guarantee safe feature composition…
Don S. Batory
Modeling languages are a fundamental part of automated software development. MDD, for example, uses UML class diagrams and state machines as languages to define applications. In this paper, we explore how Feature Oriented Software Development (FOSD) uses modern mathematics as a m…
Ewen Denney, Bernd Fischer
Program verification using Hoare-style techniques requires many logical annotations. We have previously developed a generic annotation inference algorithm that weaves in all annotations required to certify safety properties for automatically generated code. It uses patterns to ca…
Andrew E. Fano
Over the past 15 years large systems integrators have grown in size by an order of magnitude. During this time the nature of the systems we build, the manner in which they are built, and the clients for whom they are built have seen corresponding growth. During this talk I will r…
Peter Gottschling, Andrew Lumsdaine
Concepts are a recently proposed extension to C++ for the direct linguistic support of generic programming. As the interface description mechanism for large-scale generic libraries, concepts do not exist in isolation, but rather in semantic frameworks (or concept lattices). Conce…