模块 3:建模语言
建模语言是什么、为什么重要,以及对 SysML v1、SysML v2、UML 及其他选项的概览 — 不深入教授任何一种语言。
前置要求:MBSE 模块 2什么是建模语言?
在构建模型之前,你需要一种语言来表达它。建模语言(Modelling Language)不是编程语言 — 它不在计算机上运行以生成软件。相反,它提供了一种结构化的方式来描述系统:系统的组成部分、行为、需求和关系。
每种语言 — 无论是人类语言还是建模语言 — 都有三个基本方面:
- 语法(Syntax) — 定义哪些构造是允许的、以及它们如何组合的语法规则。
- 语义(Semantics) — 这些构造背后的含义。两个语法正确的句子可能有完全不同的含义。
- 表示法(Notation) — 用于书写语言表达式的视觉或文本表示形式。
想想英语。它有语法(Syntax)— 例如"主语 + 动词 + 宾语"的规则。它有含义(Semantics)— 句子"The car accelerates"(汽车加速)传达了一个具体的概念。它用拉丁字母(Notation)书写 — 但同样的含义也可以用西里尔字母或汉字来表达。建模语言的工作方式完全相同:语法定义了你能写什么,语义定义了它意味着什么,表示法定义了它在页面或屏幕上的呈现方式。
| 概念 | 人类语言示例 | 建模语言示例 |
|---|---|---|
| 语法(Syntax) | 主语 – 动词 – 宾语 的语序 | Block 必须有名称;Port 连接到 Connector |
| 语义(Semantics) | "泵输送流体"有明确含义 | 一个由 part def 定义类型的 part 表示"这是该定义的一个实例" |
| 表示法(Notation) | 用拉丁字母书写(A、B、C…) | 带标签的方框(图形化)或 part pump : Pump(文本化) |
表 1 — 语言的三个方面:人类语言 vs 建模语言
在评估任何建模语言时,请思考:语法是否定义良好?语义是否精确且无歧义?表示法是否支持团队的工作方式?
SysML v1:成熟的标准
SysML v1(Systems Modeling Language,系统建模语言第一版)由 OMG 于 2007 年发布。它被设计为 UML 的一个 Profile(剖面)— 即扩展和定制 UML 的面向软件的构造,使其适用于系统工程。近二十年来,SysML v1 一直是 MBSE 中使用最广泛的建模语言。
九种图类型
SysML v1 将模型组织为九种图类型,分为三个类别:
| 类别 | 图类型 | 用途 |
|---|---|---|
| 结构图 | Block Definition Diagram(BDD,模块定义图) | 定义 Block 及其关系(组合、泛化) |
| Internal Block Diagram(IBD,内部模块图) | 展示内部结构 — Block 内部的 Part、Port 和 Connector | |
| Package Diagram(包图) | 将模型元素组织到包(命名空间)中 | |
| Parametric Diagram(参数图) | 捕获连接值属性的约束方程 | |
| 行为图 | Activity Diagram(活动图) | 建模工作流、数据/控制流和动作 |
| Sequence Diagram(序列图) | 展示 Part 之间随时间的消息交换 | |
| State Machine Diagram(状态机图) | 建模 Block 的状态、转换和事件 | |
| Use Case Diagram(用例图) | 捕获参与者及其与系统的交互 | |
| 跨领域 | Requirement Diagram(需求图) | 追踪需求及其 satisfy/verify/refine 关系 |
表 2 — SysML v1 的九种图类型
优势
- 广泛的工具支持 — 所有主流 MBSE 工具(Cameo、Rhapsody、Enterprise Architect、Papyrus)都支持 SysML v1。
- 庞大的社区 — 丰富的培训资料、会议和从业者网络。
- 大量教材和标准参考 — 在学术界和工业界的文献中都有充分的文档记录。
局限性
- 继承了 UML 的历史包袱 — 许多 UML 构造与系统工程无关,但无法被干净地移除。
- 语义不精确 — 某些概念(如 Allocation,分配)缺乏严格定义,导致不同工具之间的解释不一致。
- 没有标准 API — 模型被锁定在专有工具格式中;互操作需要自定义的导出/导入。
本模块仅从高层次概述 SysML v1。我们不会在此深入教授其图形语法 — 目标是理解它是什么以及它在 MBSE 版图中的位置。
SysML v2:下一代语言
SysML v2 是系统建模语言的全新设计,由 OMG 于 2024 年发布。SysML v2 不再扩展 UML,而是建立在自己的基础之上 — KerML(Kernel Modeling Language,核心建模语言)— 提供精确的、数学化的语义。
核心创新
- 文本表示法(Textual Notation) — 标准文本语法(STN)可以在任何文本编辑器中编写,并使用 Git 进行版本控制。
- KerML 基础 — 所有语言构造都有精确的语义定义,消除了 v1 的歧义问题。
- 标准 API — 配套的 API 规范实现了工具互操作:模型可以在符合标准的工具之间交换。
- 统一的行为建模 — Action(动作)、State(状态)和 Interaction(交互)共享一个一致的语义框架。
- 不依赖 UML — 全新设计,不受遗留软件工程构造的束缚。
SysML v1 与 v2 对比
| 维度 | SysML v1 | SysML v2 |
|---|---|---|
| 基础 | UML Profile(继承 UML 元模型) | KerML — 独立的、数学化的基础 |
| 表示法 | 仅图形化 | 图形化 + 标准文本表示法(STN) |
| 语义 | 非正式的,常有歧义 | 精确的,由 KerML 形式化定义 |
| 互操作性 | 无标准 API;工具锁定格式 | 用于模型交换的标准 API |
| 行为建模 | 多种互不关联的图类型 | 统一的 Action/State/Interaction 框架 |
| 成熟度 | 成熟(2007);广泛的工具支持 | 新发布(2024);生态系统快速成长中 |
表 3 — SysML v1 与 SysML v2 对比
如需深入了解 SysML v2,请参阅我们的 SysML v2 教程系列。该系列通过九个模块从基础到高级全面介绍该语言。
其他建模语言
SysML 是最通用的系统建模语言,但并不是唯一的选择。根据你的领域,领域特定语言(Domain-Specific Language,DSL)可能更合适 — 或者可以与 SysML 一起使用,以解决专门的关注点。
| 语言 | 领域 | 表示法类型 | 核心优势 |
|---|---|---|---|
| UML | 软件工程 | 图形化 | 全面的软件设计;14 种图类型 |
| AADL | 实时/嵌入式系统 | 文本 + 图形 | 精确建模时序、调度和资源预算 |
| Modelica | 物理/仿真 | 文本(基于方程) | 多领域物理仿真(热、电、机械) |
| EAST-ADL | 汽车行业 | 图形(基于 UML) | 与 AUTOSAR 对齐的汽车专用抽象 |
| Capella / Arcadia | 系统架构 | 图形(方法驱动) | 方法与工具紧密集成;引导式架构工作流 |
表 4 — SysML 之外的建模语言概览
关键结论:SysML 是最通用的系统建模语言,也是 MBSE 的事实标准。然而,领域特定语言的存在是有充分理由的 — 它们编码了通用语言无法涵盖的领域知识。在实践中,组织通常使用 SysML 进行系统级架构建模,并使用 DSL 进行详细的领域建模。
这并不是一个详尽的列表。其他值得注意的语言包括 BPMN(业务流程)、ArchiMate(企业架构)以及各种安全专用表示法(如故障树、STPA 图)。正确的选择取决于你的领域和工程环境。
如何选择语言
选择建模语言不是一个纯粹的技术决策。语言必须适合你的领域、你的团队、你的工具以及你的组织环境。最重要的是,语言不是孤立存在的 — 它必须与建模方法(模块 4)和建模工具(模块 5)协同工作。这三大支柱是相互依赖的。
决策因素
| 因素 | 需要考虑的问题 |
|---|---|
| 领域适配性 | 该语言是否支持你的领域所需的模型类型?(如实时约束、物理仿真、安全分析) |
| 团队熟悉度 | 你的团队是否已经了解这种语言?需要多少培训投入? |
| 工具支持 | 你的组织使用或能够采购的工具是否支持该语言? |
| 标准合规性 | 你的行业或客户是否要求使用特定标准?(如国防合同通常要求使用 SysML) |
| 互操作性 | 模型能否与供应商、合作伙伴或生态系统中的其他工具进行交换? |
| 生态系统成熟度 | 是否有教材、培训课程、社区论坛和咨询支持? |
表 5 — 选择建模语言的决策因素
在许多组织中,答案很明确:SysML(v1 或 v2)是通用 MBSE 的默认选择,必要时辅以领域特定语言。但这个选择应该是经过深思熟虑的,而不是偶然做出的。
请记住:语言只是 MBSE 三大支柱之一。一种好的语言配合糟糕的方法,仍然会产生糟糕的模型。在下一个模块中,我们将转向支柱二 — 建模方法。