|
最近有机会又完整学习了一遍 SysML 9 种图,下面是学习整理。所有图例均用 建模工具EA 绘制。
SysML的前世今生
一说起 SysML ,就得提到 UML 。
UML ( Unified Modeling Language )统一建模语言, SysML ( Systems Modeling Language ) 系统建模语言,都是图形化语言,用模型的方式描述事物。一开始 UML 的 13 种图(参考俎老师的 UML 图解系列 )被广泛用于软件工程领域,后来当建模者想把它们用在系统工程领域时,发现这些图不能满足对系统的描述,并且像时间图、通信图也不适用,于是 OMG 在 UML 的基础上扩展出了专门用于系统工程领域的 SysML 9 种图,如下所示,这个图也表明了二者关系:
SysML 顺序图、状态图和用例图跟 UML 的一样;
SysML 模块定义图、内部模块图修改自 UML 类图;
SysM 活动图在 UML 活动图的基础上,增加了连续流( Continuous Flow )、控制操作符( Control Operator )、概率流( Probability Flow )、参数集( Parameter Set )等等;
SysML 需求图是新增的图。
下边 以便携式音频播放器模型为例,依次解读各图内容。
1.模块定义图( Block Definition Diagram )
模块定义图用于对模块、模块与其他元素的关系,以及它们在属性、操作和接收形式上的特征进行建模,它可以用来描述系统构成的上下文。
示例:
示例是便携式音频播放器的播放领域模型,其上下文环境由:听众、播放器、穿戴服饰和环境(噪声、天气)构成。
图中展示的元素有模块、模块间的关系,如下表:
| 元素图示 |
说明 |
 |
Block 元素用于定义一个复合系统实体。 |
 |
Part Association 用于描述一个 Block 及其内部部分之间的连接。 |
2.内部模块图( Internal Block Diagram) 内部模块图用于描述一个上级模块的内部结构,它展示了部件模块( Property )之间的连接和接口关系。
示例:
示例描述的是播放器内部组成及各部分的连接关系:
播放器由音频处理子系统、电源子系统、传输子系统和用户界面子系统四部分组成,
音频处理子系统: 由 CPU 处理器、存储器、带放大器的编解码器组成;
电源子系统:由电池检测系统、充电单元、充电电池组成;
传输子系统:由高速闪存盘控制器、通信标准组成;
用户界面子系统:由触摸屏、按钮组成。 |
图中展示的元素有 “部件 模块 ” 、模块间的关系,如下表:
| 元素图示 |
说明 |
 |
Property 元素用于描述一个 Block 的组成。 |
 |
Connector 用于建立 Property 之间的通信链接 |
3.参数图( Parametric Diagram )
参数图是一种内部模块图,用于建模系统的约束关系和性能参数。
示例:
示例描述的是 DSP 使用的“回声”音频效果:
原始声源由 SineWave 约束模块实例创建;
然后,通过 Mult 约束模块缩放原始信号,并在 Delay 约束模块中用规定的时间步长对其进行补偿,生成回声信号;
原始信号和回声信号在 Add2 约束模块中组合,创建实际的输出信号。 |
图中展示的元素有“部件 模块”、 “ 约束模块”、模块间的关系,如下表:
| 元素图示 |
说明 |
 |
ConstraintProperty 元素用于实例化一个约束模块,内部可以包含约束表达式。 |
 |
Connector 用于建立 Property 之间的通信链接 |
4.包图( Package Diagram)
包图用于组织模型的层次结构,包里可以包含不同元素和包,还可以表示包与包之间的关系。
示例:
示例中有两个包图:
左边是 Module Library 包,它包含 5 个子包“ Components ”、“ Audio Player Value Types ”、“ External ”“ Constraint Blocks ”、“ Specifications and Types ”,这些包是在播放器系统设计的不同阶段使用的包。
右边是子包 “ Specifications and Types ”的内容,可以看到包中的元素有 1 个信号元素、 2 个模块元素。 |
下表是对包元素以及常用关系的说明:
| 元素图示 |
说明 |
 |
Package 是一个名称空间,也是一个可以被包含在其他包的名称空间中的元素,用于对结构或关系的描述。 |
 |
Conform 关系 是一种特殊的包依赖关系,用于表示一个包中的模型元素符合(或遵循)另一个包中定义的规范、标准或元模型。 |
 |
Dependency 关系 用于表示一个包依赖另一个包的定义(如引用其内容),但没有严格的嵌套或导入关系。 |
 |
Import 关系 允许一个包中的元素访问另一个包中的元素,分为:访问( Access ):单向可见性(私有导入,不传递),导入( Import ):单向可见性(公共导入,width="120"可传递)。 |
 |
