【问题标题】:UML2: ports and interfaces in component diagramsUML2:组件图中的端口和接口
【发布时间】:2020-09-07 16:49:00
【问题描述】:

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

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

a) 这个接口可能被称为“ILoggerProtocol”,端口可能以其提供的服务命名(“日志记录”),我说得对吗?

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

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

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

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

e) 这是正确的图表吗?

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

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

三。关于棒棒糖:

h) 这两个符号基本相同并且可以互换吗?我找到了组合版本的名称“程序集”,所以也许有区别......

【问题讨论】:

  • 我对我的回答做了一个简短的修改。

标签: interface uml components port


【解决方案1】:

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

现在了解详情。

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

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

c&d) 我会使用从 MyApplicationNetworking<<use>> 来表明这一点。通常你不会详细介绍(除非它是必要的)。像 TCP 这样明显的东西用<<use>> 清晰地描绘出来

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

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

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

附:再看一遍,我注意到在上面的图片中,内部定向关联应该指向另一个方向并被定型为<<delegate>>

【讨论】:

  • 托马斯,非常感谢。 b) 对于“实现”,我的意思是我的应用程序为 ILoggerProtocol 构建了 counterpart,当然...... f) 所以我从你的陈述中得出结论,在我的例子中,作为一名程序员思考:当一个类出于一个简单的目的包含另一个头文件,我不一定需要一个端口。当我包含另一个组件的头文件以使用更复杂的服务甚至不同的服务时,我需要端口,对吗?也感谢有关刻板印象的提示。一张图说一千个字,但有时一个字让图更清晰……
  • 注册。 b) implements 意味着你实现了一个定义好的接口。这是用棒棒糖显示的(意味着你提供它)。如果您使用接口(又名。导入某些东西),则将其显示为套接字(必需的接口)。端口是捆绑事物的虚拟构造。在编程方面:如果你导入一个完整的库,那么这个库就是端口。
  • 谢谢,两个细节:你说“......应该使用 > 或 > 代替”,所以你建议在两者之间建立 dependency 而不是棒棒糖的成分?带或不带端口盒?到目前为止,在我的书中,我只看到了组件和接口之间的使用依赖关系(盒子符号,而不是棒棒糖)—— reg ports:我在提供接口方面得到了 port=lib 的想法。然而在我的第一张图中,MsgGenerator 有一个端口,然后是请求接口,然后是委托,然后是另一个端口,然后是接口。那么这个外部端口究竟是什么使用过的库?
  • 对这一切持保留态度。 <<use>> 依赖项更加非正式。如果显示接口关系很重要,请使用棒棒糖符号。但是要显示简单的依赖关系,请使用<<use>>。这取决于读者是谁以及你想表达什么。并且请:不要在这里开始长时间的讨论。而是在适当的地方开始一个新问题。谢谢。
猜你喜欢
  • 2020-07-13
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
  • 2019-10-16
  • 2013-07-21
相关资源
最近更新 更多