UML之部署图(deployment diagram)、构件图(component diagram)

一、实现图

UML中大部分模型描述了逻辑和设计方面的信息。

实现图用来描述实现方面的信息,用来对面向对象系统的物理方面建模。

它从系统的层次来描述:硬件的组成和布局,软件系统划分和功能实现

实现图包括:

构件图:用来显示一组构件之间的组织与依赖关系

部署图:用来描述系统硬件的物理拓扑结构以及在此结构上执行的软件。

二、构件图

1.构件图从软件架构的角度来描述一个系统的主要功能,如子系统、类、包、构件等。

主要对源码进行构建、对可执行体进行建模、对构建和接口之间的关系进行建模、还可以对物理数据库进行建模

每一个构件图只是系统的静态实现图的图形表示

为了构造一个良好的构件图,需要满足一下要求

1)侧重于描述系统的一个层面,而不是全局

2)要包含对于理解这一方面哪些是必要的那些模型元素,抓主体而不是次要的

3)图形不能过于简化,以至于读者不会产生误解

4)我们为构件图要取一个能表示意图的名称,比如这个构件图叫OrderForm.java源代码,不能随便取

5)设计构建图,空间摆放上要合理的组织元素,使得语义上接近的事物的物理位置比较接近

6)谨慎采用构造型化元素,为你的项目或者组织选择尽量少用的通用图标,使得他们保持一致


构件图的构成:构件、接口、关系

2.构件(component)是系统中遵从同一组接口且提供其实现的物理的、可替换的部分。

每一个构件能实现一定的功能,为其他构件提供使用接口,方便软件的复用,使用构件最重要的是复用。


构件举例:对象库、可执行体、COM+、企业级Java  Bean

构件的类型

构件是定义良好的接口实现单元,它可以是以下几种类型:

源代码构件(源代码文件)

二进制构件(目标码文件、静态链接库、动态链接库)

可执行构件(可执行程序)

数据文件或文档

构件的特点

物理的,可替换的,系统的一部分,遵从一组接口并提供对一组接口的实现


3.构件与接口

构件与其对应接口之间的关系:实现(realization)

构件与其它构件之间的关系:依赖(dependency)

示出接口(export interface):构件实现的接口

引入接口(import interface):构件使用的接口


4.构件和类

类表示逻辑抽象,而构件表示物理抽象。

构件是其他元素的物理实现。

类可以直接拥有属性和操作,一般情况下,构件一般只拥有只能通过其接口访问的操作。



5.对系统的源代码进行建模时要遵循如下策略

(1)在正向工程或逆向工程中应该识别出感兴趣的相关源码和文件集合,把他们建模成为已被构造型化为文件的构

(2)对于较大的系统我们应该用包来显示这些源代码文件的分组

(3)在对源代码建模时,还要考虑给出一个标记值,用它指出源代码文件的版本号

(4)用依赖关系对这些文件之间的编译依赖关系进行建模


可视化建模就可以利用工具来帮助产生并管理这些依赖关系

构件与接口之间的关系


对可执行体进行建模

发布时候可执行程序与链接库之间的依赖关系


通过这个构件图我们可以正确发布软件系统

对于可执行体的发布建模要遵循如下

(1)识别你想建模的构件集合通常应该包括一个节点的一部分或者是全部构件

(2)考虑集合中各构件的构造型对于大多数系统你会发现少量的不同种类的构件比如可执行体,链接库,表,文件和文档等等。可以利用UML的扩展机制对这些构造型提供可视化的提示。

(3)发布EXE时,对集合中的某个构件,考虑他们之间的相邻关系,多数情况下会涉及到接口,这些接口就由某些构件释出,或者由其他构件来引入,如果需要指明系统中的接缝,就应该显示的对这些接口进行建模。

三、部署图

部署图显示在运行的时候有哪些节点在进行处理及这些节点上的物理配置,

用来讨论软件执行所需要的处理器和设备的拓扑结构,对系统的静态实施进行建模

绘制的目的是使得清楚的看到软件是如何部署的,软件和硬件之间的映射关系,只对那些复杂的分布式的系统才建部署图


部署图包含节点和关系(依赖和关联)

节点(Node)是一个物理元素,它在运行时存在,代表一个可计算的资源,通常占用一些内存和具有处理能力。一个构件集合一般来说位于一个节点,但有可能从一个节点转到另一个节点。


对嵌入式系统要用到部署图

对CS框架,客户服务器系统建模是要用到部署图

对分布式的系统进行建模是要用到部署图



### UML 部署图和组件解释及其用途 #### 解释与定义 UML部署图展示了系统的物理结构以及硬件节点之间的关系,这些节点上运行着软件构件。通过这种表可以清晰地表示出应用程序如何分布在不同的计算资源之上[^2]。 对于组件而言,则是用来描绘组成应用的不同模块或库之间相互依赖的关系。每一个组件代表了一个逻辑上的部分,它可能对应于实际存在的文件、类集合或其他形式的封装单元。 #### 使用场景 当涉及到分布式系统设计时,部署图是非常有用的工具之一。它可以用来规划服务器配置、网络连接方式以及其他基础设施要素;同时也能帮助理解各个执行环境中的进程分布情况。例如,在描述一个多层Web架构时,可以通过绘制不同类型的机器(如Web服务器、数据库服务器等),并标明它们之间的通信路径来构建一个完整的视[^3]。 而组件则更多应用于展示大型项目内部各子系统间的协作模式。这有助于开发团队成员更好地把握整个项目的构成框架,并且便于维护者追踪特定功能所在的区域。比如在一个微服务风格的应用程序里,每个独立的服务都可以作为一个单独的组件呈现出来,从而使得其接口和服务调用链路更加直观易懂。 ```mermaid graph TD; A[客户端] --> B(Web前端); B --> C(应用服务器); C --> D(业务逻辑层); D --> E(数据访问层); E --> F(数据库); subgraph "部署" direction TB G[(云主机)]:::cloud H[(容器集群)]:::container style cloud fill:#f96,stroke:#333,stroke-width:4px style container fill:#bbf,stroke:#fff,stroke-width:4px end linkStyle default interpolate basis; classDef cloud stroke-dasharray: 5, 5; classDef container stroke-dasharray: 10, 10; %% 组件关联 .componentLink(C):::link -->|REST API|.componentLink(G) .componentLink(D):::link -->|gRPC|.componentLink(H) classDef link color:white,fill:none,stroke:none; ``` 此Mermaid代码片段提供了一种简化的方式去可视化上述概念: - **部署**:显示了两个主要的物理位置——云主机和容器集群。 - **组件链接**:利用自定义样式指明了某些组件间的数据交换协议(如 RESTful 或 gRPC)。
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值