Current techniques for a software engineer to change a computer program
are limited to static activities once the application begins executing,
there are few reliable ways to reconfigure it. We have developed a
general framework for reconfigurating application software dynamically.
A sound method for managing changes in a running program allows
developers to perform maintenance activities without loss of the overall
system's service. The same methods also support some forms of load
balancing in a distributed system, and research in software fault
tolerance. Our goal has been to create an environment for organizing and
effecting software reconfiguration activities dynamically. First we
present the overall framework within which reconfiguration is possible,
then we describe our formal approach for programmers to capture the
state of a process abstractly. Next, we describe our implementation of
this method within an environment for experimenting with program
reconfiguration. We conclude with a summary of the key research problems
that we are continuing to pursue in this area.
(Also cross-referenced as UMIACS-TR-93-78