状态图和活动图

  • 状态图
    • 1.1概述
      • 1.1.2 基本元素
      • 1.1.3 状态
      • 1.1.4 转换
      • 1.1.5状态图的建模技术及应用
  • 2.活动图
    • 2.1活动图概述
    • 2.2 活动图的基本元素
    • 2.3 动作状态
    • 2.4活动状态
    • 2.5转移
    • 2.6 分支
    • 2.7分叉和汇合
    • 2.8泳道
    • 2.9对象流
    • 2.10活动图的建模技术及应用
    • 2.11状态图和活动图的比较
  • 总结

状态图

          状态图,用于UML中建立动态模型,主要描述系统随时间变化的行为,这些行为是用从静态视图中抽取的系统的瞬间值的变化来描述的。在对象的生命期建模中,状态图显示了一个状态机,展示的是单个对象内从状态到状态的控制流。状态图通过对类的对象的生存周期建立模型来描述对象随时间变化的动态行为(方法)。

1.1概述

  1. UML状态图中的状态是指在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况。状态用圆角矩形表示,初态(Initial States)用实心圆点表示,终态(Final States)用圆形内嵌圆点表示。
  2. 状态图(又称状态机图)由状态、转换、事件、活动和动作五部分组成,是展示状态与状态转换的图。通常一个状态图依附于一个类(一个图描述以一个类),并且描述一个类的实例。状态图包含了一个类的对象在其生命周期期间的所有状态的序列以及对象对接收到的事件所产生的反应。它是状态节点通过转移连接的图,描述了一个特定对象的所有可能状态,以及由于各种事件的发生而引起状态之间的转移。大多数面向对象技术都使用状态图来描述一个对象在其生命周期中的行为。


一个图书对象从它的起始点开始,首先是“新书”状态(new book),然后是“可以借阅”(available)的状态,如果有读者将书借走,则该书的状态为“已借出”状态(borrowed),如果图书被归还图书馆,图书的状态又变为“可以借阅”状态。图书馆如果放弃该图书对象的收藏,则图书对象处于“删除”状态(delete),最后到达“终止”状态。

1.1.2 基本元素

状态之间的过渡事件(event),对应对象的操作。事件有可能在特定的条件下发生,在UML中这样的条件称为警戒条件(guard condition)。发生事件时的处理称为动作(action)。从一个状态到另一个状态之间的连线称为转移(transitions)。状态图通常包含如下内容。
⑴ 状态
状态定义对象在其生命周期中的条件或状况。
⑵ 转换
对象的状态之间的转移叫转换,它包括事件和动作。

1.1.3 状态

一个对象的状态可能包含子状态或其它一些更加详细的内容。具体的有以下五个部分组成:名称、 进入/退出动作、 内部转换、子状态和延迟事件。
⑴名称(name)
⑵进入/退出动作(entry/exit action)
⑶内部转换(Internal Transition) 不需要入口 出口动作
⑷子状态(sub state)具有子状态的状态被称之为 《主播状态》???
⑸延迟事件(Deferred Event)

1.1.4 转换

