活动图

什么是活动图

1. 活动图的基本概念
  活动图是一种用于描述系统行为的模型视图,它可用来描述动作和动作导致对象状态改变的结果,而不用考虑引发状态改变的事件。
  在UML中,活动的起点用来描述活动图的开始状态,用黑的实心圆表示。活动的终止点描述活动图的终止状态,用一个含有实心圆的空心圆表示。活动图中的活动既可以是手动执行的任务,也可以是自动执行的任务,用圆角矩形表示。
2. 为什么要用活动图
  活动图的作用主要体现在:
   (1)描述一个操作执行过程中所完成的工作。说明角色、工作流、组织和对象是如何工作的。
   (2)活动图对用例描述尤其有用,它可建模用例的工作流,显示用例内部和用例之间的路径。它可以说明用例的实例是如何执行动作以及如何改变对象状态。
   (3)显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。
   (4)活动图对理解业务处理过程十分有用。活动图可以画出工作流用以描述业务,有利于与领域专家进行交流。通过活动图可以明确业务处理操作是如何进行的,以及可能产生的变化。
   (5)描述复杂过程的算法,在这种情况下使用的活动图和传统的程序流程图的功能是差不多的。

活动图的组成

1. 动作状态
  动作状态(action state)是原子性的动作或操作的执行状态,它不能被外部事件的转换中断。
  在UML中,动作状态使用平滑的圆角矩形表示,动作状态表示的动作写在矩形内部

2. 活动状态
  动作状态是一种特殊的活动状态。可以把动作状态理解为一种原子的活动状态,即它只有一个入口动作,并且它活动时不会被转换所中断。
  活动状态和动作状态的表示图标相同,都是平滑的圆角矩形。两者不同的是活动状态可以在图标中给出入口动作和出口动作等信息。
这里写图片描述

3. 组合活动
  组合活动是一种内嵌活动图的状态。一个组合活动在表面上看是一个状态,但其本质却是一组子活动的概括。一个组合活动可以分解为多个活动或者动作的组合。每个组合活动都有自己的名字和相应的子活动图。一旦进入组合活动,嵌套在其中的子活动图就开始执行,直到到达子活动图的最后一个状态,组合活动结束。
  如果一些活动状态比较发杂,就会用到组合活动。比如,我们去购物,当选购完商品后就需要付款。虽然付款只是一个活动状态,但是付款却可以包括不同的情况。对于会员来说,一般是打折后付款,而一般的顾客就要全额付款了。这样,在付款这个活动状态中,就又内嵌了两个活动,所以付款活动状态就是一个组合活动。

4. 分叉与结合
  并发(concurrency)指的是在同一时间间隔内,有两个或者两个以上的活动执行。对于一些复杂的大型系统而言,对象在运行时往往不止存在一个控制流,而是存在两个或者多个并发运行的控制流。为了对并发的控制流建模,在UML中引入了分叉和汇合的概念。
  分叉用来表示将一个控制流分成两个或者多个并发运行的分支,结合用来表示并行分支在此得到同步。
这里写图片描述

这里写图片描述

5. 分支与合并
  分支在活动图中很常见,它是转换的一部分,它将转换路径分成多个部分,每一部分都有单独的监护条件和不同的结果。当动作流遇到分支时,会根据监护条件(布尔值)的真假来判定动作的流向。分支的每个路径的监护条件应该是互斥的,这样可以保证只有一条路径的转换被激发。在活动图中,离开一个活动状态的分支通常是完成转换,它们是在状态内活动完成时隐含触发的。
  合并指的是两个或者多个控制路径在此汇合的情况。合并是一种便利的表示法,省略它不会丢失信息。合并和分支常常成对的使用,合并表示从对应分支开始的条件行为的结束。
这里写图片描述

6. 泳道
  为了对活动的职责进行组织而在活动图中将活动状态分为不同的组,称为泳道(swimlane)。每个泳道代表特定含义的状态职责的部分。在活动图中,每个活动只能明确的属于一个泳道,泳道明确的表示了哪些活动是由哪些对象进行的。
  每个泳道都有一个与其他泳道不同的名称。
  每个泳道可能由一个或者多个类实施,类所执行的动作或拥有的状态按照发生的事件顺序自上而下的排列在泳道内。
