系列之---系统建模[中篇](下)
一、上章回顾
首先、我们先来回顾下,上篇讲解的内容,加深下印象。上篇我们主要讲解了3个建模图形分别是:顺序图(序列图)、组件图、状态图。
具体功能描述如下图:这里不详细解释,如果不清楚请看:系统架构师-基础到企业应用架构-系统建模[中篇](上)
由于全部放在一篇中篇幅太长了,所以分开讲解。
二、摘要
本文主要讲解:UML建模图中的活动图、部署图等
上图中就是本章要讲解的内容,本质将仔细的剖析,部署图与组件图的关系与区别,活动图与状态图的关系与区别。
三、本章内容
1、上章回顾。
2、摘要。
3、本章内容。
4、建模中的抽象模型图之部署图、活动图。
5、本章总结。
6、系列进度。
7、下篇预告。
四、抽象模型图之部署图、活动图
部署图
首先,我们先来讲解部署图。部署图主要是用来描述一系列组件部署到节点运行的结构。部署图显示了系统运行时的结构。一般情况下部署图帮助我们来理解分布式应用系统。同时部署图还传达了构建应用系统的软件与硬件元素的配置及部署方式。
部署图中的基本元素:
1、节点:这里就是指组件运行的环境。可以是软件(操作系统、其他等)或硬件资源(计算机,其他硬件)。
UML建模语言中的通用图形化表示为:
2、节点实例:节点实例与节点的区别就是有下划线和冒号,节点实例必须紧跟冒号,当然这个节点实例名称可以为空,节点必须要有。
3、组件容器:一个节点可以包含其他节点,可以是组件,也可以是节点。
4、节点之间的关系
(1)、单向依赖:
上图表示 查询统计组件,通过.net提供的ADO.NET访问SQLServer2005数据库。
(2)、双向依赖:
上图表示:产品管理模块会把数据写入到数据库中,同时产品管理中的信息会从数据库中读取,双向依赖。
(3)、通信:
上图表示:应用软件系统与数据库通过.NET提供的方式相互通信,个人理解任务就是双向通信(双向依赖)[错误之处,还请高人指出]。
5、实例讲解:
下面我们已一个简单的系统B2C来进行讲解:
我们先来看看B2C系统中的相应节点:
客户端通过浏览器访问B2C站点,首先进入会员管理,如果注册,则进入到注册系统。会员管理中完成对采购的管理、支付、发布等。
节点描述:
浏览器:通过键入网站地址访问B2C站点。这是与B2C系统交互的唯一入口。
注册系统:完成用户的注册与数据库通信。图上并未画出,所有的节点除了浏览器不需要直接与数据库交互外,其他的模块都需要与数据库通信。
会员管理:完成会员中心的管理。会员的个人信息,开店的店铺信息,收货地址等等信息的管理,我的采购,我发布的产品等等。
采购系统:系统中的子功能,用于完成买家的产品采购。
发布系统:主要为卖家提供服务,发布产品信息等。与数据库通信
支付系统:完成支付交易的操作。与个人账户进行通信。
当然这里只是举个简单的例子,其他的内容,比如前台的展示等等,这些目前都没有考虑其中,也没有仔细分析,这里只是达到介绍的目的。
6、总结
通过上面的讲解相信大家对部署图已经有了基本的认识,部署图主要是用来完成将组件部署到节点上运行的结构。从整体上描述了,系统运行时的结构。部署图是必须要掌握的建模图。
活动图
活动图主要是用来描述系统的动态行为,从一个活动到另一活动的控制流。活动图的本质是流程图,但是与流程图又有所不同。在本小节中将会详细的讲解活动图与流程图的本质的区别及活动图与状态图的区别。
按照惯例,我们先来看看活动图的元素:
1、动作状态:
通过用圆形边的长方形来表示一个动作状态。动作状态有几个特点:原子性(要么执行,要么不执行)、不可中断的操作,并且此次动作完成后一定转向到另外一种状态。
动作状态是构造活动图的最小单位。
状态图区别:
a、活动图中动作状态可以有入转换与出转换,意思就是说可以从当前状态转向到另外一个状态,也可以从另外一个状态转换到当前状态。图形化的表示如下:
B动作状态,可以有入转换A,出转换C。
动作状态必须至少有一个出转换,转换都是以内部的完成为起点,与外部事件无关。
实心圆:代表起始状态。
环形内的实心圆:代表结束状态。
b、动作状态与状态图不同的是,动作状态不能有入口动作与出口动作。更不能有内部转移。
2、活动状态:
通过二个半圆与一个长方形组合起来来标识活动状态。
活动状态首先可以被分解成多个子活动或者多个子动作状态。活动状态他不像动作状态是原子性的。活动状态是非原子性。活动图内部的活动,可以用另外一个活动图来表示。活动状态可以看作多个动作状态和多个子活动的组合。
活动状态与动作状态不同,动作状态是活动状态的一个特例,当某个活动状态只有一个动作状态时,这个活动状态就是一个动作状态。活动状态可以有入口动作和出口动作。还可以有内部转移。因为活动图是多个子活动和多个动作状态的组合,所以本来动作状态直接的转向就可以看作是内部转移了,所以就很好理解了。
上图已经基本表示出来了活动状态中的动态状态的转移等。我相信大家都能理解。
3、动作节点之间的关系
a、控制流:
与状态图中的转向相同,活动图也使用一个带箭头的线段,箭头指向要转入的状态。
b、分支:
活动状态从A分支出来活动状态B、C,
c、合并:
活动状态B从活动状态A与C合并后得到。
d、泳道:泳道将活动图中的多个活动划分成多个组。并且把每一组活动都由对象来负责组织业务,泳道区分了负责活动的对象。并且泳道明确的表示了哪些活动是由哪些对象进行的。泳道通过垂直线来区分。而2个垂直线分割的区域即是一个泳道。上面的解释可能有点绕,说白了泳道即是上面说的对象,对象就是泳道。把不同的泳道就叫一个对象。每个活动状态在有泳道的活动图中,只能属于一个泳道。
下面来看有泳道的图例:
上面有2个泳道,分别是我是泳道1,我是泳道,并且我是泳道1中的D与我是泳道中的活动状态A有转向关系。
e、对象流。
对象流是对象与动作状态或者活动状态直间的依赖关系。表示动作使用对象或者动作对对象的影响。一般我们在使用中,我们可以把对象通过依赖关系与动作状态或者活动状态进行链接。
对象流的几个特点:
(1)、一般一个对象可以由多个活动状态或动作状态操作。
(2)、一个活动状态或动作状态的输出对象可以作为另一个活动状态或动作状态的输入。
(3)、一个对象可以在一个活动图中多次出现,但是有点需要注意,这个对象多次出现时表名该对象处于生命周期的不同时期。
包含对象流的活动图:
泳道M1中出现了对象。并且该对象与活动状态B有依赖关系。
总结
本节中讲解了,活动图的基本知识,下面我们以我们平时比较熟悉的B2C业务,电子商城为例说明下,会员的产品管理流程。通过状态图的形式来表达。以巩固下我们学习的成果。
例如B2C中的产品管理。首先必须是会员才能登入系统中,然后必须是我是卖家,然后才能进行发布产品的操作。
会员先要开启店铺,设置权限后才能进行产品管理
五、本章总结
本章主要讲述了部署图与活动图。现在我们回顾下本章要点。
部署图:主要用来描述一系列组件部署在节点上运行的结构,是系统运行是的结构的描述。主要用于软件系统的活动图:主要用来描述系统的动态行为,从一个活动转换到另外一个活动状态。通过一系列的操作将业务流程通过工作流的形式来描述。一系列操作就是一系列的活动状态。
系列之---系统建模[中篇](下)
一、上章回顾
上一篇:系统架构师-基础到企业应用架构-系统建模[中篇](下)
中我们主要讲解了部署图、活动图,我们在这里也是参考上篇的形式,这里不再详细介绍。上篇主要讲解了下面2类建模图:
二、摘要
本文将讲解其他的几个类型的建模图当然只是简单的讲解,并且将结合B2C电子商城系统进行分析通过使用我们已经讲解的建模图为例。分析系统可划分的子功能模块,每个功能模块内部的运行步骤等等。
上面的2个不同类型的进行划分的建模图,本章将对上述6个建模图进行分别举例讲解。
三、本章内容
1、上章回顾。
2、摘要。
3、本章内容。
4、结构图。
5、行为图。
6、本章总结。
7、系列进度。
8、下篇预告。
四、结构图
1、对象图
首先、我们闲来讲解对象图。对象图用来描述系统的各个对象在某一时刻的状态。对象和类图一样他们是静态结构图。他们是从实际的或者原型化的场景去表达的。对象图显示了某一时刻对象与对象的关系。一个对象图可以看作类图的特殊用例,类图中的关系同样适用在对象图中。可以这样理解,对象图就是类图的实例。对象图是有生命周期的,因此对象图只在某个时间段内存在。
对象图中的元素在类图中都可以找到,只是把类图中的类元素换成对象即可。而类图中类元素之间的关系,在对象图中同样适用。这里不在复述。如果对类图不是特别的熟悉,请看这篇文章中的讲解:系统架构师-基础到企业应用架构-系统建模[上篇]。
下面讲解对象图的举例:
这里的对象是指某个类的实例。
这样的格式表示了某个类的实例的格式,冒号“:”后面跟着类名,也就是这里的“父类”。另外还必须加上下划线。
对象首先是一个确定,所以一般情况下,对象属性一般把值直接列出来。如下形式:
对象图中的所有的对象名可以为空,但是为了更好的标识对象图中的对象,不建议这么做,并且如果未指定对象名那么必须指定该对象所属的类格式如下:
没有对象名的对象实例。
下面以B2C中的订单系统中的新订单的状态为例,讲述下各对象的状态。
这里的关系表示的是组合关系
上图中的订单信息的状态:订单(新订单)-物流信息(未发货)-支付信息(未支付)-产品状态(产品信息)。
2、包图
包图就是由包与包之间的关系组成的。
包图也是一种静态结构,包可以拥有的元素:
我想上面的元素大家都是有所了解的,我这里就不一样举例说明了,下面通过一个例子来显示如何使用包图。
包的访问限制:与我们平时了解的3个访问权限设置关键字用法相同。
包与包之间的关系:
a、引入与访问依赖:首先这个关系与平时我们说的类的继承关系是不同的.包括包的访问域不能继承。
用于在一个包中引入另一个包输出的元素,因此A依赖B,包A引入包B中的B方法。B这里的访问权限是公共的。A中的方法是保护的。
b、泛化关系:
泛化关系描述了一种继承关系。即基类与特殊类之间的关
系,途中描述的意思是只要是包A出现的位置都可以用包B替换。
3、组合结构图
组合结构图:以结构化的方式给出类型的内部结构。组合结构图是一种静态结构,它显示了一个类型内部的成员及成员之间的关系。组合结构图可以这样理解,就是描述类的内部结构及成员之间的调用关系的建模图。组合结构图用于扑捉类的内部细节,描述了对象如何在某个类中协同工作。
组合图中其实就是描述类的内部的结果,基本上的元素有:类、对象,其他等,具体的关系请参考类图中的关系。
组合图实例:
上图显示了产品与产品品牌与产品分类的组合关系。产品品牌与产品分类是关联关系(关联关系可以是1:N),通过一条直线来链接。如果有不清楚的地方请看类图的相关介绍:系统架构师-基础到企业应用架构-系统建模[上篇]。
五、行为图
1、通信图
在UML建模中除了顺序图(序列图)可以表示对象之间的交互外,通信图也可以完成通用的描述。一般情况下,二类图可以进行互转。
首先、我们先来分析下2类图的不同。
我们还是先来看下通信图中的元素:
上图中的主要组成元素是对象。对象之间的关系,通过链接来完成。然后通过一个带有实体三角形的线段指向要发送消息的对象。
下面来解释下对象之间的关系。
还有就是消息给自己发送的特殊消息。
返回消息的类型:
下面我们来简单举例如何说明:
上图中简单描述了发送邮件的过程。我们可以看出通信图相比顺序图更注重对象之间的链接关系。我们通过通信图能够知道一个系统中的某个流程中各对象直接的链接关系及传递的完整信息传递过程。
首先、我们闲来讲解对象图。对象图用来描述系统的各个对象在某一时刻的状态。
2、时间图
时间图:主要用来描述一段时间内对象的行为(状态的变化,执行的动作等等)。主要用来模拟即时系统模型。与对象图类似,不同的是时间图描述的一个时间段,而对象图描述的一个时间点。对象图关心对象的状态,而时间图关心的是对象的行为。
这里设置了定时器之后,对象的状态将会从A,在定时器时间到达后自动的跳转到状态B。这里表示的是定时器来控制状态的迁移。
时间图中支持异步信息,时间图采用垂直图的方式来描述系统的执行顺序。
时序图等于是在序列图(顺序图上)加上时间的限制就构成了时间图。
从垂直的角度来看,就是说A调用B先于B返回值给A,从时间图上就可以清晰的看出来对象的行为。 一般情况下我们可以通过序列图来完成相应的描述。除非需要定义一个时间段的对象时才会用到时间图。包括某个对象到某个对象的调用都可以通过时间限制来进行行为的控制等。
六、本章总结。
本章中主要简单的讲述了几类UML2.0语言相比UML1.0新增的几类建模图,虽然我们平时可能用的比较少,但是某些特定的领域范围,通过这些图可能更能清晰的表达抽象模型。
1、对象图:描述系统在某一时刻的状态。
2、包图:描述系统中的某个模块的内部组成结构,是由元素及元素之间的关系构成的。
3、组合结构图:以结构化的方式描述了系统中的某个类型的内部结构。
4、通信图:描述了对象之间的交互与顺序图不同的是,交互图更关注对象之间的链接及通信。
5、时间图:描述了在一个时间段内的对象的行为。
当然具体的建模图如何使用及在实际的项目中如何去应用分析,这才是最主要的目的,当然这就需要理论结合实际来达到学以致用的效果。下一篇,我讲专门的讲解针对B2C电子商城为例,详细的剖析UML建模的具体应用。
|