Presenter: David Lorenz
In this talk we coin the term language-oriented modularity to refer to the process of constructing and composing DSALs to better support aspect-oriented modularity. Language-oriented modularity aims at keeping our aspect language as abstract as possible and our software code as modular as possible. While general purpose aspect-oriented languages offer low-level abstractions for modularizing a wide range of crosscutting concerns, they lack the modularity abstractions to tackle all cases of crosscutting. With language-oriented modularity, a solution to unanticipated crosscutting concerns is to construct and combine multiple DSALs to form aspect-oriented modularity of new kinds. We evaluate the AWESOME composition framework in terms of its support for language-oriented modularity.
Presenters: Lukas Marek, Danilo Ansaloni, and Walter Binder
Dynamic program analysis tools support numerous software engineering tasks, including profiling, debugging, and reverse engineering. Prevailing techniques for building dynamic analysis tools are based on low-level abstractions that make tool development tedious, error-prone, and expensive. To simplify the development of dynamic analysis tools, some researchers promoted the use of aspect-oriented programming (AOP). However, as mainstream AOP languages have not been designed to meet the requirements of dynamic analysis, the success of using AOP in this context remains limited. For example, in AspectJ, join points that are important for dynamic program analysis (e.g., the execution of bytecodes or basic blocks of code) are missing, access to reflective dynamic join point information is expensive, data passing between woven advice in local variables is not supported, and the mixing of low-level bytecode instrumentation and high-level AOP code is not foreseen. In this talk, we present DiSL, a new domain-specific aspect language for bytecode instrumentation. DiSL uses Java annotation syntax such that standard Java compilers can be used for compiling DiSL code. The language features an open join point model, novel constructs inspired by weave-time evaluation of conditional join points and by staged execution, and access to custom static and dynamic context information. Moreover, the DiSL weaver guarantees complete bytecode coverage. We have implemented several dynamic analysis tools in DiSL, including profilers for the inter- and intra-procedural control flow, debuggers, dynamic metrics collectors integrated in the Eclipse IDE to augment the static source views with dynamic information, and tools for workload characterization. These tools are concise and perform equally well as implementations using low-level techniques. DiSL has also been conceived as an intermediate language for future domain-specific analysis languages, as well as for AOP languages.