Dynamic evolution of aspect oriented software : : doctoral thesis - Katić, Marija (M. Katić ; Fakultet elektrotehnike i računarstva, 2013)
ABSTRACT: The aspect-oriented programming paradigm (AOP) has gained popularity for developing software in recent years, as it provides mechanisms to isolate orthogonal, so-called cross-cutting concerns into separate modules (i.e. parts of a program). At the same time there is an increase in the number of systems that need to provide non-interrupted and reliable service during updating. Software evolution refers to activities for software updating. Most of the existing evolving mechanisms are not dynamic, since they require the system to halt and restart before the changes take place. Therefore, there has been an increase in the research for better mechanisms in the field of dynamic software evolution recently. Although AOP concepts have been recognized as very promising approach for achieving dynamic software evolution, their application has not been completely researched yet. More importantly, there is a lack of adequate support for dynamic evolution of programs written with use of AOP i.e. aspect-oriented software. This dissertation presents a new model of dynamic evolution of aspect-oriented software. The model is based on the aspect oriented mechanisms (static and dynamic) and accounts for subsequent updates (i.e. updates in the presence of prior updates). It also includes the results of a systematic analysis taken on aspect-oriented programming features that must be considered when modelling solutions for dynamic software evolution. The goal of the model is to free a programmer of activities related to dynamic software evolution and provide possibilities for dynamic evolution through preparation of updates at the source code level. That is why the model describes four processes of dynamic software evolution: (1) identification of differences between two versions of aspect-oriented programs, (2) generation of dynamic updates, (3) analysis of dynamic updates, and (4) update deployment. Algorithms that support these processes are introduced. The realization of such a model is elaborated through a developed prototype and an evaluation on real aspect-oriented program examples. The results showed that aspect-oriented program does not need to be prepared in advance in order to be dynamically updated which means programmer can be isolated from the dynamic evolution process. On the other hand, while having control over all changes in aspect-oriented program at the source code level, an updater can control and adjust the whole process of update preparation and deployment. Furthermore, dynamic updates are not always feasible and not all program constructs can be changed easily (class definition, class hierarchy). -