这里写图片描述

7. 对象流
  活动图中交互的简单元素是活动和对象,控制流(control flow)就是对活动和对象之间的关系的描述。详细的说控制流表示动作与其参与者和后继动作之间以及动作和其输入和输出对象之间的关系。而对象流就是一种特殊的控制流。
  对象流(object flow)是将对象流状态作为输入或输出的控制流。在活动图中,对象流描述了动作状态或者活动状态与对象之间的关系,表示了动作使用对象以及动作对对象的影响。

使用Rose创建活动图

1. 创建活动图
  要创建活动图,首先展开“Logic View”菜单项,然后在“Logic View”图标上单击鼠标右键,在弹出的菜单中选择“New”下的“Activity Diagram”选项建立新的活动图。
2. 创建初始和终止状态
  活动图也有初始和终止状态。初始状态在活动图中用实心圆表示,终止状态在活动图中用含有实心圆的空心圆表示。鼠标左键点击活动图工具栏中初始状态图标,然后在绘制区域要绘制的地方单击鼠标左键就可以创建初始状态。终止状态的创建方法和初始状态相同。
这里写图片描述

3. 创建动作状态
  要创建动作状态,首先点击活动图工具栏中的“Activity”图标,然后在绘制区域要绘制动作状态的地方单击鼠标左键。
  修改动作状态的属性信息。首先双击动作状态图标,在弹出的对话框“General”选项卡里进行如名称“Name”和文档说明“Documentation”等属性的设置。
4. 创建活动状态
   用鼠标左键双击活动图图标,在弹出的对话框中选择“Action”选项卡。然后在空白处单击鼠标右键,在弹出的右键菜单中选择“Insert”菜单项。
5. 创建转换
  要创建转换,首先点击工具栏中的“State Transition”图标,然后在两个要转换的动作状态之间拖动鼠标。
这里写图片描述

6. 创建分叉结合
  创建分叉与结合,首先点击工具栏中的“Horizontal Synchronization”图标按钮,在绘制区域要创建分叉与结合的地方单击鼠标左键。
这里写图片描述
  首先点击工具栏中的“Decision”图标按钮,然后在绘制区域要创建分支与合并的地方单击鼠标左键。
7. 创建泳道
  要创建泳道,首先点击工具栏中的“Swimlane”图标按钮,然后在绘制区域点击鼠标左键,就可以创建新的泳道。
  接下来可以修改泳道的名字等属性。选中需要修改的泳道,单击鼠标右 键,在弹出的菜单中选择“Open Specification”。弹出的对话框中的 “Name”字段可以修改泳道的名字。
8. 创建对象流状态与对象流
   首先点击工具栏中图标按钮“Object”,在绘制区域要绘制对象流状态的地方单击鼠标左键。
  接下来左键双击对象,在弹出的对象框“General”选项卡中,可以设置对象的名称、标出对象的状态、增加对象的说明等。其中“Name”字段可以输入对象的名字。如果建立了相应的对象类,可以在“Class”对象的下拉列表中选择。如果建立了相应的状态,可以在“State”字段下拉列表中选择。如果没有状态或需要添加状态,则选择“New”,然后在弹出的对话框中输入名字点击“OK”按钮即可。
  创建好对象流状态后,就可以开始创建对象流。首先点击工具栏中的图标按钮,然后在活动和对象流状态之间拖动鼠标创建对象流。
这里写图片描述

用Rose创建活动图的案例

1. 确定需求用例
  对于“教师查看修改学生信息”来说,他的参与者是教师,教师在查看修改学生信息的活动中,有3个用例:
   (1)登录:要进入系统,首先要登录。
   (2)查询学生信息:进入系统后可以选择查询不同学生的信息。
   (3)修改学生信息:需要修 改某些学生的部分信息,比如考试过后需要修改学生的成绩信息。
这里写图片描述

2. 确定用例路径
这里写图片描述

3. 绘制完整的活动图
这里写图片描述

  • 28
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值