《6-状态图.ppt》由会员分享,可在线阅读,更多相关《6-状态图.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、状态图建模状态图建模2南昌航空大学计算机学院什么是状态模型v状态模型描述相应外部激励而发生的操作序列,状态模型描述相应外部激励而发生的操作序列,而不是描述操作做了些什么,对什么进行操作,而不是描述操作做了些什么,对什么进行操作,或者操作是如何实现的。或者操作是如何实现的。v状态模型由多个状态图组成,每个类对应一个状状态模型由多个状态图组成,每个类对应一个状态图,描述对应用程序来说是重要的那些时序行态图,描述对应用程序来说是重要的那些时序行为。事件表示外部激励,状态表示对象的取值。为。事件表示外部激励,状态表示对象的取值。3南昌航空大学计算机学院27.1 事件v事件(事件(event)是指在某个
2、时刻发生的事情,例)是指在某个时刻发生的事情,例如如:航班离开北京。两个因果无关的事件就是并发航班离开北京。两个因果无关的事件就是并发的的(concurrent)v事件包括错误状态以及普通事件。例如,取消事件包括错误状态以及普通事件。例如,取消中中断和超时都是典型的错误事件。断和超时都是典型的错误事件。4南昌航空大学计算机学院27.1.1 信号事件v信号(信号(signal)是指从一个对象到另一个对象的)是指从一个对象到另一个对象的明确的单向信息流动。明确的单向信息流动。v信号事件(信号事件(signal event)是指发送或接收信号)是指发送或接收信号的事件。注意信号和信号事件的区别的事件
3、。注意信号和信号事件的区别信号是信号是对象间的消息,而信号事件是指在某时刻发生的对象间的消息,而信号事件是指在某时刻发生的事情。事情。5南昌航空大学计算机学院v每一次信号传输都是唯一事件,但我们会把它们每一次信号传输都是唯一事件,但我们会把它们组成信号类(组成信号类(signal class),并赋予每个信号),并赋予每个信号类一个名字,来表示公共的结构和行为。例如:类一个名字,来表示公共的结构和行为。例如:6南昌航空大学计算机学院27.1.2 变更事件v变更事件(变更事件(change event)是指由满足布尔表)是指由满足布尔表达式而引起的事件。变更事件的达式而引起的事件。变更事件的UM
4、L表示法是采表示法是采用关键词用关键词when,后面跟着括号括起的表达式。,后面跟着括号括起的表达式。如:如:7南昌航空大学计算机学院27.1.3 时间事件v时间事件(时间事件(time event)是指在绝对时间上或在)是指在绝对时间上或在某个时间间隔内发生的事情所引起的事件。时间某个时间间隔内发生的事情所引起的事件。时间(段)的(段)的UML表示法是采用关键词表示法是采用关键词when或者或者after,后面跟着用括号括起的包含时间(间隔),后面跟着用括号括起的包含时间(间隔)的表达式。如:的表达式。如:when(date=January 1,2000)after(10 seconds)8
5、南昌航空大学计算机学院27.2 状态v状态(状态(state)是对象取值和链接的抽象。根据对)是对象取值和链接的抽象。根据对象的总体行为,将取值和链接的集合组成一个状象的总体行为,将取值和链接的集合组成一个状态。例如:态。例如:9南昌航空大学计算机学院v在定义状态时,我们要忽略那些不影响对象行为在定义状态时,我们要忽略那些不影响对象行为的属性,将在单个状态中有着相同事件响应的值的属性,将在单个状态中有着相同事件响应的值和链接的所有组合合并在一处。状态确定对象对和链接的所有组合合并在一处。状态确定对象对输入事件的响应。事件和状态之间有某种对称性。输入事件的响应。事件和状态之间有某种对称性。事件表
6、示时间点;状态表示时间段事件表示时间点;状态表示时间段。状态对应着。状态对应着对象接收的两次事件之间的时间间隔。事件和状对象接收的两次事件之间的时间间隔。事件和状态两者都依赖于抽象的层次。态两者都依赖于抽象的层次。10南昌航空大学计算机学院27.3 迁移和状态v迁移(迁移(transition)是指从一个状态到另一个状)是指从一个状态到另一个状态的瞬时变化。从源状态到目标状态一发生变化,态的瞬时变化。从源状态到目标状态一发生变化,就说是触发(就说是触发(fire)了迁移。迁移的源和目标通常)了迁移。迁移的源和目标通常是不同的状态,但也可能会相同。是不同的状态,但也可能会相同。v警戒条件(警戒条
7、件(guard condition):为了要让迁移):为了要让迁移发生而必须为真的布尔表达式。警戒条件只在事件发生而必须为真的布尔表达式。警戒条件只在事件发生的时候检查一次,条件为真时迁移才能触发。发生的时候检查一次,条件为真时迁移才能触发。注意,警戒条件与变化事件不同注意,警戒条件与变化事件不同警戒条件只会警戒条件只会触发一次,而变化事件实际上是要连续检查的。触发一次,而变化事件实际上是要连续检查的。11南昌航空大学计算机学院交通灯示例12南昌航空大学计算机学院27.4 状态图v状态图(状态图(state diagram)的结点是状态,有向)的结点是状态,有向弧是状态间的迁移。状态图详细说明
8、了由事件序列弧是状态间的迁移。状态图详细说明了由事件序列引起的状态序列。引起的状态序列。v状态模型(状态模型(state model)包含了多个状态图,每)包含了多个状态图,每个类一个状态图,状态图建模重要的是时序行为。个类一个状态图,状态图建模重要的是时序行为。状态图必须匹配它们的接口状态图必须匹配它们的接口事件和警戒条件。事件和警戒条件。IdleDialToneoffHookDialingConnectingvalidNumberRingingConnectedcalledPhoneAnswersDisconnectedcalledPhoneHangsUpWarningtimeoutTim
9、eoutonHookRecorded MessagetimeoutmessageDoneBusyToneFast BusyToneroutednumberBusytrunkBusyonHookdigit(n)digit(n)timeout14南昌航空大学计算机学院单触发状态图v单触发状态图表示有着有限生存期的对象,有初始单触发状态图表示有着有限生存期的对象,有初始状态和终止状态。状态和终止状态。Whites turnBlacks turnwhite movesblack movesBlack winscheckmateWhite winscheckmateDrawstalematestalem
10、ateStart15南昌航空大学计算机学院27.5 状态图行为v如果只描述事件,状态图的作用不大,对象的完如果只描述事件,状态图的作用不大,对象的完整描述要明确说明对象为了相应事件要做哪些工整描述要明确说明对象为了相应事件要做哪些工作。作。16南昌航空大学计算机学院27.5.1 活动效应v效应(效应(effect)是对为响应事件而执行的)是对为响应事件而执行的行为的引用。活动(行为的引用。活动(activity)是由效应)是由效应触发的实际行为,效应数量不限。活动执行触发的实际行为,效应数量不限。活动执行的条件包括:迁移、进入或退出某状态以及的条件包括:迁移、进入或退出某状态以及收到状态内的其
11、他事件。收到状态内的其他事件。v活动也可以表示内部控制操作,例如设定属活动也可以表示内部控制操作,例如设定属性或者生成其他事件。这样的活动没有真实性或者生成其他事件。这样的活动没有真实世界的对应物,而是构造实现中控制过程的世界的对应物,而是构造实现中控制过程的机制。机制。17南昌航空大学计算机学院v活动表示法是活动表示法是“/”和活动的名称(或描述),跟和活动的名称(或描述),跟在引起活动的事件后面。关键词在引起活动的事件后面。关键词do留下来表示正留下来表示正在进行的活动,不能用作事件名称。例如:在进行的活动,不能用作事件名称。例如:IdleMenu visibleright button
12、down/display pop-up menuright button up/erase pop-up menucursor moved/highlight menu item18南昌航空大学计算机学院27.5.2 do活动vdo活动是指持续了一段时间的活动。由定义可知,活动是指持续了一段时间的活动。由定义可知,do活动只会在某个状态内出现,不能附在迁移上。活动只会在某个状态内出现,不能附在迁移上。19南昌航空大学计算机学院27.5.3 进入和退出活动v作为候选方法,要显示在迁移上的活动,可以把作为候选方法,要显示在迁移上的活动,可以把活动绑定到某状态的入口和出口。两种表示法的活动绑定到某状
13、态的入口和出口。两种表示法的表达能力没有太大的区别,所有进入某状态的迁表达能力没有太大的区别,所有进入某状态的迁移经常会执行相同的活动,在这种情况下,更简移经常会执行相同的活动,在这种情况下,更简洁的做法是把活动连接在状态上。洁的做法是把活动连接在状态上。20南昌航空大学计算机学院车库开门器的控制过程OpeningClosedOpenClosingdepress/motor updoor closed/motor offdepress/motor downdoor open/motor offdepress/motor up21南昌航空大学计算机学院进入状态上的活动Opening entry/
14、motor upClosed entry/motor offOpen entry/motor offCloseing entry/motor downdepressdoor opendepressdoor closeddepress22南昌航空大学计算机学院27.5.4 发送信号v活动活动“发送发送target.S(属性)(属性)”发送带有给定属发送带有给定属性的信号性的信号S给目标对象。一个信号可以对着对象集给目标对象。一个信号可以对着对象集合或单个对象。如果目标是对象集合,每个对象合或单个对象。如果目标是对象集合,每个对象都会并发收到信号的一份独立的复制,并独立处都会并发收到信号的一份独立
15、的复制,并独立处理信号,同时确定是否要触发迁移。理信号,同时确定是否要触发迁移。v如果一个对象从多个对象收到信号,并发信号接如果一个对象从多个对象收到信号,并发信号接收的顺序会影响到最终状态,这被称为竞态条件收的顺序会影响到最终状态,这被称为竞态条件(race condition)。)。23南昌航空大学计算机学院高级状态图v常规的状态图描述简单的系统已经足够,但处理常规的状态图描述简单的系统已经足够,但处理大型问题的时候,就需要额外的力量。使用嵌套大型问题的时候,就需要额外的力量。使用嵌套状态图、嵌套状态、信号泛化和并发,就能更充状态图、嵌套状态、信号泛化和并发,就能更充分地建模复杂系统。分地
16、建模复杂系统。24南昌航空大学计算机学院28.1 嵌套状态图v平面状态图的问题平面状态图的问题 状态图经常遭到批评,因为它们对于大型问题状态图经常遭到批评,因为它们对于大型问题不适用。对于平面、无结构的状态图来说的确不适用。对于平面、无结构的状态图来说的确如此。考虑这样的对象,它带有影响控制的如此。考虑这样的对象,它带有影响控制的n个个独立布尔属性。使用单张平面图来表示这种对独立布尔属性。使用单张平面图来表示这种对象需要象需要2n个状态。把状态划分成独立的状态图,个状态。把状态划分成独立的状态图,就只需要就只需要2n个状态。个状态。25南昌航空大学计算机学院扩展状态26南昌航空大学计算机学院2
17、7南昌航空大学计算机学院28.2 嵌套状态v状态可以更深层地进行组织,而不只是把状态替状态可以更深层地进行组织,而不只是把状态替换为子状态机。组合状态(换为子状态机。组合状态(composite state)名标示外部轮廓,轮廓完全围住嵌套状态。)名标示外部轮廓,轮廓完全围住嵌套状态。28南昌航空大学计算机学院29南昌航空大学计算机学院28.3 信号泛化30南昌航空大学计算机学院28.4 并发v状态模型隐含支持对象间的并发操作。通常,对状态模型隐含支持对象间的并发操作。通常,对象是自治实体,可以互相对立地操作和改变状态。象是自治实体,可以互相对立地操作和改变状态。但是,对象不需要完全独立,并可能会受限于一但是,对象不需要完全独立,并可能会受限于一些共享的约束,在状态变化中这些约束会要求一些共享的约束,在状态变化中这些约束会要求一定的一致性。定的一致性。31南昌航空大学计算机学院聚合并发32南昌航空大学计算机学院Ignition33南昌航空大学计算机学院Transmission34南昌航空大学计算机学院Acccelerator35南昌航空大学计算机学院Brake36南昌航空大学计算机学院对象内的并发37南昌航空大学计算机学院并发活动的同步