Section 19.1. INTRODUCTION


19.1. INTRODUCTION

Software design is an important activity within the software lifecycle, and its benefits are well documented [6, 7]. These include early assessment of the technical feasibility, correctness, and completeness of requirements, management of complexity and enhanced comprehension, greater opportunities for reuse, and improved evolvability. However, in practice, object-oriented design models have been less useful throughout the lifetime of software systems than these benefits suggest. As described in [4], a structural mismatch between requirements specifications and object-oriented software specifications causes a reduction in the expected benefits of design. A single requirement, such as distribution or synchronization, may impact a number of classes in a system, and therefore its support is scattered across those multiple classes. Such requirements are described as crosscutting requirements, or aspects [15]. On the other hand, a single class in a system may show support for multiple requirements tangled with the core responsibilities of that class. Scattering and tangling have a negative impact across the development lifecycle with respect to comprehensibility, traceability, evolvability, and reusability.

The theme design model [2, 4] removes this structural mismatch with decomposition capabilities that support the separation of the design for each requirement into different design models (called themes). Decomposition in this manner removes requirement scattering and tangling properties from software design, thereby also removing their negative impact. Corresponding composition capabilities are supported within the theme design model.

The primary contribution of this chapter is the specification of a means to capture reusable crosscutting behavior at the design level with crosscutting themes. A crosscutting theme is a design model that specifies the design of a crosscutting requirement independently from any design it may potentially crosscut and how that design may be reused wherever it may be required. Theme/UML provides a means to compose separate, potentially overlapping designs. Crosscutting themes differ from other kinds of themes in that they utilize templates (which are parameterized design elements, similar to those found in C++) from Unified Modeling Language (UML) [17]. Support for design themes require non-trivial changes to UML, resulting in an extended language called Theme/UML. Theme/UML includes changes to the UML meta-model, described elsewhere [3]. Section 19.2 motivates the need for modularizing crosscutting concerns at design time and gives some background on the theme design model. The model for designing themes that crosscut the rest of the design is described in Section 19.3, with Section 19.4 providing examples of well-known crosscutting behaviors, designed to be truly reusable.

A secondary contribution is an introduction to how two implementation approaches that support crosscutting behavior (AspectJ [14] and Hyper/J [23]) are supported at the design level by crosscutting themes. This support serves to illustrate that separation of aspects may be maintained throughout the software lifecycle. Suggested mappings to constructs in Hyper/J are illustrated in Section 19.5; those to constructs in AspectJ are illustrated in Section 19.6. Sections 19.7 and 19.8 present related work and conclusions, respectively.



Aspect-Oriented Software Development
Aspect-Oriented Software Development with Use Cases
ISBN: 0321268881
EAN: 2147483647
Year: 2003
Pages: 307

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net