UML2:组件图中的端口和接口

UML2: ports and interfaces in component diagrams

由于我还没有完全理解组件图中端口和接口符号的正确用法,请问几个问题:

我。 想象一个 的软件想要通过网络 (TCP) 使用非常特殊的远程记录器服务。这些消息可能是一些 XML。因此,记录器公开了一个接口,该接口指定诸如握手、XML 结构、XML 元素等内容,以便记录器将接受消息。

a) 这个接口可以叫"ILoggerProtocol",我说得对吗,端口可以根据它提供的服务命名("logging")?

b) 所以我的应用程序中的组件实现了该接口,以便它为服务器生成兼容消息?

c) 现在一件有趣的事情:对于通信,有一个额外的库 "Networking" 它提供简单的 TCP 东西,所以它进行 TCP 连接、发送消息、处理错误等。我需要这个吗class当我只想强调从生成消息到服务器的方式?那么我的端口是TCP接口吗?

d) 当我想绘制完整的图时,如何正确地将 Networking 组件添加到图中,指出使用了 ILoggerProtocol 并且它通过 Networking 组件通过 TCP?

二.我的应用程序中的端口: 现在有两个库,一个只使用另一个;基本上,在C/C++中,它会#include 对方的头文件:

e) 这是正确的图表吗?

f) 我需要这里的端口吗?如果是,它们实际上代表什么?你会给他们起什么名字?

g) 或者没有端口符号的棒棒糖就足够了吗?

三.关于棒棒糖:

h) 这两个符号基本相同并且可以互换吗?我找到了组合版本的名称"assembly",所以可能有区别...

首先是一个简短的回答(稍后尝试撕掉其余部分):端口是一个嵌入式元素,它允许对多个接口进行分组。我能举出的最好的例子是一个复杂的套接字(端口),它捆绑了诸如电源、通信线路之类的东西,你可以给它命名(接口)。

现在了解详情。

a) 是的,没错。您通常会使用 <<delegate>> 构造型关联来表明外部接口在内部某处使用(/如果它是棒棒糖则实现)。

b) 否。这是必需的接口。它在内部使用但在外部实现(棒棒糖所在的位置)。

c&d) 我会使用从 MyApplicationNetworking<<use>> 来表明这一点。通常你不会进入太多细节(除非它是必要的)。 <<use>>

清楚地描绘了诸如 TCP 之类的明显事物

e) 您可以(/应该)使用 <<include>><<use>>

f&g) 见上面的一般答案

h) 是的。第一个是第二个的灵活表示法。

P.S。再次查看这个,我注意到在顶部图片中,内部定向关联应该指向另一个方向并且被定型 <<delegate>>.