Slovak University of Technology in Bratislava, Slovakia
Series of lectures at Lancaster University, UK
September 16-19, 2008
This series of lectures will be devoted to aspect-oriented change realization. With aspect-oriented programming changes can be treated explicitly and directly at the programming language level. Aspect-oriented change realizations are mainly based on aspect-oriented design patterns or themselves constitute pattern-like forms in connection to which domain independent change types can be identified. However, it is more convenient to plan changes in a domain specific manner. Domain specific change types can be seen as subtypes of generally applicable change types. This relationship can be maintained in a form of a catalog. Further changes can actually affect the existing aspect-oriented change realizations, which can be solved by adapting the existing change implementation or by implementing an aspect-oriented change realization of the existing change without having to modify its source code. Separating out the changes this way can lead to a kind of aspect-oriented refactoring beneficial to the application as such. As demonstrated partially by the approach evaluation, the problem of change interaction may be avoided to the large extent by using appropriate aspect-oriented development tools, but for a large number of changes, dependencies between them have to be tracked, which could be supported by feature modeling. The relationship between feature modeling and aspect-oriented programming is interesting in a broader sense with one of the issues being paradigm selection in multi-paradigm design which can justify otherwise seemingly ad-hoc made decisions on using aspects to implement some features in the application.
A combination of four aspect-oriented design patterns will be presented: Policy, Cuckoo's Egg, Border Control, and Exception Introduction. The combination is studied in the context of the class deprecation problem in team development. Although aspect-oriented patterns mostly can be combined with one another without having to modify the code of the pattern that has already been applied, this is not always so. A structural categorization of aspect-oriented design patterns is introduced to help determine whether a combination of patterns would require changes in an already applied pattern.
A method for selecting paradigms, viewed as solution domain concepts, appropriate for given application domain concepts will be presented. In this method, denoted as multi-paradigm design with feature modeling, both application and solution domain are expressed using feature modeling. The selection of paradigms is performed in the process of feature modeling based transformational analysis as a paradigm instantiation over application domain concepts. The output of transformational analysis is a set of paradigm instances annotated with the information about the corresponding application domain concepts and features. According to these paradigm instances, the code skeleton is being designed. The approach is presented in conjunction with its specialization to AspectJ programming language. Transformational analysis performed according to the AspectJ paradigm model enables an early aspect identification.