In the case of such long-running programs, the initial requirements could change after the program has started executing. Distributed parallel applications often run for hours or even days before arriving to a result.
This dissertation establishes the value of and recommends practices for applying dynamic soft-ware updates to computationally-intensive applications—a computing domain characterized by long-running computations, expensive computing resources, and a tedious deployment process.
This dissertation argues that updating computationally-intensive applications dy-namically can reduce their time-to-discovery metrics—the total time it takes from posing a problem to arriving at a solution—and, as such, should become an intrinsic part of their software lifecycle.
Previtali et al.’s technique =-=-=- generates version differences of a class at bytecode level.
Their algorithm produces the information on added, removed, or modified classes.
Unfortunately, not all kinds of changes can be expressed using the aspect model.
The results of our study, however, reveal that many changes fit our aspect-based approach.
For example, transparent persistence architectures help avoid the entanglement of business and persistence logic in the source code by changing the bytecode directly to synchronize objects with stable storage.
With functionality added directly at the bytecode level, the source code reflects only partial semantics of the program.
By interpreting the specifications, a source-level programming tool can gain an awareness of the bytecode enhancements and improve its precision and usability.
We demonstrate the applicability of our approach by making a source code editor and a symbolic debugger enhancements-aware. describe generalized structural program differences. Program differencing is an active research area and several new differencing algorithms have been proposed recently.
In the case of such long-running programs, the initial requirements could change after the program has started executing.