In our approach, we formalize dynamic updates as state machines, and verify by model checking a set of desired properties which the running system is expected to satisfy after being updated.
If counterexamples are found, we exclude those states that cause the counterexamples, and do model checking again.
Finally, by employing JIT compilation, all DSU-related overhead before or after an update can be effectively eliminated.
Using JVOLVE, we successfully applied dynamic continuous updates corresponding to 20 of the 22 releases that occurred over nearly two years ’ time, one update per release, for three open-source programs, Jetty web server, Java Email Server, and Cross FTP server.
Dynamic software updating (DSU) addresses these problems by updating programs while they run.