本章内容

  • 对嵌入式系统建模
  • 对客户、服务器系统建模
  • 对全分布式系统建模
  • 正向工程和逆向工程

部署图是用来对面向对象系统的物理方面建模的两种图之一。部署图展示运行时处理的结点和在结点上生存的制品的配置。

部署图用来对系统的静态部署视图建模。多少情况下,这包括对系统运行于其上的硬件拓扑结构建模。部署图实质上是针对系统结点的类图。

部署图不仅对可视化、详述及文档化嵌入式系统、客户服务器系统和分布式系统是重要的,而且它对通过正向工程和逆向工程来管理可执行系统也是重要的。

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创建部署图时,记住每一个部署图只是系统静态部署图的一个图形表示。这意味着单个部署图不必捕获系统部署视图的所有内容。系统所有的部署图一起表示了系统的完整的静态部署

视图,每一个部署图只反映系统部署视图的一个方面。

一个结构良好的部署图,应满足如下要求:

  • 侧重于描述系统的静态部署视图的一个方面
  • 只包含对理解这个方面是必要的那些元素。
  • 提供与抽象级别一致的细节,只显露对于理解问题是必要的那些修饰。
  • 不要过分简化,以免读者对重要语义产生误解。

当绘制一个部署图时,要遵循如下策略:

  • 取一个能表示其意图的名称
  • 摆放元素时尽量避免线的交叉。
  • 在空间上合理地组织模型元素,使得在语义上接近的事物在物理位置上也比较接近。
  • 用注解和颜色可视化提示,把注意力吸引到图中的重要特征上。
  • 谨慎地使用衍型化元素。为项目或组织选择少量通用图标,并在使用它们时保持一致。

UML系列文章(31)体系结构建模---部署图相关推荐

  1. 推荐介绍一项新的工程技术:[威胁建模]的相关系列文章《威胁建模Web 应用程序》...

    以往我们建立和开发web应用,特别是要部署到Internet上的工程项目,都要多多少少考虑一些安全性问题,分析可能存在的漏洞,来决定如何有效防范攻击,但是很少有公司或个人将这种行为活动归结到项目的建模 ...

  2. UML系列文章(15)---构件

    构件是系统中逻辑的并且可替换的部分,它遵循并提供一组接口的实现. 好的构件用定义良好的接口来定义灵活的抽象,这样就可能容易地用新的兼容构件代替旧的构件. 接口是连接逻辑模型和设计模型的桥梁.例如,可以 ...

  3. UML系列文章(14)---对象图

    在UML中可以使用类图来可视化系统构造块的静态方面.还可以使用交互图来可视化系统的动态方面,交互图由构造块的实例和在它们之间分发的消息组成.对象图包含一组类图中事物的实例.因此,对象图表达了交互的静态 ...

  4. UML系列文章(19)基本行为---交互图

    顺序图和通信图(均是交互图)是UML中用于对系统的动态方面进行建模的5种图中的两种.交互图表现的是一个交互,由一组对象和它们之间的关系组成,包括它们之间可能传递的消息.顺序图是强调消息时间顺序的交互图 ...

  5. UML系列文章(6)---公共机制

    入门 有时在原有基础上增加一些定制特色,比如说明新特性等.需要额外的注解, 衍型.标记值和约束时UML提供的用以增加新的构造块,创建新的特性和说明新的语义的机制.如, 2.术语和概念 注解(note) ...

  6. UML系列文章(23)高级行为---进程和线程

    主动对象.进程和线程 对多控制流建模 对进程间通信建模 建立线程安全的抽象 现实世界不仅是一个严厉无情的地方,而且还是一个非常忙碌的地方.一些事件和事情都在同一时间发生.因此,当对现实世界的系统建模时 ...

  7. UML系列文章(18)基本行为---用况图

    UML中的用况图是对系统的动态方面建模的5种图之一(另外4种是活动图.状态图.顺序图.通信图).用况图是对系统.子系统或类的行为进行建模的核心.每张图都显示一组用况.参与者以及它们之间的关系. 在UM ...

  8. UML系列文章(22)高级行为---状态机

    本章内容: 状态.转移和活动 为对象的生命周期建模 创建结构良好的算法 使用交互,可以对共同工作的对象群体的行为建模.使用状态机,可以对单个对象的行为建模.状态机是一个行为,它说明对象在它的生命周期中 ...

  9. UML建模系列文章总结 (转载)

    一.为什么要学习UML 二.UML的历史 三.UML的特点 四.UML中的视图 五.UML建模工具 六.UML的应用领域 七.UML的构成 1.需求阶段如何书写Use Case 2.设计阶段如何画用例 ...

最新文章

  1. 安卓真机测试安装时报错
  2. **极光推送PHP服务器端推送移动设备消息(Jpush V2 api)
  3. QGLViewer编译过程
  4. vue截取一个字符串_vue 截取字符串
  5. 相比 Windows 为什么越来越多人选择Linux?
  6. sql SELECT时的with(nolock)选项说明
  7. windows10计算机用户密码,忘记Windows 10系统密码?教你重置
  8. 打印机显示rpg服务器不可用,网络打印机“RPC服务器不可用”的终极解决办法
  9. elasticsearch 模板
  10. 新塘单片机烧写器_新唐MCU常用的工具软件
  11. 桌面上出现两个计算机图标,电脑桌面图标出现成双显示要怎么解决
  12. SLE12 Server 在线安装MySQL Server
  13. android推送设备id,第三方推送ID配置
  14. ansible防火墙firewalld设置
  15. java读取qq邮箱_通过java给qq邮箱发送信息
  16. 关于spoolsv.exe 报错,并打印服务停止的问题
  17. excel自定义功能区图标_将您自己的图标添加到Excel自定义功能区选项卡
  18. 5G/NR 下行物理信道之PDCCH概要
  19. steam饥荒云服务器搭建
  20. 怎么退出自适应巡航_自适应巡航功能是何方神圣?“全速域自适应巡航”又有什么作用呢...

热门文章

  1. 教育机构招生小程序解决招生难题
  2. 【云计算】云计算架构师ACE成长路线
  3. python print end报错_python中print()函数的用法和end=不换行详解
  4. 快速排序,快速选择排序,选择排序的区别
  5. 达梦数据库的模式、状态介绍
  6. 数据库模式 内模式 概念模式(模式)外模式
  7. 【第一弹】Python题库刷题---完事开头难,从基础题开始
  8. 使用JavaScript刷新验证码
  9. numpy.ones和numpy.zeros函数
  10. 【华为OD机试真题】字符串解密(C++javapython)100%通过率 超详细代码注释 代码解读