|Thesis abstract: |
Dynamic software evolution has become a crucial aspect in the design, development, and maintenance of complex component-based distributed systems. Evolution, typically obtained by software updates, may derive from changes in the requirements or in the environment, from new released versions and optimization needs.
Software update is traditionally an off-line process since the incorporation of released upgrades or patches requires the system to be shut down, updated, and restarted. However, an increasing number of systems operating in different domains, from financial transaction processing and emergency management, to safety critical systems in the domain of air traffic control and autonomous transportation, are required to offer a continuous service and cannot be stopped even when they need to be updated. These systems need to be dynamically updated, at runtime, while they are operating.
Dynamic software update is required to be both safe and efficient. Safe updates means that the process must not lead the system to unexpected erroneous behavior. Efficient updates include the capability of updating the system as soon as possible and with minimal overhead.
Recent research activity has proposed different approaches for the design of dynamically updating systems in the areas of programming languages, distributed systems, and software architecture. However, the identification of safe criteria for efficient dynamic updates has still been an open challenge that required for further investigation.
This thesis is the result of a research effort that aims at filling this gap. It proposes novel model-based approaches for the definition and automatic identification of updatability criteria. The defined criteria are independent from the specific technologies and programming languages adopted in implementing the system, and verified at runtime, allow for safe and efficient dynamic updates.
Two main contributions are proposed which differ in the target systems and the required models.
¿ Version-consistent dynamic updates of transactional systems.
Version consistency is introduced as a criterion for safe dynamic substitution of components executing distributed transactions. A distributed algorithm is proposed for ensuring version consistency by modeling runtime dependencies between components. Two implementations of the algorithm are provided to safely and efficiently update distributed BPEL processes, and SCA (Service Component Architecture) systems.
¿ Specification-driven dynamic updates of software-intensive systems.
This contribution considers distributed systems in which the different components interact with each other and with the surrounding environment by sending and receiving messages. A specification describes which behavior may or must occur in the system and the assumptions about the environment. For these systems, a formal definition of updatability criteria based on changes in the specification is provided. Moreover, an approach for the automatic generation of dynamically updating controllers that dynamically update to the new specified behavior is introduced. The approach is implemented as part of an eclispe-based tool-suite for engineering dynamically updating systems. The tool supports all the steps of the proposed approach, from the specification modeling to the generation and simulation of dynamically updating controllers.