Corpus ID: 17578031

The Sage Project : Software Engineering for Distributed Applications

  title={The Sage Project : Software Engineering for Distributed Applications},
  author={Aleta Ricciardi and Chun-Jung Chan},
This paper describes Sage, a research project in software engineering for (fault-tolerant) distributed applications that assists programmers write correct, eecient code. Speciically, 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 given distributed coordination problem. An environment that applies intricate theoretical results, but hides the theory from users is… Expand
1 Citations

Figures from this paper

The Sage project: a new approach to software engineering for distributed applications
  • Aleta Ricciardi
  • Computer Science
  • Proceedings of 17th International Conference on Distributed Computing Systems
  • 1997
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 detailingExpand


Consul: a communication substrate for fault-tolerant distributed programs
This dissertation introduces Consul, a communication substrate designed to help improve system dependability by providing a platform for building fault-tolerant, distributed systems based on the replicated state machine approach and shows that the semantic based order is more efficient than a total order in many situations. Expand
Exploiting virtual synchrony in distributed systems
It is argued that this approach to building distributed and fault-tolerant software is more straightforward, more flexible, and more likely to yield correct solutions than alternative approaches. Expand
Dissecting Distributed Coordination
There is an essential structure of information flow in any solution to Uniform Coordination, suggesting message-minimal solutions, and the notion of exempting processes from coordinating is introduced. Expand
Sequential Distributed Coordination
We give a broad characterization of distributed coordination, building on a basic agreement clause, then de ning a generic sequence clause and a generic termination clause. We instantiate these toExpand
Virtually-synchronous communication based on a weak failure suspector
  • A. Schiper, Aleta Ricciardi
  • Engineering, Computer Science
  • FTCS-23 The Twenty-Third International Symposium on Fault-Tolerant Computing
  • 1993
The authors suggest a three-component architecture to implement virtually synchronous communication: (1) at the lowest level, the FS component; on top of it, (2a) a component that defines new views, and (2b) a components that reliably multicasts messages within a view. Expand
Reliable Broadcast in Synchronous and Asynchronous Environments (Preliminary Version)
This paper studies the problem of reliable broadcast of a sequence of values in a system subject to processor failures, and presents simple algorithms tolerant of all three failure models. Expand
A protocol must be designed to function correctly even if it is possible to be lost, for messages to arrive out of order, or for some processor to fail. Expand
Impossibility of (repeated) reliable broadcast
In the absence of perfect failure detectors, and of processes that never crash, this work illuminates the need for a more exible notion of "non-faulty process", and for a thorough investigation of coordination problems in which the set of participating processes is dynamic. Expand
Using Knowledge to Optimally Achieve Coordination in Distributed Systems
A new form of knowledge is defined, called extended knowledge, which combines eventual and continual knowledge, and it is shown how extended knowledge can be used to both characterize and construct optimal protocols for coordination. Expand
Election Vs. Consensus in Asynchronous Systems
It is shown that there are other problems that cannot be solved in an asynchronous system, and for the same intuitive reason: it is impossible to distinguish a very slow processor from a crashed processor. Expand