首页 > 解决方案 > 我可以将通信图用于高级视图吗?

问题描述

使用通信图来建模包之间的通信而不是对象之间的通信是否正确?我想在更高层次上建模通信,但我不想滥用图表。作为示例,我向您展示了一个使用两个图表建模的用例。在序列图中,所有对象都出现了,因为它是详细实现的,而通信提供了更高级别的视图。我想知道它在概念上是否正确。 在此处输入图像描述 在此处输入图像描述

标签: packageumlinteractionsequence-diagramcommunication-diagram

解决方案


真的是关于 UML 包吗?

UML 将包定义为在命名空间中将事物打包在一起的一种方式:

Package 是其成员的命名空间,这些成员包括通过 packagedElement 关联的那些元素(据说是拥有或包含的),以及那些导入的元素。

UML 提供了使用包之间的依赖关系、合并包的名称以及诸如此类的方法。但是包本身没有行为,因此无法通信。

会不会是组件?

但是,您的图表建议了一个具有某种形式的交流和行为的分类器。您的“包”的名称似乎暗示了比简单类更复杂的东西。

UML 定义组件:

组件表示系统的模块化部分,它封装了其内容,并且其表现形式在其环境中是可替换的。

UML 组件有 2 个重要特征:

  • 它们是自包含的,即它们依赖于其他元素,而其他元素仅通过明确定义的接口依赖于它们。
  • 它们是可替代的,即一个组件可以被另一个提供相同“合同”的组件替换,前提是它们使用并提供相同的接口。

在实践中,某些组件边界可能会与包边界匹配(巧合?),这可能会造成一些术语混乱。

通讯图

如果您所说的“包”与实际的 UML 组件相匹配,尤其是考虑到这两个特征,您可以像以前一样完美地考虑通信图。

无关的旁白:我知道这是一种常见的做法。但原则上,诸如序列图和通信图之类的交互图显示了“封闭分类器的行为单元”,即原则上在系统内部的东西,而根据定义,参与者在系统外部。


推荐阅读