package - 我可以将通信图用于高级视图吗?
问题描述
使用通信图来建模包之间的通信而不是对象之间的通信是否正确?我想在更高层次上建模通信,但我不想滥用图表。作为示例,我向您展示了一个使用两个图表建模的用例。在序列图中,所有对象都出现了,因为它是详细实现的,而通信提供了更高级别的视图。我想知道它在概念上是否正确。
解决方案
真的是关于 UML 包吗?
UML 将包定义为在命名空间中将事物打包在一起的一种方式:
Package 是其成员的命名空间,这些成员包括通过 packagedElement 关联的那些元素(据说是拥有或包含的),以及那些导入的元素。
UML 提供了使用包之间的依赖关系、合并包的名称以及诸如此类的方法。但是包本身没有行为,因此无法通信。
会不会是组件?
但是,您的图表建议了一个具有某种形式的交流和行为的分类器。您的“包”的名称似乎暗示了比简单类更复杂的东西。
UML 定义组件:
组件表示系统的模块化部分,它封装了其内容,并且其表现形式在其环境中是可替换的。
UML 组件有 2 个重要特征:
- 它们是自包含的,即它们依赖于其他元素,而其他元素仅通过明确定义的接口依赖于它们。
- 它们是可替代的,即一个组件可以被另一个提供相同“合同”的组件替换,前提是它们使用并提供相同的接口。
在实践中,某些组件边界可能会与包边界匹配(巧合?),这可能会造成一些术语混乱。
通讯图
如果您所说的“包”与实际的 UML 组件相匹配,尤其是考虑到这两个特征,您可以像以前一样完美地考虑通信图。
无关的旁白:我知道这是一种常见的做法。但原则上,诸如序列图和通信图之类的交互图显示了“封闭分类器的行为单元”,即原则上在系统内部的东西,而根据定义,参与者在系统外部。
推荐阅读
- javascript - 无法使用 VueRouter 浏览我的不同路由器链接
- python - 将 Python 列表转换为单个字符串
- javascript - 即使在相同的表单/div中,复选框也不会检查和隐藏
- python - 赋值前引用的函数错误变量
- c# - 不允许输出到总线系统 CAN 通道 X
- python - 有什么方法可以对字典中的所有列表值求和吗?
- java - 如何在 Hibernate 查询语言中查询具有关联实体的所有实体?
- java - 无法从java中的布尔方法获得返回
- .net - WPF .net5 Windows Server 错误:找不到 Microsoft.WindowsDesktop.App 框架
- angular - 无法解决 Angular 响应中的选项