UML _ 活动图

概述

活动图(Activity Diagram)是一种表达系统动态特性的模型图,用来表达动作序列的执行过程。
通常,活动图用于记录单个用例或商业过程的逻辑流程

与流程图相似,但其语义要比流程图丰富。

区别:

  • 活动图强调执行过程中的顺序、分支和并发步骤,并可以展示活动之间信息的流动。

  • 流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环。

  • 活动图是面向对象的,而流程图是面向过程的。

活动图与状态机图的区别

  • 活动图着重表现多个对象从一个活动到另一个活动的控制流,是内部处理驱动的流程,不需要任何触发事件。

  • 状态机图着重描述一个对象从一个状态到另一个状态的流程,主要有外部事件的参与。

  • 活动图能够划分泳道,而状态机图不可以。

作用

  1. 描述一个用例的工作流程(最常用)
  2. 描述业务处理过程;
  3. 描述一个操作执行过程中所完成的工作;
  4. 描述复杂过程的算法

活动图的组成

1. 活动节点(结点)ActivityNode

  1. 可执行节点(动作节点、活动节点)

  2. 控制节点
    初始节点、终止节点
    判断、合并( decision 、merge)
    分叉、汇合

  3. 对象节点

2. 活动边ActivityEdge

  1. 控制流
  2. 对象流

3. 活动分区(泳道)

4. 扩展区域

活动节点(结点)

活动节点分为:

  1. 可执行节点(动作节点、活动节点)

  2. 控制节点
    初始节点、终止节点
    判断、合并( decision 、merge)
    分叉、汇合

  3. 对象节点

可执行结点

可执行节点分为:动作结点 和 活动结点
动作结点是一种特殊的活动结点:动作结点一般用于描述简短的操作,而活动结点用于描述持续事件或复杂计算。

表示:平滑的圆角矩形
image

动作结点

动作结点代表一个原子操作,是构造活动图的最小单位,通常用于对工作流执行过程中的步骤进行建模。

注意:

  • 动作结点要么不执行,要么完全执行,不可中断。
  • 动作结点是瞬时的行为,占用处理时间短。
  • 动作结点不能有入口动作、出口动作和内部转换。
  • 在一张活动图中,同一动作结点允许多处出现

常见动作:

  • 创建或删除对象
  • 发送消息
  • 调用操作
  • 数学运算
  • 返回表达式的值。

活动结点

活动结点是一系列动作,主要用于实现动作序列的简化,显然活动节点是非原子性的。

注意:

  • 活动结点是可被中断的
  • 活动结点的内部活动可以用另一个活动图表示。
  • 活动结点可以有入口动作、出口动作和内部转换,至少有一个输出完成转换

因此动作结点是一种特殊的活动结点: 动作结点一般用于描述简短的操作,而活动结点用于描述持续事件或复杂计算。

控制结点

初始结点和终止结点

表示
image

初始结点:
标记活动图的开始,表示业务处理过程的开始;
一个活动图中必须有且仅有一个初始结点(嵌套情况除外)。

终止结点:
标记活动图的结束,表示业务处理流程完成;
一个活动图中一般至少有一个结束标记。(存在一些特殊的无穷过程不存在终止标记)

判断与合并

都是用空心的菱形表示。
image

判断(决策)
类似于选择
用于进行逻辑判断,描述基于某个条件的可选择路径。

组成:一个判断可以有:

  • 一个进入控制流
  • 两个或多个输出控制流
    每个输出控制流上必须都有监护条件

注意:

  • 监护条件要有中括号[]
  • 在所有输出控制流中,其监护条件应互斥,且应覆盖所有可能

合并
是指两个或多个控制路径在此汇合的情况。

分叉与汇合

分叉(分岔)与汇合用于对并发运行的控制流建模。
表示:用加粗的水平/竖直的直线段表示

image
注意:分叉与汇合不是必须有监护条件

分叉
表示把一个单独的控制流分成两个或多个并发的控制流。
一个分叉可以有一个进入控制流和两个或多个输出控制流。

汇合
表示两个或多个并发控制流的同步完成,收束回同一流程。

