In contrast to centralized systems, distributed software systems add an entire new layer of complexity to the already difficult problem of software design. In spite of that, for a variety of reasons, ...