第7讲 活动图

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


用活动图描述客户在商店中购买物品的过 程。(使用对象流技术描述购物这个动态过 程中系统内对象的状态变化 )
订单 部
财务 部
顾客
活动起点 接订单 [ 拒绝订单 ] 判定 对象 对象流 动作
[ 接受订单 ] 填写订单 分岔
送发票 按订单发货 控制流
发票
付款 收款 汇合 合并 关闭订单 活动终点
完成书店售书的活动图。 Enter into bookstore:进入书店 Search for book:寻找想要的书籍 Pay for the book:付款购书 Pay 80%:如果是会员,8折购书 Pay 100%:如果不是会员,全价购书 Leave bookstore:离开书店
(2)不适用活动图的情况。 显示对象间的合作。虽然可以使用泳道、 对象及对象流来进行关系的描述,由于复 杂度方面的限制,很难清楚的描述动作与 对象之间的关系。用交互图中的时序图或 协作图描述对象间的合作更为简单直观。 显示对象在生命期内的运转情况。活动图 可以表示动作及活动转移,但不能显示一 个对象的状态转移条件。因此,当要描述 一个对象整个生命期内的运转情况时,应 当使用状态图。
活动图应用
(1)为工作流建模 对工作流建模强调与系统进行交互的对象所观察 到的活动。工作流一般处于系统的边界,用于可 视化、详述、构造和文档化开发系统所涉及的业 务流程。 (2)为对象的操作建模 活动图本质上就是流程图,它描述系统的活动、 判定和分支等部分。因此,在UML中可以把活动 图作为流程图来使用,用于对系统的操作建模。

存款
6.1.1 基本概念
动作 活动 转换 分支--分叉和汇合 同步 泳道 对象流

动作
动作是指执行原子的、不可中断的动作, 并在此动作完成后通过完成转换转向另一 个状态。 动作状态使用平滑的圆角矩形表示,动作 状态所表示的动作写在圆角矩形内部。

Click Mouse
动作流

所有动作状态之间的转换流称之为动作 流。 与状态图的转换相同,活动图的转换也 用带箭头的直线表示,箭头的方向指向 转入的方向。


活动图中也有初态和终态
初态表示一个工作流程的开始,用实心圆点来表示 终态表示了一个活动图的最后和终结状态,用实心圆
点外加一个小圆圈来表示

转换(transition)
选择学生 分岔
修改班级信 息
修改自然信 息 汇合 显示学生信 息
修改成绩
分岔与汇合示例

示例:描述打电话活动中的并发事件
摘机
拨号
分叉


挂机
汇合

订单处理

泳道(swimlane)
“泳道”技术,是将一个活动图中的活动状态进行分
组,每一组表示一个特定的类、人或部门,他们负责 完成组内的活动。 “泳道”技术来描述每个活动是由哪个对象负责完成 UML中,每个组被称为一个泳道,用一条垂直的实线 与邻居分开 每个活动都明确属于一个泳道,不可以跨越泳道,而 转移则可以跨越泳道

Enter into bookstore
Search for book
Pay for the book [ VIP ] Pay 80% [ Else ] Pay 100%
Leave bookstore
6.2 活动图建模

活动图的建模技术
活动图用于对系统的动态行为建模,在对一个系统建
模时,通常有两种使用活动图的方式: 为工作流建模 为对象的操作建模


活动
表示的是可以分割的动作 ,用于表达状态机中的一个 非原子的运行. 特点是:它可以被分解成若干活动或动作,它能够被 中断,占有有限的时间。 活动可以理解为一个组合,它的控制流由其他活动或 动作组成。 动作是活动的一个特例,如果某个活动只包括一个动 作,那么它就是一个动作.

动作和活动使用带圆端的方框表示

一个合并(Merge)有两个带条件的入转换和一个出转换, 合并表示从对应的分支开始的条件行为的结束。


Take book to Librarian:将书交给图书管理员 Leave Library:离开图书馆 Fine Money:缴纳罚金
Take book to Librarian
分支 [ else ] [ time too long ] Fine Money
动作

