系统建模语言 SysML

SysML 是一个图形的系统建模语言,他跟上一篇一样是来自喔卖尬集团 (Object Management Group) 发布的标准。

在了解 SysML 之前,还需要了解 MBSE 是什麽,MBSE (Model Based Systems Engineering),意思是以 "模型" 为基底的系统工程,那麽,是否还有以其他方法作为基底的系统工程?

有,那就是 Text Based Systems Enginnering (TBSE) ,这个方法就是在做系统设计的时候,会以写一大堆文件来开始着手,阶段成果、跨部门领域沟通都是从文件(多为文字)进行。

不便性就在如果系统开始变复杂,然後文件资讯的一致性、会议讨论的细节、资料通通就会变得很难维护 (还记得上一节说了: 【开了一大堆会议在讨论很多细节,而且难以让人记忆,尤其有整理困难,就算细节写成文件也是堆积成山,根本没人想看】) ,大概就是这样吧。

总之,MBSE 登场了, Model Based 是指模型作为基底,而且 MBSE 这个概念包含三大要素:

  • Modeling Language
  • Modeling Process
  • Modeling Tool

而且这三个要素都围绕在 Model (模型) 身上,详情可以参考 [1] 这份参考资料中的图片。

下图是参照 [1] 所画的 MBSE 三大要素的关系图形:

https://ithelp.ithome.com.tw/upload/images/20210914/20092753ZPGigTKAiW.png

总之, SysML 就是在这个关联性之中的建模语言,使用 MBSE 方法的优势在於模型本身的重复使用性高,而且不同领域的问题、领域模型其实都可以是模型,它本身整合了对抽象概念的表达,用 MBSE 套用在形容
一套正要开发的系统,或许可以取代冗长的文字、文件记录。 (对 MBSE 的进一步补充可参考 References)

SysML 图形语言的设计,据喔卖尬集团 (OMG Group) 说他和 UML2 图有一定的关联性 [4]:

https://ithelp.ithome.com.tw/upload/images/20210914/20092753uLVd7Rt517.jpg

SysML 所有用来描述的工具有这一些类型:

https://ithelp.ithome.com.tw/upload/images/20210914/20092753FP4Brxb8LG.jpg

上图工具中,SysML 有 4 大重要的类型值得注意:

1. Structure: 结构
2. Behavior: 行为
3. Requirements: 需求
4. Parametrics: 参数传递

而喔卖尬也对这 4 个图给了一些范例:

https://ithelp.ithome.com.tw/upload/images/20210914/20092753sl8ZWd9DYm.jpg

要在本篇文章中,利用 SysML 整合每一个 Block 变成一幅完整的情境应用太困难了,所以就针对每一个 SysML 类型进行介绍,SysML 也是一套蛮大的系统观,同时你也需要理解 MBSE 相关知识,若有兴趣可再自行钻研。

SysML 有 9 种图表使用的情境方法, 且 diagram 名称都会用缩写表示。 下面的几张图都撷取自 [5]。

Block Definition Diagram (bdd) 区块定义图表

https://ithelp.ithome.com.tw/upload/images/20210914/20092753TBPhXQPYpN.png

这是一个区块定义的图表,所谓区块定义,就是纯粹的说明这个煞车 ABS 的所有结构以及关联性。

显然 Anti-Lock Controller 是防锁死煞车控制器,里面有两种结构去继承 Anti-Lock Controller 这个概念,分别是 Traction Detector, Brake Modulator 都继承它,最後他们都各自会形成所属的 Library: Electronic Processor (电子处理器), Electro-Hydraulic Valve (电动液压阀)。

整体的设计起手式可以从 bdd 开始,设计目标是把所有高度抽象的内容抽离,而且不形容使用的方法。

官方提共了一个把完整 Overall Structure 画完的样子,看样子就是一台有 ABS 煞车功能的车。

https://ithelp.ithome.com.tw/upload/images/20210914/200927532a2mRRkUa8.png

Internal Block Diagram (ibd) 内部区块图表

上面的 bdd 做了对系统的抽象描述,现在要定义区块之间的使用、连结关系:

https://ithelp.ithome.com.tw/upload/images/20210914/20092753OzZ5mZm07u.png

