Temporal higher-order contracts

Temporal higher-order contracts
复制标题

时间高阶合约

DOI:
--
复制
发表时间:
2011
期刊:
ACM SIGPLAN International Conference on Functional Programming
影响因子:
--
通讯作者:
J. McCarthy
J. McCarthy
中科院分区:
--
文献类型:
--
作者:
Tim Disney;C. Flanagan;J. McCarthy

文献摘要

被引文献

相似文献

行为合同被软件工程师所包含,因为它们记录了模块接口,检测接口违规并有助于识别故障模块(软件包,类,功能等)。本文扩展了先前的高级合同系统,以表达和强制执行时间属性,这些属性在具有急需状态的软件系统中很常见,但大多是隐式或最多非正式地指定的。该论文既提出了程序化合同API,又提出了时间合同语言,并报告了在球拍中实施这些合同的经验和绩效结果。我们的发展将模块行为形式化为诸如函数调用和返回之类的事件的痕迹。我们的合同系统既提供了非干预(合同不能影响正确的执行),也提供了完整性的概念(合同可以在事件痕迹上执行任何可决定的,前缀封闭的谓词)。
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).