第七章:活动图
第七章:活动图
-
关于状态机
状态机是UML为软件对象的动态行为进行建模的手段之一。
它描述:软件对象在处理外部发生的事件时产生的动作和由此导致的软件对象的状态的变化,并以此刻画软件对象的动态行为。
软件对象的动作被附加在状态机的变迁或状态上,如果被建模的对象是反应型对象,那么此对象的动作的执行是由对象外部发生的事件触发的。
对反应型对象的这种动态行为的建模,在UML里,是用状态机图来表达的。 -
对于非反应型对象
软件对象的动态行为并不都是事件驱动的。例如,
在使用特定的对象来实现特定的复杂算法时,此算法的动态行为既不是由多个对象的协同配合完成的,也不是由外部事件来驱动的。这类对象被称为是:非反应型对象。
当非反应型对象的动态行为被执行时,动态行为的一系列的动作按照特定的控制逻辑(算法)顺序执行。
活动图概述
- 活动图是一种特殊形式的状态机,用于对计算流程和工作流程建模.
- 活动图中的状态表示计算过程中所处的各种状态,而不是普通对象的状态
- 通常,活动图假定在整个计算处理过程中没有外部事件引起的中断.否则,普通的状态机更适于描述这种情况
- 活动状态机的动作是自动执行的;状态机内不存在对外部事件的描述;控制在动作之间的转换不由事件触发,而是由完成变迁自动触发。
活动图的包含
- 主要包含以下三个方面的内容:动作状态、活动状态、无触发变迁
(1)动作状态
- 动作是状态机内原子的计算的执行。
- 在活动状态机中,对动态行为的建模,是通过附加在状态中的动作实现的。
(2)活动状态
- 活动是软件对象非原子的计算的执行。活动可以被进一步地分解为一系列的动作。
- 在大多数的情况下,软件对象的动态行为,可以用一系列的子过程来表达,而不需要细化至每个原子的计算。
(3)无触发变迁
- 无触发变迁又称为完成变迁。它在活动状态机里用于为动作的自动执行建模。
- 在UML里,完成变迁是不包含触发事件的变迁。
分解和汇合
- 分解:分解表示一个控制流被分解为两个或多个并发执行的控制流。
- 汇合:汇合代表两个或多个控制流的同步。只有当所有的控制流都到达汇合点之后,控制才继续向下流动。
- 在分解和汇合的表示使用的是:同步条。同步条是一个粗的水平线。当同步条表示分解时,可以有:一个转入变迁,两个或多个转出变迁;当同步条用来表示汇合时, 它可以有两个或多个转入变迁,一个转出变迁。
泳道
- 定义:在UML里,对在语义上互相关联的活动状态的子集的划分,是使用泳道(swim lane)实现的。泳道是活动图里对其中的活动按照其职责上的关联进行的划分。
- 样式:泳道在活动图内是一系列的垂直的隔断。
- 性质:在活动图里,泳道区分了其中的活动的不同职责。在有泳道的活动图中,每一活动都属于且只属于一个泳道。泳道之间可以有变迁的传递。
活动图的作用
描述控制在活动之间的流动:
- 第一是为业务流程建模.
- 第二是为对象的特定操作建模。
当活动图用来为业务流程建模时,它所起的作用主要是:
为软件系统的需求分析提供一种视化、交流和建档的手段。这时,可以利用泳道代表不同的业务部门,用活动代表不同的业务步骤。
在转入系统建造阶段时,根据泳道的划分,确立相应的协同,并可以用相应的交互和交互图来对软件的动态行为进行细化,并为软件的逻辑设计打下基础。
作为流程图,活动图还可以为对象的特定操作执行流程进行建模。用于对操作的动态行为的说明、视化、建档和建造。可以根据活动图的定义,对对象的操作的进行程序编码。
对比
- 活动图VS交互图
- 活动图着重表现活动的控制流,描述在对象之间传递的操作
- 活动图虽然也存在着对象之间的合作,但它强调的是对象内部的控制逻辑和控制的流动。
- 交互图着重表现的是对象到对象的控制流,描述在对象之间传递的消息
- 交互图强调的是软件对象之间外部职责的划分及合作;
- 活动图VS流程图
- 传统的程序流程图描述的是处理的过程,主要控制结构有顺序、分支和循环,各个处理之间有严格的顺序和时间关系
- 活动图描述的是对象(或模型元素)的活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而不是系统的处理过程,在活动图中也没有通常的循环控制结构。活动图能够表现并发情形
- 活动图VS状态机
相同点:
- 描述图符基本一样
- 可以描述一个系统或在生存期间的状态或行为。
- 可以描述多进程操作中的同步或异步操作的并发行为
不同点:
- 触发迁移的机制不同。活动状态迁移不需要事件触发,活动执行完毕可以直接进入下一个活动状态;
- 状态机图强调的是在外部事件的驱动下,软件对象的控制在不同的状态之间的流动;活动图强调的是在完成变迁引导下,对象的控制在活动之间的流动。
- 描述多个对象共同完成一个操作的机制不同
- 状态机图:它强调的是控制在状态之间的流动。活动图:它强调的是控制在不同活动之间的流动。它们表现的都是软件系统的动态行为。
活动图建模步骤
(1)在采集的原始需求中选择重点流程;
(2)首先要确定要设计的活动图是针对业务流程还是用例。
(3)其次要设计活动过程的起点和终点。
(4)确定活动图所有执行对象。
(5)确定活动节点,并根据执行对象进行活动分组。
(a)如果对用例建活动图,则把角色所发出的每一个动作变为活动节点。
(b)如果对业务流程建活动图,则把每一个流程步骤(或片段)变为活动节点。
(6)确定活动节点之间转移。
(7)处理在活动节点之间的分支和合并。
(8)处理在活动节点之间的分叉和汇合。
(9)用UML建模工具进行活动图建模。
(10)编写必要的补充文档。
杂项
- 菱形符号不但可以有两个或多个转出变迁,也可以有两个或多个转入变迁。带有两个或多个转入变迁的菱形符号又称为合并(merge)。