组件图 简介
组件图用于描述系统的物理结构,组件本身是可替换的模块化单元,其内部细节通过部件( Parts )进行封装和表示。
组件图适用于不同规模和复杂度的系统。组件的概念贯穿于基于组件的开发和系统架构中,在整个生命周期内持续建模,并逐步细化直至部署和运行阶段。
为了易于理解,我们使用 建模工具EA ,基于无人车系统案例进行了建模示例。
图例
语义:组件图用于描述组件与组件之间的依赖关系。
用途:可以在划分软件有哪些组件构成,确定组件之间的依赖关系
以下是一个无人红外遥控小车系统的组件结构,示例如下:
CarController.exe :小车的主控制程序
Port1 :主程序上的一个端口,用于连接遥控接口。
IRRemoteControl :红外遥控接口,定义了两个方法:
IRRemoteLib:红外遥控功能库
RemoteReceiver :具体实现类,包含属性与方法:
元素
如下是根据《UML2.5.1建模规范》 编译的UML部署图的元素说明:
port(端口):是为接口提供的通道, 表示组件通过这个端口, 对外提供 IRRemoteControl 接口定义的服务。
class(类): 组件内部的核心实现类, 完全实现了 IRRemoteControl 接口 的所有方法
• Component
说明:
组件( Component )是指系统的模块化部分,内容被封装,可以被替换。 一个组件被表示为一个带有 «component» 关键字的 分类器矩形 。
• Expose Interface
Expose Interface(公开接口)描述了一种通过从组件矩形延伸出的接口( lollipops )与( sockets )来展示组件外部( “ 黑盒 ” )视图的方式。 其中 Required Interface 用“插座”的样式表示, Provided Interface 用“棒棒糖”的样式表示。 Required Interface (请求接口):请求别人提供服务的接口 Provided Interface (提供接口):向外部提供服务的接口
• Packaging Component
使用“Packaging element”分区,可以将实现该组件的所有类,都封装并展示在该组件图形内部。
• Interface
interface(接口):组件要实现的接口,带 <interface> 构造型的接口定义 , IRRemoteControl 接口可以同时作为供接口和需接口,在组件图中连接不同的模块,构建完整的红外遥控系统架构。
• Port
• Object
Object元素通常指代一个组件实例,即类或构件的具体实现,Object元素作为其具体化,代表运行时的对象实例。
关系
如下是根据《UML2.5.1建模规范》 编译的UML组件图的关系说明:
Realiz (实现):组件实现接口声明的行为 实现了代表无人小车的 Car 组件,而实现箭头则表示了该组件的具体实现方式,清晰划分了无人小车系统的抽象契约与具体实现。
Association(关联):无人小车的示例描述运动控制器( Motion Controller )通过关联,向电机驱动器( MotorDriver )发送 PWM、转速等控制指令;电机驱动器执行指令后,会向控制器反馈电机状态(如电流、转速),形成闭环控制
• Realizatize
• Dependency
Dependency(依赖):一个组件依赖于另一个组件的服务 使用无人小车的示例,描述了一个一个红外循迹跟踪组件( TrackingImpl )通过传感器接口( ISensor )获取环境数据,经过处理后通过电机控制接口( IMotorControl )控制机器人运动。
• Assembly
Assembly (装配):是一种表示组件之间关系的关联关系,指多个组件装配到一起,实现一定的功能。
• Delegate
Delegate (委托连接器): 是一种特殊的连接器,用于将外部接口请求转发给内部组件处理 。 使用无人小车的示例描述用户触发 RunForward 委托端口后,委托 MotorDriver (电机驱动)去执行 makerobo_run() (前进动作)
• Association
元模型
基于组件的开发,一个很关键的好处就是可以复用现成的组件。可以把组件理解成系统或者子系统里一个独立的功能块。每个组件都通过一个或多个接口,对外提供能力。至于组件内部具体是怎么实现的,外面是看不到的,想跟它打交道,只能通过它公开的接口。
虽然组件在功能上可能会依赖其他组件,但每个组件自身是高度封装的。在设计时,我们会有意控制这种依赖关系,让它尽可能保持独立。正因为如此,我们可以把不同的组件或子系统灵活地组装、替换,只要把它们的接口正确 “ 连接 ” 起来就行。
要充分的理解组件图的建模语法规范,需要充分了解 UML 组件图的元模型,如下是 UML 组件图的元模型。
了解 UML-2.5.1-元模型,请下载《UML-2.5.1-元模型》,扫码加微信获取 模型登陆账号和密码 。