第8章活动图.docx

上传人:b****1 文档编号:2060010 上传时间:2023-05-02 格式:DOCX 页数:16 大小:308.76KB
下载 相关 举报
第8章活动图.docx_第1页
第1页 / 共16页
第8章活动图.docx_第2页
第2页 / 共16页
第8章活动图.docx_第3页
第3页 / 共16页
第8章活动图.docx_第4页
第4页 / 共16页
第8章活动图.docx_第5页
第5页 / 共16页
第8章活动图.docx_第6页
第6页 / 共16页
第8章活动图.docx_第7页
第7页 / 共16页
第8章活动图.docx_第8页
第8页 / 共16页
第8章活动图.docx_第9页
第9页 / 共16页
第8章活动图.docx_第10页
第10页 / 共16页
第8章活动图.docx_第11页
第11页 / 共16页
第8章活动图.docx_第12页
第12页 / 共16页
第8章活动图.docx_第13页
第13页 / 共16页
第8章活动图.docx_第14页
第14页 / 共16页
第8章活动图.docx_第15页
第15页 / 共16页
第8章活动图.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第8章活动图.docx

《第8章活动图.docx》由会员分享,可在线阅读,更多相关《第8章活动图.docx(16页珍藏版)》请在冰点文库上搜索。

第8章活动图.docx

第8章活动图

第八章活动图

上一章中介绍了交互图,本章将介绍活动图,这两种图都是用来对系统动态方面进行建模,它们的区别在于,交互图的节点是对象,描述了对象之间通过消息进行协作;而活动图的节点是活动,强调了系统中多个的活动形成的控制流。

活动图是一种表述业务过程以及工作流的技术。

它可以用来对业务过程,工作流建模,也可以对用例实现,甚至是对程序实现进行建模。

活动图与流程图的最主要的区别在于,活动图能够标识活动的并行行为。

8.1活动图的概念

1.活动图

活动图是描述系统或业务的一序列活动构成的控制流,它描述了系统从一种活动转换到另一种活动的整个过程。

例如,有一个表示某公司销售过程的一张活动图,图8-1就是描述这一业务过程的活动图。

图8-1活动图

2.活动图的作用

活动图常用来描述业务或软件系统的活动轨迹,描述了系统的活动控制流程。

我们常用活动图对业务过程、工作流和用例实现进行建模。

3.活动图的组成元素

活动图的元素包括初始节点、终点、活动节点、转换、分支、分岔与汇合。

其中,转换、分支、分岔与汇合把多个活动节点连接在一起。

4.活动图与交互图

活动图和交互图是UML中对系统动态方面建模的两种主要形式,交互图强调对象与对象之间的交互消息,而活动图则强调的是从活动到活动的控制流程.

8.2活动图的表示

下面分别描述活动图中的元素的语义和表示法。

1.初始节点和终点

初始节点表示活动的起点;终点表示活动的终结点.用一个实心圆表示初始节点,用一个圆圈内加一个实心圆来表示活动终点.在活动图中,可能包含多个活动终点。

终点

初始节点

图8-2初始节点和终点

2.活动节点

活动节点是活动图中最主要的元素之一,它用来表示一个活动,一个活动表示多个动作的集合。

活动节点用一个圆角矩形表示.活动的名称写在圆角矩形内部,活动节点的表示方法,如图8-3所示。

图8-3活动节点的表示

在图8-4中列出的就是一些可能的活动节点描述,可能用文字描述活动节点,可能用表达式描述活动节点,可能用消息描述活动节点。

图8-4 活动节点

3.转换

当一个活动结束时,活动控制流就会马上传递给下一个活动节点,在活动图中称之为“转换”,用一条带箭头的直线来表示转换.下面的直线箭头就表示了一个转换.如图8-5所示。

图8-5转换的表示

4.分支与监护条件

在实际应用中,有三种活动控制流,它们是顺序结构、分支结构、循环结构.当从一个活动节点到另一个活动节点的转换需要条件时,常用分支与监护条件来表示活动的分支结构.

分支是用菱形表示的,它有一个进入转换(箭头从外指向分支符号),一个或多个离开转换(箭头从分支符号指向外)。

而每个离开转换上都会有一个监护条件,用来表示满足某种条件时才执行该转换。

分支的表示法,如图8-6所示。

图8-6分支的表示

在活动图中没有直接提供表示循环的建模元素,但可以利用分支来表示“循环”控制流。

