基于合约的控制集成到软件系统
1. 定时交互不变量
静态交互不变量能确保每当有人访问 Web 服务器时,控制器会被激活。在此基础上进行自然扩展,加入时间约束,即不仅要保证某件事会发生,还要设定其必须发生的截止时间,这类约束被称为定时交互不变量。它通过定量时间对静态交互不变量进行了扩展。
以下公式为从新的访问日志记录开始,为控制器激活添加了 6 秒的截止时间(5 秒是初始调度周期):
□( log activate →(♦in<6seconds utilController activate))
在 FCDL 中表示为:
temp inv loopLivenessWithDeadline =
[] (activate@server.log -> <>(in < 6.seconds) activate@server.adaptor)
同样,我们可以跟踪单个组件的进度。例如,要确保无论 Web 服务器活动如何,控制器至少每 6 秒触发一次:
temp inv controllerLiveness =
[] (<>(in < 6.seconds) activate@utilController)
与静态交互不变量不同,定时不变量仅在运行时进行验证。其实现基于 Stolz 和 Bodden
基于合约的控制集成到软件系统解析
超级会员免费看
订阅专栏 解锁全文
924

被折叠的 条评论
为什么被折叠?