动作
对象的动作是活动图中最小单位的构造块,表示原子
动作。
动作有三个特性:
原子性; 不可中断性: 瞬时性:

动作的特点: ① 动作是原子的,它是构造活动图的最小单位,已 经无法分解为更小的部分。 ② 动作是不可中断的,它一旦开始运行就不能中断 ,一直运行到结束。 ③ 动作是瞬时的行为,它所占用的处理事件极短, 有时甚至可以忽略。 ④ 动作可以有入转换,入转换既可以是动作流,也 可以是对象流。动作至少有一条出转换,这条转 换以内部动作的完成为起点,与外部事件无关。 ⑤ 动作和状态图中的状态不同,它不能有入口动作 和出口动作,更不能有内部转移。 ⑥ 在一张活动图中,动作允许多处出现。
订单 部
财务 部
顾客
接订单 [ 拒绝订单 ] [ 接受订单 ] 填写订单
接订单 [ 拒绝订单 ] [ 接受订单 ] 填写订单
送发票 按订单发货
按订单发货
送发票 付款
付款
收款
收款
关闭订单
关闭订单

对象流(object stream)
对象流是动作或活动与对象间的依赖关系。 对象流可用于对下列关系建模:

用活动图描述客户在商店中购买物品的过 程。
泳道



泳道将活动图中的活动划分为若干组,区分了负责 活动的对象,明确地表示了哪些活动是由哪些对象 进行的。 每个活动只能明确地属于一个泳道。 泳道用垂直实线绘出,垂直线分隔的区域就是泳道 。在泳道上方可以给出泳道的名字或对象(对象类 )的名字,该对象(对象类)负责泳道内的全部活 动。 泳道没有顺序,不同泳道中的活动既可以顺序进行 也可以并发进行,动作流和对象流允许穿越分隔线 。
动作对对象的使用 动作对对象的影响。 在UML中,使用矩形表示对象 , 对象和动作之间使用 带箭头的虚线连接,带箭头的虚线表示对象流。 工具栏-customize…

对象流
对象流中的对象特点: ① 一个对象可以由多个动作操纵。 ② 一个动作输出的对象可以作为另一个动作 输入的对象。 ③ 在活动图中,同一个对象可以多次出现, 它的每一次出现表明该对象正处于对象生 存期的不同时间点。
第6章 状态图
活动起点
§6.1 概述
Activity2
Activity1 分叉
Activity3
分支 Choice Activity4 Else Activity5 Activity6
合并 汇合
Activity7
活动图示例
活动终点
活动图示例
活动图与流程图的区别: ① 流程图着重描述处理过程,它的主要控制结构 是顺序、分支和循环,各个处理之间有严格的 顺序和时间关系; 活动图描述的则是对象活动的顺序关系所遵循 的规则,它着重表现的是系统的行为,而非系 统的处理过程。
f=0,f1=0,f2=1,i=2
[ n=1 ] [ n>1 ] [ n=2 ] [ n>2 ] f=f1+f2;i=i+1
return 0
return 1
[ i=n ] [ i<n ] f1=f2;f2=f
return f

优点:最适合支持并发行为,而且也是支 持多线程编程的有力工具。 缺点:由于复杂度方面的限制,很难清楚 的描述动作与对象之间的关系。虽然可以 使用泳道、对象及对象流来进行关系的描 述,但仍然没有交互图的描述简单直接。
求Fibonacci数列的第n个数的函数,Fibonacci数列的前两 项为0和1,以后的每一个数都是前两个数之和。
long fib(long n) { long f=0,f1=0,f2=1; if(n= =0||n= =1) return n; else { for(i=2;i<=n;i++) { f=f1+f2; f1=f2; f2=f; } return f; } }
2 活动图建模

① ② ③ ④ ⑤
在建模过程中,可以参照如下步骤进行: 识别要对其工作流进行描述的建模元素。 进行主路径建模。 对细化主路径,进行从路径建模。 添加泳道来标识活动的事务分区。 改进高层活动并添加到更多活动图。