例如,在图8-1所示的例子中,一个订单可能对应多个供应商,因此,如果订单没有完成的话,说明还有供应商没有完成送货任务,因此可以在分支“所有订单项已送货完毕”中增加了一个离开转换,指向“供应商送货”活动节点来表示这种循环。

5.分岔与汇合

在实际应用中,如果活动的转换是有条件的,我们就用分支与监护条件来表示转换,如果一些活动是并发执行的,我们就用分岔和汇合来表示并发活动。

分岔线和汇合线都使用加粗的水平线或垂直线段表示。

如图8-7所示。

分岔线

汇合线

图8-7分岔与汇合的表示

(1).分岔:

每个分叉可以有一个输入转换和两个或多个输出转换,每个转换都可以是独立的控制流。

(2).汇合:

当两个或多个并发控制流都达到汇合点后,活动流程才能进入下一个活动节点.

分岔用来表示两个或者多个并发活动的分支;而汇合则用于同步这些并发活动的分支,当且仅当所有的并发分支(活动)都到达汇合点后,活动流程才能进入下一个活动节点。

8.3活动图分类

按照活动图表示的信息不同,将活动图分为:

简单活动图、标识泳道的活动图、标识对象流的活动图、复合活动图。

8.3.1 简单活动图

图8-8就是一个描述订单处理的简单活动图,这个图既没有标识活动的执行者,也没有标识活动执行过程中,创建了哪些对象。

其中,每个活动都是简单的活动。

 

 

图8-8订单处理

8.3.2标识泳道的活动图

为了有效地表示各个活动由谁负责的信息,可以通过泳道(SwimLane)来实现。

例如,在图8-9的活动图中,活动的执行者包括窗口和打印机,因此可以将其分成二个泳道。

左边泳道中的所有活动的执行者是窗口;右边泳道中的所有活动的执行者是打印机。

每个泳道用一条垂直的线将它们分开,并且每个泳道都必须有一个唯一的名称,例如本例中的窗口和打印机。

从图中可以看出,每个活动节点,分支必须只属于一个泳道,而转换,分岔与汇合是可以跨泳道的。

通过泳道,不仅体现了整个活动控制流,还体现出了每个活动的实施者。

图8-9标识泳道的活动图

8.3.3标识对象流的活动图

在活动图中,存在这样一些现象:

一种情况是,可能存在一些对象进入一个活动节点,经过活动处理,修改了对象的状态;另一种情况是,活动节点创建或删除了一些对象;一些情况是,输出一些对象。

在这些活动中,对象与节点活动是紧密相关的,我们可以在活动图中把相关的对象标识出来,即,标识哪些对象进入活动节点,哪些对象从活动节点中输出,这对编程具有现实意义。

在UML中,我们可以在活动图中标识一个对象的角色,状态和属性值的变化,它的表示方法如图8-10所示。

 

图8-10活动图中的对象表示法

下图8-11表示了”订单处理”活动流程,本图标识了一些活动节点执行前,输入了哪些对象,活动节点执行后,输出了哪些对象,并标识了对象状态的变化。

图8-11标识对象流的活动图

在图8-11中,标识了一些关键的对象流,对象的状态也在图中作了标识:

(1)当“用户下订单”时,将创建一个Order类的实例,用来存放订单的信息,该Order类还包含着相应的OrderItem(针对每个产品一条)

(2)当“生成送货单”时,将根据Order类的实例创建多个DeliverOrder(送货单)的实例。

(3)当“修改订单项状态”之后,DeliverOrder对象的状态将变成finished。

当然,在这张活动图中实际上还蕴藏着许多对象流,例如:

(1)当“收款”后,Order类的实例的状态就变成了“已付款”。

(2)当“修改订单项状态”后,Order类中部分订单项的状态就变成了“已送货”。

(3)当用户取消或订单超过时限时,Order类的状态就将成为Cancel。

在实际应用中,绘制活动图时并不一定需要将所有的对象流都标识出来,这样会使活动图变得复杂、混乱。

在实际建模中,只对重要的对象进行描述。

8.3.4标识信号的活动图

在交互图中,利用“信号”可以增加活动图的可读性。

信号是表示两个对象之间进行异步通讯的方式,当一个对象接收到一个信号时,将触发信号事件。

1.信号

在活动图中,有三种信号元素,它们是:

