首页 > 解决方案 > 组件图是否仅指物理组件?

问题描述

在 UML 组件图中,是否可以很好地测试某个东西是否符合“组件”的条件,它是物理隔离的吗?

我发现的大多数定义(Wikipedia、TutorialsPoints、..)将组件称为“文件、库、可执行文件等”。

然而,一些插图(参见http://agilemodeling.com/artifacts/componentDiagram.htm)似乎将类建模为组件(例如“学生”、“研讨会”),乍一看可能表明这些只是一些重要的应用程序中的类。但是,进一步阅读在“创建组件图”标题下,它大量引用了“网络流量”(“减少潜在的网络流量”);这意味着建模的组件是通过网络端口进行通信的不同进程或可执行文件。这似乎意味着实例在同一个 JVM 中的各个类(我可能会添加相同的物理 .jar)应该在 UML 组件图中的同一个组件中。这总是正确的吗?如果不是,什么时候在同一个 jar 和同一个 JVM 中的对象实例会在此图中被视为不同的组件?

标签: javacomponentsuml

解决方案


不,UML 组件不限于物理文件或类似的东西。

物理可能甚至不是谈论系统上文件的好词,因为您无法真正触摸文件。这只是位和字节。

UML 2.5 将组件定义为

组件表示系统的模块化部分,它封装了其内容,并且其表现形式在其环境中是可替换的。

此外,它说

组件是一个独立的单元,它封装了许多分类器的状态和行为。组件根据其提供的和所需的接口,指定了它向其客户提供的服务以及它需要从系统中的其他组件或服务获得的服务的正式合同。

组件是一个可替换的单元,可以在设计时或运行时替换为基于其接口兼容性提供等效功能的组件。只要环境与组件的提供和所需接口完全兼容,它就能够与该环境交互。类似地,可以通过添加新的组件类型来扩展系统,从而增加新的功能。系统功能的较大部分可以通过将组件作为包含组件或组件组装中的部件重用,并将它们连接在一起来组装。

因此,SkypeChrome等软件应用程序可以建模为组件,但聊天引擎HTML 渲染器等内部部件也可以视为组件。

通常,组件结构实际上反映在物理实现中;一个软件的每个组件都可以编译成一个 dll


推荐阅读