Runtime evolution of distributed software architectures
Résumé
Architecture-based approaches to runtime evolution enable software systems to dynamically move between consistent architecture variants. Successful runtime evolution must enable the new, replacement variant to be initialized with the data of the replaced one. In distributed systems, however, the initialization may be time-consuming due to data transfers across sites. Identifying systems' parts subject to change thus becomes a critical task in order to reduce replacement actions, avoid unnecessary data transfers, and then, reduce downtime of systems' services. Addressing this issue, this paper presents an approach to runtime evolution of distributed applications. We present how a development process allows 1) specifying architecture variants of an application, 2) making variants' parts subject to change identifiable, and 3) controlling interaction with these parts in order to transfer data. Moreover, the design information is used at runtime to automatically perform evolution.