译者说
一直以来,对UML部署图并没有仔细研究其设计理念,直接按照自己的理解画出能表达内容的样子就完事了。实际上,UML也在不断发展和完善,许多UML工具也都提供了良好的支持,有必要了解其设计理念,以达到事半功倍的效果。
概述
部署图是结构图的一种,它展示了系统的架构。例如:一个软件系统的众多实体(Artifacts)是如何构成部署目标(Node,节点)的。
实体(Artifact)表示在现实世界中具体的元素。实体通常是开发过程的结果,例如:可执行文件、库、存档、数据库schema、配置文件等等。
部署目标(Deployment target):通常用节点(Node)来表示,代表一个硬件设备或某些软件运行环境。节点可以通过communication paths构成任意复杂度的、网络连接的系统。
注意:在UML1.x部署图规范中,组件可以直接部署到节点中。但是在UML2.x规范中,实体可以部署到节点,实体也可以实现组件。组件则可以通过实体间接部署到节点。
译者说:在UML2.x规范中,组件不能直接部署到节点。
部署图可以用于描述规范级别的架构,也可以描述实例级别的架构。这与类图和对象图有点类似。
规范级别:展示从实体到节点的部署情况。不涉及具体的实体实例或节点实例。
实例级别:展示实体实例到具体的节点实例的部署情况。它可以用于展示不同部署之间的差异。例如,开发和生产环境的部署可以通过具体的名字或ID(这里指的是具体的构建、部署服务器、或设备)加以区分。
译者说:上文中已经提到,规范级别和实例级别其实就像类图和对象图之间的关系。规范级别是抽象的、统一的、不具体的、具有指导性;实例级别是具体的、特殊的、与实际紧密相关的,具有直观的现实意义。同样,类是抽象的、只是一种行为和属性的描述;而对象(也叫实例)是类的实例化结果,是具体的,对应一个有现实意义的事物。
常用的部署图有如下几种:
- 通过实体实现(展现)组件;
- 规范级别的部署图;
- 实例级别的部署图;
- 系统网络架构图;
译者说:以下就是逐一介绍四种用法。
通过实体实现组件
组件图展示了组件及组件之间的关系(包括分类器),而部署图则展示了实体到节点的部署情况。这里遗失了一个清单图(manifestation diagram),用于表示如何通过实体实现组件,也可以表示实体的内部结构。
然而,在UML2.4规范中,并未定义清单图。可以通过组件图或部署图来展示清单图。
样图如下:
规范级别的部署图
部署Web应用到Tomcat JSP服务器以及部署数据库schema到数据库系统的样图如下:
实例级别的部署图
部署应用到应用服务器以及部署若干schema到数据库服务器的样图如下:
系统网络架构图
部署图可以用于显示系统的逻辑或物理网络架构。它可能不需要实体和部署,也可能只有主要角色。样图如下: