SysML,全称Systems Modeling Language,即系统建模语言,它是一种表述(Specifying)、分析、设计以及验证复杂系统的通用图形化建模语言,复杂系统可能包括软件、硬件、信息、人员、过程和设备等其他系统元素。
想要了解SysML的本质,我们首先关注其核心定位,即:SysML是一种图形化的系统建模语言。由此我们可以抽离出4个维度:
SysML与UML的关系
UML,即“Unified Modeling Language”,又称为统一建模语言,是一种图形化的建模语言,主要用于对软件系统进行建模。同时,用户可以利用UML提供的扩展机制对UML进行扩展,以满足特定领域的建模需求。
系统工程比软件领域覆盖范围更广,除了可能包含的软件组件,可能还包括硬件、人员、设施、过程等更多的系统元素。系统工程师基于UML进行建模工作,并不能很好的描述系统。也就是说在系统工程领域,UML存在“盲点”,基于当前已有的UML元素不足以对复杂系统进行充分的、有效的表达。因此,系统工程领域在寻求一种更为广泛的建模语言。
“UML for Systems Engineering RFP”有OMG和INCOSE联合开发,并由OMG于2003年3月发布。该RFP文档中描述了扩展UML以支持系统工程的需求。SysML规范正是为了满足这些需求,由不同的工具供应商、终端用户、学术界及政府代表联合开发制定,2006年7月6日被OMG采纳,并于2007年发布了OMG SysML V1.0版。
如下图所示,SysML和UML间存在交集,即SysML语言中的部分图是和UML中的相应图是一致的,例如用例图。同时,SysML也有基于UML扩展而来的图,例如活动图。另外,还有一部分图是SysML所特有的,这些图与UML间没有关系,例如需求图。
SysML建模语言中的图模型如下图所示,可以概括为“3类9种”。SysML可以分为行为图、需求图和结构图。三类图又具体化为共计9种模型图。同时,SysML模型图与UML图存在交互。蓝色部分是SysML和UML共有的图,包括序列图、用例图、状态机图、包图,黄色部分是SysML基于UML扩展而来,包括活动图、模块定义图、内部模块图。还有一部分是SysML语言所特有的图,包括需求图和参数图。
用例图
一种黑盒视图,是系统功能的高层描述,用于表达系统执行的用例以及引起系统执行行为的参与者。
模块定义图
一种结构图,与内部模块图及参数图互补,用于描述系统的层次以及系统/组件的分类。
内部模块图
一种结构图,与模块定义图及参数图互补,通过组件(Parts)、端口、连接器来用于描述系统模块的内部结构。
包图
一种结构图,以包的形式组织模型间的层级关系。
参数图
SysML特有的图,与模块定义图及参数图互补,用于说明系统的约束。
活动图
一种行为图,主要关注控制流程,以及输入转化为输出的过程。
序列图
一种行为图,主要关注并精确描述系统内部不同模块间的交互,
状态机图
一种行为图,主要关注系统内部模块的一系列状态以及在事件触发下的不同状态间的转换。
需求图
用于表述文字化的需求、需求间的关系,以及与之存在满足、验证等关系的其他模型元素。
SysML还包含了分配关系的表述,包括功能到组件的分配、软件到硬件的分配以及逻辑到物理的分配
SysML的通用图形化表述
SysML的通用图形表述如下图所示,每个SysML图都有图外框、头部以及内容区域三部分组成。图外框是指图的外部黑色实线,在SysML中外框不能省略。内容区域是存放SysML模型元素的地方。头部位于图的左上角,对模型图的类型、名称、模型元素类型及名称进行概要性描述。
图的头部是最为重要的图概念,一般包括四个信息:图类型、模型元素类型、模型元素名称、图名称。
图的类型
图类型的命名只能在SysML定义的图类型缩写集合中选择,用户不能随意命名。SysML中定义的图类型的缩写集合简称如下所示:
模型元素类型
SysML定义了模型元素类型集合,这些类型的模型元素在图中是不能任意出现的,每种SysML图中所能表达的模型元素是有规则限制的,参考如下的模型图和模型元素匹配表。关于元素类型所表达的含义在后续系列文章中详细说明。
模型元素名称
用户自定义模型元素的名称
图名称
用户自定义图的名称
SysML建模工具
我们说,SysML是一种图形化的建模语言,OMG组织发布了针对SysML的建模语言描述规范,其详细定义的SysML的语义。面面俱到的规范并不适合SysML初学者,这些主要面向建模规范制定者以及相关的建模工具厂商,用于进行建模规范制定以及建模工具的开发实现。支持SysML这一图形化的建模语言的商业或免费的工具如下表,仅供参考。当然,用户也可以基于SysML规范实现一款全新的建模工具。
支持SysML的建模工具有很多,笔者了解比较多的是Rhapsody,这是一款来自IBM Rational 的商业化工具。基于Rhapsody我们可以实现可视化建模、模型验证、测试用例自动生成、代码自动生成等高级工作。关于Rhapsody的详细介绍会在后续文章中详细描述。
总结
SysML是一种图形化建模语言,用于对复杂系统进行建模;
SysML基于UML 2,并对其进行了扩展;
SysML不是建模的方法论,也不是建模工具;