Foreword
Every summer semester, the Software Engineering Group of the University of Fribourg proposes a
seminar to his master level students on a chosen “advanced software engineering” topic. The 2006
edition of the seminar is devoted to Aspect Oriented Programming (AOP).
In object-oriented programming (OOP), one usually captures the main concerns of a problem
(e.g. for a banking application, money withdrawal at an ATM, funds transfer,...) and then encapsulates
them into classes. The problem is that some “accessory”, non-business operations are needed (i.e.
logging, authentication, caching, transactions,...). These operations are shared by several classes of a
system, and each of them has to code their firing.
The main idea behind AOP is to consider these operations as crosscutting aspects and to group
them into separate modules, which are automatically called by the system. This new approach
helps building clean software architectures and completes the toolbox of software engineers, already
containing design patterns, frameworks, refactoring, unit testing,... AOP is particularly well suited
for implementing middleware frameworks which are typically responsible for these crosscutting
concerns. Indeed, the additional functionnalities can be transparently injected (or weaved) at com-
pile, load or run time into the core business code which (at the source level) remains clean and unchanged.
The goal of this seminar is to familiarize its participants to this new AOP paradigm, to its ad-
vantages through examples and to its possible implementations. To achieve this goal, the book AspectJ
in Action - Practical Aspect-Oriented Programming by Ramnivas Laddad is a very good starting point.
Thus the main part of the seminar focuses on AspectJ, but the last presentation introduces two other
main AOP frameworks, Spring AOP and JBoss AOP, and compares them with AspectJ.
The participants did a great job learning this new exciting technology. They also spent a fair
amount of time programming and debugging their own AOP example applications, which they formally
presented and explained to their colleagues. We are thankful for their efforts and hope they will consider
using AOP in their future software development projects.
Patrik Fuhrer and Jacques Pasquier
iii