Building reliable distributed systems is a challenging task, as one
has to deal with many complex issues, e.g., reliable communications,
failure detections, distributed consensus, replication management,
transactions management, etc. Each of these issues corresponds to some
distributed protocol and there are many. In such a protocol ``jungle'',
programmers have to choose the right protocol for the right need. Besides,
when more than one protocol is necessary, comes the problem of their
interactions, which further complexifies programmers' task. The BAST
framework aims at structuring reliable distributed systems by allowing
complex distributed protocols to be composed in a flexible manner. For
example, by adequately composing reliable multicast protocols with
transactional protocols, BAST makes it possible to transparently
support transactions on groups of replicated objects. It relies heavily on
the Strategy pattern, which is recursively used to get around the
limitations of inheritance as far as protocol composition goes. Our first
prototype is written in Smalltalk [8] and is fully operational.
It is currently being used for teaching reliable distributed systems and
for prototyping new fault-tolerant distributed protocols. Adding more and
more protocol classes will help us to further test our approach. BAST has also been recently ported on the Java [9]
programming environment. Performances are not yet good enough for practical
application development, but we are currently working on performance
evaluations and code optimization [7].