4. 活动图高级语义与联合建模
基础活动图解决了“做什么、按什么顺序做”的问题,但当模型需要支撑仿真、性能评估和需求验证时,仅靠控制流是不够的。本节聚焦活动图的四组高级语义:令牌语义决定活动何时能开始,流最终节点决定数据如何被消费,参数集与概率/速率决定并发与随机行为的表达,与需求图的追溯则把行为模型锚定到可验证的需求上。掌握这些语义,活动图才能从“流程图”升级为可执行的系统行为模型。
一、令牌语义:活动节点的“准入规则”
SysML活动图沿用Petri网式的令牌(Token)语义。控制令牌代表一次执行许可,对象令牌携带数据。一个动作节点(Action)只有在满足其输入引脚(Input Pin)的令牌条件时才能触发。默认规则是:每个输入引脚至少需要一个令牌,且当动作执行时,所有输入引脚上的令牌被同时消费。
这里有一个容易出错的细节:如果某输入引脚上到达了多个令牌,而动作只消费一个,剩余令牌会留在引脚上等待下一次触发。这解释了为什么“数据到达顺序”会影响执行次数。例如一个“计算平均值”动作有两个输入引脚:样本值和样本计数。若样本值连续到达5个令牌,而计数只到达1个,动作只会执行一次,消费1个样本值和1个计数,剩余4个样本值滞留。要表达“每来一个样本就计算一次”,应把计数改为常量输入或使用参数集。
控制流与对象流可以混合使用。控制令牌不携带数据,只表示“可以开始了”;对象令牌则携带具体值。当两者同时连接到同一动作时,动作需要同时满足控制令牌和对象令牌的到达条件。这种混合语义在“先初始化再处理数据”的场景中非常常见。
二、流最终节点:数据流的终点与消费语义
活动最终节点(ActivityFinalNode)终止整个活动,而流最终节点(FlowFinalNode)只终止到达它的那一条流,不影响其他并行分支。这是并发建模中的关键区别。
考虑一个“传感器采集与处理”活动:采集分支持续产生数据,处理分支消费数据,另有一个监控分支在收到“停止”信号后结束。如果监控分支连接到活动最终节点,整个活动会立即终止,采集和处理也被迫停止;如果连接到流最终节点,监控分支结束,但采集和处理继续运行,直到各自完成。因此,流最终节点表达的是“这条路径到此为止”,而不是“整个活动结束”。
在联合建模中,流最终节点还承担“数据汇”的角色。当对象流到达流最终节点时,令牌被消费并消失,不再传递给任何下游节点。这可以用于显式丢弃不需要的数据,避免令牌在引脚上无限累积。
三、参数集与概率/速率:并发与随机行为的表达
参数集(ParameterSet)用于描述“一组输入必须同时到达才能触发动作”的语义。它把多个输入引脚绑定为一个集合,集合内所有引脚都收到令牌后,动作才执行。这与默认的“每个引脚至少一个令牌”不同:默认规则下,各引脚独立满足条件即可;参数集则要求集合内引脚同步满足。
概率与速率是活动图支持仿真分析的重要扩展。在控制流或对象流上可以标注概率(如p=0.92)或速率(如10 Hz)。概率用于描述判断节点的分支选择倾向,速率用于描述流上令牌的到达频率。在联合建模中,这些参数直接对应需求中的性能指标。例如需求“采集频率≥10 Hz”可以追溯到采集动作上的速率标注10 Hz;需求“异常响应≤100 ms”可以追溯到告警分支上的延迟约束。
需要强调的是,概率和速率是模型假设或设计目标,不是实测结果。在仿真前应明确标注其来源:是来自历史数据统计、设计指标分配,还是待验证的假设。这样在仿真结果与需求比对时,才能区分“模型假设不成立”和“设计不满足需求”两类问题。
四、活动图与需求图的追溯
SysML通过«satisfy»、«verify»、«trace»等关系把活动图元素与需求图元素连接起来。«satisfy»表示设计元素满足需求,«verify»表示测试用例验证需求,«trace»表示一般性的追溯关系。在工具中,这些关系通常以虚线箭头加构造型标注表示。
追溯的价值在于:当需求变更时,可以快速定位受影响的活动节点;当仿真结果偏离预期时,可以沿追溯链找到对应的需求条款和测试用例。一个实用的做法是,为每个关键活动节点至少建立一条到需求的«satisfy»关系,为每个需求至少建立一条到测试用例的«verify»关系。这样,活动图就不再是孤立的流程图,而是需求验证链条中的可执行环节。
五、复杂功能流建模案例
下面以一个“无人机巡检数据链”为例,综合运用上述语义。活动包含四个主要动作:采集图像(速率20 Hz)、压缩编码(参数集:每4帧一批)、链路传输(概率:成功0.95,失败0.05)、地面解码与告警。采集分支持续运行,压缩分支按参数集批量处理,传输分支按概率选择成功或重传路径,告警分支在检测到异常时触发并连接到流最终节点,不影响其他分支继续运行。
该案例中,参数集保证了压缩动作不会在帧数不足时启动;概率分支模拟了链路的不稳定性;流最终节点确保了告警路径的独立终止;需求追溯则把“传输成功率≥95%”和“告警延迟≤200 ms”分别绑定到传输分支概率和告警动作的延迟约束上。通过这样一张活动图,团队可以在仿真中观察令牌在各引脚上的累积情况、各分支的执行次数分布,以及端到端延迟是否满足需求,从而在详细设计之前发现并发逻辑和性能分配上的问题。