Section 18.1. INTRODUCTION


18.1. INTRODUCTION

As software technology becomes a core part of business enterprises, customers demand a wider range of software systems. This demand coincides with the increasing use of personal computers and today's easy access to local and global communication networks, which together constitute an excellent framework for building complex open distributed systems.

However, quickly producing such systems challenges software developers, whose traditional methods and tools are proving inadequate to the task of coping with new requirements. Enterprise software developers recognize that they cannot address all of a product's requirements in its first release. They will have to deal with numerous revisions during the product's lifetime. This situation, which mainly involves functional extensions, is even harder to manage when the multiplicity of concerns magnifies the application complexity. In order to maintain aggressive profit margins, software companies must reduce their costs when developing new systems. In this new setting, features such as software reusability, adaptability, flexibility, and evolution are becoming mandatory, representing today's major challenges of the software development process.

During the last few years, aspect-oriented programming has emerged as an appropriate technology for developing systems that have to deal with such complexity. One of the main advantages of AOSD approaches is that they allow software developers to react easily to unanticipated changes in existing software systems, while promoting reusability of already tested and designed software components. In this chapter, the results obtained within the national Spanish project "Reusable Software Components for Open Systems" are presented. In the context of this project, aspect-oriented programming models and techniques [11, 13] have been developed to deal with common crosscutting concerns in open distributed systems including issues relating to middleware platforms, coordination, synchronization, exception handling, and thread management. Our experience shows that traditional programmers beginning to use aspect-oriented programming models have difficulties until they acquire the necessary expertise. This is mainly due to the fact that although one can have the best programming models and tools aimed for AOP such as Hypert/J [12], AspectJ [9], or Composition Filters [4], they will never be easily applicable if the software system being developed was designed without considering aspect-oriented concepts. In such cases, the programmer will have to redesign some parts of the system to introduce separation of crosscutting concerns. In many organizations, changing the design is explicitly not a programmer's responsibility.

Although the results obtained from the project were relevant enough from the programming level point of view, we would like to emphasize the main lesson learned: aspect-orientation should be taken into account in earlier stages of the software lifecycle.

In the same way that there is a structured software lifecycle or an object-oriented software lifecycle, we argue that an aspect-oriented software lifecycle is needed. For example, UML was created to provide object-oriented and component-based modeling. But, where is the methodology that allows aspect-oriented modeling? We have good tools for aspect-orientation at the programming level, but how should aspect-oriented systems be designed and modeled? Once the system has been designed and implemented, is there a correspondence between design and implementation? How do future changes affect both parts? In this chapter, we present our results on these problems. We introduce the reader to aspect-oriented concepts at the design level using two different approaches: an extension of UML with an aspect profile and the introduction of new primitives in architectural description languages (ADLs) to support aspect definition and composition.

The rest of the chapter is structured as follows: In Section 18.2, a case study is presented to highlight the main disadvantages of using AOP without an aspect-oriented design. Section 18.3 outlines the two different approaches we have followed to consider aspects at the design level. Finally, the main ideas presented in the chapter are summarized in Section 18.4.



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