Section 25.1. INTRODUCTION


25.1. INTRODUCTION

Component-based systems development is the composition of systems from parts called software components. Components encapsulate data and functions. They often provide events and are self-describing, and many can be dynamically "plugged and played" into running applications [1, 7, 36]. In building systems, we often use a mixture of newly built and existing COTS (Commercial Off-The-Shelf) components. For the latter, we usually have no access to source code.

Engineering software components can be quite a challenging task. Components must be identified, and their requirements must be specified. Component interaction is crucial, so both provided and required component behavior needs identification and documentation [18, 32]. Ideally, components are implemented using a technology that supports a high degree of component reuse. Users of components may want to be able to understand and correctly plug-in components at runtime.

We have found problems with most component design methods and implementation technologies. In our experience, they do not produce components with sufficiently flexible interfaces, run-time adaptability, or good enough documentation [11, 12]. A major weakness of current methodology is the inability to describe functional and non-functional characteristics and inter-relationships of the components.

In the past, we used aspects (crosscutting concerns) at the requirements level to improve the description of our components [10]. When this proved successful, we applied the concept to component design and implementation [11, 12]. This involves using aspects to better describe the impact of crosscutting concerns on components at the design level. We have made use of these aspect-oriented component designs to help build components with more reusable and adaptable functionality. We have also used encodings of aspects associated with software components at runtime [12]. This process uses aspect information to support dynamic component adaptation, introspection, indexing and retrieval, and validation.

Most aspect-oriented software development uses aspects in similar ways to the way we do. Aspects are used to identify and codify crosscutting concerns on objects. Similarly, some reflective systems use aspect information to support run-time adaptation [25, 30]. Most aspect programming systems weave code into join points of programs [20]. Some design approaches use aspects (or "viewpoints" or "hyperslices") to provide multiple perspectives on the object designs [8, 16, 18, 37].

In this chapter, we provide a summary of our work, applying aspects to the development of software components. We refer readers interested in a more comprehensive discussion of our work to our previously published papers [10, 11, 12, 14].



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