Summary: Evaluating Module Systems for Crosscutting Concerns
Ph.D. General Examination Report
September 28, 2000
Department of Computer Science and Engineering
University of Washington
Box 352350, Seattle, WA 98195 USA
Although object-oriented programming techniques support modular decomposition of data types well, there are
a number of programming concerns that cannot be cleanly modularized using conventional language mechanisms.
This paper classifies these concerns into several categories, and describes examples and a prototypical challenge
problem from each category. It then describes several recent techniques designed to improve program modularity in
the face of these concerns. The strengths and weaknesses of each technique are evaluated with respect to the
challenge problems. The paper concludes with a discussion of future research directions.
1. Object-Oriented Modularity
A module, as used in this paper, is a programming environment mechanism for decomposing a large software
program into smaller pieces, which the environment can automatically compose into a complete program later.
Modules yield a number of programming benefits [P72]. The most important benefit is the intellectual leverage
gained by separating the different concerns (programming issues) within a large program into smaller modules.