一个汇合可以有两个或多个进入控制流和一个输出控制流。

对象节点

当活动图中描述的过程具有一些对关键对象的要求时,通过添加对象节点的方法可以在活动图中呈现操作的对象。

活动图中的对象节点除了对象名称, 还可以带有状态
表示:
image

image

活动边

活动边是活动图中的关系元素,包括控制流和对象流。
活动边就是类似于关系
表示:

  • 控制流(转换):用一条带箭头的实线段表示。
  • 对象流:UML1.x中,用带箭头的虚线段表示; UML2.x中,用带箭头的实线段表示。

控制流(转换)

控制流(Control Flow) ,曾称为转换,是活动图中用于标识控制路径的一种符号,描述活动与活动之间的关系

注意:

  • 与状态机图中的转换不同,活动图的控制流不需要特定事件的触发,一个活动执行完成后会自发转换到另一个活动。

  • 控制流从活动图的初始结点开始运行,经过顺序、分支等结构引导着各个活动的连续执行。

表示:
用一条带箭头的实线段表示。

例子:image

对象流

对象流(Object Flow) 是将对象结点作为输入或输出的控制流,描述活动与对象之间的关系,以及相互的影响。
(依赖关系)

表示:
UML1.x中,用带箭头的虚线段表示; UML2.x中,用带箭头的实线段表示。
image

活动分区(泳道)

活动图能够将元素的行为顺序表现出来,但 元素的行为是有交互的。到目前为止,我们 所学到的活动图,暂时还无法表示出这样一种交互关系。

为了对活动的职责进行组织,可以在活动图中按负责对象(活动的执行者) 将活动分为不同的组,称为活动分区(Activity Partition),也称为泳道(Swimlane)。

作用:
描述每个活动是由哪个对象负责完成。

注意:

  • 每个活动只能明确地属于一个泳道,活动不允许跨越泳道。

  • 只有转换、动作流、 和对象流,能够穿越泳道的分隔线。

表示:
每个泳道通过垂直或水平实线与它的邻居泳道分隔,泳道上方或左侧是它的名称。

例子1:image

例子2
无泳道
image
有泳道
image

扩展区域(循环)

循环一般不用扩展区域,而是使用判断后在连一条回去的控制流
是表示业务过程中的某个活动片段的模型,在活动图中通常用来表示活动的循环过程
扩展区可以标识一个或多个活动需要多次执行的情况。

表示:
循环一个结点
image
循环多个结点
image

活动图的分类(了解)

  1. 简单活动图

  2. 嵌套活动图

  3. 标识泳道的活动图

  4. 标识对象流的活动图

  5. 标识扩展区的活动图

  6. 标识信号的活动图

  7. 标识参数的活动图

  8. 简单活动图
    既没有标识活动的执行者,也没有标识活动执行过程中创建了哪些对象。
    其中,每个活动都是简单的活动。

  9. 嵌套活动图
    如果一个活动图中包含子活动图,称为嵌套活动图。
    包含子活动图的活动,称为组合活动。
    当一个活动图很复杂,可以把其中的一组相关活动看做是一个子活动图,用子活动图的简图代替子活动图。

  10. 标识信号的活动图
    信号分类:
    时间信号:表示随着时间的流逝而自动发出的信号。
    发送信号
    接收信号

  11. 标识参数的活动图
    标明每个活动执行前,需要输入哪些参数,活动执行后,需要输出哪些参数,以及要进行的错误处理。
    参数分三种:输入参数,输出参数,错误参数。

注意:如果能分析出需要泳道,一般是先建立泳道

活动图的应用

活动图建模,通常应用在以下两个方面:

  • 对业务流程建模
  • 对用例交互流程建模

对业务流程建模

