Dynamic module replacement — the ability to hot swap a component’s implementation at runtime — is fundamental to supporting evolutionary change in long-lived and highlyavailable systems. Most existing solutions require specialpurpose middleware or depend on research languages with limited support for mainstream software development. We present a language-neutral technique for dynamic module replacement using Service Facilities (Serfs) — a patternbased design strategy for decoupling runtime dependencies. We demonstrate the sufficiency of Serfs with respect to a litmus test of criteria for module replacement. Next, we extend the traditional scope of module replacement to encompass the domain of modules for distributed protocols. We conclude by applying the Serf strategy to illustrate dynamic replacement of mutual exclusion protocols in modules for distributed resource allocation.
Nigamanth Sridhar, Scott M. Pike, Bruce W. Weide