Python设计模式 - UML - 组件图(Component Diagram)
简介
组件图又称构建图,用于显示系统各组件及各组件关系的物理视图。
组件图通常包括组件、接口、关系、端口和连接器,用来显示程序代码中相应的模块、源文件或源文件集合之间的依赖和泛化关系。
组件图中的组件通常由类图中的一个或多个类(对象)实现为系统中的模块、源文件、过程文件或可执行文件,最终构成系统的绝大部分功能单元。
组件图建模步骤
- 确定系统有哪些对外接口或端口
- 确定系统要用到哪些组件,识别出系统中的重要模块、库文件、源代码文件、数据表或文件、可执行文件或文档等,将其建模为一个个组件
- 确定系统中各组件的类型、规格、约束和内部接口
- 确定系统中各组件之间、接口之间、组件与接口之间的关系
组件图的元素
组件图中的元素包括组件、接口、关系、端口和连接器,其中组件与组件之间有依赖关系,组件与接口之间有实现关系。
- 组件: 承担具体功能单元的实际文件,一般为lib, jar, dll, exe等格式,遵循接口定义并提供具体的接口实现
- 组件表示法
- 图标表示法
图标表示法 小图标表示法
- 构造表示法
- 组件分类:
- 配置组件:系统中各组件执行时的环境配置文件
- 产品组件:系统运行前的静态源文件,包括模块、源代码文件、源数据文件、链接库文件、可执行文件等
- 过程组件:系统运行时生成的组件,包括动态生成类文件,新增数据文件、日志文件、动态网页等
- 接口:一组操作的集合,声明了组件提供或请求的服务契约,这个契约由实现和使用这个接口的组件共同遵守
从调用从属角度可以把接口分为需求接口和提供接口。
- 需求接口: 也叫需接口,是指组件像其他组件请求服务时要遵循的接口
- 提供接口:也叫供接口,是指组件给其他组件提供服务时实现的特性和约束
- 关系:实现,依赖, 泛化(具体见组件图的关系部分)
- 端口:属于外部接口,是被封装组件与外界的交互点。实现接口的组件使用端口来收发消息,与外界交互
- 表示法:在UML2.0中表示为小方框
- 与接口关系:需求接口通过端口从外部请求服务,提供接口通过端口向外部提供服务
- 与组件关系:组件之间可以通过端口进行交互,如收发消息
- 连接器:两个组件或两个端口之间的通信关系。UML2.0提供两种类型的连接器
- 代理连接器:外部端口(端口)和内部接口之间的连接器
- 组装连接器:组件之间的连接器。连接器在一个组件的需求接口和另一个组件的提供接口之间建立连接,使得前一个组件能够调用后一个组件提供的服务
组件图的关系
组件图中的关系有实现、依赖和泛化,主要涉及组件与组件之间、组件与接口之间、接口与接口之间。
- 实现:组件与接口之间的关系
- 依赖:组件与组件之间的关系
如果两个组件中的两个类存在依赖关系,那么这两个组件之间的关系就可以表示为依赖关系
- 泛化:组件与组件之间、接口与接口之间
如果两个组件中的两个类之间或两个接口之间存在泛化关系,那么这两个组件之间的关系就可以表示为泛化关系
组件图示例
以银行短信客服系统为例
组件图与相近UML图的区别
- 组件图与类图区别:组件图与类图在以下几个方面上有显著区别
- 抽象层次:类图侧重对单个实体和细节逻辑的抽象;组件图侧重对模块化和部署实现的抽象
- 抽象粒度:类图中以类、接口及它们之间关系为粒度;组件图中以功能单元为粒度,通常是若干个类或接口组成
- 外部调用:外部调用类图中的类时可以根据其可见性直接调用其属性和操作;外部调用组件图中的组件则只能通过接口访问其操作
- 可部署性:类图与单个实体和逻辑相对应,组织结构较为分散,不具有可部署性;组件图中的组件本身就是模块化、接近最终实现的功能单元,具有可部署性
- 组件图与包图区别:组件图与包图在以下几个方面上有显著区别
- 抽象层次:包图侧重对类、接口及包等元素的容器性抽象;组件图侧重对库文件、源代码文件、可执行文件等的模块化抽象
- 组织结构:包图侧重静态的、不再改变的文件结构;组件图侧重动态的、随编译/链接/执行过程改变的文件结构
- 可部署性:包图侧重源文件间的组织关系和层次,不具有可部署性;组件图中的组件本身具有动态可执行性,所以可部署
- 元素关系:包图元素之间的关系大多是静态包含或关联;组件图元素之间的关系大多是动态调用或实现
组件图的注意事项
- 组件粒度适中,既易于分析又不至于数目太庞大
- 组件图中的元素关系需要与类图及包图中元素关系相对照,避免不一致产生歧义
- 组件图中的元素名词与来源文件一直,与部署图中的元素一致
- 组件图如果太过繁杂又不得不标全组件,可以适当拆分成总组件图和几个组件子图
Python设计模式 - UML - 组件图(Component Diagram)的更多相关文章
- Python设计模式 - UML - 类图(Class Diagram)
简介 类图是面向对象分析和设计的核心,用来描述系统各个模块中类与类之间.接口与接口之间.类与接口之间的关系,以及每个类的属性.操作等特性,一般在详细设计过程中实施. 类图本身就是现实世界的抽象,是对系 ...
- Python设计模式 - UML - 通信图(Communication Diagram)
简介 通信图表示对象之间的消息往来,是表述时序图中信息交互的另一种UML图,介绍完时序图就要对照学习一下通信图,二者是一体两面的. 通信图和时序图可以相互转换,二者的侧重点不同,通信图侧重哪些对象发送 ...
- Python设计模式 - UML - 定时图(Timing Diagram)
简介 定时图也是一种交互图,用来描述对象或实体随时间变化的状态或值,及其相应的时间或期限约束.定时图应用较广,并不局限于软件工程领域. 定时图侧重与时间线相关的值或状态的改变,这些改变可能来自于收到消 ...
- Python设计模式 - UML - 包图(Package Diagram)
简介 包图是对各个包及包之间关系的描述,展现系统中模块与模块之间的依赖关系.一个包图可以由任何一种UML图组成,可容纳的元素有类.接口.组件.用例和其他包等.包是UML中非常常用的元素,主要作用是分类 ...
- Python设计模式 - UML - 时序图(Sequence Diagram)
简介 时序图表示参与者与对象之间.对象与对象之间的动态交互过程及时序关系. 时序图详细而直观地展示了对象随时间变化的状态.调用关系和消息时序,时序图中的主要元素有:参与者(Actor), 对象(Obj ...
- Python设计模式 - UML - 活动图(Activity Diagram)
简介 活动图描述从一个活动到另一个活动的执行顺序.约束条件.引用对象及状态结果等方面的控制流,适用于对业务用例.工作流程或程序实现建模. 活动图建模步骤 - 确定活动图的范围和边界,对哪些工作流.哪些 ...
- Python设计模式 - UML - 状态图(State Machine Diagram)
简介 状态图主要用于描述对象在其生命周期中各种状态.状态之间的转换过程.触发状态转换的各种事件(条件)及执行的动作. 状态图构建步骤 - 找出适合用状态图描述的类.确定类中需要做状态图的重要对象 - ...
- Python设计模式 - UML - 对象图(Object Diagram)
简介 对象图和类图的基本概念是类似的,可以看作类图在系统某一时刻的镜像,显示了该时刻系统中参与交互的各个对象以及它们之间的关系. 对象图的元素包括对象.链接.包,元素之间的关系和类图相似. 对象图建模 ...
- Python设计模式 - UML - 总览
说到设计模式就不得不涉及建模思想,说到建模思想自然而然会应用UML,目前业界开源的UML工具很多,用起来也非常便捷.近几年来随着软件应用领域开发模式转向快速迭代试错,UML在敏捷开发,尤其是web及m ...
随机推荐
- POJ1738 An old Stone Game
题意 Language:Default An old Stone Game Time Limit: 5000MS Memory Limit: 30000K Total Submissions: 439 ...
- 用 Excel 画正态分布曲线
用 Excel 画正态分布曲线 群里有小伙伴询问一道曲线题,有小伙伴看出来是正态分布曲线,刚好之前有大概了解一下正态分布. 可以在 Excel 很容易实现. 使用 NORMDIST 即可. 效果如下:
- Eclipse+PyDev 安装和配置
Eclipse+PyDev 安装和配置 2012-03-17 23:23:23 | 17465次阅读 | 评论:0 条 | Python开发有很多工具,其中Eclipse+Pydev 是最常见的一种 ...
- redis 延时任务 看一篇成高手系列2
引言 在开发中,往往会遇到一些关于延时任务的需求.例如 生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务.那么这里就会产生一 ...
- FTP文件传输服务
FTP文件传输服务 一 .FTP 连接及传输的模式 l 控制连接:TCP21,用于发送FTP命令信息. l 数据连接:TCP 20, 用于上传下载数据. · 数据连接建立的类型: ·主动模式: 服 ...
- ubuntu安装nginx及其默认目录结构
一. 安装包安装 1.1 安装Nginx $sudo apt-get install nginx Ubuntu安装之后的文件结构大致为: 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经 ...
- 用EXCEL做快速傅立葉轉換_FFT in Excel
转载来自:http://yufan-fansbook.blogspot.tw/2013/09/excel-fft-fast-fourier-transform02.html [Excel]-用EXCE ...
- [UE4]Retainer Box
把子元素的内容渲染到一个Render Target上去,然后放把它放置到到屏幕上去. Retainer Box的作用: 1.控制UI更新频率 2.把渲染后的UI当成Texture,放入材质中,加工后, ...
- Ext.NET Grid Group分组使用
- 需要注意的是, 涉及到分页排序, 最好定义GroupDir 方向与分组方式相同. - 譬如工资表按照最新最前分页输出. 如果分组按照默认排序的话, 最就最前. - 界面呈现出2015年, 2016 ...
- solidworks建立三维模型里面的几何对象和工程图里面的元素的联系
本文是帮助里面的一个例子, 首先打开一个三维模型和对应的工程图,保持三维模型为当前激活窗口,在三维模型里面选中一个面或者一个边,然后运行下面的代码, 会将工程图里面的第一视图里面对应的投影元素的线型的 ...