发送信号,接收信号和时间信号,其表示方法如图8-12所示。

 

图8-12三种信号的表示法

(1)时间信号:

时间信号是用来表示随着时间的流逝而自动发出的信号,时间信号表示,当时间到达某个特定的时刻时,就会触发时间事件,例如每天10点时,闹钟开始响铃,10点钟发出响铃的信号就是时间信号。

(2)发送信号:

也就是发出一个异步消息,对于发送者而言,就是发送信号;对于接收到这种消息的目标而言,就是“接收信号’。

(3)接收信号:

就是接收者收到的一个外部信号。

2.活动图中标识时间信号

例如小张去必胜客饭店吃饭,发现要排队等待,他决定如果15分钟还轮不到,就到隔壁的肯德基吃饭,这时就可以通过上述的符号来表示小张吃饭的活动。

图8-13中假设小张排在最前面。

图8-13信号在活动图中的应用

在“小张”这个泳道中,两个控制流中只有一个会控制流会执行。

在时间信号发生之间,收到当必胜客饭店发出“有空位”信号,小张接收到“有空位”信号时,小张才会执行“进入必胜客”的活动;否则小张会执行“进入肯德基”的活动。

8.3.5标识参数的活动图

一个方法可以包含多个参数,一个活动节点也可能带有多个参数。

在绝大多数情况下,并不需要在活动图上标明参数信息,如果打算标明每个活动节点执行前,需要输入哪些参数,活动节点执行后,需要输出哪些参数,以及活动节点执行后,要进行的错误处理。

这时,在活动图中标明参数,使活动图表示更多的信息。

1.参数

参数是一个对象节点,用一个小矩形框表示。

参数分三种:

输入参数,输出参数,错误参数。

参数都标识在活动节点的边界上,输入参数标识在活动节点的左边界上;输出参数和错误参数标识在活动节点的右边界上。

参数有名称和序号,我们把参数名称和号标识在参数节点的旁边。

如图8-14所示。

图8-14中标识活动节点的输入参数和输出参数

在图8-14中,它表示活动“计算利息”节点将接受三个输入参数:

本金(principal)、利率(rate)、年限(year);如果传入的参数合法,那么将输出参数利息值(accrual);如果输入了错误的参数,则产生异常。

在这个例子中,在小矩形中添加箭头符号,以区别输入参数和输出参数的不同。

可以直接在参数边上标注表示参数顺序的数字。

例如在本图中,principal、rate和year分别是第1,2,3个参数。

另外,如果输出产生异常对象,则可以在符号边上标注一个空心三角形。

8.3.6标识扩展区的活动图

在活动图中,有时需要表示一个活动需要多次执行的情况。

例如在图8-8中,有三个活动节点“供应商送货”,“修改订单项状态”以及分支“所有订单项已送货完毕”都需要多次执行。

由于一个订单对应多个“送货单”,因此在图8-8中,通过“分支”来表示其循环控制流,这样表示活动,并不准确。

在图8-15中,我们采用了扩展区来表示活动节点的循环执行。

图8-15用扩展区表示活动节点的循环执行

8.3.7嵌套活动图

如果一个活动图又包含了子活动图,则称这种图为嵌套活动图(也称为主活动图)。

当一个活动图很复杂,我们可以把其中的一组相关活动看作一个子活动图,这时,在嵌套活动图中,用子活动图的简图代替子活动图。

我们可以将子图单独放在一个图中详细说明它的活动,然后,在嵌套活动图引用子活动图。

图8-15是一个嵌套活动图,其中的收款(活动)又是一个子活动图,子活动图的详细说明如图8-16所示。

图8-16子活动图

说明:

一般来说,我们在嵌套活动图中,用叉齿符号的子图(子活动图的简图)来代替子活动图。

8.4构建活动图

“活动图”是一种比较直观易懂的模型,它与传统的流程图十分相近,本节总结一下绘制活动图的大概思路,下面是绘制活动图几个关键步骤:

(1)如故希望在活动图中标识出活动的实施者,我们就应该采用标识泳道的活动图,这时,绘制活动图前,先找出活动的执行者,然后找出每个执行者参与的活动。

(2)在描述活动节点关系时,最大限度的采用分支,分岔和汇合等基本的建模元素来描述活动控制流程。

(3)如果希望标识出活动节点执行前后对象的创建、销毁情况,以及对象的状态变化情况,那么,在绘制活动图时,应该标识对象流,以及对象的状态变化。

