第七章:活动图

  • 关于状态机
    状态机是UML为软件对象的动态行为进行建模的手段之一。
    它描述:软件对象在处理外部发生的事件时产生的动作和由此导致的软件对象的状态的变化,并以此刻画软件对象的动态行为。
    软件对象的动作被附加在状态机的变迁或状态上,如果被建模的对象是反应型对象,那么此对象的动作的执行是由对象外部发生的事件触发的。
    对反应型对象的这种动态行为的建模,在UML里,是用状态机图来表达的。

  • 对于非反应型对象
    软件对象的动态行为并不都是事件驱动的。例如,
    在使用特定的对象来实现特定的复杂算法时,此算法的动态行为既不是由多个对象的协同配合完成的,也不是由外部事件来驱动的。这类对象被称为是:非反应型对象。
    当非反应型对象的动态行为被执行时,动态行为的一系列的动作按照特定的控制逻辑(算法)顺序执行。

活动图概述
  1. 活动图是一种特殊形式的状态机,用于对计算流程和工作流程建模.
  2. 活动图中的状态表示计算过程中所处的各种状态,而不是普通对象的状态
  3. 通常,活动图假定在整个计算处理过程中没有外部事件引起的中断.否则,普通的状态机更适于描述这种情况
  4. 活动状态机的动作是自动执行的;状态机内不存在对外部事件的描述;控制在动作之间的转换不由事件触发,而是由完成变迁自动触发。
活动图的包含
  • 主要包含以下三个方面的内容:动作状态、活动状态、无触发变迁
    (1)动作状态
  1. 动作是状态机内原子的计算的执行。
  2. 在活动状态机中,对动态行为的建模,是通过附加在状态中的动作实现的。

(2)活动状态

  1. 活动是软件对象非原子的计算的执行。活动可以被进一步地分解为一系列的动作。
  2. 在大多数的情况下,软件对象的动态行为,可以用一系列的子过程来表达,而不需要细化至每个原子的计算。

(3)无触发变迁

  1. 无触发变迁又称为完成变迁。它在活动状态机里用于为动作的自动执行建模。
  2. 在UML里,完成变迁是不包含触发事件的变迁。
分解和汇合
  • 分解:分解表示一个控制流被分解为两个或多个并发执行的控制流。
  • 汇合:汇合代表两个或多个控制流的同步。只有当所有的控制流都到达汇合点之后,控制才继续向下流动。
  • 在分解和汇合的表示使用的是:同步条。同步条是一个粗的水平线。当同步条表示分解时,可以有:一个转入变迁,两个或多个转出变迁;当同步条用来表示汇合时, 它可以有两个或多个转入变迁,一个转出变迁。
泳道
  1. 定义:在UML里,对在语义上互相关联的活动状态的子集的划分,是使用泳道(swim lane)实现的。泳道是活动图里对其中的活动按照其职责上的关联进行的划分
  2. 样式:泳道在活动图内是一系列的垂直的隔断。
  3. 性质:在活动图里,泳道区分了其中的活动的不同职责。在有泳道的活动图中,每一活动都属于且只属于一个泳道。泳道之间可以有变迁的传递。
活动图的作用

描述控制在活动之间的流动:

  1. 第一是为业务流程建模.
  2. 第二是为对象的特定操作建模。

当活动图用来为业务流程建模时,它所起的作用主要是:
为软件系统的需求分析提供一种视化、交流和建档的手段。这时,可以利用泳道代表不同的业务部门,用活动代表不同的业务步骤。
在转入系统建造阶段时,根据泳道的划分,确立相应的协同,并可以用相应的交互和交互图来对软件的动态行为进行细化,并为软件的逻辑设计打下基础。

作为流程图,活动图还可以为对象的特定操作执行流程进行建模。用于对操作的动态行为的说明、视化、建档和建造。可以根据活动图的定义,对对象的操作的进行程序编码。

对比
  • 活动图VS交互图
  1. 活动图着重表现活动的控制流,描述在对象之间传递的操作
  2. 活动图虽然也存在着对象之间的合作,但它强调的是对象内部的控制逻辑和控制的流动
  3. 交互图着重表现的是对象到对象的控制流,描述在对象之间传递的消息
  4. 交互图强调的是软件对象之间外部职责的划分及合作
  • 活动图VS流程图
  1. 传统的程序流程图描述的是处理的过程,主要控制结构有顺序、分支和循环,各个处理之间有严格的顺序和时间关系
  2. 活动图描述的是对象(或模型元素)的活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而不是系统的处理过程,在活动图中也没有通常的循环控制结构。活动图能够表现并发情形
  • 活动图VS状态机
    相同点:
  1. 描述图符基本一样
  2. 可以描述一个系统或在生存期间的状态或行为。
  3. 可以描述多进程操作中的同步或异步操作的并发行为

不同点:

  1. 触发迁移的机制不同。活动状态迁移不需要事件触发,活动执行完毕可以直接进入下一个活动状态;
  2. 状态机图强调的是在外部事件的驱动下,软件对象的控制在不同的状态之间的流动;活动图强调的是在完成变迁引导下,对象的控制在活动之间的流动。
  3. 描述多个对象共同完成一个操作的机制不同
  4. 状态机图:它强调的是控制在状态之间的流动。活动图:它强调的是控制在不同活动之间的流动。它们表现的都是软件系统的动态行为。
活动图建模步骤

