状态机图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 状态机图中的模型元素
2.1 状态 – 定义 • 状态(state)是指在对象的生命周期中 满足某些条件、执行某些活动或等待某些 事件的条件(condition)或状况 (situation) – 图形表示 • 圆角矩形表示,状态的名称放在圆角矩形 中
2 状态机图中的模型元素
2.2 起始状态和终止状态
建模状态机图模型
标识出需要进一步建模的实体(对象、类)
标识出每个实体的开始和结束状态
确定与每个实体相关的事件
从开始状态建模完整的状态机图
如果有必要,则构建组合状态
实例:图书管理系统
Book的状态 Available:未借出 Borrowed:借出
Borrower的状态 Account Available:帐户可知 Account Unavailable:帐户不可知
3 指定状态机图中的动作和事件
3.1 事件
--事件是一个在时间和空间上都占据一事实上位置的 有意义事情的规约,它能指示状态之间转移的条 件。一个事件的发生能触发状态的转移。 --事件既可以是内部事件,也可以是外部事件;可以 是同步事件,也可以是异步事件。内部事件是指 在系统内部对象之间传送的事件(如异常);外 部事件是指在系统和它的参与者之间传送的事件 (如指定文本框中输入的内容)。
4 组合状态
4.1 组合状态
--把若干个状态组织在一起可构成一个组合状态;组合状态内 所包含的状态称为该组合状态的子状态。把内容不包含其他 状态的状态称为简单状态。 --组合状态中包含的子状态可以是顺序子状态,也可以是并发 的子状态。
4.2 顺序子状态
--如果一个组合状态的子状态对应的对象在其生命周期内的任 何时刻都只能处于一个子状态,即状态机图中多个子状态是 互斥的,不能同时存在,这种子状态称为顺序子状态。 --在顺序子状态中最多只能有一个初态和一个终态。
状态机图及其应用
1 基本概念
1.1 对象状态
--状态是事物的一种属性,在一般情况下是指事 物所表现出来的行为或形态。 例:汽车(点火、行驶、故障、停车) 人(睡眠、清醒、兴奋、忧郁) 水(液体、固体、气体) --对象状态是指对象或所属类的所有属性的当前 值。 --对象状态是指对象或所属类的整体行为的某些 规则所能适应的状况、情况、条件、形式或生 存周期阶段。
7.1 General标签 7.2 Detail标签
• 监护条件(Guard Condition)
– 条件状态转换只有当条件表达式 为真时才被触发。监护条件显示 在转换的附近,表示在方括号内: 事件名(参量)[条件]/动作^目标. 事件(参量) – 子状态之间的转换:当转换被放 置在视图中隐藏的子状态,或者 转换来自于视图中隐藏的子状态 时,子状态之间的转换变得十分 有用。From栏显示了转换出发 时所在状态的状态名,To栏转换 所指的状态名。From和To任何 时候都处于激活(active)状态
8 判断规范
8.1 General标签
8.2 Transitions标签
8.3 Swimlanes标签
9 同步规范
9.1 General标签 9.2 Transitions标签
1 基本概念
1.4 状态机操作
– 创建一个状态模型: • 单击Browse>State Machine Diagram, 在左边的“State Machine”下面选择新 创建的状态模型所要放置的位置: • 双击New: • 在Title文本框中为图命名; • 指定要创建的图类型:活动图(Activity) 或状态图(Statechart); • 单击OK按钮。
• 单击鼠标右键,显示快捷菜 单; • 单击Insert添加一个条目 (entry)项; • 双击添加的“Entry/”项,显 示动作规范窗口; • 在Name栏输入动作描述。如 果该栏未被激活,在Tyep栏 单击Action。
6 动作规范
6.2 状态动作
– 在一个状态中,有以下4中 可能的动作:
2 状态机图中的模型元素
2.3 状态转移 – 状态转移通常采用如下的语法进行标记: 事件名(参量)[监护条件]/动作 – 转移及转移动作
转移种类 入口动作 出口动作 外部转移 含 义
进入某一状态时执行的动作 离开某一状态时执行的动作 引起状态改变的转移或自身转移,同时执行一个 具体的动作,包括引起入口动作和出口动作被 执行的转移 引起一个动作的执行但不改变状态或不引起入口 动作和出口动作的执行
• • • • On Entry On Exit Do On Event
– 1) On Event
• Event:对一个在时间和空间 上占有一定位置的有意义事 情的规格说明 • Arguments:由所有与事件相 关的可选参量组成 • Condition:可能包含一个条 件布尔表达式
7 转换规范
2 状态机图中的模型元素
2.4 判断与决策点
– 定义 • 表示工作流基于监护条件将出现分支的位置 – 图形表示 • 判断在状态图机中表示为一个棱形
2 状态机图中的模型元素
2.5 同步
– 定义
• 在状态机图中,同步可视化地定义那些表示并行 工作流的分叉和结合 • 在浏览器中并不显示同步
– 图形表示:一条粗的水平或垂直的棒条
1 基本概念
--对象的每一种状态通过对象的一个属性 或几个属性的值来表达。
--分析状态的目的:为了认识对象的行为 规律,为了看清在不同的状态下对象将 呈现哪些行为,这些行为将遵循什么规 律和约束,以及通过什么行为能使对象 从一种状态转移到另一种状态,从而确 切地定义这个对象。
--认识对象状态的抽象原则:划分状态等价类
4 组合状态
顺 序 子 状 态 图
4 组合状态
4.3 并发子状态
4.4 同步状态
--同步状态是连接两个并发区域的特殊状态,用于对并发区域 之间的控制进行同步。 --在同步状态中使用了同步条,使用转移把一个区域里分叉的 输出连接到同步状态的输入上;再使用转移把同步状态的输 出连接到另外一个区域中的汇合输入上。 --同步状态使用一个小圆圈表示,小圆圈里面用一个整数或一 个*表示上界。
1 基本概念
1.2 状态建模
--通过分析系统(或者其构成元素)的状态以及它们之 间的转移,并以状态、转移等概念来建立系统模型称 为状态建模。
1 基本概念
1.3 状态机图
– 状态机图描述了一个对象在其生命周期内所经 历的各种状态,状态之间的转移,发生转移的 动因、条件以及转移中所执行的活动。 – 通过状态机图可以了解一个对象所能到达的所 有状态以及对象收到的事件(收到的消息、超 时、错误和条件满足等)对对象状态的影响 (引起状态转移)等。 – 状态机图实质上是一种由状态、转移、事件和 动作组成的状态机,用来建模对象是如何改变 其状态的,并且定义了状态面的表示符号。
1 基本概念
1.4 状态机操作
– 定义 • 在UML规格文件中,状态机被定义为是 一种行为,说明对象或交互在它们的声明 周期中为响应事件所经历的状态序列,以 及它们的响应和动作。 • 创建一个状态机图时,Rational Rose自 动创建一个状态模型。 • Rational Rose限定每个所有者只能拥有 一个状态模型。
源状态
exit/退出系统
Shift
目标状态
entry/进入系统
(3)do:内部活动,用来指定处于某种状态时发生的活动(与 该状态关联的某些工作)。内部活动的语法形式:do/活动表 达式。
(4)include:引用子状态机状态,语法形式为: include 子 状态机名。从而实现调用另一个状态机。 (5)event 用来指定特定事件触发时指定相应动作的发生,它 不是用关键字来标记事件。语法形式为: 事件名(参数列表)[监护条件]/动作名 其意义是:当事件名指定的事件发生时(监护条件满足)时 自动触发动作名指定的动作。 注:当事件有多个动作发生时,它们之间用,隔开。如: entry/Initial(),Check(),UpdateCheck()
图书状态机图
借阅者状态机图
5 状态规范
– 状态(起始状态和终止状 态)和活动的规范窗口都 包含下列标签:
• • • • General标签 Actions标签 Transitions标签 Swimlanes标签
– 1) General标签
• 复选标记State/activity history:状态/活动历史, 历史提供了一种通过子 状态直接转换到最近访 问过的状态的机制。
--事件:调用事件、信号事件、变化事件、时间事件、 延迟事件
调用事件:一个调用事件代表一个操作的调用,它 是同步的。调用事件往往是类图中定义的一些方法 事件。
信号事件:信号是对象异步地发送并由一个对象接 收的具有名字的对象。信号可作为状态机中一个状 态转移的动作被发送,也可作为交互中的一条消息 被发送。信号事件可以定义任何需要的事件。
Saved Print/defer
3 指定状态机图中的动作和事件
3.2 动作
--动作可以由对象的操作和属性组成,也可以由事件 说明中的参数组成,在一个状态中允许有多个动作。 动作说明当事件发生时产生了什么行为。 --状态有如下5种基本动作类型:
(1)entry:入口动作,用来指定进入状态时发生的 动作。入口动作的语法形式:entry/动作名
2 状态机图中的模型元素
2.3 状态转移
– 说明一个处于源状态的对象将要执行某种(些)指 定的动作,并且当特定的事件发生或者某种条件被 满足时,将进入目标状态。 – 状态转移是两个状态之间、两个活动之间或者一个 活动和一个状态之间的关系。 – 可以从一个状态发出一个或多个状态转移,前提是 转移要唯一。从一个状态发出的转移不能具有相同 的事件,除非事件中有多个条件。转移既可以出现 在状态图中,也可以出现在活动图中 – 图形表示:
内部转移
手 机 通 信 状 态 图
状 态 转 移 示 例 图
2 状态机图中的模型元素
Hale Waihona Puke 自转移– 定义 • 包含的源状态和目标状态相同,所包含的动作 和事件与转移完全相同。不改变对象状态,只 导致对象状态的中断。 – 图形表示
内部转移
--在不离开一个状态的情况下连续
执行多个动作的情形称为内部转移。
– 起始状态 • 又称“初始状态” ,在状态图中,起始状态显式 地给出一个状态机执行的起始点,表示导致转换 (transition)的事件中的起始事件;在活动图 中,起始状态显式地给出一个工作流的起始点。 • 一个状态机只能有一个起始状态。 – 终止状态 • 表示活动的结束或者一个最终状态,即对象从内 存中删除之前所处的状态 • 状态图可以有0个、1个或者多个终止状态。
帐号输入状态 entry/清空输入框
(2)exit:出口动作,用来指定状态被另一个状态取代时发生 的动作。出口动作的语法形式:exit/动作名。 帐号输入状态
exit/检查输入内容 入口动作与出口动作是被隐式地激活,既没有参数,也 没有监护条件。 对一个跨越几个状态边界的转移,按照嵌套顺序依次执 行多个相关状态的入口动作和出口动作。执行顺序按照最外 层的嵌套顺序依次执行源状态的出口动作,然后执行转移上 的动作,最后按照从最外层到最内层的嵌套顺序依次执行目 标状态的入口动作。
变化事件:变化事件是状态中的一个变化或者某些 条件满足的事件。用关键字when标识它,它隐含 了对于控制条件的连续测试,相当于循环结构。
时间事件:时间事件是经过一定的时间或者到达某 个绝对时间后发生的事件。用关键字after标识,后 面跟着计算一段时间的表达式。
延迟事件:在UML中,建模人员有时需要识 别某些事件,延迟对它们的响应直到以后某 个合适的时刻才执行,在描述这种行为时可 以使用延迟事件。用关键字defer标识,使用 语法形式为: 延迟事件/defer
5 状态规范
– 2) Actions标签
• Type:类型字段标识符栏列 出了动作规范中指定的动作 种类 • Action Expression:列出了4 种可能的时间选项,规定了 一个动作执行的时机和被执 行动作的类型。见动作规范 的Detail标签
6 动作规范
6.1 创建一个新的动作
– 在状态图规范窗口的 Actions标签中: