17、嵌入式分布式系统开发:AutoFocus方法解析

嵌入式分布式系统开发:AutoFocus方法解析

在嵌入式分布式系统开发中,采用合适的方法至关重要。这里将介绍一种有效的开发方法,通过BART案例研究详细阐述其应用步骤和优势。

1. 模型驱动开发的优势

模型驱动的开发过程以系统模型的一致视图为“构建块”,从抽象需求逐步构建到实现层面。这种方法具有以下显著优势:
- 提高质量 :运用应用领域的概念(如消息、状态、事件)构建特定领域的系统模型,避免因实现偏见而忽略错误或引入人为错误。为所有视图赋予解释,可在开发早期分析缺陷,并确保抽象视图与详细视图相匹配。
- 提高效率 :自动和交互式支持建立一致性条件,能早期检测模型中的错误,减少后期更改需求。还可从模型生成系统(如模拟、代码或测试用例),并机械支持复杂转换(如插入协议驱动程序或重用规范部分)。

2. BART案例研究的简化假设

为了在不降低系统基本复杂性的前提下展示方法,对BART系统的非正式规范做了以下简化假设:
|假设类别|具体内容|
| ---- | ---- |
|安全方面|仅考虑避免撞上前方列车的问题,忽略闸门处理和最大允许民用速度。|
|环境可靠性|假设通信网络引入的传输延迟有界,车站控制器在0.5秒周期内发送的命令消息在该周期内可被接收。|
|定时执行|假设列车控制器的执行周期为0.5秒,用于报告状态和向列车发出命令。|
|报告值|定位算法仅生成位置和速度估计,而非相应的均值和偏差。|
|物理模型|忽略坡度对列车的影响,假设仅使用闭环制动。|

3. 应用步骤

开发控制系统分为以下步骤,展示了基于模型的方法如何发挥作用:
1. 结构化需求 :将非正式需求分解为连贯部分,并与概念元素关联。目的是降低复杂性、弥合非正式与正式规范之间的差距,并支持开发过程的覆盖分析和可追溯性。
- 组件 :如“车站计算机分为非关键车站计算机(NVSC)和关键车站计算机(VSC)”。
- 数据类型 :如控制算法消息包含列车ID、命令速度、命令加速度和消息起始时间标签。
- 本地数据 :如轨道段的静态数据(位置、坡度、最大允许速度、闸门位置)。
- 事件 :如车站计算机每半秒接收测距和速度信息,并为每列列车生成命令消息。
2. 处理系统与环境 :开发环境模型,明确环境状态和假设。通过定义环境变量、接口变量、环境假设和接口关系来构建模型。
- 环境变量 :如列车的实际位置、速度和加速度。
- 接口变量 :如估计的位置和速度、命令的速度和加速度。
- 环境假设 :如描述列车物理定律的微分方程或列车控制器触发故障安全模式的超时。
- 接口关系 :如将列车的物理位置和速度转换为估计的位置和速度。
3. 定义抽象行为 :使用AutoFocus的基于状态和交互的描述形式主义定义系统组件的行为。
- 整体行为 :由消息和命令两个阶段循环组成,通信周期为500毫秒。
- 计算步骤 :考虑列车的最坏情况停止距离,使用内部化模型进行计算。
- 数据状态 :结合函数参数和结构化需求定义数据状态。
- 控制状态 :根据车站计算机的状态信息定义控制状态和转换。
4. 分析模型 :确保模型合理且一致,检查不同形式的不一致性。
- 概念一致性 :如变量定义性、状态层次结构、输入启用性和行为响应性。
- 输入定义性 :系统对环境输入的反应不必完全明确。
- 输出响应性 :若定义了输入的明确反应,则必须定义相应的输出。
5. 建立需求 :验证系统行为是否满足环境的期望行为,分析定性和定量属性。
- 定性属性 :使用归纳法验证安全需求,如避免列车相撞。
- 定量属性 :使用指数分布计算系统的可靠性和平均寿命。
6. 细化系统结构 :将车站计算机结构细化为关键车站计算机(VSC)和非关键车站计算机(NVSC)。
- VSC :将命令计算委托给NVSC,并检查建议命令是否符合最坏情况界限。
- NVSC :计算改进的命令并转发给VSC进行验证。
7. 减少不确定性 :对非关键车站计算机的行为进行细化,减少不确定性。
- 计算细化 :将计算分解为两步,先计算最大命令速度和加速度,再优化速度选择。
- 交互细化 :限制交互的非确定性选择。
8. 提高鲁棒性 :确保车站计算机(尤其是VSC)的交易完整,即具有完全定义的输入和输出行为。

4. 模型分析的一致性检查

在分析模型时,需要检查不同形式的不一致性,以确保模型的合理性和一致性。以下是一些关键的一致性检查点:
- 概念一致性
- 变量定义性 :组件仅使用本地或接口信息,确保系统不能直接使用环境状态信息,而依赖派生信息。
- 状态层次结构 :每个初始层次状态至少有一个初始子状态。
- 输入启用性 :环境不能限制系统的操作,系统也不能限制环境的反应。
- 行为响应性 :系统和环境都不能进入未定义状态。
- 输入输出完整性
- 输入定义性 :系统对环境的每个可能输入不必有明确反应,允许在某些状态下部分定义可接受输入。
- 输出响应性 :若为某些输入定义了明确反应,则必须定义相应输出。

5. 需求验证的步骤

