Affiliation:
1. University of California, Santa Cruz, Santa Cruz, CA, USA
2. Brigham Young University, Provo, UT, USA
Abstract
Behavioral contracts are embraced by software engineers because they document module interfaces, detect interface violations, and help identify faulty modules (packages, classes, functions, etc). This paper extends prior higher-order contract systems to also express and enforce temporal properties, which are common in software systems with imperative state, but which are mostly left implicit or are at best informally specified. The paper presents both a programmatic contract API as well as a temporal contract language, and reports on experience and performance results from implementing these contracts in Racket.
Our development formalizes module behavior as a trace of events such as function calls and returns. Our contract system provides both non-interference (where contracts cannot influence correct executions) and also a notion of completeness (where contracts can enforce any decidable, prefix-closed predicate on event traces).
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
5 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Consolidating Smart Contracts with Behavioral Contracts;Proceedings of the ACM on Programming Languages;2024-06-20
2. Chaperone contracts for higher-order sessions;Proceedings of the ACM on Programming Languages;2017-08-29
3. Blame and coercion: together again for the first time;ACM SIGPLAN Notices;2015-08-07
4. Computational contracts;Science of Computer Programming;2015-02
5. Runtime Verification Based on Register Automata;Tools and Algorithms for the Construction and Analysis of Systems;2013