当前位置:网站首页>UML系列文章(31)体系结构建模---部署图
UML系列文章(31)体系结构建模---部署图
2022-06-12 11:31:00 【CoderIsArt】
本章内容
- 对嵌入式系统建模
- 对客户、服务器系统建模
- 对全分布式系统建模
- 正向工程和逆向工程
部署图是用来对面向对象系统的物理方面建模的两种图之一。部署图展示运行时处理的结点和在结点上生存的制品的配置。
部署图用来对系统的静态部署视图建模。多少情况下,这包括对系统运行于其上的硬件拓扑结构建模。部署图实质上是针对系统结点的类图。
部署图不仅对可视化、详述及文档化嵌入式系统、客户服务器系统和分布式系统是重要的,而且它对通过正向工程和逆向工程来管理可执行系统也是重要的。
1. 入门
当创建一个软件密集型系统时,作为软件开发人员,主要精力应放在软件的构造和部署上。然而,作为一个系统工程师,注意力就应放在系统的硬件和软件两个方面上,并在两者之间进行权衡。软件开发人员处理的是像模型和代码这样的有点无法捉摸的制品,而系统开发人员处理的是实实在在的硬件。
UML主要注重于可视化、详述、构造和文档化软件制品提供更便利机制,但它也可以表示硬件制品。这并不是说UML是一个像VHDL那样的通用硬件描述语言,而是说UML可以为系统硬件方面的许多情况建模,这使得软件工程师足以描述系统的软件运行所需的平台,同时也使得系统工程师足以管理系统中的软件和硬件的边界。在UML中,可以利用类图和制品图来思考软件的结构。利用顺序图、协作图、状态图和活动图来详述软件的行为。在系统的软硬件的边界上,可以利用部署图来思考软件执行在其上的处理器和设备的拓扑结构。如图所示,可以用UML的部署图可视化物理结点的静态方面以及它们之间的关系,并详述其构造的细节。

2. 术语和概念
部署图(deployment diagram)是一种展示运行时进行处理的结点和在结点上生存的制品的配置的图。在图形上,部署图是顶点和弧的集合。
2.1 普通特性
部署图只是一种特殊的图,它具有与所有其他图相同的普通特性---有一个名称和投影到模型的图形内容。部署图与其他图不同的部分是它的特殊内容。
2.2 内容
部署图通常包括:
- 结点
- 依赖和关联关系
和所有其他图一样,部署图可以包括注解和约束。部署图也可以含有制品,每个制品都必须存在于某个结点上。部署图中还可以含有包或子系统。这两者都用于将模型元素分组成较大的组块。有时,特别是图中还可以含有包或子系统,这两者都用于将模型元素分组成较大的组块。有时、特别是当需要可视化硬件拓扑结构族的一个实例时,可能需要在部署图中放入实例。
2.3 一般用法
部署图用于对系统的静态部署视图建模。这种视图主要用来解决构成物理系统的各组成部分的分布、提交和安装。
有些种类的系统不需要部署图。如果正在开发的软件将运行在一台机器上,而且只和该机器上已由宿主操作系统管理的标准设备相互作用,就不必设计部署图。另一个方面,如果与开发的软件交互的设备通常不是由宿主操作系统管理,或者这些设备是物理地分布在多个处理器上的,则使用部署图将有助于思考系统中软件到硬件的映射。
对系统静态部署视图建模时,通常将以下三种方式之一使用部署图。
1)对嵌入式系统建模
嵌入式系统是软件密集的硬件集合,其硬件与物理世界相互作用。嵌入式系统包括控制设备(如马达、传动装置和显示器)的软件,又包括外部的刺激(如传感器输入、运动和温度变化)所控制的软件。可以用部署图对组成一个嵌入式系统的设备和处理器建模。
2)对客户、服务器系统建模
客户服务器系统是一种常见的系统结构,它注重于将系统的用户界面(在客户机上)和系统的永久数据(在服务器上)清晰地分离开。客户、服务器系统是分布式系统的一个极端,它要求对客户、服务器之间的网络连接以及系统中的软件制品在结点上的物理分布做出决策。可以用部署图对这种客户、服务器系统的拓扑结构建模。
3)对全分布式系统建模
分布式系统的另一个极端是广泛的分布式系统,它通常由多级服务器构成。这种系统中一般存在着多种版本的软件制品,其中有一些版本的软件制品甚至还可以在结点间迁移。精心地构造这样的系统,需要对系统拓扑结构不断变化做出决策。可以用部署图可视化系统的当前拓扑结构及制品的分布情况,并推断拓扑结构变化的影响。
3. 常用建模技术
3.1 对嵌入式系统建模
开发一个嵌入式系统远远不只是软件的问题,还必须管理物理世界,其中有突然变化的移动部分、嘈杂的信号以及非线性的行为。对这样的系统建模时,还要考虑它与现实世界的接口,这意味着要考虑特殊的设备和结点。
部署图为项目的硬件工程师和软件开发者之间的交流提供了方便。通过使用以被衍型化以使其外观上很像大家熟悉设备的结点,可以建立软件、硬件工程师都能理解的图。部署图还有助于软件与硬件之间的折中。可以使用部署图来可视化、详述、构造和文档化系统工程决策。
对嵌入式系统建模,要遵循如下的策略:
- 识别系统所特有的设备和结点。
- 使用UML的扩展机制定义系统专有的衍型,并具有适当图标,以提供可视化提示。
- 在部署图中对处理器和设备之间的关系建模
- 可以把任何智能设备展开,用更详细的部署图对它的结构建模。
下图描述了一个简单的自主机器人中的硬件。

