摘要
SysML v2是由对象管理组织(OMG)专为系统建模设计而推出的一种新型通用建模语言。相较于SysML v1版本,新版本在语言的精确性、表达力和互操作性等方面有了长足的提升与改善。
本文主要以“柴油发动机”为例,介绍如何在华望系统科技自研的M-Design v2软件上,基于SysML v2语言实现功能分解和行为建模。
一、基于Action Usage的功能分解
1.1 建模方法
SysML v2的动作流程视图(Action Flow View)是一种专门用于承载行为图形的视图载体,以展示系统内不同动作之间的联系。该视图可用于表达动作之间的分解关系、端口方向、流连接使用、连接器绑定、节点控制等。在进行业务过程的行为分析时,尽管动作流程视图与SysML v1中的活动图有许多相似之处,但它们之间也存在许多显著的差异
在SysML v2版本中,通常使用Action Definition或Action Usage表示行为。前者是一种特殊的定义元素,用于对某一类型的定义进行模版化;后者是一种使用实例,用于对一个或多个Action Definition的对象进行实例化。此设计采用了SysML v2统一的Definition/Usage表述形式,在维持动作与语言结构一致性的基础上,可实现不同上下文中的概念和实例的重用。
Action Usage能够通过Action Definition进行定义并继承其中的特征。同时,Action Usage还可以通过添加自身的特征来扩展或重新定义Action Definition的特征,这为根据上下文调整Action Usage的层次结构提供了更大的灵活性。
Action Usage能够被其他动作所引用,而这个引用动作的行为被定义为Perform Action Usage,该机制允许在不同上下文中调用和执行其他已经声明的Action Usage,而不必在每个需要使用该Action Usage的地方进行重复的定义。设计人员可以为每个结构对象分配一个Perform Action Usage以作为该对象的主执行行为,这种表达方式有助于加强结构对象和行为对象之间的联系。
Action Usage能够被进一步细分为更底层的Action Usage,从而构建一个动作树的组织结构。设计人员在进行功能分解时,首先需要选择一个待分解的功能对象,使用Action Usage进行表示,然后使用Composite Feature Membership将选定的功能对象分解为更多的更具体、更简单的子功能对象。以上过程可以递归进行,直到子功能对象的粒度合理或无法继续细分为止。设计人员还可以使用Item Usage明确每个功能对象的输入输出类型。在完成初步的功能分解后,设计人员可对功能分配的完整性进行验证与优化。
1.2 案例介绍
在本案例中,以柴油发动机的“提供动能”的功能分解为例进行应用说明。首先进行功能架构的建模,对“提供动能”所包含的动作进行分解从而构建动作树。“提供动能”可以分解为“进气”、“空气压缩”、“发动机做功”、“排出废气”各种功能,其架构如图1所示。
图1 柴油发动机提供动能功能架构图
“进气”和“排出废气”涉及进排气子系统,因而需要继承“气体控制”这个Action Definition;“气体控制”定义了“抽气”、“泵气”两个动作以及其中的“气体”等;“气体”通过Succession Flow Connection Usage进行传递。
“进气”以“气体控制”作为定义,将“气体”重新定义为“空气”,为“进气”和“抽气”增加“启动指令”这一输入参数。“启动指令”被定义为一个Item Usage,用以表示发动机启动子系统发出的一种信号。两个输入参数用Succession Flow Connection Usage连接,强调接收“启动指令”后开始动作。
“排出废气”继承“气体控制”,但将“气体”重新定义为“废气”并增加“过滤废气”,同时增加“过滤”动作。
“气体控制”的整体架构如图2所示。
图2 气体控制架构图
1.3 优势分析
(1)行为模型复用率更高
Action Definition/Usage的运用模式能够将具有共性的行为抽象为公共的行为模板,在具体设计时以该公共行为模板为定义,在此基础上进行部分特征的增加和修改,大大地提高模型的复用率。此外,当需要修改这些行为的公共特征时,只需更改作为模板的Action Definition,所有使用该定义的部分将会自动更新该项修改,在确保行为一致性的同时,也在一定程度上减少建模的工作量。
(2)结构与行为的映射关系更清晰
通过给系统定义一个Perform Action Usage对象的方式,显式地指定系统的主执行行为,该行为会在系统的生命周期内完成执行。为Perform Action Usage指定外部行为的引用,这些引用对象也会在系统的生命周期内被执行。
(3)协同设计更便利
在行为的详细设计阶段,各子行为的详细设计可交由不同的部门协作进行,通过Perform Action Usage对象的引用功能将协作结果进行集成,从而有利于任务的分配和协同完成。
二、基于Flow Connection Usage的行为建模
2.1 建模方法
当使用动作流程视图(Action Flow View)进行动作之间的时序关系设计时,可采用Flow Connection Usage表达,它用于连接不同动作对象的输入和输出参数,可在其所属的Item Feature属性上指定该连接所承载的物质对象的类型。
Flow Connection 分为以下两种情形:
(1)默认的流(Flow)
用Flow Connection Usage表示,是指在源动作和目标动作执行期间持续进行的传输过程。
(2)顺序流(Succession Flow)
用Succession Flow Connection Usage表示,是指在源动作完成后与目标动作启动前的传输过程。
除了物质传递之外,有时也可能在动作执行时要求部分参数具有相同的值,此时可选择Binding Connector对这些参数进行绑定。在活动执行过程中,当集合中的参数发生变化时,其值会自动传递到相邻的绑定参数中并始终使这些参数的值保持一致。
当需要对上下文结构对象中的属性特性进行更新时,SysML v1需要读取结构特征或不透明动作的表达式,而 SysML v2设立的Assignment Action Usage可实现该活动。它是一种专门用于将目标动作的一个引用特征(例如属性或参数)设置为一个新值的模型元素,在使用时可通过target属性以指定需更新的特征。相比于SysML v1,这种改进极大地降低了属性特征更新的难度。
2.2 案例介绍
在本案例中,以柴油发动机的“提供动能”的行为分解为例进行应用说明。在动作流程视图上创建一个起点以表示动作序列的开始,使用Perform Action Usage引用“提供动能”及其子动作,“发送启动指令”通过Succession Flow Connection Usage传输“启动指令”作为“提供动能”的输入参数,“提供动能”与“进气”的输入参数用Binding Connection连接,表示两个参数直接绑定。“提供动能”内各子级Action Usage则用Succession连接并指定Action Usage的发生顺序。行为分解的模型如图3所示。
图3 柴油发动机提供动能功能描述图
在柴油发动机“提供动能”时,还需对发动机的状态(如温度)进行监测,读取温度传感器的温度数据并对控制器的当前温度属性进行赋值。首先创建Action Usage“更新温度状态”,再在其中创建Assignment Action Usage,并将其target设置为“控制器”的“温度”属性,最后将“温度传感器”的“当前温度”赋值与“温度”属性。“更新温度状态”的定义如图4、5所示。
图4 更新温度状态定义图
图5 更新温度状态设置target描述图
2.3 优势分析
(1)表达能力更强
SysML v2为动作间的数据传递提供了更精确更细致的划分,动作参数之间可用流式连接、时序连接、绑定连接等关系进行表达,使模型有了更清晰的表达能力,避免了SysML v1中需由多种连接关系的组合来达成设计意图的麻烦。
(2)减少设计歧义
SysML v2中的Assignment Action Usage无需通过不透明动作或者读取结构动作来实现对上下文中值对象的值进行修改,大幅减少了设计的歧义性,使建模意图更加清晰明确。
-END-
*本文为原创,最终解释权归杭州华望系统科技所有。未经授权,严禁复制或转载。
*关注【杭州华望MBSE】将推送更多精彩有趣的文章,期待与你同行!