第10章 状态机图讲解
- 格式:ppt
- 大小:1.15 MB
- 文档页数:53
产品之术一目了然的状态机图什么状态机图,它的使用情景是什么?文章为你解读。
做产品的时候,直觉我们当遇到一些比较复杂的逻辑问题。
比如状态的转换,字段状态的确认,权限的控制,状态的对应。
而普通的流程图,或时序图,相当侧重于流程特技和动作的描述,对于第三类和状态的解读缺乏准确直观。
这里我们推荐一种方式,就是图表画一个简单的状态机图:那么什么是状态机呢?状态机我们将的一般是指有限状态机:有限状态机,(英语:Finite-statemachine,FSM),又称有限状态自动机,简称状态机,是步法表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
[1]有限状态机,又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间动作转移和的等行为的数学模型。
[1]有限状态机可以将复杂的逻辑简化为有限个稳定状态,在稳定状态中判断事件。
其中有限不是指有限是非次处理,而是有限个稳定状态,并且有限状态机是一个闭环系统,可以用有限的初始状态处理无尽有限的事务。
有限状态机是一种用来进行对象行为建模的工具,其作用主要积极作用是描述对象在它的生命周期内所历经的状态序列,以及如何响应来自外界的各种事件。
在计算机科学中,非常有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究。
基本元素当你需要描绘一个对象或系统的行为状态时,相比于直接的语言描述,更推荐使用状态机表或状态机图的形式。
首先我们看一下基本元素:做需求时,至少要了解以下三种元素:起始、终止、状态、历史状态。
再加上动作和条件,我们就可以完成一个状态机图了:所以对于数据类型图来说,基本要用到6个元素:对于历史相态的使用,我们可以参考资料下面的案例。
比如我们举个简单的例子,一个洗衣机的快洗净模式状态图:遇到断电的时候,机器是有缓存的,所以跳出流程恢复操作方法流程之后,是会回到历史竞技状态。
状态机表怎么画?首先我们看得出来下下面这张状态机图,展示了一张简单的单审批人的状态流转情况。
UML图详解(⼋)——状态机(状态图和活动图)⼀、概念状态图和活动图是状态机的两种表现形式。
利⽤状态机可以精确地描述对象的⾏为。
从对象的初始状态起,开始响应事件并执⾏某些动作,这些事件引起状态的转换;对象在新状态下⼜开始响应事件和执⾏动作,如此连续进⾏直到终结状态。
⼆、状态图状态图(State Diagram)=状态(State)+迁移(Transition)⼀个状态图描述⼀个状态机。
状态图表现从⼀个状态到另⼀个状态的控制流。
<1>状态图的语法1>除了状态中的初始状态(实⼼圆)和终⽌状态(⽜眼形状),其它状态⽤⼀个圆⾓矩形表⽰转换表⽰状态间可能的路径,⽤箭头表⽰事件/动作写在由它们触发引起的转换上<2>状态2>状态⼀般是给定类对象中的⼀组属性值,在其所在的上下⽂中应该唯⼀,但可以匿名。
在对系统建模时,我们可以只关⼼那些明显影响对象⾏为的属性以及由他们表达的对象状态,⽽不⽤理睬那些于对象⾏为⽆关的状态。
表⽰⽅式:状态由⼀个带圆⾓的矩形表⽰。
应⽤标签标⽰状态的内部活动。
语法:标签/活动表达式UML提供的标签:1. entry:当进⼊⼀个状态的时候被⾃动触发,该活动在状态中其它任何活动之前被⾃动触发。
2. do:当状态处于激活时执⾏do活动,do活动在进⼊活动之后执⾏,并且⼀直运⾏到它本⾝完成为⽌。
3. exit:当离开⼀个状态的时候被⾃动触发,该活动在该状态结束之前、所有其它活动都完成后被触发。
状态可以嵌套状态图,此时状态称为组成状态,否则为简单状态。
⼊⼝事件表⽰⼀个⼊⼝的动作序列,它在进⼊状态时执⾏。
⼊⼝事件的动作是原⼦的,并且先于⼈和内部活动或转换。
出⼝事件表⽰⼀个出⼝的动作序列,它在退出状态时执⾏。
出⼝事件也是原⼦的,它跟在所有的内部活动之后,但是先于所有的出⼝转换。
1. 简单状态(Simple State)2. 复合状态(Composite State)复合状态可以有多组状态图,每组⽤虚线分割开来。
状态机图1.概述状态机图(State Machine Diagram)是用来显示状态机的图,包括简单状态、转换和嵌套的复合状态等,一个典型的状态机图如图1所示:图1. 状态机图2.基本表示符号状态机图的基本元素包括:状态、转移、事件、伪状态和复合状态。
2.1状态(State)状态是对象生命周期中的一个条件或形态。
状态由对象的属性值、与其他对象的关系以及正在执行的活动来确定。
在UML中,状态用圆角矩形和状态名表示,初始状态用实心圆表示,终止状态用牛眼表示,如图2所示:图2. 状态状态可以有一个或多个分栏,这些分栏是可选的,包括名称分栏、嵌套区域、内部转换分栏等,如图3所示:图3. 带分栏的状态状态也可用圆角矩形上带有状态名称标签的方框表示,如图4所示:图4. 带有名称标签符号的状态2.2转移(Transaction)转移表示状态之间可能的路径,可以表示外部转换(用箭头表示),也可以表示内部转换(嵌套在状态内部)。
如图5所示:图5. 转移2.3事件(Event)事件是对,在特定时间和空间上,所发生的有意义的事情。
在状态机中,事件触发转移,事件或者显示在转换之上,或显示在状态以内。
共有四种类型的事件:信号事件、调用事件、时间事件、改变事件。
信号用于对象间异步传递的信息包,它没有任何操作,只有自身携带的信息。
信号事件是通过信号来触发的事件,在UML中,信号如图6所示:图6. 信号调用事件是请求在类语境的实例上调用特定的操作,在UML中,调用事件如图7所示:图7. 调用事件时间事件用关键字after表示,说明事件被触发的临界时间。
改变事件用关键字when表示,说明将事件改变所满足的条件。
如图8所示:图8. 时间事件和改变事件2.4伪状态(Pseudo State)伪状态指在一个状态机中具有状态的形式,同时具有特殊行为的顶点。
它是一个瞬时状态,用于构造转换的细节。
当伪状态处于活动时,状态机还没有完成从运行到完成的步骤,也不会处理事件。
Digital System Design12011/6/21Computer Faculty of Guangdong University of Technology大部分数字系统都可以划分为控制单元和数据单元(存储单元)两个组成部分,通常,控制单元的主体是一个状态机,它接收外部信号以及数据单元产生的状态信息,产生控制信号序列。
Digital System Design22011/6/21Computer Faculty of Guangdong University of Technology有限状态机特别适合描述那些发生有先后顺序或者有逻辑规律的事情(其实这就是状态机的本质)。
状态机的本质就是对具有逻辑顺序或时序规律事件的一种描述方法,即“逻辑顺序”和“时序规律”就是状态机所要描述的核心和强项,换言之,所有具有逻辑顺序和时序规律的事情都适合用状态机来描述。
Digital System Design32011/6/21Computer Faculty of Guangdong University of Technology1、基本概念有限状态机(Finite State Machine ,FSM )是表示实现有限个离散状态及其状态之间的转移等行为动作的数学模型。
(关注Matlab 的Stateflow )(1)状态:也叫状态变量。
在逻辑设计中,使用状态划分逻辑顺序和时序规律。
状态名称、状态编码、进入/退出操作、内部转移、子状态、延迟事件Digital System Design42011/6/21Computer Faculty of Guangdong University of Technology(2)转移:指两个状态之间的关系,表示当发生指定事件且满足指定条件时,第一个状态中的对象将执行某些操作并进入第二个状态,即“触发”了转移。
将触发转移之前的状态定义为“源”状态(初始状态),而触发转移之后的状态定义为“目标”状态(次态)。
第10章状态图在一个交互中,可能发送给单个对象一个或多个消息,并且,这些消息以特定的顺序被接收。
但是,在另外的交互中,同一个对象可能接收完全不同的消息。
根据各个交互的详细情况,特定消息发送到对象的顺序也可能根据情况的不同而改变。
通过考虑对象能够参与的所有可能的交互,我们可以看到,在一个对象的整个生存期中,它必须能够合理地响应次序变动范围相当大的消息。
在第8章,我们已经看到,对象图不是用来详细说明系统所有可能的状态的。
首先,的确存在着太多的状态,不能用文档穷举;其次,除了要知道可能的状态是什么,我们还需要知道哪些状态是不可能,或者不合法的。
出于完全相同的原因,顺序图和协作图也不是用来描述对象能够参与的所有可能交互的视图。
对这两种情况,解决方案是相同的,即使用表示法的更抽象的形式详细说明系统,而不是举例说明。
在UML中,对象的行为规格说明是通过为对象定义状态机来给出的。
状态机说明了对象对它在生存期期间可能检测到的事件的响应。
在UML中,状态机通常是用一种称为状态图的图来文档化的。
交互图和状态机给出的是系统动态行为的两个互补的视图。
交互图显示了在较短的一段时间在系统中的对象之间传递的消息,通常是在单个用户产生的事务期间,因此这些图必需描述很多对象,即特定事务中所涉及的那些对象。
另一方面,状态图自始至终在一个单个对象的整个生存期中跟踪该对象,指定该对象能够接收的所有可能的消息序列,以及它对这些消息的响应。
10.1 依赖状态的行为许多对象展现出了依赖状态的行为。
不严密地说,这意味着对象在不同时间将对相同的刺激做出不同的响应。
例如,考虑一个简单的CD播放机的行为,播放机包括一个装CD的抽屉,如果当前有播放的CD,就放在抽屉里。
还包括一个界面,界面包含三个按钮,标明“装入(load)”、“播放(play)”和“停止(stop)”。
如果当前抽屉关着,装入按钮使之打开,如果是打开的,则使之关闭。
停止按钮使播放机停止正在进行的播放。
学习绘制状态图•状态和状态机状态、状态表示法及状态机•状态是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况•一个状态通常包括名称、进入/退出活动、内部转换、子状态和延迟事件等五个部分组成•状态机是计算机科学理论的一部分,但UML中的状态机模型主要是基于David Harel所做的扩展,是用来展示状态与状态之间转换的图•如何阅读状态机图阅读最简单的状态图•最为核心的元素无外乎是两个:一个是用圆角矩形表示的状态(初态和终态例外);另一个则是在状态之间的、包含一些文字描述的有向箭头线,这些箭头线称为转换转换的五要素•源状态:即受转换影响的状态•目标状态:当转换完成后对象的状态•触发事件:用来为转换定义一个事件,包括调用、改变、信号、时间四类事件•监护条件:布尔表达式,决定是否激活转换、•动作:转换激活时的操作读图小结•与状态off相关的转换有两个,其触发事件都是turnOn,只不过其监护条件不同。
如果对象收到事件turnOn,那么将判断壶中是否有水;如果[没水],则仍然处于off状态;如果[有水]则转为on状态,并执行“烧水”动作•而与状态on相关的转换也有两个,如果“水开了”就执行turnOff,关掉开关;如果烧坏了,就进入了终态了复杂转换转换类型描述语法外部转换对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转换事件(参数)[监护条件]/动作内部转换对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换、离开转换事件(参数)[监护条件]/动作进入转换当进入某一状态时,执行相应活动entry/活动退出转换当离开某一状态时,执行相应活动exit/活动阅读带有复杂转换的状态图只有动作描述,进入和退出和操作方法写在了里面各种转换的区别•进入和退出转换:当进入一个状态时,执行某个动作;或当退出某个状态时,执行什么动作。