MBSE开源软件推荐:Capella对SysML做了哪些封装?
—前言—
我们知道,SysML是一种高度通用的系统建模语言,其9种视图虽然具备高度的灵活性,但是往往也意味着无法在工程实践中直接应用,必须进行一系列封装。源自Thales多年工程经验的MBSE建模工具Capella,就在SysML基础上进行了一系列工程化封装,是当前市面上最实用的MBSE技术路线之一。Capella对SysML的封装可以概括为四个方面,下面将逐一说明。
一、功能分析方面的封装
原生的SysML对功能分析的支持并不直观,甚至没有“功能”和“功能层级”的概念。而我们知道,功能分析是系统工程的核心内容,是复杂系统分析设计的主线之一。因此,Capella着重在功能分析方面对SysML进行了封装扩展。
使用SysML进行功能分析,最常见的方式就是基于“活动图”及其中的“动作”开展。这种方式主要的局限包括以下几点:
无法在同一个视图中展现多层嵌套的功能;
不同层级的功能之间必须通过端口的层层代理才能建立接口关系;
缺少完整的功能树视图。
为解决这些问题,Capella在SysML的基础上封装了“功能”模型元素,以及“功能数据流”视图和“功能分解”视图。这些模型元素和视图可以更好地支撑功能分析工作。这种封装的优点包括:
1)可以更简洁地表达多层功能的嵌套关系
在Capella中,多层功能的嵌套关系可以用一张功能数据流视图简洁地展示出来,如下图所示:
图 1 Capella功能数据流视图
相较而言,原生的SysML必须用四张活动图才能完整表达同样的信息,如下图所示:
图 2 原生SysML的活动图
2)功能接口的建模工作量大幅降低
在Capella的功能数据流图中,一般将功能接口定义在最底层的功能上(因为父功能通常都属于抽象概括)。当设计师在视图中隐藏低层级功能时,相应的功能接口会自动显示在父功能上,如下图所示:
图 3 Capella功能接口的自动代理显示
相较而言,原生的SysML需要构建大量的“Activity Parameter”才能表达同样的功能接口,建模工作量要大得多,如下图所示:
图 4 原生SysML的代理端口机制
3)迭代修改更便捷
在Capella中,由于功能端口只需定义在底层功能上,因此在进行功能架构的修改时十分便捷,只需要进行功能或端口的简单拖拽即可。
相较而言,在原生的SysML中,由于功能接口的定义机制复杂,因此迭代修改的工作量十分巨大,如下图所示:
图 5 原生SysML迭代修改工作量巨大
4)支持自底向上的建模方式
当我们在系统开发之初就已拥有充分完备的系统需求规格,或者是在开发一款成熟类型的产品时(这种场景很常见),往往会进行自下而上的功能分析建模。在进行自下而上的建模时,往往会先定义完备详细的底层功能,然后再将这些它们分组抽象成上层功能。
这样的建模场景在Capella中可以很自然地开展,因为功能接口本身就是定义在底层功能上的。
相较而言,在原生的SysML中,因为复杂的代理接口机制,在自底向上的建模过程中,每进行一层功能抽象就意味着所有活动图的一次重构,如下图所示:
图 6 原生SysML自底向上建模的工作量巨大
5)可以完整地表达功能树
功能树是系统工程中常用的表达功能架构的视图之一。在Capella中,专门封装了“功能分解”视图以支撑功能树的表达,如下图所示:
图 7 Capella中的功能树
相较而言,在原生的SysML中,虽然“活动图”本身可以以节点的形式出现在BDD图中,但是因为底层的“动作”无法在BDD图中显示,因此无法呈现完整的功能树。
二、“实例”和“类型”方面的封装
原生的SysML继承自UML,因此在“实例”和“类型”的处理方面沿用了软件工程师的使用习惯,即在定义设计对象时必须先定义“类型”,然后“实例化”,如下图所示:
图 8 原生SysML中的“类型”和“实例”
实际上对于大部分系统工程师而言,更习惯从“实例”的角度思考问题,所有东西默认都是“实例”,只有在需要重用的时候才引入“类型”的概念。为此,在Capella中,“类型”和“实例”的概念被隐藏起来,所有对象都被认为是“实例”,提供简单的“实例建模”机制,如下图所示:
图 9 Capella中的“实例建模”机制
对于可重用的通用组件,Capella专门定义了“REC (Record)”和“RPL (Rplay)”的概念,进行显式的“类型”定义与“实例化”机制,如下图所示:
图 10 Capella中显式的“类型”和“实例”机制
三、系统结构与行为统一表达方面的封装
如何统一系统结构与行为方面的设计,是系统工程领域的主要挑战之一。系统工程师必须有效地理解系统结构组成与系统功能行为之间的相互影响,以便设计出成功的系统。
在原生的SysML中,系统结构主要通过BDD图和IBD图表达,其中系统的内外部接口主要通过IBD图构建。与此同时,原生SysML主要通过活动图表达系统行为,但活动图与IBD图无法统一显示,即使是白盒活动图也无法表达不同系统组件之间的接口设计。这种结构设计与行为设计之间的相对割裂,如下图所示:
图 11 原生SysML中的结构表达与行为表达
而在Capella中,专门封装的“架构图”视图,使得系统的功能、组成、接口协议、物理连接方式等信息可以在一张视图中直观、统一地表达,如下图所示:
图 12 Capella中结构与行为的统一表达
四、模型元素与视图的封装
在原生SysML中,各类模型元素和视图均相对通用,并没有特指某个特定的工程层级。这种处理方式虽然具备高度的灵活性,但同时也使得SysML在实际工程中不够落地。例如,如果系统工程师同时用“Block”来定义“分系统”和“物理组件”,就会使得整个系统模型表意含糊、令人困惑。因此,对SysML模型元素与视图的工程化封装势在必行。
Capella对SysML中的大量模型元素进行了封装。例如,Capella将SysML中的“Usecase”封装为了“Operational Capability”和“Capability”,分别用于表达体系级的能力和系统级的能力,这样在实际使用中就不至于发生混淆。同样的,Capella也对SysML的视图进行了封装。例如,Capella将SysML中的“用例图”封装为了“运行能力图”和“系统能力图”,分别用于对体系级能力和系统级能力进行建模。Capella对SysML各类视图的封装如下图所示:
图 13 Capella对SysML视图的封装
综上所述,Capella对SysML的封装完全来自于工业界对SysML的工程实践,是经过国内外成千上万型号项目实际检验的技术路线。在看过上述技术细节的分析之后,相信大家都能感觉到,Capella正是国内工业界开展SysML工程化应用的很好的切入点。
更加惊喜的是,Capella还是一种完全开源的建模工具,可以直接从官网免费下载使用。那还等什么呢?赶紧动手试试吧!
文章来源:适途科技