1. 活动图
活动图是UML用于对系统的动态行为建模的另一种常用工具,描述活动的顺序,展现从一个活动到另一个活动的控制流。活动图是描述系统流程的一种方法,能够表现动作是怎样发生的、动作要干什么(对象状态的变化)、动作是何时发生的(动作的顺序),以及动作是在何处发生的。
1.1 动作状态
动作状态是指执行原子的、不可中断的动作,并在此动作完成之后向另一个状态转换。动作的特点:
(1)动作是构成活动图的最小单位,无法分解为更小的部分。
(2)动作是不可中断的,一旦开始运行就不能中断,一直到运行结束。
(3)动作是瞬间的行为,它所占用的处理时间极短,有时也可以忽略。
(4)动作可以有入转换,至少有一条出转换,这条转换以内部动作的完成为起点,与外部事件无关。
(5)在一张活动图中,动作状态允许多出出现。
1.2 分支与合并
分支在软件系统流程中很常见,一般用于表示对象类所具有的条件行为。用一个布尔表达式的真假来判断动作的流向。条件行为用分支和合并表达。
图1 分支与合并
1.3 分叉与汇合
分叉用来描述并发线程,每个分叉可以有一个输入转换和两个或多个输出转换,每个转换都可以是独立的控制流。汇合代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才能继续往下进行。每个汇合可以有两个或多个输入转换和一个输出转换。
图2 分叉与汇总
1.4 泳道
泳道将活动图中的活动划分为若干组,并将每一组指定给负责这组活动的业务组织,即父对象。泳道区分负责活动的对象,明确的表示哪些活动是由哪些对象进行的。每个活动只能明确地属于一个泳道。
图3 泳道示例
1.5 对象流
对象流是动作状态或者活动状态与对象之间的依赖关系。用活动图描述某个对象时,将涉及的对象放置在活动图中,用一个依赖将其连接到创建、修改和撤销的动作状态或者活动状态上,对象的这种使用方法就构成了对象流。在活动图中,对象流用带箭头的虚线表示。对象用矩形表示,矩形内是该对象的名称,名称下的方括号表示该对象此时的状态。
图4 对象流
1.6 活动的分解
一个活动可以分解为若干个动作或子活动,这些动作和子活动本身又可以组成一个活动图。不含内嵌活动或动作的活动称之为简单活动;嵌套了若干活动或动作的活动称之为组合活动,组合活动有自己的名称和相应的子活动图。
图4 包含组合活动的活动图
上图是在书店买书的活动图,其中付款是一个组合活动图,如果是VIP会员,则书价可以打八折;如果是普通顾客,就要付全款。付款活动包括了一个嵌套的子活动。