系统架构4:更易计算的系统描述(SysML)
系统架构4:更易计算的系统描述(SysML)
在系统架构3 :如何用简洁图形描述系统架构?中,我们分享了一种图形化描述系统的方法——OPM,本文分享和它并行的另一种方法——SysML(System Modeling Language ),主要包括如下三方面:
SysML的历史?
SysML的主要表达图形有哪些?
SysML和OPM有什么不同?
1 SysML是什么,从哪来?
SysML(System Modeling Language)从名字上看,就让人感觉是正统,因为它翻译过来就叫“系统建模语言”。但是它的历史并不长,从下图可以看到它诞生于2003年,是由对象管理组(Object Management Group,OMG)和系统工程国际委员会(International Council on Systems Engineering,INCOSE)联合开发的。从图中也会发现,它是从UML(Unified Modeling Language)中演化而来的,而UML主要是用于软件系统工程,后来发现可以拓展到其它系统工程中,于是就从UML中选择了部分视图,再加入一些更加通用的视图,就形成了现在看到的SysML。
2 有哪些视图?
前面提到了“视图”,和OMP类似,SysML也是通过图形的方式来描述系统。目前的SysML包含有9类视图,它们可以分为3类:要求(Requirements),结构(Structure)和行为(Behavior),从名称上可以看出,它们分别用来描述系统要满足的要求,结构和行为方式,我们分别进行简介。
2.1 要求
顾名思义,要求图就是用来定义系统应该满足的要求。这种要求通常可以分为两类:功能类和非功能类,比如汽车最基本的功能是要能跑,而其跑起来噪声大小则是非功能类。每个系统的功能可能各不相同,但是其非功能类的要求通常有如下的几种:性能表现,设计边界(如重量,尺寸等),界面要求以及可用性,比如在我们汽车开发中的人机交互(HMI)和用户体验就是一种非功能性的要求。
而每种要求还可以通过图形的方式进行细化,甚至定义非常具体量化的指标。通过要求图的方式定义完系统的要求后,就可以在后续的系统构建和测试中,跟踪要求的满足程度,进行优化调整。
2.2 结构
通俗理解,结构就是静态描述系统构成部分及其之间的相互关系,在SysML主要包含3类:块定义图(Block definition diagram),内部块图(Internal Block diagram)和包(Package Diagram)。
2.2.1 块定义图(Block definition diagram)
块是个抽象概念,用来描述系统中的部件,模组等,它们可以是软件的,也是可以是硬件的。用矩形表示,而这个块本身可以承载它所表示对象的特性,约束,状态等信息。
2.2.2 内部块图(Internal Block diagram)
内部快图其实就是把“块”打开,如果“块”是个黑盒子,那么内部块图就是“白盒子”。
2.2.3 参数图(Parameter Diagram)
参数图的目的是对内部快图的一种参数量化,强化了数学法则对内部块的定义。
2.2.4 包图(Package Diagram)
如果说“内部块”是对"块"的打开,那么包图就是对"块"的进一步封装,因为一个系统中块太多,为了人们的理解,就需要进行进一步的归类。
2.3 行为
我理解“行为”类的图,主要用来表述系统中描述方式,主要包括如下的四类。
2.3.1 活动图(Activity diagram)
活动(activity)用来描述系统的输入,输出和控制的流动,也包括这些协调这些流动的条件,其实很类似于我们常见的流程图。
2.3.2 序列图(Sequence diagram)
在序列图中一个重要的概念是Message,我在工作中听到对它的一个专业翻译“报文”。而序列图其实就是就是基于接收和分发报文来执行动作,比如我在做汽车声音时,为了让某个声音在特定的出发条件下发出,就需要找到对应的报文,然后按照设定的逻辑发出。
2.3.3 状态机(State Machines Diagram)
状态(State)常常表示的是一个对象在生命周期中表现的特定特征,比如汽车中的制动系统,有制动和非制动两种状态。而状态机,描述的就是在一定的触发条件下,对象表现的活动,这种触发可以是时间,事件,某个信号等。比如你按下台灯开关(触发),它就点亮(状态1),再按一次(触发),它就熄灭(状态2)。
2.3.4使用案例(Use case)
描述系统的操作者会怎么使用,比如我们常常说的使用场景,也可以描述多个操作者对同一个系统不同部分的操作。
3 SysML和OPM有什么异同?
在系统架构3 :如何用简洁图形描述系统架构?中的OPM和SysML,它们都是动过视图化的方式来描述系统,让我们更好理解和掌控复杂系统。它们有什么异同?我看到主要有三点:
3.1 视图数量不同
OPM只需要1种类型的图,就能将对象和过程涵盖进来,而SysML需要多个视图(共9个选择)来分别针对不同的用途。
3.2 适用阶段不同
OPM更简洁,但是主要适用于概念构想阶段,而SysML则更加适合详细的设计阶段,而且不同的用途可以采用不同的视图。
3.3 可计算性不同
对系统的描述和达成共识只是开始,而我们更加关心系统的动态性能如何?这就需要引入仿真或计算,并预测复杂系统的特性及其参数变化对功能的影响,而在这个方面SysML的有时要明显优于OPM,并不是因为SysML本身可以计算,而是它对系统的描述更加细致,有利于用外在的辅助仿真工具实现,总体看来,SysML是为各种仿真搭建了一个比较的框架。
总结
SysML(System Modeling Language)用3类(需求、结构、行为)9种类型的图来刻画系统架构,更适合于系统的详细设计阶段,为系统的仿真提供了一个更高的框架。
参考:
1 OMG Systems Modeling Language(OMG SysML™)Tutorial September, 2009;
2 https://sysmlforum.com
3 Graph-Based Digital Blueprint for Model Based Engineering of Complex Systems