UML状态图中转换是两个状态之间的一种关系,表示对象将在源状态(Source State)或当前状态中执行一定的动作,并在某个特定事件发生而且某个特定的警界条件满足时进入目标状态。
转换是由如下5部分组成:
⑴源状态 (转换前的状态
⑵触发事件 (引起转变的事件 条件 诱因 (可以带有参数))
例: 灯 (关闭状态 开启状态)状态的转换 就需要 触发事件 (按开关)
(3) 监护条件 (必要条件?灯是无损的 要通电)
⑷动作 可执行的原子操作 (不可中断 执行速度快)例 开灯 关灯
⑸目标状态 转换后的状态

  • 状态图转换的元素
    在用电磁炉烧开水的过程中,水的状态由源状态“Off”(不沸腾)转换为目标状态的“On”(沸腾)时,水壶中“有水”就是其监护条件,开启电源开关“turnOn”是其触发事件,进行“烧水”是状态转换的动作。

1.1.5状态图的建模技术及应用

  • 状态图用于对系统的动态方面建模。动态方面是指出系统体系结构中任一对象按事件排序的行为,这些对象可以是类、接口、组件和节点。当使用状态图对系统建模时,可以在类、用例、子系统或整个系统的语境中使用状态图,对类、用例和系统实例的行为建模。
  • 状态图表示某个类所处的不同状态和该类的状态转换信息。虽然每个类都有状态,但在系统活动期间仅对具有三个或更多潜在状态的类才画一个状态图,进行状态图描述。用状态图对一个对象按事件排序的方法建模,状态图是强调从状态到状态的控制流的状态机的简单表示。
  • 使用状态图的最常见的是对反应型对象、尤其是对类、用例或整个系统的实例的行为建模。反应型对象是指这个对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作。反应型对象具有如下的特点:
    ⑴响应外部事件,即来自对象语境外的事件;
    ⑵具有清晰的生命期,可以被建模为状态、迁徙和事件的演化;
    ⑶当前行为和过去行为存在着依赖关系;
    ⑷在对事件做出反应后,它又变回空闲状态,等待下一个事件。
  • 使用状态图对系统反应型对象建模时,应遵循如下策略:
    ⑴选择状态机的语境(即建模对象),不管它是类、用例或是整个系统;
    ⑵选择这个对象的初态和终态。为了指导模型的剩余部分,可能要分别地说明初态和终态的前置条件和后置条件;
    ⑶考虑对象可能在其中存在一段时间的条件,以决定该对象所在的稳定状态。从这个对象的高层状态开始,然后考虑它的可能的子状态;
    ⑷在对象的整个生命周期中,决定稳定状态的有意义的顺序;
    ⑸决定可能触发从状态到状态的转换的事件。将这些事件建模为触发者,它触发从一个合法状态序列到另一个合法状态序列的转换;
    ⑹把动作附加到这些转换上,并且附加到这些状态上;
    ⑺考虑通过使用子状态、分支、汇合和历史状态,来简化状态图;
    ⑻核实所有的状态都是在事件的某种组合下可达的;
    ⑼核实不存在死角状态,即不存在那种不能转换出来的状态;
    ⑽通过手工或通过使用工具跟踪状态机,核对所期望的事件序列以及它们的响应。
    首先,确定主要的状态,在这里电话开机时,处于空闲状态,当用户拨号呼叫某人时,话机进入拨号状态。如果呼叫成功则电话接通,电话处于通话状态,如果呼叫不成功,拨号失败,这时话机重新回到空闲状态。话机在空闲状态被呼叫,进入响铃状态。如果用户摘机接听电话,话机处于通话状态。完成通话挂机后话机回到空闲状态。如果用户没有摘机则话机处于继续响铃状态。如果用户拒绝来电,话机回到空闲状态。因此,拨打电话的过程可以总结出4个状态,即空闲、拨号、通话和响铃。

2.活动图

活动图,用于UML中建立动态模型,主要描述系统随时间变化的行为,这些行为是用从静态视图中抽取的系统的瞬间值的变化来描述的。在对象的生命期建模中,活动图是一种特殊形式的状态机,用于对计算机流程和工作流程建模。活动图从本质上说是一个流程图,展现跨过不同的对象从活动到活动的控制流。与传统的流程图不同的是,活动图能够展示并发和控制分支。

2.1活动图概述

在用例模型中,可以利用文本来描述用例的业务流程,但如果业务流程较为复杂的话,则可能会难以阅读和理解,这时需要用更加容易理解的方式(图形)来描述业务过程的工作流,在UML中将这类描述活动流程的图形称为活动图(Activity Diagram)。
活动图被设计用于简化描述一个过程或者操作的工作步骤。活动用圆角矩形表示,接近椭圆。一个活动中的处理一旦完成,则自动引起下一个活动的发生。箭头表示从一个活动转移到下一个活动。和状态图类似,活动图中的起点用一个实心圆表示,终点用一个实心圆外加一个圆圈表示。在一个活动图中,只有一个起始状态,可以有零个或多个终止状态。
活动图表示在处理某个活动时,两个或者更多类对象之间的过程控制流。它用来描述采取何种动作、做什么(对象状态改变)、何时发生(动作序列)以及何处发生(泳道)。活动图可用于在业务单元的级别上对更高级别的业务过程进行建模,或者对低级别的内部类操作进行建模。活动图可以用作以下目的:
⑴描述一个操作执行过程中所完成的工作(动作),这是活动图最常见的用途。
⑵描述对象内部的工作。
⑶显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。
⑷显示用例的实例如何执行动作以及如何改变对象状态。
⑸说明一次业务流程中的人(参与者)和对象是如何工作的。

活动图都是用的圆角矩形

2.2 活动图的基本元素

活动图的符号集与状态图中使用的符号集类似。像状态图一样,活动图也从一个连接到初始活动的实心圆开始。活动是通过一个圆角矩形(活动的名称包含在其内)来表示的。活动可以通过转换线段连接到其他活动,或者连接到判断点,这些判断点连接到由判断点的条件所保护的不同活动。结束过程的活动连接到一个终止点(就像在状态图中一样)。活动图中的基本要素包括状态、转移、分支、分叉和汇合、泳道、对象流等。

2.3 动作状态

对象的动作状态是活动图中最小单位的构造块,表示原子动作。动作状态有三个特性:
⑴原子性:即不能被分解成更小的部分;
⑵不可中断性:即一旦开始就必须运行到结束;
⑶瞬时性:即动作状态所占用的处理时间通常是极短的,甚至是可以被忽略的动作状态使用带圆端的方框表示。如图7.13符号所示。
动作状态如图示:

2.4活动状态

动作状态表示的是不可分割的原子动作,而活动状态则不同,它表示的是可以分割的动作。特点是:它可以被分解成其他子活动或动作状态,它能够被中断,占有有限的时间。活动状态可以理解为一个组合,它的控制流由其他活动状态或动作状态组成。
在UML中,动作状态和活动状态的图标没有什么区别,都是圆端的方框。只是活动状态可以有附加的部分,如可以指定入口动作、出口动作、动作状态以及内嵌状态机。

2.5转移

转移也称转换是两个状态间的一种关系,表示对象将在当前状态中执行动作,并在某个特定事件发生或某个特定的条件满足时进入后继状态。在UML中用一条简单的带箭头的直线表示一个转移。箭头上可以带有监护条件表达式。

2.6 分支

分支用于描述基于某个条件的可选择路径。一个分支可以有一个进入转移和两个或多个输出转移。在每条输出转移上都有监护条件表达式保护,当且仅当监护条件表达式为真时,该输出路径才有效。在所有输出转移中,其监护条件不能重叠,而且它们应该覆盖所有的可能性。UML活动图中的分支用菱形表示。

2.7分叉和汇合

  • 对象在运行时可能会存在两个或多个并发运行的控制流,为了对并发的控制流建模,UML中引入了分叉与汇合的概念。分叉用于将动作流分为两个或多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的。
  • 在UML中使用分叉和汇合表示并行发生的事件流。分叉表示把一个单独的控制流分成两个或多个并发的控制流。一个分叉可以有一个进入转移和两个或多个输出转移,每一个转移表示一个独立的控制流。 汇合表示两个或多个并发控制流的同步发生,一个汇合可以有两个或多个进入转移和一个输出转移。分叉和汇合应该是平衡的。分叉和汇合在图形上都使用同步条来表示,同步条通常用一条粗的水平线表示。
    显示了分叉和汇合的图示。

2.8泳道

泳道将活动图中的活动划分为若干组,并把每一组指定给负责这组活动的业务组织,即对象。每一组表示一个特定的类、人或部门,他们负责完成组内的活动。在活动图中,泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的。在包含泳道的活动图中,每个活动只能明确地属于一个泳道。泳道用于表示实际执行活动的对象。
泳道是用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道的上方可以给出泳道的名字或对象的名字,该对象负责泳道内的全部活动。泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。

2.9对象流

用活动图描述某个对象时,可以把所涉及的对象放置在活动图上,并用一个依赖将这些对象连接到对它们进行创建、撤销和修改的活动转移上。这种包括依赖关系和对象的应用被称为对象流。对象流是动作和对象间的关联。对象流可用于对下列关系建模:动作状态对对象的使用以及动作状态对对象的影响。
对象流中的对象有以下特点:
⑴一个对象可以由多个动作操作。
⑵一个动作输出的对象可以作为另一个动作输入的对象。
⑶在活动图中,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存期的不同时间点。
动作状态出发指向对象,则表示动作对对象施加了一定的影响。施加的影响包括创建、修改和撤销等。如果箭头从对象指向动作状态,则表示该动作使用对象流所指向的对象。状态图对象流用带有箭头的虚线表示。如果箭头是从中的对象用矩形表示,矩形内是该对象的名称,名称下的方括号表明对象此时的状态。
下图显示了一个支付账单的对象流。

2.10活动图的建模技术及应用

活动图用于对系统的动态行为建模,在对一个系统建模时,通常有两种使用活动图的方式:
⑴为工作流建模
对工作流建模强调与系统进行交互的对象所观察到的活动。工作流一般处于系统的边界,用于可视化、详述、构造和文档化开发系统所涉及的业务流程。用于业务建模的时候,每一条泳道表示一个职责单位,该图能够有效地体现出所有职责单位之间的工作职责,业务范围及之间的交互关系、信息流程。
⑵为对象的操作建模
在这种情况下活动图本质上就是流程图,它描述系统的活动、判定点和分支等部分。因此,在UML中,可以把活动图作为流程图来使用,用于对系统的操作建模。每一个对象占据一个泳道,而活动则是该对象的成员方法。

2.11状态图和活动图的比较

状态图和活动图都是用于对系统的动态行为建模。状态机是展示状态与状态转换的图。通常一个状态机依附于一个类,并且描述这个类实例对接收到的事物的反应。状态机有两种可视化方式,分别是状态图和活动图。如果强调对象的潜在状态和这些状态的间的转换,一般使用状态图;如果强调从活动到活动的控制流,一般使用活动图。活动图被设计用于描述一个过程或操作的工作步骤,从这方面讲,它可以算是状态的一种扩展方式,状态图描述一个对象的状态以及状态的改变,而活动图除了描述对象状态外,更突出了它的活动。

总结

本章介绍了状态图和活动图的基本概念、UML表示法和建模的技术。在UML建模过程中,状态图是非常必要的,它能帮助系统开发人员理解系统中对象的行为。而类和对象图只能展现系统的静态层次和关联,并不能表达系统的行为。而详细描述了对象行为的状态图,帮助开发人员构造出符合用户需求的系统。通过拨打电话工作、航班机票预订系统和网上银行登录系统来阐述了状态图的绘制过程:确定状态,分析状态间的转换,细化活动与内部转化等过程完成状态,介绍了状态图对对象的生命周期建模以及对反应型对象的行为建模的功能和建模策略。
UML中的活动图主要是个流图,它描述了从活动到活动的控制流,它还可以过来描述对象在控制流的不同点从一个状态转移到另外一个状态的对象流。对活动图的基本内容的讲解,主要包括动作状态、活动状态、转移、分支、分叉和汇合、泳道、对象流。并举例探讨了用活动图为工作流建模和操作建模的策略。


待续

系统建模之状态图,活动图相关推荐

  1. UML 建模步骤 用例图 类图 对象图 包图 顺序图/时序图 状态图 活动图 协作图

    统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明.可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言. UML是面向对象设计的建 ...

  2. 行为建模(状态图-活动图)

    行为建模--状态图 状态机(State Machine) 状态(State) 转移 状态机图的建模技术 用户 绘制用例机图 新增运动员报名 修改运动员报名 管理员 什么是活动图 活动图的用途 活动图的 ...

  3. OOSE-5-用例图/顺序图/状态图/活动图

    文章目录 1 用例图 1.1 参与者 1.2 用例 1.3 用例描述 1.4 一个示例 2 顺序图 2.1 基本概念 2.2 组成部分 2.2.1 对象 2.2.2 生命线 2.2.3 激活 2.2. ...

  4. UML图之四——活动图

    点击打开链接活动图是一种流程图,用来描述活动的序列,从一个活动到另一个活动的控制流. 活动图的作用:描述用例,描述类的操作. 活动图的构成 必要组成元素: 1.活动:命令的执行,活动的进行. 图符表示 ...

  5. uml点餐系统活动图_UML活动图(Activity Diagram)

    目录: 1.什么是活动图 2.活动图的构成 (1)起点 (2)重点 (3)活动名称 (4)判断条件 (5)同步条 (6)接收信号 (7)发送信号 (8)泳道 (9)转移 3.活动图实例--订单处理 4 ...

  6. 活动图、类图、顺序图、状态图

    目录 1. 活动图 1.1 活动图的开始.结束.对象 1.2 活动节点 1.3 分支 1.4 分岔和汇合( Forking and Joining) 1.5 泳道(Swimlanes) 1.6 活动图 ...

  7. 状态图和活动图的区别

    一,活动图 活动图(activity diagram,动态图)是阐明了业务用例实现的工作流程.业务工作流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作.业务用例由一系列活动组成,它们 ...

  8. 时序图、活动图、状态图、协作图的区别

    时序图 时序图用于描述对象之间的传递消息的时间顺序, 即用例中的行为顺序. 当执行一个用例时, 时序图中的每条消息对应了一个类操作或者引起转换的触发事件. 在 UML 中, 时序图表示为一个二维的关系 ...

  9. ****** 五十 ******、软设笔记【UML分析和意义】-类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图,动静态模式...

    一.类图(Class Diagram) 描述一组类.接口.协作已经它们之间的图,用来显示系统中各个类的静态结构图. 类之间的关系(relationship) *依赖(dependency) *泛化(g ...

  10. UML模型中的图-行为图【状态图、活动图】

    前言 前面的博文为大家分享了UML模型中的用例图.静态图.接下来继续为大家分享UML模型中的图-行为图. 正文 行为图用来描述系统的动态模型和对象之间的交互关系.行为图在UML模型中也是一个语义上分类 ...

最新文章

  1. WindowType 属性
  2. OpenCV学习笔记(一)(二)(三)(四)(五)
  3. 科大星云诗社动态20210305
  4. 【译】Android中的安全数据-初始化向量
  5. dart系列之:数学什么的就是小意思,看我dart如何玩转它
  6. Python函数式编程中map()、reduce()和filter()函数的用法
  7. 基于 Blazui 的 Blazor 后台管理模板 BlazAdmin 正式尝鲜
  8. Project Chameleon Work In Progress 12
  9. BUPT 2012复试机考 2T
  10. python利用什么写模块_python模块是什么?写法及作用分析
  11. java中数据类型及运算符的注意事项
  12. 全球地区选择,支持中英文切换。国家-省市-城市-地区
  13. 明通智能:EA交易外汇ea能稳定盈利吗?
  14. T270731 中奖
  15. pairing function
  16. PHP除数取余数,php相除取余数的实现方法
  17. 使用 Linux 文件恢复工具
  18. 《C语言程序设计》江宝钏主编-习题4-2-分段函数
  19. Chart.js给图片数据动态赋值
  20. 服务器被流量攻击怎么办

热门文章

  1. 《ANSYS Workbench有限元分析实例详解(静力学)》——2.5 Windows界面相应操作
  2. python-docx处理word文件指定页面批量打印
  3. 服务器网站dns服务器,国内各个域名服务商主要dns服务器
  4. Java批量下载有道单词发音+与Anki卡片整合
  5. AI智能语音识别算法原理 二
  6. OSEK直接网络管理(NM)
  7. iOS 指纹识别/人脸识别登录(ECDSA 加签)
  8. 防御SQL注入的方法总结
  9. 计算机无法上网修复工具,lsp怎么修复解决上不了网问题汇总
  10. 天气类App原型制作分享-ColorfulClouds