2. SysML核心图与复用表达基础

在SysML架构复用与产品线建模中,图不是“画得越全越好”,而是“选得越准越省”。SysML九种图中,与复用表达最直接相关的是六种:块定义图(BDD)、内部块图(IBD)、参数图(PAR)、需求图(REQ)、活动图(ACT)和状态机图(STM)。它们各自回答不同的问题,也各自有明确的表达边界。选错图,轻则模型冗余,重则复用边界模糊、变体配置失控。

六种图在复用中的分工

块定义图(BDD)回答“系统由哪些可复用单元构成、它们之间是什么关系”。它是产品线公共资产的结构骨架,用块表示可复用组件、子系统或平台元素,用泛化表示共性到变体的继承,用组合表示整体与部分。BDD的复用价值在于:把“哪些块是平台级、哪些是产品级”通过泛化层次和构造型(如«Platform»、«Variant»)显式标注出来。边界是:BDD只表达静态结构,不表达时序、不表达参数约束、不表达行为触发。

内部块图(IBD)回答“一个块内部,可复用部件如何通过端口和连接器装配”。它是BDD的“展开视图”,用端口(Port)、流属性(Flow Property)和连接器(Connector)描述部件之间的接口与交互路径。在复用中,IBD用于验证变体替换后接口是否仍然兼容——例如把«Variant»块替换进平台框架时,端口类型、方向、流属性必须匹配。边界是:IBD不定义块本身,只定义块内部实例化后的连接关系。

参数图(PAR)回答“可复用单元的性能指标之间有什么数学约束”。它用约束属性(Constraint Property)和绑定连接器(Binding Connector)把BDD中的值属性(Value Property)关联起来,形成参数网络。在复用中,PAR是变体配置的“计算引擎”:当平台级参数(如最大载荷、供电电压)被变体覆盖时,PAR能自动传播约束,判断变体是否满足系统级指标。边界是:PAR只表达约束关系,不表达求解顺序,也不表达行为。

需求图(REQ)回答“哪些需求被哪些可复用单元满足、变体如何影响需求覆盖”。它用需求(Requirement)、满足(Satisfy)、派生(Derive)、验证(Verify)等关系,把需求与块、测试用例、活动连接起来。在复用中,REQ用于追踪“平台需求—变体需求—复用单元”的覆盖链,防止变体引入后出现需求空洞或冲突。边界是:REQ不表达设计决策,只表达需求与设计元素之间的追溯关系。

活动图(ACT)回答“可复用流程或算法如何组织、输入输出是什么”。它用动作(Action)、控制流、对象流、分叉/汇合描述行为逻辑。在复用中,ACT适合表达可复用的测试流程、装配流程、信号处理链。边界是:ACT不表达对象的状态依赖,也不表达事件驱动的状态迁移。

状态机图(STM)回答“可复用单元在生命周期内如何响应事件、在状态间迁移”。它用状态(State)、迁移(Transition)、事件(Event)、守卫(Guard)描述离散行为。在复用中,STM适合表达模式切换、故障恢复、变体激活等状态相关逻辑。边界是:STM不表达并发动作的详细数据流,也不表达参数约束。

SysML六图在架构复用中的表达边界与选择关系 块定义图 BDD 可复用单元的结构骨架 块 · 泛化 · 组合 · 构造型 回答:由哪些可复用单元构成 边界:不表达时序/参数/行为 内部块图 IBD 可复用部件的装配与接口 端口 · 连接器 · 流属性 回答:内部如何连接与交互 边界:不定义块本身 参数图 PAR 性能指标的数学约束网络 约束属性 · 绑定连接器 · 值属性 回答:参数之间如何约束 边界:不表达求解顺序 需求图 REQ 需求与复用单元的追溯链 满足 · 派生 · 验证 · 覆盖 回答:谁满足哪些需求 边界:不表达设计决策 活动图 ACT 可复用流程与算法逻辑 动作 · 控制流 · 对象流 · 分叉 回答:流程如何组织 边界:不表达状态依赖 状态机图 STM 事件驱动的状态迁移逻辑 状态 · 迁移 · 事件 · 守卫 回答:如何响应事件迁移 边界:不表达并发数据流 选择原则:先问“要表达什么”,再选图 结构复用边界 BDD + IBD 参数约束复用 PAR + BDD 需求追溯复用 REQ + BDD 行为复用边界 ACT + STM