为了验证系统是否满足需求,需要进行定性和定量属性的分析。
- 定性属性验证 :以避免列车相撞为例,使用归纳法进行验证。
- 基础步骤 :证明系统初始处于安全状态。
- 归纳步骤 :证明系统在安全状态下的任何可能转换都将使其进入另一个安全状态。
- 定量属性分析 :使用指数分布计算系统的可靠性和平均寿命。
- 概率密度函数 :$f (t) = λ exp(−λ t)$
- 可靠性函数 :$R(t) = exp(−λ t)$
- 故障率 :$z(t) = λ$
- 平均寿命 :$E[T] = λ^{-1}$

通过以上步骤和方法,可以有效地开发嵌入式分布式系统,提高系统的质量和可靠性。在实际应用中,可根据具体需求和场景进行适当调整和优化。

下面是系统开发步骤的mermaid流程图:

graph LR
    A[结构化需求] --> B[处理系统与环境]
    B --> C[定义抽象行为]
    C --> D[分析模型]
    D --> E[建立需求]
    E --> F[细化系统结构]
    F --> G[减少不确定性]
    G --> H[提高鲁棒性]

通过以上步骤和方法,可以有效地开发嵌入式分布式系统,提高系统的质量和可靠性。在实际应用中,可根据具体需求和场景进行适当调整和优化。

嵌入式分布式系统开发:AutoFocus方法解析

6. 系统结构细化与验证

在前面的步骤中已经确定将车站计算机结构细化为关键车站计算机(VSC)和非关键车站计算机(NVSC)。VSC负责将命令计算委托给NVSC,并检查建议命令是否符合最坏情况界限;NVSC则计算改进的命令并转发给VSC进行验证。

为了证明细化后的VSC和NVSC系统实现了原始的System,需要验证两个新增的转换(Pass command和Issue command)是否实现了原始的Issue Command转换。这主要是要证明制动命令符合安全界限。假设NVSC行为任意,甚至可以建立两个系统之间的等价关系。可以使用与AutoFocus连接的不同证明工具来正式验证这种实现关系。

下面是VSC和NVSC系统的行为状态转换表:
|状态|转换条件|操作|
| ---- | ---- | ---- |
|Collect Status|无|接收列车状态和闸门状态|
|Collect Commands|无|接收NVSC建议的命令|
|Pass Command| (Timer<500)&&elem(train,Issues)&&Bound(train,TVCom(train),TACom(train),Trains,SegTable,GateTable) |传递符合安全界限的命令|
|Issue Command| (Timer<500)&&elem(train,Issues)&&(Bound(train,TVCom(train),TACom(train),Trains,SegTable,GateTable)==false) |发出制动命令(速度0,加速度 -2.0)|
|Issue Commands|无|发出命令|

通过这种分区方式,还满足了另一个需求,即对于每列列车在每个计算轮次中,“VSC最多只能进行一次边界速度和加速度的计算”。

7. 减少不确定性的具体实现

为了减少非关键车站计算机(NVSC)行为的不确定性,定义了一个简单的命令优化策略,以避免在推进模式下加速度发生大的变化。

7.1 计算细化

将计算过程分为两个步骤:
1. 计算最大命令速度和加速度 :使用 computeMax 函数( Bound 的功能变体)计算出尊重VSC检查的最大命令速度 vmax 和加速度 amax
2. 速度选择优化 :应用 smooth_acc 函数优化速度选择,确保每步的最大加加速度为0.5mphps。 smooth_acc 函数的定义如下:

smooth_acc(v, a, vc, ac) = max(a + 0.5, adjust_acc(v, vc, ac))

其中, adjust_acc 函数在前面处理系统与环境的步骤中已经介绍过。

7.2 交互细化

通过将计算分解为不同部分,并将这些部分分配到NVSC行为的连续步骤中,限制了交互的非确定性选择。例如,将 Compute 状态细分为三个子状态,并在连接转换上分配计算和交互。

下面是细化后NVSC的行为状态转换mermaid流程图:

graph LR
    A[Start Computation] --> B[Compute Max]
    B --> C[Optimize acc]
    C --> D[Start Output]
    D --> E[Issue Command]
8. 提高鲁棒性的措施

由于车站计算机(尤其是VSC)的操作是安全关键的,因此需要确保其交易完整,即具有完全定义的输入和输出行为。

在前面的步骤中已经得到了组件行为的建设性描述,因此可以使用在分析模型步骤中介绍的技术来确保输出响应性。为了确保完全定义的输入,需要保证在Vital Station Computer的每个(控制和数据)状态下,对于在其通道上接收到的每个消息都有相应的反应。

具体来说,可以通过以下方式实现:
1. 输入覆盖检查 :检查所有可能的输入消息类型和状态组合,确保都有对应的处理逻辑。
2. 默认处理机制 :对于未明确定义的输入情况,设置默认的处理方式,避免系统进入未定义状态。

9. 总结与实际应用建议

通过以上一系列步骤,从结构化需求开始,经过处理系统与环境、定义抽象行为、分析模型、建立需求、细化系统结构、减少不确定性到提高鲁棒性,详细介绍了一种有效的嵌入式分布式系统开发方法。

在实际应用中,开发者可以根据具体的项目需求和场景对这些步骤进行适当调整和优化。例如,如果系统对实时性要求较高,可以在计算步骤中采用更高效的算法;如果系统对可靠性要求极高,可以进一步细化环境模型,考虑更多的故障情况。

同时,在整个开发过程中,要始终关注模型的一致性和需求的验证,确保系统的质量和可靠性。通过合理运用各种工具和技术,如AutoFocus提供的证明工具、STeP定理证明系统等,可以更好地完成系统的开发和验证工作。

总之,这种基于模型的开发方法为嵌入式分布式系统的开发提供了一种系统、有效的途径,能够帮助开发者应对复杂的系统需求和挑战。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值