We describe the Sage project, a new approach to software engineering for (fault-tolerant) distributed applications. Sage uses the modal logic of knowledge and applies theoretical results detailing how processes learn facts about each other's state to derive the minimal communication graph for a wide range of coordination problems. The specification interface is controlled, yet expressive enough to capture important distributed coordination problems and weaker variants appropriate for wide-area applications. The resulting graphical display shows programmers which messages must be received. Sage allows users to experiment on the derived protocol by crashing processes, reordering events, losing messages, and partitioning the network. If a solution still exists, Sage regenerates the communication graph. This animates the effects of unpredictable system events on distributed applications, and separates the issues in testing a protocol's behavior in the face of failures, from the effects background system conditions can have on the testing procedure itself.
['Aleta Ricciardi']
The Sage project: a new approach to software engineering for distributed applications