provided/required 表示法中接口之间的 UML 依赖关系
UML dependency between interfaces in provided/required notation
确切地提供的接口和所需的接口之间的依赖箭头表示什么,方向是什么意思?
在我的理解中,提供的"lollipop"是对接口的实现关系,要求的"socket"是对接口的使用依赖。
一个接口依赖于另一个接口甚至自身有什么意义?下面是我如何阅读上面的左图。
在我看来有意义的是组件之间的依赖关系,如下所示,但这不是接口依赖关系所显示的。
A Google 搜索显示了许多可能的意见,一个经过证实的答案(可能 link 对应的 UML 元模型)将不胜感激。
class上的socket表示class使用接口,球表示class提供接口。因此,它是显示从 classes 到接口的用法和实现的另一种样式。准确地说,这里指的是使用关系,而不是依赖关系。使用关系表示依赖元素的实现依赖于独立元素。依赖意味着依赖元素的实现 or/and 规范依赖于独立元素。
在你的例子中,你所展示的这种关系,从所需的接口指向提供的接口(在套接字和球形符号中)是所谓的接线依赖性。在 opoosite 方向使用依赖关系没有意义。当然,这些连接依赖性并不是要表达接口具有自依赖性,但由于不吉利的表示法,通常会造成误解。在接口需求和接口提供之间连接依赖关系的目的最初是为了增加使用和依赖关系之间的微小差异,即用户还依赖于规范的其他方面,而不仅仅是提供的合同,例如资源规范或时间限制.今天,这种理解已经完全退化,它只是通过显示属于一起的东西来提高图表的可读性。
澄清一下你的误解(这是一个很常见的误解),依赖不是从接口到它自己,而是从需要接口到提供接口的依赖。认为,接口的提供和需求也是模型中的一个元素。
布线依赖仅用于模型的静态元素之间,例如,classes、组件或 classes 的端口(不是 parts/objects)。当您想表达 object/a 部分的依赖性由特定的其他 object/part 解决时,您可以对这两个实例建模并在实例或端口之间使用连接器(或从中派生的东西)显示在实例上。认为,当静态元素具有端口时,端口需要绑定。连接器只能在实例之间使用,不能在它们的 classifier 之间使用。
虽然您的第二个示例看起来更直观(它似乎与球窝指示的依赖倒置一致),但组件图的依赖箭头旨在说明 运行-time 数据流。因此第一个图是正确的。我们还是可以从插座上推断出插件的设计。
对于显式调用提供的接口的组件,您会看到依赖箭头从调用组件延伸到被调用组件的棒棒糖。
当您尝试使用在组件边界内显示 类 接口的白盒组件图进行说明时,它会变得更奇怪。实现箭头走另一条路,箭头有一个闭合三角形。
当您将 UML 1.0 与 UML 2.0 标准进行比较时,这种混淆会进一步加剧,在 UML 2.0 中,球和窝总是耦合在一起。
确切地提供的接口和所需的接口之间的依赖箭头表示什么,方向是什么意思?
在我的理解中,提供的"lollipop"是对接口的实现关系,要求的"socket"是对接口的使用依赖。
一个接口依赖于另一个接口甚至自身有什么意义?下面是我如何阅读上面的左图。
在我看来有意义的是组件之间的依赖关系,如下所示,但这不是接口依赖关系所显示的。
A Google 搜索显示了许多可能的意见,一个经过证实的答案(可能 link 对应的 UML 元模型)将不胜感激。
class上的socket表示class使用接口,球表示class提供接口。因此,它是显示从 classes 到接口的用法和实现的另一种样式。准确地说,这里指的是使用关系,而不是依赖关系。使用关系表示依赖元素的实现依赖于独立元素。依赖意味着依赖元素的实现 or/and 规范依赖于独立元素。
在你的例子中,你所展示的这种关系,从所需的接口指向提供的接口(在套接字和球形符号中)是所谓的接线依赖性。在 opoosite 方向使用依赖关系没有意义。当然,这些连接依赖性并不是要表达接口具有自依赖性,但由于不吉利的表示法,通常会造成误解。在接口需求和接口提供之间连接依赖关系的目的最初是为了增加使用和依赖关系之间的微小差异,即用户还依赖于规范的其他方面,而不仅仅是提供的合同,例如资源规范或时间限制.今天,这种理解已经完全退化,它只是通过显示属于一起的东西来提高图表的可读性。
澄清一下你的误解(这是一个很常见的误解),依赖不是从接口到它自己,而是从需要接口到提供接口的依赖。认为,接口的提供和需求也是模型中的一个元素。
布线依赖仅用于模型的静态元素之间,例如,classes、组件或 classes 的端口(不是 parts/objects)。当您想表达 object/a 部分的依赖性由特定的其他 object/part 解决时,您可以对这两个实例建模并在实例或端口之间使用连接器(或从中派生的东西)显示在实例上。认为,当静态元素具有端口时,端口需要绑定。连接器只能在实例之间使用,不能在它们的 classifier 之间使用。
虽然您的第二个示例看起来更直观(它似乎与球窝指示的依赖倒置一致),但组件图的依赖箭头旨在说明 运行-time 数据流。因此第一个图是正确的。我们还是可以从插座上推断出插件的设计。
对于显式调用提供的接口的组件,您会看到依赖箭头从调用组件延伸到被调用组件的棒棒糖。
当您尝试使用在组件边界内显示 类 接口的白盒组件图进行说明时,它会变得更奇怪。实现箭头走另一条路,箭头有一个闭合三角形。
当您将 UML 1.0 与 UML 2.0 标准进行比较时,这种混淆会进一步加剧,在 UML 2.0 中,球和窝总是耦合在一起。