In this paper, we presented how protocol objects can help to build reliable distributed systems. We focused on how the Strategy pattern enables to overcome the limitations of inheritance, when trying to compose protocols. As far as we know, BAST is the only environment to provide both a set of ready-to-use protocol objects for building fault-tolerant distributed applications, and a complete framework based on design patterns, for composing new protocols from existing ones. We see it as our contribution to the design of well-structured reliable distributed systems.
Our current prototype of BAST is fully operational and is available for Smalltalk and Java. At the moment, inheritance is still partly involved when composing distributed protocols; although a minor drawback, this does not make protocol composition as flexible as one could expect. This is due to the fact that programmers have to know something about the implementation of the protocol classes they reuse, namely their inheritance relationships. It is not surprising, since inheritance is known to violate encapsulation and to hinder modularity. Future work will consist in trying to decide if getting definitively rid of inheritance, at least as far as protocol composition goes, is a good way to achieve even more flexibility. We are also extending BAST with new protocol classes, supporting frequently used protocols in reliable distributed systems, and optimizing existing protocol classes to improve performance. Further information about BAST can be found at https://lsewww.epfl.ch/bast; our public-free implementation is also available there.