4

我正在从事的项目之一使用流端口对类之间的数据流进行建模。我们现在开始使用活动图和状态图对动态行为进行建模,并正在寻找一种方法来表示活动图中使用的数据已在特定端口上接收到。基本上,我们想在流端口和例如活动参数节点之间创建一个连接器。

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

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

第一个选项没问题,但我们的建模工具 Rhapsody 8.1 似乎不支持ReadStructuralFeatureActions. 其他两种方法的缺点是端口和模型中的活动之间没有直接连接器,并且视觉上不明显,所以我希望有更好的选择。

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

4

1 回答 1

2

UML 和 SysML 中的静态视图和动态视图之间的连接“隐藏”在模型的不太明显的部分中。我猜原因是 UML 的设计者想要将这些分开。所以没有图形或其他非常明确的连接。

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

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

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

于 2018-07-11T18:55:58.053 回答