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. Having a sound method for managing changes in a running program will allow developers to perform maintenance activities without loss of the overall system's service. The objective of this project is to study how to reconfigurate application software dynamically. This project will create an environment for organizing and effecting software reconfiguration activities dynamically, develop a formal approach for programmers to capture the state of a process abstractly, and investigate methods for adapting software to be reconfigurable.