Since few programs are written with support for dynamic updating in mind, retrofitting existing programs is a valuable means of evaluating a DSU system for practical use.The problem space addressed by dynamic updating can be thought of as an intersection of several others.Examples include checkpointing, dynamic linking, and persistence.

dynamic software updating hicks-70dynamic software updating hicks-54

DSU systems, as tools, can also be evaluated on their ease-of-use and clarity to developers.

Many DSU systems, such as Ginseng, require programs to pass various static analyses.

The location in a program where a dynamic update occurs is referred to as an update point.

Existing DSU implementations vary widely in their treatment of update points.

Kitsune and Ekiden require developers to manually specify and name all update points.

Updating systems differ in the types of program changes that they support.

For example, any update safety check limits the scope of updates to updates which pass that safety check.

The mechanism used to transform code and state influences what kinds of updates a system will support.

Likewise, a program that has a plugin architecture, must be able to load and execute new code at runtime.

Similar techniques are sometimes also employed for the purpose of dynamic dead-code elimination to remove conditionally dead or unreachable code at load or runtime, and recombine the remaining code to minimize its memory footprint or improve speed.

For example, Ksplice only supports code changes in functions, and does not support changes to state representation.