3.2 客户服务器系统建模
当开始开发一个其软件要运行在多个处理器上的系统时,要面对许多决策问题:如何将软件制品最佳地分布在各个节点上?他们之间如何通信,如何处理失败和噪音问题?作为分布式系统谱系的一个极端,将会遇到客户、服务器系统,其中系统的用户界面(通常由客户机管理)和数据(通常由服务器管理)之间有明显的职责划分。
客户、服务器系统有许多变种。例如,可以选用廋客户机,即它的计算能力有限,只负责用户界面和信息可视化。瘦客户机上不必保持许多制品,而是设计得可根据需要从服务器上载入制品。另一方面,可以选用胖客户,这意味着它具有较强的计算能力,它除了用作信息可视化外还完成许多其他工作。通常,胖客户机还实现系统的逻辑与业务规则。选用瘦客户机还是胖客户机是一个受许多技术、经济和政策因素影响的体系结构决策。
无论哪种方式,将系统分为客户部分和服务器部分都涉及一些关于在物理上将软件制品放在何处以及如何在这些制品之间达到职责平衡分布的困难决策。例如,大多数管理信息系统基本上都采用三级体系结构,也就是将系统的图形用户界面(GUI)、业务逻辑和数据库在物理上划分开。决定将图形用户界面和数据库放在何处通常是明显的,困难之处在于决定业务逻辑的放置位置。
可以使用UML的部署图来可视化、详述和文档化对客户、服务器系统的拓扑结构的决策以及它的软件制品如何在客户机和服务器上分布的决策。通常要对整个系统建立一个部署图,再根据需要对系统中个别部分建立较详细的部署图。
对客户服务器系统建模,要遵循如下策略:
- 识别代表系统中的客户和服务器处理器的结点
- 重点识别出与系统行为有密切关系的设备。
- 通过衍型化,为这些处理器和设备提供可视化提示。
- 在部署图中对这些结点的拓扑结构建模,类似的,说明系统实现视图中的制品与系统部署视图中的结点之间的关系。
下图是一个人力资源系统的拓扑结构

