MBSE建模学习之四:活动(Activity)及活动图

活动图是UML和SysML中描述系统动态行为的重要工具,本文深入解析了活动图的组成部分,包括动作(如不透明动作、调用行为动作等)、控制流和对象流,以及它们在描述系统功能和流程中的作用。通过实例分析,解释了如何利用活动图来建模复杂系统的行为,如人造卫星的霍曼转移过程。此外,还介绍了活动分区的概念,强调了它们在功能分配和模块化中的应用。

目录

活动(Activity)

活动图示例

动作(Action)

(1)不透明动作(OpaqueAction)

(2)调用行为动作(CallBehaviorAction)、调用操作动作(CallOperationAction)

(3)发送信号动作(SendSignalAction)

(4)接收事件动作(AcceptEventAction)

(5)等待时间动作(Action)

(6)控制操作(ControlOperator)

控制流(ControlFlow)和对象流(ObjectFlow)

对象节点(ObjectNode)

控制节点(ControlNode)

结构化活动节点(StructuredActivityNode)

活动分区(ActivityPartition)


活动(Activity)

活动(Activity)是一种行为(Behavior)元素,它是行为元素的子类。首先活动是一个“类”(class)。SysML中,它也是一个模块(block),所以它有“类”的特征,可以有属性、方法,还可以有下层的“行为”元素,形成一个多层嵌套的行为模型。其次,活动是一个“行为”元素,有输入参数和输出参数。活动元素的特殊之处在于它可以包含各种可以说明一个行为过程的元素,包括“动作”(Action)、控制流(ControlFlow)和对象流(ObjectFlow),以及其它说明控制逻辑的节点。

活动可以用来说明系统的功能,活动以及它包含的子活动元素、活动中的动作元素,可以形成一个系统的功能结构树。在进行系统的功能分析的时候,它是重要的说明元素。

作为一个行为元素,活动可以作为一个模块(Block)的拥有行为,用于说明一个模块的功能。此外,活动也可以作为其它行为元素的更具体的说明。如,对一个用例(UseCase)进行更详细的说明,可以把活动元素作为用例的拥有行为(用例也是一种行为类BehavioredClassifier,可以拥有行为)进行说明;活动也可以作为状态机中的状态(State)的内部行为,或系统处于某个状态时进行的工作;活动也可以作为状态转移(Transition)的影响(effect),说明状态转移时发生的行为。

在“智睿思维基于模型的软件”(MBSES)中,你可以为一个模块增加拥有行为的时候,增加一个活动元素。也可以直接在一个包中增加一个活动元素。

UML\SysML是面向对象的语言,活动是一个说明具体行为过程的元素。可以说活动和它的活动图是用UML\SysML语言写的一段系统运行过程的“程序”。这段“程序”要有运行的语境(Context),也就是活动的过程可以读写的变量的范围。这个语境就是活动所属的模块。如果活动没有所属模块,那它自己就是自己的语境。在活动的过程中,可以读写它的语境中的属性(Property)、可以调用所属语境的其它行为(通过一个调用行为动作)。当然也可以调用(通过一个“调用操作动作”)另外一个模块的操作(Operation)、接收(Reception),但必须通过当前模块的一个部件(part)属性或引用(reference)属性。这是面向对象语言的“封装”性原则所规定的,这个原则使我们定义的系统模型中功能调用关系是清晰的、范围可控的。

活动图示例

下面以一个具体的人造卫星做霍曼转移、变轨过程的活动图来说明活动图中元素及其作用和意义。

人造卫星从一个较低运行轨道转移到一个较高的运行轨道,需要两次发动机点火、加速的过程。如右图所示,人造卫星从低轨道“1”送往较高轨道“3”,先在低轨道“1”上瞬间加速,进入一个椭圆形的转移轨道“2”。卫星由此椭圆轨道的近地点开始,抵达远地点后再瞬间加速,进入另一个圆轨道(3),此即为目标轨道。

首先定义这个过程的活动元素为“执行霍曼转移”,有一个类型为“转移命令”的输入参数(命令中包含执行时间点、目标转移轨道高度),以及一个类型为“命令响应”的返回参数(返回命令是否合法的响应,这是一个“流”类型的返回参数)。定义的语法如下:

“执行霍曼转移(当前命令: 转移命令) :命令响应{流}”

对应的活动图如下(来源于《SysML精粹》图6.1,进行中文翻译。此图使用“智睿思维基于模型的系统工程软件--MBSES”制作

活动图中有以下几类节点,说明如下。

动作(Action)

动作是活动中的基本功能执行单元,动作是最底层的功能单元,不能(或当前建模要求下不需要)再分解。每个动作也可以有输入(输入栓)和输出(输出栓),作为这个动作处理的数据和结果。

在活动图中,通过控制流(ControlFlow)或对象流(ObjectFow)将动作串联起来,表示动作执行的过程顺序。

在控制流或对象流中传递的数据称为“令牌”(Token)。这些令牌可以是一次一个数据的方式传递,也可能是按“流”的方式连续的传递(针对对象流)。

一个动作能够执行的条件是:

(1)动作所在的活动在执行;

(2)动作中所有连进来的控制流上都有控制令牌到达。

(3)所有输入对象流上都有足够数量的对象令牌到达,以满足相应输入栓的最低多重性要求(值栓除外,值栓不需要对象流)。

如果一个动作没有任何输入的控制流及对象流,则当所在活动开始执行的时候,这个动作就开始执行。

活动图中的具体动作节点类型有40多种,每一类动作节点有具体的用途。常用的动作类型如下:

(1)不透明动作(OpaqueAction)

不透明动作是用某种语言(包括自然语言,或某种编程语言)描述的一个功能。不透明动作一般用一个动词短语描述一个功能。如图中的“生成’合法命令’状态响应”节点用自然语言说明一个系统将执行的一个功能;“:{C}当前轨道半径=当前高度+地球.半径”节点用C语言的赋值语句说明了这个节点将执行的数据处理功能。

(2)调用行为动作(CallBehaviorAction)、调用操作动作(CallOperationAction)

“调用行为动作”表示对另外一个行为元素(可能是另外一个具体的活动、交互或状

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值