是否有一种方法可以在类图中指定运行时发生的动作

问题描述 投票:0回答:1

问题

[如果有可能的话,可以在类图中捕获动作或行为,例如在运行时创建链接以进行关联或更新对象状态。

背景

据我所知,类图用于捕获静态关系,例如类X具有-类Y作为成员,或具有对类Z的引用。因此,我想捕获运行时动作或行为并不意味着在一个类图中,但是我想知道是否有一种方法可以将关于运行时正在发生的事情的知识注入到类的对象之间。

例如,在我试图捕获AWS ECS ER的图中。

  • Docker Daemon使用docker运行命令“ 发布端口”在容器网络接口主机网络接口之间创建链接。

  • ECS Agent通过Docker Socket将命令发送到Docker Daemon,但它们之间没有直接的has-a或引用。

  • [ECS AgentECS Scheduler进行通信,但是在代理加入群集并获取信息之前,ECS Agent不直接了解ECS Scheduler。

  • ECS Scheduler更新ELB目标组以将网络流量转发到主机网络接口

请提出一个UML方式,以便在类图中捕获“发布端口”或“更新TargetGroup”。

enter image description here

其他

如果图表中的符号有任何错误或使用不当,请更正。将会受到高度赞赏。

uml class-diagram
1个回答
0
投票

两个答案(关于行为):

  • 是的,你可以做。

  • 不,你不能那样做。

那又怎样?类图旨在显示类之间的静态关系。类之间存在关联的原因仅出于设计原因而存在。架构师认为,由于描述的(用例)行为,应该采用这种方式。解决这些问题时(尽管不是具体的),您可以对各种行为进行建模(使用活动图或序列图),这些行为说明了实现用例的某些协作。在进行此设计步骤的过程中,可能有必要调整静态关系。这可能会再次影响所显示的行为。甚至可以得出结论,用例活动需要进行调整(甚至可以证明该要求不能以一种或其他方式实现,因为...)。]

而不是破坏关联,您可以制作带有呼叫行为的活动图或在为协作而创建的顺序图中显示消息。

一种更好的方法是将静态类设计的相关部分另外放在SD或AD上。根据UML规范,您可以(并且应该)在所有图表上混合所有UML元素(如果它有助于传达设计原因)。


对于端口:您将在组件图中显示它们。端口是组件的元素,并显示接口。这些通常委托给实现或需要接口的组件内部的类。您将在边框上将端口显示为小方块。我还没有在操作室中看到它们(可能不正确)。如果只是文本,则需要一个单独的标有“端口列表”之类的分隔符。仅将它们与属性放在一起是不正确的。

© www.soinside.com 2019 - 2024. All rights reserved.