Temporal higher-order contracts
Temporal higher-order contracts
复制标题
时间高阶合约
DOI:
--
复制
发表时间:
2011
期刊:
影响因子:
--
通讯作者:
J. McCarthy
中科院分区:
文献类型:
--
作者:
Tim Disney;C. Flanagan;J. McCarthy
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).