QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
The Byzantine Generals Problem
ACM Transactions on Programming Languages and Systems (TOPLAS)
IEEE Software
The Infeasibility of Quantifying the Reliability of Life-Critical Real-Time Software
IEEE Transactions on Software Engineering
Validation of Synchronous Reactive Systems: From Formal Verification to Automatic Testing
ASIAN '99 Proceedings of the 5th Asian Computing Science Conference on Advances in Computing Science
Digital Design and Computer Organization
Digital Design and Computer Organization
RT-MaC: Runtime Monitoring and Checking of Quantitative and Probabilistic Properties
RTCSA '05 Proceedings of the 11th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications
Runtime Verification of C Programs
TestCom '08 / FATES '08 Proceedings of the 20th IFIP TC 6/WG 6.1 international conference on Testing of Software and Communicating Systems: 8th International Workshop
SYCRAFT: A Tool for Synthesizing Distributed Fault-Tolerant Programs
CONCUR '08 Proceedings of the 19th international conference on Concurrency Theory
Runtime Verification
Type-safe observable sharing in Haskell
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Reducing the Cost of Path Property Monitoring Through Sampling
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Software Verification and System Assurance
SEFM '09 Proceedings of the 2009 Seventh IEEE International Conference on Software Engineering and Formal Methods
Checking and Correcting Behaviors of Java Programs at Runtime with Java-MOP
Electronic Notes in Theoretical Computer Science (ENTCS)
seL4: formal verification of an operating-system kernel
Communications of the ACM
Sampling-based program execution monitoring
Proceedings of the ACM SIGPLAN/SIGBED 2010 conference on Languages, compilers, and tools for embedded systems
Runtime verification of interactions: from MSCs to aspects
RV'07 Proceedings of the 7th international conference on Runtime verification
Copilot: a hard real-time runtime monitor
RV'10 Proceedings of the First international conference on Runtime verification
Sampling-based runtime verification
FM'11 Proceedings of the 17th international conference on Formal methods
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
Runtime verification with state estimation
RV'11 Proceedings of the Second international conference on Runtime verification
Experience report: a do-it-yourself high-assurance compiler
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
Runtime verification (RV) is a natural fit for ultra-critical systems that require correct software behavior. Due to the low reliability of commodity hardware and the adversity of operational environments, it is common in ultra-critical systems to replicate processing units (and their hosted software) and incorporate fault-tolerant algorithms to compare the outputs, even if the software is considered to be fault-free. In this paper, we investigate the use of software monitoring in distributed fault-tolerant systems and the implementation of fault-tolerance mechanisms using RV techniques. We describe the Copilot language and compiler that generates monitors for distributed real-time systems, and we discuss two case-studies in which Copilot-generated monitors were used to detect onboard software and hardware faults and monitor air-ground data link messaging protocols.