Dynamic module replacement in distributed protocols

Dynamic module replacement - the ability to hot swap a component's implementation at runtime - is fundamental to supporting evolutionary change in long-lived and highly-available systems. Most existing solutions require special-purpose 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 pattern-based 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.

[1]  Masaaki Mizuno,et al.  A DAG-based algorithm for distributed mutual exclusion , 1991, [1991] Proceedings. 11th International Conference on Distributed Computing Systems.

[2]  Scott Nettles,et al.  Dynamic software updating , 2001, PLDI '01.

[3]  Maurice Herlihy,et al.  A Value Transmission Method for Abstract Data Types , 1982, TOPL.

[4]  Gísli Hjálmtýsson,et al.  Dynamic C++ classes , 1999 .

[5]  Earl T. Barr,et al.  Runtime Support for Type-Safe Dynamic Java Classes , 2000, ECOOP.

[6]  James M. Purtilo,et al.  Dynamic reconfiguration in distributed systems: adapting software modules for replacement , 1993, [1993] Proceedings. The 13th International Conference on Distributed Computing Systems.

[7]  Simon Robinson Advanced .NET Programming , 2002 .

[8]  Bruce W. Weide,et al.  Service Facilities: Extending Abstract Factories to Decouple Advanced Dependencies , 2002, ICSR.

[9]  Dominic Duggan Type-based hot swapping of running modules (extended abstract) , 2001, ICFP '01.

[10]  Morris Sloman,et al.  Constructing Distributed Systems in Conic , 1989, IEEE Trans. Software Eng..

[11]  Stephen H. Edwards,et al.  Characterizing observability and controllability of software components , 1996, Proceedings of Fourth IEEE International Conference on Software Reuse.

[12]  Ophir Frieder,et al.  On-the-fly program modification: systems for dynamic updating , 1993, IEEE Software.

[13]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[14]  Seif Haridi,et al.  Distributed Algorithms , 1992, Lecture Notes in Computer Science.

[15]  P. Gács,et al.  Algorithms , 1992 .

[16]  Israel Ben-Shaul,et al.  Dynamic Adaptation and Deployment of Distributed Components In Hadas , 2001, IEEE Trans. Software Eng..

[17]  Toby Bloom,et al.  Reconfiguration and module replacement in Argus: theory and practice , 1993, Softw. Eng. J..

[18]  Nancy A. Lynch,et al.  Distributed Computing: Models and Methods , 1990, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[19]  Jeff Magee,et al.  Dynamic Configuration for Distributed Systems , 1985, IEEE Transactions on Software Engineering.

[20]  Dominic Duggan,et al.  Type-based hot swapping of running modules , 2005, Acta Informatica.