Writing programs that construct proofs
Journal of Automated Reasoning
Distributed snapshots: determining global states of distributed systems
ACM Transactions on Computer Systems (TOCS)
Computer related risks
Extreme programming explained: embrace change
Extreme programming explained: embrace change
Self-stabilization
The Byzantine Generals Problem
ACM Transactions on Programming Languages and Systems (TOPLAS)
Essentials of programming languages (2nd ed.)
Essentials of programming languages (2nd ed.)
Rigorous Development of an Embedded Fault-Tolerant System Based on Coordinated Atomic Actions
IEEE Transactions on Computers - Special issue on fault-tolerant embedded systems
Distributed Algorithms
Recovery Oriented Computing (ROC): Motivation, Definition, Techniques,
Recovery Oriented Computing (ROC): Motivation, Definition, Techniques,
Self-Stabilizing Autonomic Recoverer for Eventual Byzantine Software
SWSTE '03 Proceedings of the IEEE International Conference on Software-Science, Technology & Engineering
Scalable Self-Stabilization via Composition
ICDCS '04 Proceedings of the 24th International Conference on Distributed Computing Systems (ICDCS'04)
Self-stabilizing clock synchronization in the presence of Byzantine faults
Journal of the ACM (JACM)
Toward Self-Stabilizing Operating Systems
DEXA '04 Proceedings of the Database and Expert Systems Applications, 15th International Workshop
An overview of JML tools and applications
International Journal on Software Tools for Technology Transfer (STTT) - Special section on formal methods for industrial critical systems
Generating optimized code from SCR specifications
Proceedings of the 2006 ACM SIGPLAN/SIGBED conference on Language, compilers, and tool support for embedded systems
Java-MOP: a monitoring oriented programming environment for java
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Hi-index | 0.00 |
Writing a perfectly correct code is a challenging and a nearly impossible task. In this work we suggest the recovery oriented programming paradigm in order to cope with eventual Byzantine programs. The program specification composer enforces the program specifications (both the safety and the liveness properties) in run time using predicates over input and output variables. The component programmer will use these variables in the program implementation. We suggest using the "sand-box" approach in which every instruction of the program that changes a specification variable, is executed first with temporary variables and that is in order to avoid execution of an instruction that violates the specifications. In addition, external monitoring is used for coping with transient faults and for ensuring convergence to a legal state. The implementation of these ideas includes the definition of new instructions in the programming language with the purpose of allowing addition of predicates and recovery actions. We suggest a design for a tool that extends the Java programming language. In addition to that, we provide a correctness proof scheme for proving that the code combined with the predicates and the recovery actions is self-stabilizing and, under the restartability assumption, eventually fulfills its specifications.