465 papers · page 14 of 24
Ralf Lämmel
There is only that much space in the CS curriculum, and there are always new subjects that should be accommodated by the curriculum. For instance, in our community, we would want all graduates to leave university with a modest background in technical spaces, software languages, a…
Yuheng Long, Sean L. Mooney, Tyler Sondag, Hridesh Rajan
Writing correct and efficient concurrent programs still remains a challenge. Explicit concurrency is difficult, error prone, and creates code which is hard to maintain and debug. This type of concurrency also treats modular program design and concurrency as separate goals, where …
Weiyu Miao, Jeremy G. Siek
Garcia introduces a calculus for type-reflective metaprogramming that provides much of the power and flexibility of C++ templates and solves many of its problems. However, one of the problems that remains is that the residual program is not type checked until after meta computati…
Arie Middelkoop, Atze Dijkstra, S. Doaitse Swierstra
Type inference is the process of constructing a typing derivation while gradually discovering type information. During this process, inference algorithms typically make subtle decisions based on the derivation constructed so far.
Juan F. Navas, Jean-Philippe Babau, Jacques Pulou
This paper deals with embedded systems software and the modification of its architecture and behavior at execution-time. Incautious implementation of these features demands both heavy memory and performance overrun. To accomplish such software evolution activities in resource-con…
Zoltán Porkoláb, Ábel Sinkovics
Smooth integration of domain-specific languages into a general purpose host language requires absorbing of domain code written in arbitrary syntax. The integration should cause minimal syntactical and semantic overhead and introduce minimal dependency on external tools. In this p…
Tiark Rompf, Martin Odersky
Software engineering demands generality and abstraction, performance demands specialization and concretization. Generative programming can provide both, but the effort required to develop high-quality program generators likely offsets their benefits, even if a multi-stage program…
Uwe Ryssel, Joern Ploennigs, Klaus Kabitzsch
Function-block-based modeling is often used to develop embedded systems, particularly as system variants can be developed rapidly from existing modules. Generative approaches can simplify the handling and development of the resulting high variety of function-block-based models. B…
Sandro Schulze, Sven Apel, Christian Kästner
Some limitations of object-oriented mechanisms are known to cause code clones (e.g., extension using inheritance). Novel programming paradigms such as feature-oriented programming (FOP) aim at alleviating these limitations. However, it is an open issue whether FOP is really able …
Julio Sincero, Reinhard Tartler, Daniel Lohmann, Wolfgang Schröder-Preikschat
The C Preprocessor (CPP) is the tool of choice for the implementation of variability in many large-scale configurable software projects. Linux, probably the most-configurable piece of software ever, employs more than 10,000 preprocessor variables for this purpose. However, this d…
Éric Tanter, Philippe Moret, Walter Binder, Danilo Ansaloni
Aspect-oriented programming provides a convenient high-level model to define several kinds of dynamic analyses, in particular thanks to recent advances in exhaustive weaving in core libraries. Casting dynamic analyses as aspects allows the use of a single weaving infrastructure t…
Reinhard Wolfinger, Markus Löberbauer, Markus Jahn, Hanspeter Mössenböck
Plug-in components are a means for making feature-rich applications customizable. Combined with plug-and-play composition, end users can assemble customized applica-tions without programming. If plug-and-play composition is also dynamic, applications can be reconfigured on the fl…
Thomas Würthinger, Walter Binder, Danilo Ansaloni, Philippe Moret, Hanspeter Mössenböck
While dynamic code evolution in object-oriented systems is an important feature supported by dynamic languages, there is currently only limited support for dynamic code evolution in high-performance, state-of-the-art runtime systems for statically typed languages, such as the Jav…
Shumpei Akai, Shigeru Chiba
Synchronization is a good candidate for an aspect in aspect-oriented programming (AOP) since programmers have to choose the best granularity of synchronization for the underlying hardware to obtain the best execution performance. If synchronization is an aspect, programmers can c…
Anya Helene Bagge, Valentin David, Magne Haveraaen
Modern development practises 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 identifie…
Damien Cassou, Benjamin Bertran, Nicolas Loriant, Charles Consel
Developing pervasive computing applications is a difficult task because it requires to deal with a wide range of issues: heterogeneous devices, entity distribution, entity coordination, low-level hardware knowledge. . . Besides requiring various areas of expertise, programming su…
James R. Cordy
Languages and systems to support generative and transformational solutions have been around a long time. Systems such as XVCL, DMS, ASF+SDF, Stratego and TXL have proven mature, efficient and effective in a wide range of applications. Even so, adoption remains a serious issue - a…
Ronald Garcia, Andrew Lumsdaine
C++ template metaprogramming has been used with great success to build software applications and libraries. In practice, however, template metaprogramming suffers usability, reliability, and capability shortcomings, and it is not well understood in theory. Template metaprogrammin…
Florian Heidenreich, Jendrik Johannes, Mirko Seifert, Christian Wende, Marcel Böhme
Template languages are widely used within generative programming, because they provide intuitive means to generate software artefacts expressed in a specific object language. However, most template languages perform template instantiation on the level of string literals, which al…
Jaakko Järvi, Mat Marcus, Sean Parent, John Freeman, Jacob N. Smith
User interfaces for modern applications must support a rich set of interactive features. It is commonplace to find applications with dependencies between values manipulated by user interface elements, conditionally enabled controls, and script record-ability and playback against …