Realization 关系 用于表示一个包中的内容实现(或具体化)另一个包中定义的规范、需求或抽象定义。 |
5.需求图( Requirement Diagram )
需求图是一种专门用于捕获、分析和管理系统需求的图表。它把传统的文本需求转换为模型元素,使需求更容易被管理、跟踪和验证,让需求成为了结构化和可视化的模型。
示例:
示例把便携式播放器的需求分为 4 类,从 4 个方面进行了分析和描述:
(1) 易用性需求
按键布局
滚动条的可用性
图形用户界面
硬件交互
(2) 性能需求
保真度
电池寿命
降噪
(3) 耐久性需求
耐气候性
抗冲击性
播放阻力
(4) 媒体访问需求
外部接口端口
内置存储容量 |
图中展示的元素有“需求” 、需求元素间的关系,如下表:
| 元素图示 |
说明 |
 |
requirement1y 元素 用于说明系统的功能,或者它应该满足的条件。 |
 |
Containment 关系 用于表示需求之间的层级包容结构,即一个需求(父需求)可以包含其他需求(子需求)。 |
6.用例图( Use Case Diagram )
用例图用于从用户角度表示系统功能和使用场景,描述系统与外部参与者 (Actor) 之间的交互关系。
示例:
示例是便携式播放器系统“操作音频播放器”用例,这是一个两级用例:
1.收听 音频 (基础用例)
接通电源 (扩展的用例)
播放(被包含的用例)
暂停(被包含的用例)
调节音量(被包含的用例)
停止(被包含的用例)
2.录制 音频 (基础用例)
停止 (被包含的用例) |
图中展示的元素有“用例” 、 “ 参与者 ” 、 “ 边界 ” 、以及关系,如下表:
| 元素图示 |
说明 |
 |
UseCase 元素 用于描述系统的功能。 |
 |
Actor 元素 用于表示与一个或多个 SysML 系统交互的用户,可以是人或者系统。 |
 |
Boundary 元素 用于把图中的元素绑定在边框内,明确界定系统的范围,区分系统内部功能和外部参与者。 |
 |
extend 关系 用于表明一个用例(扩展用例)可以在特定条件下有条件地增强另一个用例(基础用例)的行为。 |
 |
Include 关系 用于表明一个用例(基础用例)必须包含另一个用例(被包含用例)定义的强制性行为。 |
7.活动图( Activity Diagram )
活动图用于按照活动的先后顺序,描述系统行为的控制流和数据流。
泳道是活动的执行者,泳道中是执行者的行为。
示例:
示例是收听音频的活动图,描述如下:
1.收听人打开播放器电源
2.播放器进行初始化
3. 收听人选择播放曲目
4. 收听人选择是否需要进行播放设置
4.1 如果需要进行设置,则收听人进行播放设置
4.2 如果不需要进行设置,则进入第 5 步
5 、收听人点击播放键
6 、播放器播放音乐
7 、收听人点击停止键
7.1 收听人关闭电源并关机
7.2 播放器停止播放,当停止时长到达第 4 步设置的关机时长,播放器自动断电关机。 |
图中展示的元素有“泳道” 、“活动”、“对象”,及各元素之间的关系等等,如下表:
| 元素图示 | 说明 |
 | Initial 元素定义活动流的开始。 |
 | Partition 元素用于表示行为的执行者,把动作按执行者进行逻辑分组。 |
 | Action 元素是行为单元,用于描述基本过程或基本转换,不能再被分解。 |
 | Object 元素 用于表示实体或者数据。 |
 | Fork/Join 元素用于:将流拆分为多个并发流,将多个并发流的流进行合并,将多个传入流拆分为多个传出流。 |
 | Decision 元素用于条件判断。 |
 | Final 元素 定义活动流的结束。 |
 | 控制流 用于 Action 之间,表示时序流程的完成转移。 |
 | 对象流 用于 Action 与 Object 之间,表示对象的流动路线。 |
8. 顺序图( Sequence Diagram)
顺序图跟活动图一样,都是用来描述系统动态行为的图,但两者是不同的行为图。顺序图描述对象或组件之间基于时间的交互顺序,强调消息传递的时序性和协作关系。
示例:
示例是播放音频的顺序图,参与者有: Listener 、 PlayerUI 、 AudioController AudioLibrary ,描述如下:
1 、 Listener -> 点击 " 播放 " 按钮 -> PlayerUI
2 、 PlayerUI -> 请求播放 -> AudioController
alt 当前无播放任务
AudioController -> 获取音频文件列表 -> AudioLibrary
AudioLibrary --> 返回列表 -> AudioController
AudioController -> 选择文件并解码 -> AudioController
else 已有播放任务
AudioController -> 继续播放 -> AudioController
end
3 、loop 播放中
AudioController -> 实时更新进度 -> PlayerUI
opt 用户点击 " 暂停 "
Listener -> 点击 " 暂停 " -> PlayerUI
PlayerUI -> 请求暂停 -> AudioController
AudioController -> 确认暂停 -> PlayerUI
PlayerUI -> 更新界面(暂停图标) -> Listener
end
oopt 用户点击 " 下一首 "
Listener -> 点击 " 下一首 " -> PlayerUI
PlayerUI -> 请求切换 -> AudioController
AudioController -> 获取下一文件 -> AudioLibrary
AudioLibrary --> 返回文件 -> AudioController
AudioController -> 更新播放状态 -> Listener
end
end
4 、 opt 播放结束
AudioController -> 发送结束事件 -> PlayerUI
PlayerUI -> 显示结束状态 -> Listener
end |
图中展示的主要元素有“对象” 、“片段”、“消息”,如下表:
| 元素图示 |
说明 |
 |