(4)如果希望标识活动图中更详细的信息,就应该在活动图中,利用一些高级的建模元素(如顺序活动图、并发活动图、在活动图中标识发送信号与接收信号、用扩展区来标识活动的循环执行等等。

活动图主要应用对两个方面建模:

一是在业务分析阶段,对工作流程进行建模;二是在系统分析和设计阶段,对操作流程进行建模。

8.4.1对工作流程建模

用活动图对业务流程建模时,活动图中,每一条泳道表示一个职责单位(可以是个人,也可以是一个部门),每个泳道的执行者(或职责人)体现了职能部门的工作职责、业务范围、部门之间的交互关系。

说明:

矩形代表活动,菱形代表判断,平行线代表并行操作,带箭头线代表活动流,每个大列代表一个职能部门,最左边的每个分块代表业务阶段。

使用活动图来对工作流程进行建模时,应该遵循以下一些主要原则:

1.从整个工作流中,选出一部分能体现高层职责的部门,并为每个重要的职责部门创建一条泳道

2.标识工作流初始节点的前置条件和活动终点的后置条件,以便有效地找出工作流的边界。

3.从该工作流的初始节点开始,找出随时间推动的动作和活动,并在活动图中把它们标识成活动节点.

4.将复杂的活动或多次出现的活动用一个或多个子活动图的引用节点表示,然后为每个被引用的子活动图绘制出的详细活动图。

5.找出连接这些活动节点的转换,首先从工作流的顺序开始,然后考虑分支,接着再考虑分岔和汇合

6.如果标识出工作流中重要的对象,则也可以把对象流加入到活动图中

7.若工作流中有重复执行的活动,我们采用扩展区来表示循环活动

8.4.2对操作流程建模

在系统设计期间,我们用活动图对对象的职责进行建模,这时,这时,每一个对象占据一个泳道,而活动是该对象的成员方法。

在系统分析设计阶段,采用带泳道的活动图的情况较少,因为顺序图会更好地体现对象间的交互关系。

活动图更适合于对其流程进行概述,最常用的场景是通过活动图对用例描述中的事件流进行建模。

当用例的事件流较复杂,分支较多时,一张清晰明了的活动图能够帮助开发人员更好地理解程序的逻辑。

用活动图对操作进行建模时,应遵循以下原则:

1.寻找操作所涉及的属性,包括操作的参数、返回类型、所属类的属性以及某些邻近的类

2.识别该操作的初始节点的前置条件和活动终点的后置条件。

也要识别在操作执行过程中必须保存的信息.

3.从该操作的初始节点开始,标识随着时间发生的活动,并在活动图中将它们表示为活动节点

4.如果需要,使用分支来说明条件语句及循环语句

5.仅当操作属于一个主动类时,才在必要时用分岔和汇合来说明并行的控制流程.

小结

本章首先讲解了活动节点、初始节点和活动终点、转换、分支与监护条件、分岔与汇合等基本建模元素;逐步引出了泳道、对象流等控制流逻辑.然后,分别介绍简单活动图、标识泳道的活动图、标识对象流的活动图、标识信号的活动图、标识扩展区的活动图、标识参数的活动图、标识嵌套活动图.

最后,概括地说明了活动图的绘制要点,并结合对工作流建模和对操作建模之间的异同。

习题8

1.请举例说明活动图和顺序图之间有什么区别?

它们的特点是什么?

2.分岔和分支有什么不同?

3.在活动图中,请举例说明监护条件的应用特点?

4.如果我们想在活动图中,表示出一个如下所示的for循环,该如何做?

请用活动图来表示:

for(i=0;i<7;i++)

5.举例说明标识泳道的活动图、标识对象的活动图、标识循环的活动图,以说明它们在应用方面的优缺点。

6.如果要求标识出某个活动节点的输入参数和输出参数,则应该如何做?

举例说明。

7.假设有一个活动节点,其功能是求最小值,要求传入两个实数,返回较小的那个值,如果输入的不是实数,则抛出异常。

请用活动图来表示该活动节点。

8.假设订单的接收与关闭是由销售人员负责,开票收款是由财务人员负责,准备货物是由仓管负责。

请用带泳道的活动图表示以上分工。

9.活动图主要的应用场景可以分为哪两类?

请简要说明它们的区别,并举一些实际的案例来说明。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2