3. 产品线工程与架构复用核心概念
产品线工程(Product Line Engineering, PLE)要解决的根本问题是:如何用一套可管理的资产,高效地派生出多个既有共性又能满足差异需求的产品。SysML 本身并不规定产品线方法,但它提供了足够丰富的建模元素,把共性-可变性分析、特征模型、领域工程、应用工程、平台与派生关系这些概念落到可执行的模型上。理解这些概念在 SysML 语境中的映射,是后续做架构复用建模的前提。
共性-可变性分析:先分清“哪些必须一样、哪些允许不同”
共性-可变性分析(Commonality and Variability Analysis, CVA)是产品线工程的起点。共性指多个产品之间必须保持一致、可被统一复用的部分;可变性指允许在不同产品间产生差异的部分。做 CVA 时,通常先收集一组候选产品的需求与架构描述,再逐条判断每个需求或结构元素属于共性还是可变性,并记录可变性的类型、约束和绑定时机。
可变性常见类型包括:可选(存在或不存在)、多选(从集合中选若干)、单选(从集合中选一个)、参数可变(结构相同但取值不同)。绑定时机则分为设计时、编译时、部署时和运行时。例如某型无人机的电源模块,其“是否配备备用电池”属于可选可变性,绑定时机为设计时;而“巡航速度”属于参数可变,绑定时机为运行时。这些判断直接决定后续在 SysML 中用什么机制表达。
特征模型:用特征与约束描述产品空间
特征模型(Feature Model)把产品线的可变性组织成一棵树:根节点代表产品线,子节点代表特征,边上的标记表示特征之间的关系。常见关系有:必选(mandatory)、可选(optional)、或(or)、异或(alternative)、基数(cardinality)。此外还有跨分支的约束,如 requires(若选 A 则必须选 B)和 excludes(A 与 B 不能同时选)。
在 SysML 中,特征模型通常用块定义图(BDD)表达:根特征是一个块,子特征通过组合关联连接到父特征,关联端的多重性表达可选与多选,泛化表达异或分组,约束块或约束属性表达 requires/excludes。这样特征模型就与需求图、参数图建立了可追溯关系,而不是一张孤立的树。
领域工程与应用工程:资产生产与资产消费
领域工程(Domain Engineering)负责生产可复用资产:领域需求分析、领域架构设计、可变性实现、资产库建设。应用工程(Application Engineering)负责消费这些资产:根据具体产品需求选择特征、绑定可变性、派生具体产品模型。两者是“生产—消费”关系,中间通过平台资产库连接。
在 SysML 语境中,领域工程的产物通常包括:领域需求模型、参考架构(块定义图与内部块图)、可变性模型(特征模型与变体点)、参数模型、接口库。应用工程则通过实例化、特化、绑定参数、选择变体来生成产品模型。关键原则是:应用工程不应修改领域资产,只能通过预定义的变体点进行派生,否则复用就退化为复制。
平台与派生关系:SysML 中的映射机制
平台是领域工程沉淀下来的、带有变体点的架构基线。派生关系描述产品模型如何从平台生成。SysML 中可用的映射机制主要有四类:
- 泛化/特化:平台块作为父类,产品块作为子类,重定义属性与端口,适合结构差异较小的派生。
- 实例化:平台块作为类型,产品作为实例,通过实例规格绑定具体值,适合参数可变。
- 变体点与替换:在平台内部块图中定义变体点端口,产品侧用满足相同接口的块替换,适合模块级可选。
- 参数绑定:用参数图把平台参数与产品具体值绑定,适合性能、尺寸等连续可变。
下面这张图把上述概念串成一条从领域工程到应用工程的映射链,重点表现特征模型、平台变体点与产品派生之间的对应关系。
一个可执行的映射示例
假设产品线是“巡检无人机”,平台基线包含机体、飞控、电源、任务载荷四个块。特征模型根节点为“巡检无人机”,子特征包括:机体(必选)、飞控(必选)、电源(必选)、任务载荷(可选)、续航模式(异或:标准/长航时)。约束:选择“长航时”则必须选择“大容量电池”变体。
在 SysML 中,平台块 PowerModule 内部块图定义变体点端口 vpBattery,接口为 IBattery。领域工程提供两个满足该接口的块:StdBattery(容量 5000mAh)和 LongEnduranceBattery(容量 10000mAh)。应用工程为“长航时巡检机”派生时,在特征配置中勾选“长航时”,触发约束选择 LongEnduranceBattery,然后在产品块 LongEnduranceUAV 中特化 PowerModule 并把 vpBattery 替换为 LongEnduranceBattery,同时通过参数图把 enduranceTime 绑定为 45min。整个派生过程没有修改平台块本身,只做了特化、替换和绑定。
概念之间的对应关系
| 产品线概念 | 核心问题 | SysML 主要载体 |
|---|---|---|
| 共性-可变性分析 | 哪些必须一致、哪些允许不同 | 需求图 + 约束属性 + 变体点标注 |
| 特征模型 | 产品空间如何组织与约束 | 块定义图 + 组合关联 + 约束块 |
| 领域工程 | 可复用资产如何生产 | 参考架构 IBD + 接口库 + 参数图 |
| 应用工程 | 具体产品如何派生 | 特化块 + 实例规格 + 参数绑定 |
| 平台与派生 | 平台如何生成产品 | 泛化/实例化/变体点替换/参数绑定 |