2001 · 226 citations · 9 references
ComputingComputer ScienceDesignRequirements EngineeringSoftware EngineeringSystems DesignObject-oriented DesignObject-oriented ProgrammingSoftware ArchitectureSoftware DesignSoftware ModelingSoftware ReuseAspect-oriented ProgrammingCompositionCross-cuttingDesign PatternsObject-oriented ArchitectureProgramming Model DesignSoftware Development LifecycleSoftware Lifecycle Management
Requirements such as distribution or tracing have an impact on multiple classes in a system. They are cross-cutting requirements, or aspects. Their support is, by necessity, scattered across those multiple classes. A look at an individual class may also show support for cross-cutting requirements tangled up with the core responsibilities of that class. Scattering and tangling make object-oriented software difficult to understand, extend and reuse. Though design is an important activity within the software lifecycle with well-documented benefits, those benefits are reduced when cross-cutting requirements are present. This paper presents a means to mitigate these problems by separating the design of cross-cutting requirements into composition patterns. Composition patterns require extensions to the UML, and are based on a combination of the subjectoriented model for composing separate, overlapping designs, and UML templates. This paper also demonstrates how composition patterns map to one programming model that provides a solution for separation of cross-cutting requirements in code---aspect-oriented programming. This mapping serves to illustrate that separation of aspects may be maintained throughout the software lifecycle.
9
William Harrison, Harold Ossher · 1993 · 651 citations · Full text
Using role components in implement collaboration-based designs
Michael VanHilst, David Notkin · 1996 · 258 citations · Full text
Computing, Computer Science, Design +17
Siobhán Clarke, William Harrison, Harold Ossher et al. · 1999 · 150 citations