这张图是 Anti-Lock Controller (来自 bdd: Structure 的最父级区块) 的 Item Flow (项目关系及流程),最基础定义了 Traction Detector (牵引力探测器) 会侦测到某些情境之後,"使用" Brake Modulator (制动调节器)。

Parametrics (par) 参数传递图表

参数表是对每一个演算法建立使用关系,所谓每一个演算法,也是定义在 bdd 图底下,比方说一个分析内容的区块定义表长这样:

https://ithelp.ithome.com.tw/upload/images/20210914/20092753LCzsiXsHFh.png

这个图描述了一个直线车辆动力学的模型,这个模型需要用到 4 个方程序,还有 Clock, Vehicle 两个参数区块,知道定义之後,就可以使用参数传递图表来形容各个方程序之间的关系:

https://ithelp.ithome.com.tw/upload/images/20210914/20092753r85R9H034C.png

看起来这一堆东西会让人想睡,简单的说 f: N , f: ,力的单位是 N,所以上图区块从 e1 关连到 e2 是用 f 这个力值,输入输出单位是 N;

第二个区块再用 a: m/sec^2e3 关联; e3 再跟 e4 关联参数 v: m/sec, t: sec (sec: 秒)。 想要看漂亮的图可以参考 [10]。

Activity Diagram (act)

活动图,基本上就跟流程图很像,每一个节点都有输入输出,但是如果是要做一个工业控制系统,他的设计结构就可能变得更复杂。

https://ithelp.ithome.com.tw/upload/images/20210914/20092753lVfgr5Qdzn.png

有趣的是,他可能不只被当作一个程序来看,官方给了一个从 bdd 开始设计的范例:

https://ithelp.ithome.com.tw/upload/images/20210914/20092753giJL6GwVpQ.png

从定义一个 Prevent Lockup 之间的关系,以及隔壁的 Use 就是 Prevent Lockup 使用情境的行为 (具体行为)。

Requirement Diagram (req) 需求图表

需求图表,就是定义系统需要满足的需求,以及需求之间的关系。

比方说,这又是一个车的规格里面的 [煞车需求],某种程度表达了防锁死煞车的效能与达到预期的煞停距离的两个需求,而且描述他们有关。

https://ithelp.ithome.com.tw/upload/images/20210914/20092753TCAiQ2862c.png

我不要再找跟车有关的内容了 XD,我在 [11] 找到了另一个描述内容管理的需求范例 (当作是文章管理),上面描述了一个文章管理需要支援那些功能,比方说: 支援 HTML 以及在 web 端希望把文章列在右侧。

https://ithelp.ithome.com.tw/upload/images/20210914/20092753SA5rKsrS6y.png

Package Diagram (pkg) 封装图

封装图描述了更大范畴、领域之间的依赖、使用关系。

https://ithelp.ithome.com.tw/upload/images/20210914/20092753uXLSz7W5mc.png

Sequence Diagram (sd) 时序图

时序图会在未来的某一篇文章介绍到,基本上就是常常看 API Spec 的时候,会见到的图形,这个图表定义了两个不同的功能之间的互叫、传递关系:

https://ithelp.ithome.com.tw/upload/images/20210914/20092753nXvMk23Sj1.png

State Machine Diagram (stm) 状态机图

恰好,状态机也会在未来的文章中介绍看看,状态机可以描述这个功能里面,操作的模式,比方说这个就是自动巡航这个功能中所有会影响的状态。

https://ithelp.ithome.com.tw/upload/images/20210914/20092753VoFDKbC3jc.png

Use Case Diagram (uc) 用例图

用例图就是用来表达使用者与系统功能之间的关系图。

https://ithelp.ithome.com.tw/upload/images/20210914/20092753q3lz38BatO.png

