### 一、上章回顾
首先、我们先来回顾下,上篇讲解的内容,加深下印象。上篇我们主要讲解了3个建模图形分别是:顺序图(序列图)、组件图、状态图。
具体功能描述如下图:这里不详细解释,如果不清楚请看:[系统架构师-基础到企业应用架构-系统建模[中篇](上)](http://www.cnblogs.com/hegezhou_hot/archive/2010/09/11/1824084.html)
[![image](https://box.kancloud.cn/2016-05-16_573996f99c645.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_2.png)
由于全部放在一篇中篇幅太长了,所以分开讲解。
### 二、摘要
本文主要讲解:UML建模图中的活动图、部署图等
[![image](https://box.kancloud.cn/2016-05-16_573996f9b54a8.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_4.png)
上图中就是本章要讲解的内容,本质将仔细的剖析,部署图与组件图的关系与区别,活动图与状态图的关系与区别。
### 三、本章内容
1、上章回顾。
2、摘要。
3、本章内容。
4、建模中的抽象模型图之部署图、活动图。
5、本章总结。
6、系列进度。
7、下篇预告。
### 四、抽象模型图之部署图、活动图
#### 部署图
首先,我们先来讲解部署图。部署图主要是用来描述一系列组件部署到节点运行的结构。部署图显示了系统运行时的结构。一般情况下部署图帮助我们来理解分布
式应用系统。同时部署图还传达了构建应用系统的软件与硬件元素的配置及部署方式。
部署图中的基本元素:
1、节点:这里就是指组件运行的环境。可以是软件(操作系统、其他等)或硬件资源(计算机,其他硬件)。
UML建模语言中的通用图形化表示为:
[![image](https://box.kancloud.cn/2016-05-16_573996f9d3584.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_8.png)
2、节点实例:节点实例与节点的区别就是有下划线和冒号,节点实例必须紧跟冒号,当然这个节点实例名称可以为空,节点必须要有。
[![image](https://box.kancloud.cn/2016-05-16_573996f9e442e.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_10.png)
3、组件容器:一个节点可以包含其他节点,可以是组件,也可以是节点。
[![image](https://box.kancloud.cn/2016-05-16_573996fa03070.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_14.png)
4、节点之间的关系
(1)、单向依赖:
[![image](https://box.kancloud.cn/2016-05-16_573996fa1aa51.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_16.png)
上图表示 查询统计组件,通过.net提供的ADO.NET访问SQLServer2005数据库。
(2)、双向依赖:
[![image](https://box.kancloud.cn/2016-05-16_573996fa32275.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_18.png)
上图表示:产品管理模块会把数据写入到数据库中,同时产品管理中的信息会从数据库中读取,双向依赖。
(3)、通信:
[![image](https://box.kancloud.cn/2016-05-16_573996fa48449.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_20.png)
上图表示:应用软件系统与数据库通过.NET提供的方式相互通信,个人理解任务就是双向通信(双向依赖)[错误之处,还请高人指出]。
5、实例讲解:
下面我们已一个简单的系统B2C来进行讲解:
我们先来看看B2C系统中的相应节点:
[![image](https://box.kancloud.cn/2016-05-16_573996fa60558.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_26.png)
客户端通过浏览器访问B2C站点,首先进入会员管理,如果注册,则进入到注册系统。会员管理中完成对采购的管理、支付、发布等。
节点描述:
浏览器:通过键入网站地址访问B2C站点。这是与B2C系统交互的唯一入口。
注册系统:完成用户的注册与数据库通信。图上并未画出,所有的节点除了浏览器不需要直接与数据库交互外,其他的模块都需要与数据库通信。
会员管理:完成会员中心的管理。会员的个人信息,开店的店铺信息,收货地址等等信息的管理,我的采购,我发布的产品等等。
采购系统:系统中的子功能,用于完成买家的产品采购。
发布系统:主要为卖家提供服务,发布产品信息等。与数据库通信
支付系统:完成支付交易的操作。与个人账户进行通信。
当然这里只是举个简单的例子,其他的内容,比如前台的展示等等,这些目前都没有考虑其中,也没有仔细分析,这里只是达到介绍的目的。
6、总结
通过上面的讲解相信大家对部署图已经有了基本的认识,部署图主要是用来完成将组件部署到节点上运行的结构。从整体上描述了,系统运行时的结构。部署图是
必须要掌握的建模图。
#### 活动图
活动图主要是用来描述系统的动态行为,从一个活动到另一活动的控制流。活动图的本质是流程图,但是与流程图又有所不同。在本小节中将会详细的讲解活动
图与流程图的本质的区别及活动图与状态图的区别。
按照惯例,我们先来看看活动图的元素:
1、动作状态:
[![image](https://box.kancloud.cn/2016-05-16_573996fa7a648.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_28.png)
通过用圆形边的长方形来表示一个动作状态。动作状态有几个特点:原子性(要么执行,要么不执行)、不可中断的操作,并且此次动作完成后一定转向到另外一种
状态。 动作状态是构造活动图的最小单位。
状态图区别:
a、活动图中动作状态可以有入转换与出转换,意思就是说可以从当前状态转向到另外一个状态,也可以从另外一个状态转换到当前状态。图形化的表示如下:
[![image](https://box.kancloud.cn/2016-05-16_573996fa8c10f.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_32.png) B动作状态,可以有入转换A,出转换C。
动作状态必须至少有一个出转换,转换都是以内部的完成为起点,与外部事件无关。
实心圆:代表起始状态。
环形内的实心圆:代表结束状态。
b、动作状态与状态图不同的是,动作状态不能有入口动作与出口动作。更不能有内部转移。
2、活动状态:
[![image](https://box.kancloud.cn/2016-05-16_573996faa361b.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_34.png)
通过二个半圆与一个长方形组合起来来标识活动状态。
活动状态首先可以被分解成多个子活动或者多个子动作状态。活动状态他不像动作状态是原子性的。活动状态是非原子性。活动图内部的活动,可以用另外一个
活动图来表示。活动状态可以看作多个动作状态和多个子活动的组合。
活动状态与动作状态不同,动作状态是活动状态的一个特例,当某个活动状态只有一个动作状态时,这个活动状态就是一个动作状态。活动状态可以有入口动作
和出口动作。还可以有内部转移。因为活动图是多个子活动和多个动作状态的组合,所以本来动作状态直接的转向就可以看作是内部转移了,所以就很好理解了。
[![image](https://box.kancloud.cn/2016-05-16_573996fab60fb.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_38.png)
上图已经基本表示出来了活动状态中的动态状态的转移等。我相信大家都能理解。
3、动作节点之间的关系
a、控制流:[![image](https://box.kancloud.cn/2016-05-16_573996fad1462.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_40.png) 与状态图中的转向相同,活动图也使用一个带箭头的线段,箭头指向要转入的状态。
b、分支:[![image](https://box.kancloud.cn/2016-05-16_573996fb013d7.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_46.png) 活动状态从A分支出来活动状态B、C,
c、合并:[![image](https://box.kancloud.cn/2016-05-16_573996fb17a76.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_48.png) 活动状态B从活动状态A与C合并后得到。
d、泳道:泳道将活动图中的多个活动划分成多个组。并且把每一组活动都由对象来负责组织业务,泳道区分了负责活动的对象。并且泳道明确的表
示了哪些活动是由哪些对象进行的。泳道通过垂直线来区分。而2个垂直线分割的区域即是一个泳道。上面的解释可能有点绕,说白了泳道即是上面说的对象,对象就是
泳道。把不同的泳道就叫一个对象。每个活动状态在有泳道的活动图中,只能属于一个泳道。
下面来看有泳道的图例:
[![image](https://box.kancloud.cn/2016-05-16_573996fb2d5f2.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_50.png) 上面有2个泳道,分别是我是泳道1,我是泳道,并且我是泳道1中的D与我
是泳道中的活动状态A有转向关系。
e、对象流。
对象流是对象与动作状态或者活动状态直间的依赖关系。表示动作使用对象或者动作对对象的影响。一般我们在使用中,我们可以把对象通过依赖关系与动作状态或者活动状态进行链接。
对象流的几个特点:
(1)、一般一个对象可以由多个活动状态或动作状态操作。
(2)、一个活动状态或动作状态的输出对象可以作为另一个活动状态或动作状态的输入。
(3)、一个对象可以在一个活动图中多次出现,但是有点需要注意,这个对象多次出现时表名该对象处于生命周期的不同时期。
包含对象流的活动图:
[![image](https://box.kancloud.cn/2016-05-16_573996fb48bd4.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_52.png)
泳道M1中出现了对象。并且该对象与活动状态B有依赖关系。
#### 总结
本节中讲解了,活动图的基本知识,下面我们以我们平时比较熟悉的B2C业务,电子商城为例说明下,会员的产品管理流程。通过状态图的形式来表达。以巩固
下我们学习的成果。
例如B2C中的产品管理。首先必须是会员才能登入系统中,然后必须是我是卖家,然后才能进行发布产品的操作。
[![image](https://box.kancloud.cn/2016-05-16_573996fb657f3.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_56.png) 会员先要开启店铺,设置权限后才能进行产品管理
[![image](https://box.kancloud.cn/2016-05-16_573996fb77ba9.png "image")](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_58.png)
### 五、本章总结
本章主要讲述了部署图与活动图。现在我们回顾下本章要点。
部署图:主要用来描述一系列组件部署在节点上运行的结构,是系统运行是的结构的描述。主要用于软件系统的
活动图:主要用来描述系统的动态行为,从一个活动转换到另外一个活动状态。通过一系列的操作将业务流程通过工作流的形式来描述。一系列操作就是一系列
的活动状态。
### 六、系列进度。
##### 前篇
1、[系统架构师-基础到企业应用架构系列之--开卷有益](http://www.cnblogs.com/hegezhou_hot/archive/2010/09/07/1821012.html)
2、[系统架构师-基础到企业应用架构-系统建模[上篇]](http://www.cnblogs.com/hegezhou_hot/archive/2010/09/10/1822887.html)
3、[系统架构师-基础到企业应用架构-系统建模[中篇](上)](http://www.cnblogs.com/hegezhou_hot/archive/2010/09/11/1824084.html)
4、[系统架构师-基础到企业应用架构-系统建模[中篇](下)](http://www.cnblogs.com/hegezhou_hot/archive/2010/09/14/1826314.html)
5、系统架构师-基础到企业应用架构-系统建模[下篇]
6、系统架构师-基础到企业应用架构-系统设计规范与原则[上篇]
7、系统架构师-基础到企业应用架构-系统设计规范与原则[下篇]
8、系统架构师-基础到企业应用架构-设计模式[上篇]
9、系统架构师-基础到企业应用架构-设计模式[中篇]
10、系统架构师-基础到企业应用架构-设计模式[下篇]
##### 中篇
11、系统架构师-基础到企业应用架构-企业应用架构
12、系统架构师-基础到企业应用架构-分层[上篇]
13、系统架构师-基础到企业应用架构-分层[中篇]
14、系统架构师-基础到企业应用架构-分层[下篇]
15、系统架构师-基础到企业应用架构-表现层
16、系统架构师-基础到企业应用架构-服务层
17、系统架构师-基础到企业应用架构-业务逻辑层
18、系统架构师-基础到企业应用架构-数据访问层
19、系统架构师-基础到企业应用架构-组件服务
20、系统架构师-基础到企业应用架构-安全机制
##### 后篇
21、单机应用、客户端/服务器、多服务、企业数据总线全解析
22、系统架构师-基础到企业应用架构-单机应用(实例及demo)
23、系统架构师-基础到企业应用架构-客户端/服务器(实例及demo)
24、系统架构师-基础到企业应用架构-多服务(实例及demo)
25、系统架构师-基础到企业应用架构-企业数据总线(实例及demo)
26、系统架构师-基础到企业应用架构-性能优化(架构瓶颈)
27、系统架构师-基础到企业应用架构-完整的架构方案实例[上篇]
28、系统架构师-基础到企业应用架构-完整的架构方案实例[中篇]
29、系统架构师-基础到企业应用架构-完整的架构方案实例[下篇]
30、系统架构师-基础到企业应用架构-总结及后续
### 七、下篇预告。
下一篇中我们将会讲述:简单讲述其他的UML建模图,并且结合B2C实例,详细分析B2C系统应该具有的功能模块。及每个模块通过不同的建模图形的表示方
法,及如何在功能分析时使用恰当的建模图。
### 后语
希望看完本章的朋友可以从本篇中学到相应的UML建模知识,懂的人可以巩固下UML知识,本篇希望能够抛砖引玉,希望大家能够多提出宝贵意见。由于是本人
平时工作中的理解与总结,不足之处再所难免,还请大家批评指出!如果您有什么意见或建议,请多多提出!大家的支持就是我的最大动力!