① ② ③
④ ⑤ ⑥
在绘制活动图时,基本的操作步骤如下 : 创建活动图。 添加动作,完成动作建模。 添加其他结点及控制流,完成控制流建 模。 添加对象及对象流,完成对象流建模。 添加泳道。 检查活动图,并进行细化整理。
转换是两个状态间的一种关系,表示对象将在当前状
态中执行动作,并在某个特定事件发生或某个特定的 条件满足时进入后继状态。

分支(Branch)
分支用于描述基于某个条件的可选择路径。
一个分支可以有一个进入转换和两个或多个输出转换 在每条输出转换上都有监护条件表达式保护,当且仅
当监护条件表达式为真时,该输出路径才有效。 在所有输出转换中,其监护条件不能重叠,而且它们 应该覆盖所有的可能性。 分支在图形表示上 用菱形表示

活动图能够表示并发活动的情形; 流程图做不到。 活动图是面向对象的; 流程图是面向过程的。

活动起点 Activity1 分叉
Activity2
Activity3
分支 Choice Activity4 Else Activity5 Activity6
合来自百度文库 汇合
Activity7
活动图示例
活动终点
图书馆管理系统的活动图
1.标识用例 以借书用例为例,来建模借书用例的活动图。
Login BorrowBook
<<include>> <<include>> <<extend>> <<include>>
Librarian QueryLoanInfo
2 活动图建模

建模要素
确定活动图所关注的业务流程。 确定该业务流程中的业务对象。 确定该工作流的起始状态和终止状态。 从该工作流的起始状态开始,说明随着时间发生的动作
和活动,并在活动图中把它们表示成活动状态或动作状 态。 将复杂的动作,或多次出现的动作集合归并到一个活动 状态,并对每个这样的活动状态提供一个可展开的单独 的活动图。 找出连接这些活动和动作状态的转移。 如果工作流中涉及重要的对象,则也把它们加入到活动 图中。

(1)适合使用活动图的环境。 分析用例。活动图可以直观、清晰地分析 用例,了解应当采取哪些动作以及这些动 作之间的依赖关系。一张完整的活动图示 所有用例的集成图。 理解涉及多个用例的工作流。在难于区分 不同用例而对整个系统的工作过程又十分 清楚时,可以先构造活动图,然后用切片 技术派生用例图。 处理多线程应用。采用“分层抽象,逐步 细化”的原则描述多线程。
合并
Leave Library
还书活动图
完成下列循环语句的活动图。
for (i=1;i<10;i++) { count(i); }
i=1 i=1 [ No else ]
i<10
count(i) count(i)
[ i<10 ] Yes
i=i+1
i++
分叉(fork)和汇合(join)




分岔用于将动作流分为两个或者多个并发运行的分支, 而汇合则用于同步这些并发分支,以达到共同完成一 项事务的目的。 分岔可以用来描述并发线程,每个分岔可以有一个输 入转换和两个或多个输出转换,每个转换都可以是独 立的控制流。 汇合代表两个或多个并发控制流同步发生,当所有的 控制流都达到汇合点后,控制才能继续往下进行。每 个汇合可以有两个或多个输入转换和一个输出转换。 分岔和汇合都使用加粗的水平线段表示。
6.1 活动图

与状态图的区别
活动图着重表现从一个活动到另一个活动的控制流,是
内部处理驱动的流程;
状态图着重描述从一个状态到另一个状态的流程,主要
有外部事件的参与。
6.1 活动图

活动图可以用作以下目的:
描述一个操作执行过程中所完成的工作(动作),这是
活动图最常见的用途。 描述对象内部的工作。 显示如何执行一组相关的动作,以及这些动作如何影响 它们周围的对象。 显示用例的实例如何执行动作以及如何改变对象状态。 说明一次业务流程中的人(参与者)和对象是如何工作 的。
相关文档
最新文档