(1)在采集的原始需求中选择重点流程
(2)首先要确定要设计的活动图是针对业务流程还是用例
(3)其次要设计活动过程的起点和终点。
(4)确定活动图所有执行对象。
(5)确定活动节点,并根据执行对象进行活动分组。
(a)如果对用例建活动图,则把角色所发出的每一个动作变为活动节点。
(b)如果对业务流程建活动图,则把每一个流程步骤(或片段)变为活动节点。
(6)确定活动节点之间转移。
(7)处理在活动节点之间的分支和合并。
(8)处理在活动节点之间的分叉和汇合。
(9)用UML建模工具进行活动图建模。
(10)编写必要的补充文档。

杂项
  • 菱形符号不但可以有两个或多个转出变迁,也可以有两个或多个转入变迁。带有两个或多个转入变迁的菱形符号又称为合并(merge)。

软件工程 第七章:活动图相关推荐

  1. 《数据结构(C语言版)》严巍敏课件~第七章:图

    <数据结构(C语言版)>严巍敏课件-第七章:图

  2. uml活动图 各个功能的操作流程和分支_软件工程专题:UML活动图

    关注BeTester,学习更多知识 让碎片成体系,让测试更专业 1.概述 活动图(Activity Diagram),描述了活动的顺序,展现从一个活动到另一个活动的控制流,即活动图是一种流程图.活动图 ...

  3. 【阅读论文】第七章--多图重建的黄斑肿大检测--博-自动化眼底图像分析技术可筛查糖尿病患者的视网膜疾病

    7.多图重建的黄斑肿大检测 在本章中,我们提出了一种新的技术,使用未校准的多视图眼底图像来分析黄斑肿胀.这项创新使眼科医生能够使用便宜的眼底照相机远程检测和定量测量肿胀区域.该功能在单个图像中不可用, ...

  4. 现代软件工程 第七章 【MSF】练习与讨论

    7.7  移山开发方法--比TFS敏捷更精简 几个软件学院的学生来请教阿超,同学们自豪地说,我们要用全套TFS敏捷开发模式开发项目! 真的?阿超不敢相信. 同学: 对!我们要用全5个工作项类型 – 任 ...

  5. 软件工程 --第七章 -- 实现(未完)

    软件测试:40%工作量 测试横跨2个阶段: 1.在编写出每个模块就要进行必要的测试-编写和单元测试 2.对软件系统进行各种综合测试 测试的目标:发现软件中的错误 软件测试基础 软件测试准则 paret ...

  6. 马丁福勒《UML精粹》读书笔记_第七章

    第七章 包图 什么是包图? 包图是一种聚组构造,可以将UML中任一构造聚组在一起,以构成更高层的单位. 每个包表示一个名空间.在一个包内,类名要唯一,但不同包内,同一类名可以表示不同的类. 什么时候使 ...

  7. UML教程7:活动图

    文章目录 大纲 七.活动图 7.1 活动图概要 7.2 活动图事物 7.3 活动图关系 7.4 活动图实例 1.一般的活动图 2.带泳道的活动图 本文转载自:https://www.cnblogs.c ...

  8. 软件工程复习提纲——第七章

    软件工程复习提纲,期末.考研的学霸笔记 第七章--维护 第七章维护 1.维护的定义:软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程. 1)四类维护活动: (1)改正性维护 (2)适应 ...

  9. C语言数据结构-第七章图-电大同步进度

    第七章图 内容简介 图结构中结点之间的关系是任意的,每个元素都可以和其他任何元素相关,即元素之间是多对多的关系. 图作为一种非线性数据结构,被广泛应用于多个技术领域,例如系统工程.化学分析.统计力学. ...

最新文章

  1. 如何优雅的编写 JavaScript 代码
  2. InputFlinger崩溃问题分析报告
  3. NLP之ASR:语音识别技术(Automatic Speech Recognition)的简介、发展历史、案例应用之详细攻略
  4. hiveql笔记(一)
  5. 多线程与高并发(八):ThreadPoolExecutor源码解析, SingleThreadPool,CachedPool,FixedThreadPool,ForkJoinPoll 等
  6. MySQL数据库事务中的行级锁,表级锁,页级锁
  7. (转)百度Map API
  8. 在win7下搭建php+apache+mysql环境
  9. 随想录(协议栈的基本技术)
  10. typescript的基本类型
  11. cx_oracle主备服务器,怎么在Python中使用cx_Oracle模块对Oracle数据库进行操作
  12. Excel 数据批量生成SQL语句
  13. locate用主动还是被动_已婚女人VS未婚女人,你觉得女人是应该主动出击还是被动接受?...
  14. 【转】拉勾网 - 《2016互联网职场生态白皮书》
  15. 重复可记,证明没有忘记这回事
  16. Atheros AR9285坑爹网卡仅仅有54M/65M,开启150M速率的方法
  17. zabbix—监控mysql数据
  18. Linux操作--上传本地文件到服务器
  19. 百度网盘免费jdk1.8中文chm下载(不要积分点个赞就好)
  20. 护眼html颜色,在电脑中设置护眼颜色、更换网页背景色、一键护眼

热门文章

  1. 矩阵代数(五)- 矩阵因式分解
  2. win 7 分区工具
  3. 前google工程师,带你跨过“数据结构与算法”这道坎
  4. 别怕,三招教你恢复TF卡分区后的数据
  5. <Visual Studio>“正在加载......的符号”的解决方法
  6. 微信小程序开发之六 —— 数据绑定与列表渲染
  7. 基于arduino制作农业大棚监控系统(采集)
  8. oracle19c数据库安装(静默安装)
  9. 电销机器人对销售人员工作开展有什么帮助?
  10. 快速掌握Nginx(二) —— Nginx的Location和Rewrite