从(流)端口到UML活动图的模型数据流

时间:2018-07-10 21:08:23

标签: uml activity-diagram sysml

我正在研究的项目之一使用流端口为类之间的数据流建模。现在,我们开始使用活动图和状态图为动态行为建模,并且正在寻找一种表达活动图中使用的数据已在特定端口上接收的方法。基本上,我们要在流动端口和例如活动参数节点。

我认为,使用端口对数据流进行建模非常普遍,尤其是在系统工程中,应该有将数据链接到活动的方法。我可以想到两种方法:

  • 将端口连接到属性(或部分),并使用ReadStructuralFeatureAction获取值
  • 将端口连接到属性(或部分),并向使用CallOperation调用的类中添加操作。
  • 创建与端口名称相同的属性,并提供通过CallOperation操作调用的操作

第一个选项可以,但是我们的建模工具Rhapsody 8.1似乎不支持ReadStructuralFeatureAction。其他两种方法的缺点是,端口和模型中的活动之间没有直接连接器,并且在视觉上也不明显,因此我想有一个更好的替代方法。

我想知道是否有人知道更好的方法来实现这一目标,例如使用SysML(1.3)。

1 个答案:

答案 0 :(得分:2)

在模型的不可见部分中,UML和SysML中的静态视图和动态视图之间的连接被“隐藏”。我猜想原因是UML的设计师想要将它们分开。因此,没有图形或其他非常明确的连接。

相反,连接是很自然的,因此您可以使用它。例如,状态图或活动图中过渡的防护,触发器或动作。通过直接使用静态元素隐式实现此ReadStructuralFeatureAction。您可以在那里直接建模。因此它们出现在代表状态转换或控制流的边缘旁边。另一种方法是使用接收动作并将接收的属性设置为事件或触发的操作。通过使用发送动作,您可以在同一结构元素或其他结构元素中触发事件。在Rhapsody中这样做时,您需要指定目标端口和目标零件。

在UML / SysML或Rhapsody中,都没有预料到,当您提供类/块的接口时,您想知道呼叫是通过哪个端口或属性被更改的。但是您可以通过使用完整的端口并实现预期的行为来实现这一点(该行为必须与众不同-否则就不需要知道来源)。因此,每个完整的端口都有一个状态图或活动,并向您的类的对象传递内部信号或事件。对于从操作调用操作,有两种方法,一种是仅从操作(或进入或离开状态)调用中隐藏的方法,另一种是通过使用调用操作可见的方法。

这些连接的可见性在最近的UML或SysML版本中已更改。因此,在更新到更高版本的Rhapsody版本时,这将发生重大变化;尽管我真的建议您更新到最新的Rhapsody版本,因为它带来了更好的sysML支持,更少的错误,一些新功能以及更好的可用性。