Speaker
C. Tull
(LBNL/ATLAS)
Description
In this paper we will discuss how Aspect-Oriented Programming (AOP) can be used to
implement and extend the functionality of HEP architectures in areas such as
performance monitoring, constraint checking, debugging and memory management. AOP is
the latest evolution in the line of technology for functional decomposition which
includes Structured Programming (SP) and Object-Oriented Programming (OOP). In AOP,
an Aspect can contribute to the implementation of a number of procedures and objects
and is used to capture a concern such as logging, memory allocation or thread
synchronization that crosscuts multiple modules and/or types. We have chosen Gaudi
as a representative HEP architecture because it is a component architecture and has
been successfully adopted by several HEP experiments. Since most HEP frameworks are
currently implemented in C++, for our study we have used AspectC++, an extension to
C++ that allows the use of AOP techniques without adversely affecting software
perfomance. We integrated AspectC++ in the development environment of the Atlas
experiment, and we will discuss some of the configuration management issues that may
arise in a mixed C++/AspectC++ environment. In this study we have focused on
"Development Aspects", i.e. aspects that are intended to facilitate program
development but can be transparently removed from the production code, such as
execution tracing, constraint checking and object lifetime monitoring. We will
briefly discuss possible "Production Aspects" related to cache management and object
creation. For each of the concerns we have examined we will discuss how traditional
SP or OOP techniques compare to the AOP solution we developed. We will conclude
discussing the short and medium term feasibility of introducing AOP, and AspectC++ in
particular, in the complex software systems of the LHC experiments.
Primary authors
C. Tull
(LBNL/ATLAS)
P. Calafiura
(LBNL/ATLAS)