9.1 概述 9.2 活动图的组成元素 9.3 活动的分解 9.4 活动图建模技术 9.5 实例——图书馆管理系统的活动图 第9章 活动图 9.1 概述 9.2 活动图的组成元素 9.3 活动的分解 9.4 活动图建模技术 9.5 实例——图书馆管理系统的活动图
9.1 概述 活动是某件事情正在进行的状态。 活动在状态机中表现为一个由一系列动作组成的非原子的执行过程。 9.1 概述 活动是某件事情正在进行的状态。 活动在状态机中表现为一个由一系列动作组成的非原子的执行过程。 活动图是一种描述系统行为的图,它用于展现参与行为的类所进行的各种活动的顺序关系。 活动图与状态图都是状态机的表现形式。
9.1 概述 活动图与状态图的区别: 活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。 9.1 概述 活动图与状态图的区别: 活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。 状态图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与。
9.1 概述 9.1.1 活动图的图形表示 9.1.2 活动图与流程图的区别
9.1.1 活动图的图形表示 在UML中,活动表示成圆角矩形。 如果一个活动引发下一个活动,两个活动的图标之间用带箭头的直线连接。 9.1.1 活动图的图形表示 在UML中,活动表示成圆角矩形。 如果一个活动引发下一个活动,两个活动的图标之间用带箭头的直线连接。 活动图也有起点和终点,表示法和状态图中相同。 活动图中还包括分支与合并、分叉与汇合等模型元素。分支与合并的图标和状态图中的判定的图标相同,而分叉与汇合则用一条加粗的线段表示。
9.1.1 活动图的图形表示
9.1.2 活动图与流程图的区别 流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理之间有严格的顺序和时间关系;而活动图描述的则是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。 活动图能够表示并发活动的情形,而流程图做不到。 活动图是面向对象的,而流程图是面向过程的。
9.2 活动图的组成元素 组成UML的图形元素: 动作状态(Action State) 活动状态(Activity State) 9.2 活动图的组成元素 组成UML的图形元素: 动作状态(Action State) 活动状态(Activity State) 动作流(Action Flow) 分支(Branch)与合并(Merge) 分叉(Fork)与汇合(Join) 泳道(Swimlane) 对象流(Object Flow)
9.2 活动图的基本组成元素 9.2.1 动作状态 9.2.2 活动状态 9.2.3 动作流 9.2.4 分支与合并 9.2.5 分叉与汇合 9.2 活动图的基本组成元素 9.2.1 动作状态 9.2.2 活动状态 9.2.3 动作流 9.2.4 分支与合并 9.2.5 分叉与汇合 9.2.6 泳道 9.2.7 对象流
9.2.1 动作状态 动作状态是指执行原子的、不可中断的动作,并在此动作完成后通过完成转换转向另一个状态的状态。 9.2.1 动作状态 动作状态是指执行原子的、不可中断的动作,并在此动作完成后通过完成转换转向另一个状态的状态。 动作状态使用平滑的圆角矩形表示,动作状态所表示的动作写在圆角矩形内部。
9.2.1 动作状态 动作状态的特点: 动作状态是原子的,它是构造活动图的最小单位,已经无法分解为更小的部分。 9.2.1 动作状态 动作状态的特点: 动作状态是原子的,它是构造活动图的最小单位,已经无法分解为更小的部分。 动作状态是不可中断的状态,它一旦开始运行就不能中断,一直运行到结束。 动作状态是瞬时的行为,它所占用的处理事件极短,有时甚至可以忽略。 动作状态可以有入转换,入转换既可以是动作流,也可以是对象流。动作状态至少有一条出转换,这条转换以内部动作的完成为起点,与外部事件无关。 动作状态和状态图中的状态不同,它不能有入口动作和出口动作,更不能有内部转移。 在一张活动图中,动作状态允许多处出现。
9.2.2 活动状态 活动状态用于表达状态机中的一个非原子的运行。 9.2.2 活动状态 活动状态用于表达状态机中的一个非原子的运行。 活动状态的表示图标也是平滑的圆角矩形,并可以在图标中给出入口动作和出口动作等信息。
9.2.2 活动状态 活动状态的特点: 活动状态可以分解成其他子活动或动作状态,由于它是一组不可中断的动作或操作的组合,所以可以被中断。 9.2.2 活动状态 活动状态的特点: 活动状态可以分解成其他子活动或动作状态,由于它是一组不可中断的动作或操作的组合,所以可以被中断。 活动状态的内部活动可以用另一个活动图来表示。 和动作状态不同,活动状态可以有入口动作和出口动作,也可以有内部转移。 动作状态是活动状态的一个特例,如果某个活动状态只包括一个动作,那么它就是一个动作状态。
9.2.3 动作流 所有动作状态之间的转换流称之为动作流。 与状态图的转换相同,活动图的转换也用带箭头的直线表示,箭头的方向指向转入的方向。
9.2.4 分支与合并 分支一般用于表示对象类所具有的条件行为。 条件行为用分支和合并表达。 在活动图中分支与合并用空心小菱形表示。 9.2.4 分支与合并 分支一般用于表示对象类所具有的条件行为。 条件行为用分支和合并表达。 在活动图中分支与合并用空心小菱形表示。 一个分支有一个入转换和两个带条件的出转换,出转换的条件应当是互斥的,这样可以保证只有一条出转换能够被触发。 一个合并有两个带条件的入转换和一个出转换,合并表示从对应的分支开始的条件行为的结束。
9.2.4 分支与合并
9.2.5 分叉与汇合 分叉用于将动作流分为两个或者多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的。 9.2.5 分叉与汇合 分叉用于将动作流分为两个或者多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的。 分叉可以用来描述并发线程,每个分叉可以有一个输入转换和两个或多个输出转换,每个转换都可以是独立的控制流。 汇合代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才能继续往下进行。每个汇合可以有两个或多个输入转换和一个输出转换。 分叉和汇合都使用加粗的水平线段表示。
9.2.5 分叉与汇合
9.2.6 泳道 泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织即对象。 9.2.6 泳道 泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织即对象。 泳道区分了负责活动的对象,明确地表示了哪些活动是由哪些对象进行的。 每个活动只能明确地属于一个泳道。 泳道用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道上方可以给出泳道的名字或对象(对象类)的名字,该对象(对象类)负责泳道内的全部活动。 泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。
9.2.6 泳道
9.2.7 对象流 对象流是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响。 对象流中的对象特点: 9.2.7 对象流 对象流是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响。 对象流中的对象特点: 一个对象可以由多个动作操纵。 一个动作输出的对象可以作为另一个动作输入的对象。 在活动图中,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存期的不同时间点。
9.2.7 对象流 对象流用带有箭头的虚线表示。如果箭头从动作状态出发指向对象,则表示动作对对象施加了一定的影响。如果箭头从对象指向动作状态,则表示该动作使用对象流所指向的对象。
9.2.7 对象流
9.3 活动的分解 一个活动可以分为若干个动作或子活动,这些动作和子活动本身可以组成一个活动图。 9.3 活动的分解 一个活动可以分为若干个动作或子活动,这些动作和子活动本身可以组成一个活动图。 一个包含子活动的活动和嵌套了子状态的组合状态类似,概念上也相对统一。 一个不含内嵌活动或动作的活动称之为简单活动;一个嵌套了若干活动或动作的活动称之为组合活动,组合活动有自己的名字和相应的子活动图。
9.3 活动的分解
9.4 活动图建模技术 识别要对其工作流描述的类或对象。 确定工作流的初始状态和终止状态,明确工作流的边界。 对动作状态或活动状态建模。 9.4 活动图建模技术 识别要对其工作流描述的类或对象。 确定工作流的初始状态和终止状态,明确工作流的边界。 对动作状态或活动状态建模。 对动作流建模。 对对象流建模。 对建立的模型进行精化和细化。
9.5 实例——图书馆管理系统的活动图 9.5.1 使用Rational Rose绘制活动图的步骤 9.5.2 图书馆管理系统的活动图
9.5.1 使用Rational Rose绘制活动图的步骤 1. 创建活动图 2. 活动图工具栏按钮简介 3. 加入初态和终态 4. 增加动作状态 5. 增加活动状态 6. 增加动作流 7. 增加分支与合并 8. 增加分叉与汇合 9. 增加泳道 10. 增加对象与对象流
9.5.2 图书馆管理系统的活动图 1. 借阅者的活动图 2. 图书管理员的活动图 3. 系统管理员的活动图
1. 借阅者的活动图
2. 图书管理员的活动图
3. 系统管理员的活动图 系统管理员维护借阅者帐户的活动图 系统管理员进行书目信息维护的活动图 系统管理员维护书籍信息的活动图
(1)系统管理员维护借阅者帐户的活动图
(2)系统管理员进行书目信息维护的活动图
(3)系统管理员维护书籍信息的活动图