Uml 有没有办法在类图中指定在运行时发生的操作 问题:

Uml 有没有办法在类图中指定在运行时发生的操作 问题:,uml,class-diagram,Uml,Class Diagram,如果有办法在类图中捕获动作或行为,如有可能,例如在运行时为关联创建链接,或更新对象状态 背景 在我的理解中,类图是用来捕获静态关系的,比如类X有一个类Y作为成员,或者有一个对类Z的引用。因此,我认为捕获运行时动作或行为并不意味着要在类图中,但是我想知道是否有一种方法可以将运行时发生的事情的知识注入到类的对象中 例如,在我试图捕捉ER的图中 Docker守护进程使用Docker运行命令“发布端口”在容器网络接口和主机网络接口之间创建链接 ECS代理通过Docker套接字向Docker守护程序发送

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

背景 在我的理解中,类图是用来捕获静态关系的,比如类X有一个类Y作为成员,或者有一个对类Z的引用。因此,我认为捕获运行时动作或行为并不意味着要在类图中,但是我想知道是否有一种方法可以将运行时发生的事情的知识注入到类的对象中

例如,在我试图捕捉ER的图中

  • Docker守护进程使用Docker运行命令“发布端口”在容器网络接口主机网络接口之间创建链接

  • ECS代理通过Docker套接字向Docker守护程序发送命令,但它们之间没有直接的has-a或引用

  • ECS代理ECS调度程序进行通信,但ECS代理在加入群集并获取信息之前,并不直接了解ECS调度程序

  • ECS调度程序更新ELB目标组,将网络流量转发到主机网络接口

请建议一种UML方法,通过它我可以在类图中捕获“发布端口”或“更新目标组”,如果有的话

其他 如果图表中有任何错误或不正确的符号用法,请更正。非常感谢。

两个答案(关于行为):

  • 是的,你可以做得更好

  • 不,你不能那样做

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

您可以创建带有调用行为的活动图,或者在为协作创建的序列图中显示消息,而不是破坏关联

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


对于端口:您将在组件图中显示它们。端口是组件的元素,显示接口。这些通常被委托给实现或需要接口的组件内部的类。您将在边界上将端口显示为小正方形。我还没有看到他们列在手术室(这可能是不正确的)。如果需要,您需要一个单独的隔间,标记为“端口列表”或类似内容。仅仅将它们与属性放在一行是不正确的。

两个答案(关于行为):

  • 是的,你可以做得更好

  • 不,你不能那样做

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

您可以创建带有调用行为的活动图,或者在为协作创建的序列图中显示消息,而不是破坏关联

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



对于端口:您将在组件图中显示它们。端口是组件的元素,显示接口。这些通常被委托给实现或需要接口的组件内部的类。您将在边界上将端口显示为小正方形。我还没有看到他们列在手术室(这可能是不正确的)。如果需要,您需要一个单独的隔间,标记为“端口列表”或类似内容。仅仅将它们与属性放在一行是不正确的。

UML在将类建模与行为(即事件/动作)建模集成方面非常糟糕

但是,以相应类
A
中的操作形式对活动对象(类型
A
)的动作进行建模是很自然的

然后可以表达其效果(例如,更改对象属性的值或创建新链接)

  • 在OCL post条件的帮助下,或
  • 在相关的活动图中,活动/动作矩形对应于类图中的操作
  • 当使用活动图时,您可以使用分区(或“泳道”)进行re