选择一个将要描述的重要过程,过程中尽量涉及数量少但是关键的对象或参与者,将无关或关联很小的对象排除在外,为每一个对象或参与者绘制泳道。
在总体业务流程中提取关键的动作或活动节点,并且将他们与对象或参与者相对应;若发现有些动作无法对应,则考虑动作是否在这个流程中起关键作用,或者是否遗漏了某些对象或参与者。
规定初始状态;确定过程可能的结束位置,为活动图添加开始和结束节点。
从业务流程的初始节点开始,把过程中发生的动作按事件顺序排列,依次把这些动作添加到活动图中。
把局部的过于复杂的动作序列加以总结,绘制成一个活动节点;如果需要,把这个动作序列使用另外的活动图进行建模。
找出连接这些动作和活动节点的控制流,并且准确找到过程中的判定、分叉、合并与汇合节点。
如果业务流程中有一些关键对象的值或状态需要加以描述,使用对象流添加这些对象在某些动作或活动节点前后的状态描述。

对用例交互流程建模

主要就是根据用例规约建模
一般一个用例,一个活动图

选择概念用例——即从系统对客户提供的各种服务中确定出一个关键业务,这个关键业务可能是在多个相同或不同的情况下反复出现,或者是系统需要提供的一个关键服务或进行的关键操作。
对于当前选择的用例,通过事件流进行顺序叙述,并找出所有的参与者主动动作,把这些动作整理成动作或活动节点。
把参与者和系统划分为两个泳道,如果有除了主参与者以外的其它参与者,也为它们分别划分泳道。
把活动节点纵向按照事件发生顺序、横向按照参与者角色和系统角色对应填入活动图中。

使用活动图对系统的用例进行建模,可以描绘出系统中两个或更多对象之间的过程控制流。

活动图的建模过程

  1. 标识活动图的用例
  2. 建模用例的路径
  3. 绘制完整的活动图

活动图的绘制

  1. 创建活动图
  2. 创建初始和终止结点
  3. 创建动作和活动结点
  4. 创建控制流
  5. 创建分叉与汇合
  6. 创建判定与合并
  7. 创建泳道
  8. 创建对象与对象流

示例

下面以“教师修改学生信息”为例。

1. 标识活动图的用例

对于“教师修改学生信息”来说,其参与者是教师,教师在修改学生信息的活动中,涉及3个用例:

image

2. 建模用例的路径

在开始创建用例的活动图时,往往先建立一条明显的路径执行工作流,然后从该路径进行扩展。
注意事项:
识别出工作流的边界(初始、终止);
识别出工作流中有意义的对象;
识别出各种活动之间的转换;
考虑判定与合并、分叉与汇合的情况。
image

3. 绘制完整的活动图

对之前建立的工作流路径进行扩展,详细绘制活动图。
注意事项:
考虑用例其他可能的工作流情况(如错误);
使用泳道细化活动图;
按时间顺序自上而下排列泳道内的动作或活动;
使用并发时,不要漏掉任何分支。

image

实例2

要求:根据下列描述,画出“远程网络教学系统”中系统管理员工作的带泳道的活动图。

问题描述:

1)系统管理员首先要输入账号和密码进行登录,系统验证登录信息;

2)如果验证未通过,提示登录失败;

3)如果验证通过,系统管理员可以处理注册申请和审核课件;

分析:因为管理员可以处理两个事情,所以是分叉与汇合

4)在处理注册申请后,需要发送邮件通知用户处理结果;

通过意思是说,管理员发送邮件通知

5)在审核完课件后,需要进行更新页面信息的操作,以保证用户能看到最新的课件,同时系统也更新页面;

虽然说是同时,但是实际显然是,管理员点击更新页面信息,系统更新页面。

6)当完成所有工作后,系统管理员退出系统,系统则注销系统管理员账号。
分析:

答案:

image

注意: 更新页面后就可以break,不用汇合。

绘制活动图来表示以下的for循环:
for (i=100;i>=1;i--)
{
if(i%19==0)
print(i);

image

本章重点

①了解活动图与状态机图的区别
②掌握简单活动图的组成元素
③掌握泳道、对象流在活动图中的作用
④了解活动图的分类
⑤熟悉活动图的建模过程,并能根据用户需求创建简单活动图模型

posted @ 2022-09-30 09:41  kingwzun  阅读(3063)  评论(0编辑  收藏  举报