活动图及其应用1
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
26
泳道
泳道将活动图中的活动化分为若干组,并把每一组 指定给负责这组活动的业务组织即对象。 泳道区分了负责活动的对象,明确地表示了哪些活 动是由哪些对象进行的。 每个活动只能明确地属于一个泳道。 泳道用垂直实线绘出,垂直线分隔的区域就是泳道。 在泳道上方可以给出泳道的名字或对象(对象类) 的名字,该对象(对象类)负责泳道内的全部活动。 泳道没有顺序,不同泳道中的活动既可以顺序进行 也可以并发进行,动作流和对象流允许穿越分隔线。
在实际应用中,如果活动的转换是有条件的,我们就用分 支与监护条件来表示转换,如果一些活动是并发执行的, 我们就用分岔和汇合来表示并发活动。分岔线和汇合线都 使用加粗的水平线或垂直线段表示。
分岔线 汇合线
分岔与汇合的表示
24
分叉与汇合
25
分叉与汇合
(1).分岔:每个分叉可以有一个输入转换和两个或多个输出转换, 每个转换都可以是独立的控制流。分叉用于将动作流分为两个或者多 个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完 成一项事务的目的。 (2).汇合:当两个或多个并发控制流都达到汇合点后,活动流程才 能进入下一个活动节点.即汇合代表两个或多个并发控制流同步发生, 当所有的控制流都达到汇合点后,控制才能继续往下进行。每个汇合 可以有两个或多个输入转换和一个输出转换。 分岔用来表示两个或者多个并发活动的分支;而汇合则用于同步这些 并发活动的分支,当且仅当所有的并发分支(活动)都到达汇合点后, 活动流程才能进入下一个活动节点。
12
活动图的图形表示
在UML中,活动表示成圆角矩形。 如果一个活动引发下一个活动,两个活动 的图标之间用带箭头的直线连接。 活动图也有起点和终点,表示法和状态图 中相同。 活动图中还包括分支与合并、分叉与汇合 等模型元素。分支与合并的图标和状态图 中的判定的图标相同,而分叉与汇合则用 一条加粗的线段表示。
第6章 活动图
概述 活动图的组成元素 活动的分解 活动图建模技术 实例——图书馆管理系统的活动图
1
概述
活动是某件事情正在进行的状态。 活动在状态机中表现为一个由一系列动作组成的 非原子的执行过程。 活动图是一种描述系统行为的图,它用于展现参 与行为的类所进行的各种活动的顺序关系。 活动图是一种表述业务过程以及工作流的技术。 它可以用来对业务过程,工作流建模,也可以对 用例实现,甚至是对程序实现进行建模。
35
使用Rational Rose绘制活动图的步骤
1. 创建活动图 2. 活动图工具栏按钮 3. 加入初态和终态 4. 增加动作状态 5. 增加活动状态 6. 增加动作流 7. 增加分支与合并 8. 增加分叉与汇合 9. 增加泳道 10. 增加对象与对象流
36
图书馆管理系统的活动图
1. 借阅者的活动图 2. 图书管理员的活动图 3. 系统管理员的活动图
⑤ ⑥
18
活动状态
活动状态用于表达状态机中的一个非原子 的运行。 活动状态的表示图标也是平滑的圆角矩形, 并可以在图标中给出入口动作和出口动作 等信息。
Make Plan
entry/ SetGoal
19
活动状态
① ② ③ ④ 活动状态的特点: 活动状态可以分解成其他子活动或动作状态, 由于它是一组不可中断的动作或操作的组合, 所以可以被中断。 活动状态的内部活动可以用另一个活动图来表 示。 和动作状态不同,活动状态可以有入口动作和 出口动作,也可以有内部转移。 动作状态是活动状态的一个特例,如果某个活 动状态只包括一个动作,那么它就是一个动作 状态。
32
活动的分解
33
活动图建模技术
① 识别要对其工作流描述的类或对象。 ② 确定工作流的初始状态和终止状态,明确 工作流的边界。 ③ 对动作状态或活动状态建模。 ④ 对动作流建模。 ⑤ 对对象流建模。 ⑥ 对建立的模型进行精化和细化。
34
实例——图书馆管理系统的活动图
使用Rational Rose绘制活动图的步骤 图书馆管理系统的活动图
9
在图中,标识了一些关键的对象流,对象的状态也在图中 作了标识: (1)当“用户下订单”时,将创建一个Order类的实例, 用来存放订单的信息,该Order类还包含着相应的 OrderItem(针对每个产品一条) (2)当“生成送货单”时,将根据Order类的实例创建 多个DeliverOrder(送货单)的实例。 (3)当“修改订单项状态”之后,DeliverOrder对象的 状态将变成finished。
11
嵌套活动图
如果一个活动图又包含了子活动图,则称这种图为嵌套活 动图(也称为主活动图)。当一个活动图很复杂,我们可以 把其中的一组相关活动看作一个子活动图,这时,在嵌套 活动图中,用子活动图的简图代替子活动图。 我们可 以将子图单独放在一个图中详细说明它的活动,然后,在 嵌套活动图引用子活动图。如图是一个嵌套活动图,其中 的收款(活动)又是一个子活动图。
4
活动图与状态图的区别
活动图与状态图的区别: ① 活动图着重表现从一个活动到另一个活动 的控制流,是内部处理驱动的流程。 ② 状态图着重描述从一个状态到另一个状态 的流程,主要有外部事件的参与。
5
活动图分类
按照活动图表示的信息不同,将活动图分 为:简单活动图、标识泳道的活动图、标 识对象流的活动图、复合活动图。
2
活动图与流程图
学习过C语言或其他程序设计语言的读者一定接 触过流程图,因为流程图清晰的表达了程序的每一 个步骤序列、过程、判定点和分支。 程序流程图无论对编程者自身或是阅读程序 的人都是极好的文档资料。对于程序员,一般都推 荐他们使用流程图做可视化描述 在UML里,活动图本质上就是流程图,他描 述系统的活动、判定点、分支等,因此它对于开发 人员来说是一种重要的工具。
13
活动图的图形表示
14
活动图的组成元素
① ② ③ ④ ⑤ ⑥ ⑦ 组成UML的图形元素: 动作状态(Action State) 活动状态(Activity State) 动作流(Action Flow) 分支(Branch)与合并(Merge) 分叉(Fork)与汇合(Join) 泳道(Swimlane) 对象流(Object Flow)
15
16
动作状态
动作状态是指执行原子的、不可中断的动 作,并在此动作完成后通过完成转换转向 另一个状态的状态。 动作状态使用平滑的圆角矩形表示,动作 状态所表示的动作写在圆角矩形内部。
Click Mouse
17
动作状态
① ② ③ ④ 动作状态的特点: 动作状态是原子的,它是构造活动图的最小单 位,已经无法分解为更小的部分。 动作状态是不可中断的状态,它一旦开始运行 就不能中断,一直运行到结束。 动作状态是瞬时的行为,它所占用的处理事件 极短,有时甚至可以忽略。 动作状态可以有入转换,入转换既可以是动作 流,也可以是对象流。动作状态至少有一条出 转换,这条转换以内部动作的完成为起点,与 外部事件无关。 动作状态和状态图中的状态不同,它不能有入 口动作和出口动作,更不能有内部转移。 在一张活动图中,动作状态允许多处出现。
3
活动图与流程图的区别
① 流程图着重描述处理过程,它的主要控制结构 是顺序、分支和循环,各个处理之间有严格的 顺序和时间关系; ② 而活动图描述的则是对象活动的顺序关系所遵 循的规则,它着重表现的是系统的行为,而非 系统的处理过程。 ③ 活动图能够表示并发活动的情形,而流程图做 不到。 ④ 活动图是面向对象的,而流程图是面向过程的。 ⑤ 活动图与流程图的最主要的区别在于,活动图 能够标识活动的并行行为。
37
借阅者的活动图
借阅者进行自助服务时,可以首先登录 系统,然后进行书目查询、书籍信息查询、 书籍预订等活动,也可以先查询书目和书籍 信息后登录系统预订书籍。 【活动图说明】 (1) Self-help Service: 打开图书馆负责自 助服务的计算机。 (2) Search for books: 查询需要的书籍。 (3) Login:登录管理系统。 (4) View book information: 查看书籍信 息。 (5) Reserve the book: 预订书籍。 (6) Exit System: 退出系统。 (7) Leave Computer: 离开自助服务的计 算机。
20
转换
所有动作状态之间的转换流称之为动作流。 与状态图的转换相同,活动图的转换也用 带箭头的直线表示,箭头的方向指向转入 的方向。 当一个活动结束时,活动控制流就会马上 传递给下一个活动节点,在活动图中称之 为“转换”,用一条带箭头的直线来表示 转换.下面的直线箭头就表示了一个转 换. 如图所示。
21
分支与监护条件
分支一般用于表示对象类所具有的条件行为。 分支是用菱形表示的,它有一个进入转换 (箭头从外指向分支符号),一个或多个离 开转换(箭头从分支符号指向外)。而每个 离开转换上都会有一个监护条件,用来表示 满足某种条件时才执行该转换。分支的表示 法,如图所示。
22
分支实例
23
分叉与汇合
Enter into gymnasium
Look for field Quoted price
Query price
feeBill
[unpaid]
Pay Money
Play Badminton
feeBill
[paid]
31
活动的分解
一个活动可以分为若干个动作或子活动, 这些动作和子活动本身可以组成一个活动 图。 一个包含子活动的活动和嵌套了子状态的 组合状态类似,概念上也相对统一。 一个不含内嵌活动或动作的活动称之为简 单活动;一个嵌套了若干活动或动作的活 动称之为组合活动,组合活动有自己的名 字和相应的子活动图。
6
简单活动图
如图 就是一个描述订单处理的简单活动图,这个图既没 有标识活动的执行者,也没有标识活动执行过程中,创建 了哪些对象。其中,每个活动都是简单的活动。 订单处理
7
标识泳道的活动图
为了有效地表示各个活动由谁负 责的信息,可以通过泳道(Swim Lane)来实现。例如,在如图活 动图中,活动的执行者包括窗口 和打印机,因此可以将其分成二 个泳道。左边泳道中的所有活动 的执行者是窗口;右边泳道中的 所有活动的执行者是打印机。 每个泳道用一条垂直的线将它们 分开,并且每个泳道都必须有一 个唯一的名称,例如本例中的窗 口和打印机。从图中可以看出, 每个活动节点,分支必须只属于 一个泳道,而转换,分岔与汇合 是可以跨泳道的。通过泳道,不 仅体现了整个活动控制流,还体 现出了每个活动的实施者。
:窗口 初始化打印 机 :打印机
获取打印机 数据
设置打印页 面
保存页面参数 数据
传送打印数 据
接收并保存打印 数据
打印文 件
执行打印命 令
8
标识对象流的活动图
在活动图中,存在这样一些现象:一种情况是,可能存在一些对象进 入一个活动节点,经过活动处理,修改了对象的状态;另一种情况是, 活动节点创建或删除了一些对象;一些情况是,输出一些对象。在这 些活动中,对象与节点活动是紧密相关的,我们可以在活动图中把相 关的对象标识出来。
10
当然,在这张活动图中实际上还蕴藏着许多对象流,例如: (1)当“收款”后,Order类的实例的状态就变成了 “已付款”。 (2)当“修改订单项状态”后,Order类中部分订单项 的状态就变成了“已送货”。 (3)当用户取消或订单超过时限时,Order类的状态就 将成为Cancel。 在实际应用中,绘制活动图时并不一定需要将所有的对象 流都标识出来,这样会使活动图变得复杂、混乱。在实际 建模中,只对重要的对象进行描述。
29
对象流
对象流用带有箭头的虚线表示。如果箭头 从动作状态出发指向对象,则表示动作对 对象施加了一定的影响。如果箭头从对象 指向动作状态,则表示该动作使用对象流 所指向的对象。 在UML中,我们可以在活动图中标识一个 对象的角色,状态和属性值的变化,它的 表示方法如图所示。
30
对象流
Guest Manager
27
泳道
Guest Manager
Enter into gymnasium
Look for field Quoted price
Query price
பைடு நூலகம்
Pay Money
Play Badminton
28
对象流
对象流是动作状态或者活动状态与对象之间的 依赖关系,表示动作使用对象或者动作对对象 的影响。 对象流中的对象特点: ① 一个对象可以由多个动作操纵。 ② 一个动作输出的对象可以作为另一个动作输入 的对象。 ③ 在活动图中,同一个对象可以多次出现,它的 每一次出现表明该对象正处于对象生存期的不 同时间点。