On the Design of Aspect-Oriented Composition Models for Software Evolution
چکیده
Aspect-oriented programming is an emerging approach in software development, which provides new possibilities for separation of concerns. Aspectoriented languages offer abstractions for the implementation of concerns whose modularization cannot be achieved by using traditional programming languages. Such concerns are generally termed as crosscutting concerns. It is generally agreed that separating the right concerns from each other enhances software quality factors such as reusability and adaptability. The separated concerns in software must be composed together so that software behaves according to its requirements in a coherent way. We refer to language mechanisms that separate and compose concerns as 'composition mechanisms'. This thesis evaluates the software composition mechanisms of current aspectoriented languages from the perspective of software quality factors such as evolvability, comprehensibility, predictability and adaptability. Based on this study, the thesis proposes novel extensions to current aspect-oriented languages so that programs written in these languages exhibit better quality. A considerable number of aspect-oriented languages has been introduced for modularizing crosscutting concerns. Naturally, these languages share a number of common concepts and have distinctive features as well. For this reason, we propose a reference model that aims to capture the common and distinctive concepts of aspect-oriented languages. This reference model provides a basis to understand the important characteristics of the state-of-the-art AOP languages and helps us to compare the AOP languages with each other. Furthermore, it exposes the issues that have to be considered when a new aspect-oriented language needs to be developed. In this thesis, we analyse the four main aspect-oriented concepts of the reference model, namely join point, pointcut, advice and aspect, and identify problems related to their use in various AOP languages. Based on this analysis, we propose extensions of the existing concepts and/or design new ones to address the identified problems.