Adaptable Software Systems

Principal Investigators: Bharat Bhargava, Jens Palsberg

Research Assistants: S. Wang, S. Li

Our research provides foundations for the evolution of long-lived, distributed software. Large complex software is developed by many software teams. This software is used at multiple locations. After the installation of the software, changes are installed to fix bugs, improve reliability. It is necessary to keep all copies of distributed software consistent. When a software is patched, it is desirable to decrease time-to-deployment, decrease system down-time, and increase the ability to quickly debug the new version. These requirements can be met by using our ideas under the theme Dynamic Software Evolution. The objective is to enable software evolution where, for a wide variety of changes, a new software version can be designed, tested, updated, and installed without recompiling any part of the existing version. Instead, the patches will be dynamically linked, in a safe fashion, to the running application. Reconfiguration of software is needed when the performance and reliability characteristics of the on-site set of software modules are unacceptable for the current application load. To allow dynamic reconfiguration, we need to design systems that have the infrastructure in terms of algorithms and their respective data structure to support switching to new configurations. The challenge lies in identifying and responding to anomalies, in designing modules for correct switching between algorithms/modules, and in determining the correct set of modules to run in a given situation.

1998
Annual Research Report

Department of
Computer Sciences