T6: Aspect-Oriented Programming with C++ and AspectC++
||Tuesday, March 23, 2004, afternoon (half day)
||Olaf Spinczyk, Friedrich-Alexander-Universität Erlangen-Nürnberg
Andreas Gal, University of California, Irvine
Daniel Lohmann, Friedrich-Alexander-Universität Erlangen-Nürnberg
Attendees should be familiar with C++. Prior experience with aspect-oriented
programming is helpful, but not required.
Aspect-oriented programming (AOP) with C++ does not necessarily require a
language extension like AspectJ for Java. The C++ community has already
developed a rich set of idioms, generally based on templates, to support the
modular implementation of many crosscutting concerns. Although these
techniques are powerful, they also have important limitations in terms of
applicability and usability.
The first part of this tutorial will present the idioms available for AOP in
standard C++. We will describe and give examples of these techniques, and in
addition, we will explore the limitations and drawbacks of these approaches.
Participants will learn to recognize when standard C++ patterns are adequate
and when dedicated AOSD tools and language extensions should be preferred.
The second part of the tutorial will concentrate on AspectC++, an extension to
C++ that provides more powerful and usable constructs for modularizing the
implementation of crosscutting concerns in C++ programs. In AspectC++,
programmers can define and apply aspects to existing component code without
making changes to that code base. Tutorial attendees will learn the AspectC++
language elements and see how they are applied in various examples. The
tutorial will then focus on using AspectC++ within popular development
environments such as Visual Studio and Eclipse. The tutorial will conclude
with the presentation of a more complex "real-world" application that
highlights AspectC++ as a powerful language for the development of embedded
software product lines.
A compiler for AspectC++, which transforms AspectC++ code into standard C++, is
freely available at
Olaf Spinczyk has been doing research in applying aspect-oriented programming
to operating systems for more than five years. In 2002, he received the "best
dissertation of 2002" award from the computer science faculty of the University
of Magdeburg, Germany, for his work in this field and was a candidate for the
dissertation award by the German Computer Science Society (GI). In 2001, with
Andreas Gal, Olaf started the development of AspectC++ and the compiler, ac++.
In 2002, he started to cooperate with pure-systems GmbH in Magdeburg, Germany,
to speed up ac++ development and evolve the compiler from a research prototype
to a commercial product. Today, Olaf is the main designer and developer of the
Andreas Gal received his BS in Computer Information Systems from the University
of Wisconsin in 2000 and completed his MS in Computer Science at the University
of Magdeburg, Germany, in 2001. He worked as research assistant at the
University of Magdeburg, Germany, and the University of Erlangen-Nürnberg,
Germany. Currently, he is a PhD student and graduate student researcher at the
University of California, Irvine. Andreas is member of the ACM.
Daniel Lohmann worked as software developer, consultant, and trainer for
several years. He finished his Diploma in Computer Science in 2002. His PhD
research is on the development of aspect-oriented operating system
product-lines. Since joining the University of Erlangen-Nürnberg, he has
actively participated in the AspectC++ language design and compiler
development. His main focus is the combination of aspects with generic code.
Edited by the AOSD Conference Committee. Send comments to: firstname.lastname@example.org