Modular Programming with Aspectual Collaborations
Aspect-oriented programming (AOP) controls tangling of concerns 
by isolating aspects that cross-cut each other into building blocks.
Component-based programming supports software development by 
isolating reusable building blocks that can be assembled 
and connected in many different ways.  
We show how these concepts can be integrated by introducing a 
new component construct for programming called 
\emph{aspectual collaborations}.
We explore how these collaborations can be be deployed, composed, and reused.

Aspectual collaborations allow us to capture cross-cutting 
behavior -- for example, intercessionary advice, exception handling, 
maintain invariants, and add generic behavior -- in separately compiled units. 
These compiled can then be flexibly deployed once or several 
times into base applications or composed with other collaborations.

The Java type system suffices to provide reasonable type safety 
within collaborations, and combined with the outlined 
desugaring approaches, allows us to almost completely base 
our static safety claims on the analyses performed by the Java compiler.

Bibtex entry:

@TECHREPORT{MP-AC,
AUTHOR       = "Karl Lieberherr and Johan Ovlinger and Mira Mezini and David Lorenz",
TITLE        = "{Modular Programming with Aspectual Collaborations}",
INSTITUTION  = "College of Computer Science, Northeastern University",
YEAR         = 2001,
MONTH        = "March",
NUMBER       = "{NU-CCS-2001-04}",
ADDRESS      = "Boston, MA",
PAGES = "1-12"
}

Paper in various formats

Related paper: DJ and AOP

Aspect-Oriented Programming (AOP)