3.3 对分布式系统建模
分布式系统有许多形式,从简单的双处理器系统到跨越在地理上分散的许多结点的系统都属于此类系统。后一种方式一般不是静态的。可以在网络流量变化和处理器失败时动态增加和删除结点:也可以建立新的、快速的通信途径,与旧的、慢速的,最终要被更新换代的通道并行。不仅这类系统的拓扑结构可以变化,其软件制品的分布也可以变化。例如,可以在多个服务器之间复制数据库表,即在检测到传输拥挤时,可以改变设置地点。
对全分布式系统建模时,要遵循如下策略:
- 像对待简单的客户、服务器系统那样,识别出系统的设备和处理器。
- 如果需要刻画系统得到网络的性能或者网络变化带来的影响,那么对这些通信设备建模,一定要达到足以做出这些估计的详细程度。
- 特别注意结点的逻辑分组,可以通过使用包来描述。
- 用部署图来对这些设备和处理器建模。尽量使用工具遍历系统的网络以发现系统的拓扑结构。
- 如果要着眼于系统的动态方面,则引进用况图以描述所感兴趣的行为模型,并利用交互图来展开用况。

3.4 正向工程和逆向工程
对部署图只能进行有限的正向工程(从模型生成代码)。例如,在制品图中描述了制品在各结点上的物理分布之后,就可以用工具把这些制品放置到现实世界中。
从现实世界到部署图的逆向工程(从代码产生模型)具有非常重要的价值,特别是对经常变化的全分布式系统更是如此。
4. 提示和技巧
当用UML创建部署图时,记住每一个部署图只是系统静态部署图的一个图形表示。这意味着单个部署图不必捕获系统部署视图的所有内容。系统所有的部署图一起表示了系统的完整的静态部署
视图,每一个部署图只反映系统部署视图的一个方面。
一个结构良好的部署图,应满足如下要求:
- 侧重于描述系统的静态部署视图的一个方面
- 只包含对理解这个方面是必要的那些元素。
- 提供与抽象级别一致的细节,只显露对于理解问题是必要的那些修饰。
- 不要过分简化,以免读者对重要语义产生误解。
当绘制一个部署图时,要遵循如下策略:
- 取一个能表示其意图的名称
- 摆放元素时尽量避免线的交叉。
- 在空间上合理地组织模型元素,使得在语义上接近的事物在物理位置上也比较接近。
- 用注解和颜色可视化提示,把注意力吸引到图中的重要特征上。
- 谨慎地使用衍型化元素。为项目或组织选择少量通用图标,并在使用它们时保持一致。
边栏推荐
- Signal relay rxsf1-rk271018dc110v
- 21 reasons why you need social media QR code
- A simple understanding of b+ tree
- 人类想要拥有金钱、权力、美丽、永生、幸福……但海龟只想做一只海龟
- arm交叉编译链下载地址
- Logrotate log rotation method create and copyruncate principles
- MySQL45讲 01 | 基础架构:一条SQL查询语句是如何执行的?
- 记录一下使用JPA时遇到的坑
- The evil 203 in systemctl
- ^33 variable promotion and function promotion interview questions
猜你喜欢

^34 scope interview questions

redis 總結

十折交叉验证代码中的问题

VirtualBox virtual machine shut down due to abnormal system. The virtual machine startup item is missing

ReentrantLock源码分析

MATLAB中stairs函数使用

AcWing 41. Stack containing min function (monotone stack)

记录一下使用JPA时遇到的坑

SOT23(Small Outline Transistor)

C# 35. 选择默认网卡
随机推荐
字节序(网络/主机)转换
[the 11th national competition of Blue Bridge Cup single chip microcomputer]
C# 36. DataGridView line number
K59. Chapter 2 installing kubernetes V1.23 based on binary packages -- cluster deployment
DrQueueOnRails 集成 LDAP 验证
LLD monitored by ZABBIX
如何查看glibc版本
manuscript手稿格式准备
redis 總結
SharDingJDBC-5.1.0按月水平分表+读写分离,自动创表、自动刷新节点表
Byte order - how to judge the big end and the small end
Manuscript manuscript format preparation
AcWing 1986. 镜子(模拟,环图)
go基于腾讯云实现发送短信
NFT数字藏品的可验证性和稀缺性
35. 搜索插入位置
^33变量提升和函数提升面试题
Golang Foundation (7)
AI - face
套接字编程TCP篇