组件图即是用来描述组件与组件之间关系的一种UML图。组件图在宏观层面上显示了构成系统某一个特定方面的实现结构。
组件图适用于基于组件的开发模式(Component-Based Development, CBD),它通过组件,及组件的接口、端口来表达组件的构成及其关系。当我们使用 CBD 进行开发时,其实是对行为进行了抽象,一个组件提供了若干的行为,组件图通过接口、端口的方式来表达组件间的连接,很形象的表达出组件是可被替换的概念,一个组件可以被另一个提供了相同接口的组件替换。因此,当我们通过组件进行建模时,能够设计出一个扩展性良好的系统。
基于组件的开发基于这样的假设,即以前构建的组件可以被重用,并且如果需要,组件可以被一些其他“等效”或“一致”组件替换。
组件图是用于描述系统的物理、逻辑结构的,他关注组件间的关联(使用什么接口,通过什么端口通讯),强调通过接口来描述组件行为
component, [interface, provided interface, required interface], class, port, connector, artifact, component realization, dependency, usage
component 组建的一般表示
提供接口 (provided interfaces)
提供接口表明该组件实现的接口,表示该组件能够提供的行为,即该组件可对外提供的服务。 比如上图的例子中,表明了天气服务组件,提供了天气预报的接口,即说明天气服务组件拥有天气预报的行为(能力)
需求接口(required interfaces)
需求接口表明该组件执行过程中,需要使用到具有某个行为的组件,即声明该组件依赖的行为。
需求接口(半圈)和提供接口(圆圈)的图设计得很有意思,一般两个组件连接,即一个组件的提供接口连接另一个组件的需求接口,这样表现出来的就是一个半圆半包裹着一个圆圈,很形象的表明类似插座,或者可互相嵌入的接口,所以从图中我们能够很直观的感受到组件之间是通过接口连接的,只要使用相同的接口,组件间可以随意替换。
伸手要钱 提供的接口是 钱
自己掏腰包 提供的接口是 钱
所以可以互相取代
端口 (port)
端口 表明组件对外提供接口的交互点,和网络中的端口概念相似,它定义了组件对外的出口。通过端口,我们可以限制组件的外部可见性,其他组件与该组件交流,只能通过对应的端口,因此我们通过端口了解到一个组件能够支撑的功能范围。
组建可以替换,前提是接口相同,
连接器(connector)
组建间的连接,通信。
UML 中的依赖关系
例子
网购组建图
第一层次 有哪些顶层组建
有三大组建 WebStore ,Warehouses,accounting
第二层次 — 顶层组建的接口和连接(WebStore 详细写)
1 WebStore 提供的接口(服务) 产品搜索,在线购物,用户接口
输入接口 搜索仓库(依赖于仓库提供的接口) ,购物车输入(依赖于账户管理提供的操作),用户接口
2. Warehouses仓库 提供的服务 搜索库存,管理库存
3. 账户 提供的服务 操作服务,消费者管理
第三层 顶层组建的内部 连接和接口
例子二 类视图