Fragment 元素用于表示交互片段( Interaction Fragment ),主要用于控制交互流程。常见的 Fragment 类型有: alt 、 opt 、 loop 、 par 、 ref 、 break 、 critical 。 Fragment 可以嵌套使用。 |
 |
Message 元素 用于表示参与者之间传递的信息、请求或事件。 Message 的主要类型有: |
9.状态图( State Machine Diagram )
状态图是一种行为图,用于描述系统或组件在其生命周期中可能经历的状态以及导致状态转换的事件和条件。
示例:
示例是操作音频播放器系统的状态图,描述如下:
1 )基本状态
| 状态 |
描述 |
| Off (关机) |
播放器未工作 |
| Idle (待机) |
播放器通电但未工作,等待用户指令 |
| Playing (播放中) |
播放器正在播放音乐 |
| Paused (暂停) |
播放过程被临时中断,可恢复或待机 |
2 )转换规则
| 转换 |
触发条件 |
动作 |
| Off → Idle |
按下启动按钮 |
启动电源 |
| Idle → Playing |
按下播放按钮 |
启动播放 |
| Playing → Paused |
按下暂停按钮 |
停止播放 |
| Paused → Playing |
按下播放按钮 |
恢复播放 |
| Paused → Idle |
按下停止按钮 |
停止播放 |
| Idle → Off |
按下关闭按钮 |
切断电源 |
图中展示的元素有“状态”、“转换”等 ,如下表:
| 元素图示 |
说明 |
 |
Initial 元素 用于表示状态的开始。 |
 |
StateMachine 元素用于从状态和转换的角度描述整个系统或组件的生命周期行为。 |
 |
State- 元素用于在其状态机中表示系统在某一时刻的条件或模式。 |
 |
Final 元素 用于表示状态的结束。 |
 |
Transition 元素用于描述操作条件在一种状态和另一种状态之间建立生命周期的路径。 |
结语
SysML 提供的 9 种图形构成了一个完整的系统工程建模体系,每种图都针对系统开发的特定视角提供了专业表达。从需求分析到架构设计,从行为描述到参数验证, SysML 图表的有机组合使复杂系统的全生命周期管理成为可能。
在实际工程应用中,这些图表往往需要协同使用 :
用例图定义系统边界
需求图组织、捕获、分析系统需求
模块定义图构建静态结构
内部模块图展示连接关系
活动图描述工作流程
顺序图阐明交互时序
状态图刻画模式转换
参数图进行量化分析
包图维护模型的组织结构
掌握这 9 种图的特性和关联关系,能够帮助工程师建立更加精确、可追溯和可验证的系统模型。
另外,随着 SysML 建模方法与 AI 、仿真技术的深度融合,这 9 种基础图表不断衍生出新的应用模式,如将状态机图与机器学习结合进行系统行为预测,或通过参数图实现数字孪生的实时更新。技术的演进,让 SysML 建模逐渐形成新一代“认知系统工程”方法论与技术。我们不仅应该熟练掌握 SysML 九种基础图表,还应该掌握演进趋势,这样才能在未来持续发挥 SysML 在复杂系统创新中的关键作用。
后记
希望您读了此文后有所收益。 如果您有经验乐于分享,欢迎投稿给我们,如果您对我们的培训、咨询、和工具感兴趣,欢迎了解。 火龙果软件提供团队协同建模环境的咨询服务,可以帮助用户搭建完整的团队建模和 MBSE 解决方案,详细信息请见 http://tool.uml.com.cn/ToolsEA/introduce.asp 希望本文对您的建模工作有帮助。更多的有关 EA 建模资料如下: 视频: http://tool.uml.com.cn/ToolsEA/jswd-ysm.asp?partname=sp 文章: http://tool.uml.com.cn/ToolsEA/docea.asp?partname=wk
如果您希望了解更多信息:
欢迎访问建模者频道 http://tool.uml.com.cn/ToolsEA/introduce.asp
也欢迎直接联系我们 zhgx@uml.net.cn , 010-62670969
|