Lucky 2022-11-24 14:33
最近收到的公众号消息有不少是sysml内容,请问老师sysml和uml是什么关系,以后的趋势是sysml取代uml吗?
UMLChina潘加宇
SysML和UML不冲突,也不存在取代的关系。
UML是信息系统的建模语言。“信息系统”的意思是该系统只负责处理信息:信息流进来,经过系统的处理,变成信息流出去。信息系统不能处理物质流、能量流。
SysML是UML扩展,相当于把“UML”应用于各种类型的系统,这些系统可以处理各种各样的物质流、能量流。
用刘慈欣的《流浪地球》举个例子。
太阳即将在400年内发生氦闪变成红巨星,人类社会怎么办?
众多科学家经过大量研究,得到一个解决方案:给地球装上发动机,驱动地球飞向比邻星(正好三体舰队也迎面飞来,嘭!)。
******
《流浪地球》原文:
地球发动机安装在亚洲和美洲大陆上,因为只有这两个大陆完整坚实的版块结构才能承受发动机对地球巨大的推力。地球发动机共有一万二千台,分布在亚洲和美洲大陆的各个平原上。
……
在六千米处,我们见到了进料口,一车车的大石块倒进那闪着幽幽红光的大洞中,一点声音都没传出来。
……
“重元素聚变是一门很深的学问,现在给你们还讲不明白。你们只需要知道,地球发动机是人类建造的力量最大的机器,比如我们所在在华北794号,全功率运行时能向大地产生一百五十亿吨的推力。”
******
“地球发动机”是一个巨大的系统,横跨多个学科,能源、材料、建筑、物流、人员管理……。
其中用来处理信息的信息系统可能只占其中的一小部分,UML不适合描述“地球发动机”,SysML可以。
通过SysML不断把“地球发动机”分解成各个Block,Block又分为小Block,可能会得到其中一个Block叫“发动机中控系统”,这是一个信息系统。该系统其中一个功能可能是:根据接收到的测量参数值(可能有上万个),计算地球发动机下一步的最佳行动。
这个信息系统就适合用UML来建模。
那听起来SysML描述的系统比UML描述的信息系统大,是不是意味着SysML更复杂?
其实恰好相反。在对UML和SysML都有所掌握之后,您会发现使用SysML比使用UML更容易。
使用SysML建模时,更多的是“描述”,而在使用UML建模时,除了“描述”之外,更重要的是“构思”。
像上面说的“根据接收到的测量参数值(可能有上万个),计算地球发动机下一步的最佳行动”,这个事情人也可以做到,因为计算的方法就是人指定的嘛,只不过人算得慢而且容易出错,所以用信息系统来做。
也就是说,我们需要把人脑总结出来的各种知识转移到信息系统中,并用它来取代人脑来做计算——而信息系统的一切,规则如何表达,数据如何组织,耦合,内聚……,都需要我们从零开始,一一去构思。
非信息系统,并没有“取代人脑”的压力。
当然,不是说非信息系统就没有难度。
像《流浪地球》原文提到的“重元素聚变”,我用SysML画了一张简图。显然,里面的内容是物质和能量的处理,没有信息的处理。
打问号的地方:催化剂是哪些,聚变各个步骤该怎么进行,这些难题都需要各个学科的科学家去攻克。SysML、UML是搞不定这个的。
题外话:
刘慈欣说:我所有的作品都是对于阿瑟·克拉克的拙劣模仿。
《流浪地球》所受的启发应该来自阿瑟·克拉克的《遥远的地球之歌(The Songs of Distant Earth)》和《星(The Star)》。这两部作品都是说“恒星将要爆炸,行星上的文明怎么办”的问题,当然,解决方案不是“流浪地球”,感兴趣的同学自行去找来看。
说到这里不禁感慨:刘慈欣实在太不会来事了!
为什么不说自己的作品是“全新的创造”、“太多全新的概念”呢,学习一下DDD圈子里的大肆造词和“创新”多好啊!