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

min*_*ros 8 port components uml interface

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

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

在此输入图像描述

a)我认为这个接口可能被称为"ILoggerProtocol",该端口可能以它提供的服务命名("日志记录")?

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

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

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

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

在此输入图像描述

e)这是正确的图表吗?

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

g)或者棒棒糖在没有端口符号的情况下是否足够?

III.关于棒棒糖:

在此输入图像描述

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

qwe*_*_so 6

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

现在详细说明.

a)是的,这是正确的.您通常会使用一个<<delegate>>原型关联来显示外部接口在内部某处使用(/如果它是一个棒棒糖).

b)否.这是必需的界面.它在内部使用但在外面实施(棒棒糖所在的地方).

C&d)我会使用一个<<use>>从MyApplication朝Networking证明.通常你不会详细说明(除非它是必不可少的).像TCP这样的明显事物清楚地描绘了<<use>>

e)你可以(/应该)使用<<include>>或<<use>>代替.

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

h)是的.第一个是第二个的灵活符号.

PS再看一遍,我注意到在顶部的图片中,内部指导的关联应指向另一个方向并且是刻板的<<delegate>>.

  • 对这一切持保留态度。`&lt;&lt;use&gt;&gt;` 依赖关系更加非正式。如果显示接口关系很重要,请使用棒棒糖表示法。但要显示简单的依赖关系,请使用“&lt;&lt;use&gt;&gt;”。这取决于读者是谁以及你想表达什么。请注意:不要在这里开始长时间的讨论。相反,在适当的情况下开始一个新问题。谢谢。 (2认同)