SysML 对 9 种描述工具类型的总结:

  1. Activity Diagram: 活动图 (每个区块的流程图)
  2. Sequence Diagram: 序列图 (定义区块之间时序呼叫、传递)
  3. State Machine Diagram: 状态机图 (描述一个循环系统的状态,想想游戏角色跑跳攻击、受伤害,最後回到 idle 状态)
  4. Use Case Diagram: 描述使用情境的图
  5. Block Definition Diagram: 区块定义图 (最基本的定义,可大可小)
  6. Internal Block Diagram: 内部区块定义图 (定义内部区块的使用关系)
  7. Parametric Diagram: 参数传递图表 (适用建立演算法、方程序依赖关系定义)
  8. Package Diagram: 封装图表 (范畴更粗大的使用关系定义)
  9. Requirement Diagram: 需求图表 (定义需求、连线需求之间的关系)

简单的说,SysML 撷取 UML 的元素,并且让各个工程领域、专业领域都可以适用系统建模,不只是後端自己做的系统而已。 SysML 有一本书,叫: SysML精粹,找几篇文献都看到有来自本书的参考。

这个章节因为 Case 太多没太多时间可以画图,所以借助官方范例,范例都好工程 XD,也许是要告诉读者 SysML 拆出 UML 就是为了可以通用其他领域吧。

有兴趣了解 MBSE 跟 SysML 可以把 [5], [10] 对照看一下,会有更多收获,甚至还看到有泳道图并用图表等作法,不过个人没有很推荐要直接上手这个工具来打天下,因为他的系统机制有够复杂,即便官方才跟你说只有 4 种类型跟 9 种图工具,但你要学习的其实是 MBSE 整套流程,SysML 才会发挥更好的作用。

References:
[1]: https://modelbaba.com/mbse/101.html
[2]: https://www.zhihu.com/question/31958675
[3]: https://modelbaba.com/mbse/87.html
[4]: https://omgsysml.org/what-is-sysml.htm
[5]: 官方 Tutorial https://omgsysml.org/INCOSE-OMGSysML-Tutorial-Final-090901.pdf
[6]: SysML v2 Release GitHub: https://github.com/Systems-Modeling/SysML-v2-Release
[7]: Systems Modeling Language (SysML®) v2 API and Services Request For Proposal (RFP): https://www.omg.org/cgi-bin/doc.cgi?ad/2018-6-3
[8]: http://www.uml.org.cn/modeler/201909254.asp
[9]: http://www.uml.org.cn/sysML/201809213.asp#:~:text=SysML%E4%B8%AD%E7%9A%84%E6%A8%A1%E5%9D%97%E5%AE%9A%E4%B9%89%E5%9B%BE%EF%BC%8C%E8%8B%B1%E6%96%87%E4%B8%BA%E2%80%9CBlock%20Definition,%E7%B1%BB%E6%AF%94%E7%9A%84%E6%96%B9%E5%BC%8F%E8%BF%9B%E8%A1%8C%E5%AD%A6%E4%B9%A0%E3%80%82
[10]: https://monoist.atmarkit.co.jp/mn/articles/0909/28/news081.html
[11]: https://www.mamezou.com/techinfo/modeling_ddd/sysml_potential00
[12]: https://www.visual-paradigm.com/features/sysml-diagram-tool/
[13]: http://www.mapse.eng.osaka-u.ac.jp/psesd/project/SysML/SysML.htm
[14]: https://blog.csdn.net/weixin_38088772/article/details/87978690
[15]: https://www.visual-paradigm.com/features/sysml-diagram-tool/


<<:  33岁转职者的前端笔记-DAY 14 排版技巧小笔记-标签属性元素及定位方法

>>:  Day14. Blue Prism拯救贫穷大作战第二弹-BP新增一个读取Excel的『Objects』

python3-日历

在python3中,想要制作日历有两种方式,先介绍第一种: -直接使用python中calendar...

Day24_Annex A & Statement Ofapplicability (SOA) 附录A与适用性声明书文件-2021/10/07

▉适用性声明书范例(适用或不适用都要提出说明) └这个是老师给的范例…我记得不适用也是要写啦。 ▉估...

Ruby幼幼班--Single Number

Single Number 黑魔法集合.... 题目连结:https://leetcode.com...

Day9:今天来聊一下Parrot Security的Nmap

Nmap是一款用於网路发现和安全稽核网路安全工具,Nmap是Network Mapper的简称 Nm...

[Day23]What's Cryptanalysis?

上一篇介绍了The 3n + 1 problem,这题给我们两个数字,并对范围内的每个数字N执行以下...