选择原则:从复用问题出发,而不是从图出发

实际建模中,最常见的错误是“先选图再找内容”。正确的顺序是:先明确当前要解决的复用问题属于哪一类,再匹配图型。以下四条判断路径可以直接使用。

第一,要表达“可复用单元有哪些、如何分类”,选BDD。例如某无人机产品线中,平台级块«Platform»包含飞控、动力、通信三个子块,变体块«Variant»继承平台块并覆盖部分属性。BDD用泛化箭头从变体指向平台,用组合菱形从平台指向子块,一眼就能看出哪些是公共资产、哪些是变体扩展。

第二,要表达“可复用部件如何装配、接口是否兼容”,选IBD。例如飞控块内部,IMU通过SPI端口连接主处理器,主处理器通过UART端口连接通信模块。当变体更换通信模块时,IBD中端口类型和流属性必须一致,否则连接器断裂,复用失败。IBD是接口兼容性的“检查图”。

第三,要表达“变体参数是否满足系统约束”,选PAR。例如平台级约束:起飞重量 = 空机重量 + 载荷重量 + 燃油重量,且起飞重量 ≤ 25kg。当变体把载荷重量从3kg改为5kg时,PAR中的约束属性自动计算,若结果超过25kg则标记冲突。PAR是变体配置的“计算器”。

第四,要表达“需求覆盖与行为逻辑”,选REQ、ACT或STM。REQ用于追踪“平台需求—变体需求—复用单元”的满足链;ACT用于表达可复用的测试流程或装配流程;STM用于表达模式切换、故障恢复等状态逻辑。三者不混用:REQ不画动作流,ACT不画状态迁移,STM不画需求追溯。

一个可执行的选图检查表

为避免选图随意,建议在每次建模前用以下检查表快速判断。该表为示例工具,字段可根据项目实际调整。

复用问题 首选图 辅助图 关键检查点
可复用单元分类与层次 BDD — 泛化方向是否正确、构造型是否标注
变体替换后接口兼容性 IBD BDD 端口类型、方向、流属性是否匹配
变体参数是否满足系统约束 PAR BDD 约束属性绑定是否正确、单位是否统一
需求覆盖与追溯完整性 REQ BDD 满足/派生/验证关系是否闭环
可复用流程或算法逻辑 ACT IBD 输入输出对象流是否完整
事件驱动的状态迁移 STM ACT 事件、守卫、动作是否成对出现
实践提示:在工具中建模时,BDD和IBD通常成对使用——BDD定义“是什么”,IBD定义“怎么连”。PAR必须绑定到BDD的值属性上才有意义,脱离BDD的PAR只是孤立公式。REQ的满足关系应指向BDD中的块或ACT中的动作,而不是指向文本段落。ACT和STM可以互相引用,但不要在同一张图中混合状态和动作流。
常见误区:用活动图表达状态迁移,或用状态机图表达参数约束,都会导致模型语义失真。活动图的分叉/汇合表达并发,状态机的迁移表达事件响应,两者不可互换。另外,BDD中的泛化关系不要与IBD中的连接器混淆:泛化是类型层面的继承,连接器是实例层面的装配。

总结来说,六种图在复用中的选择原则可以压缩为一句话:结构用BDD,装配用IBD,约束用PAR,追溯用REQ,流程用ACT,状态用STM。每张图只回答它最擅长的问题,不越界、不混用,才能让产品线模型既清晰又可复用。