Chapter 8. Untangling Crosscutting Models with CAESARMIRA MEZINI AND KLAUS OSTERMANN Since the structured programming movement in the 1970s, programming language research has concentrated on mechanisms for encoding hierarchical models, that is, mechanisms for viewing a system at more or less detail. This works well if we assume that real-world systems can be organized in mind-independent concept hierarchies. However, different perspectives on a system may yield models that are not hierarchically related to each other. Since it is not possible to represent such crosscutting models in traditional languages, we are forced to structure software systems into hierarchical models by arbitrarily choosing one of the crosscutting models as the primary decomposition criteria. This arbitrary choice of the primary model results in code tangling and scattering. We argue that aspect-oriented (AO) languages need better support for crosscutting models. We emphasize that join point interception, while an important corner stone to modularizing crosscutting models, does not alone solve these problems. To alleviate these problems, we propose CAESAR. With CAESAR, it is possible to implement different pieces of software with respect to different crosscutting models (encoded as so-called collaboration interfaces) and later combine them on-demand by means of a special translator called binding. CAESAR'S strengths are in the reuse and componentization of aspects, allowing us to use aspects polymorphically. We introduce the notion of aspectual polymorphism as a generalization of subtype polymorphism to crosscutting models and propose a novel concept for dynamic aspect deployment in order to realize aspectual polymorphism. Static type safety is preserved due to the introduction of virtual classes and family polymorphism. |