基于合约的控制集成到软件系统
1. FCDL 与 Java 虚拟机的集成
FCDL 模型是面向参与者的模型,将其转换为 Java 虚拟机的源代码相对直接。每个自适应元素(AE)类型会转换为一个 Java 类,其中生成的骨架方法留给开发者用逻辑填充。这些类作为代理,将低级的参与者交互(如初始化参与者的消息)转换为相应的方法调用(如初始化或激活方法)。这种模式使开发者无需处理低级的参与者 API,提高了代码在不同参与者框架间的可移植性,也简化了 AE 的测试,可在无参与者运行时的情况下独立进行。
2. 自适应元素合约概述
为了明确操作条件的假设,对 FCDL 进行了扩展以用于自适应元素合约的规范。通过在架构层面指定约束自适应元素结构、交互和行为的不变量来实现。主要包括交互合约(IC)、行为合约(BC)以及自适应元素的结构和时间不变量。
3. 交互合约
3.1 动机
以改进的累加器为例,其交互描述虽直观,但架构中未明确每次接收输入时会向输出端口推送数据,仅在文档中提及。这种架构欠规范会导致以下问题:
- 无法系统验证实现是否与文档匹配。
- 复杂情况或不严谨文档可能导致不同解释和不兼容实现。
- 实现需手动跟踪数据流以确定执行的 AE 功能,多输入同步时繁琐。
- 元素交互是实现的一部分,降低了形式分析的可能性。
为解决此问题,引入交互合约来明确允许的交互。
3.2 合约规范
基本交互合约定义为元组 ⟨A; R; E⟩:
- A 是激活条件,指示激活 AE 的交互,如一组推(⇑)输入端口或拉(⇓)输出端
超级会员免费看
订阅专栏 解锁全文

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



