ch09状态图及建模

上传人:san****019 文档编号:70216482 上传时间:2019-01-16 格式:PPT 页数:98 大小:3.87MB
返回 下载 相关 举报
ch09状态图及建模_第1页
第1页 / 共98页
ch09状态图及建模_第2页
第2页 / 共98页
ch09状态图及建模_第3页
第3页 / 共98页
ch09状态图及建模_第4页
第4页 / 共98页
ch09状态图及建模_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《ch09状态图及建模》由会员分享,可在线阅读,更多相关《ch09状态图及建模(98页珍藏版)》请在金锄头文库上搜索。

1、状态图及建模,状态图,顺序图,活动图,协作图,动态模型的组件,状态图及建模,状态1,状态2,初始状态,如果无效,则重复状态,1,如果有效,则转换状态 2,最终状态,状态图,状态图描述了单个事物如何为响应发生的事件而更改状态和生成响应,并通过此方式与其环境进行交互,浸泡,洗涤,漂洗,脱水,Wash clothes,Washing Machine User,动态模型,状态图,4,状态图(State Diagram),状态图是系统分析的一种常见工具, 用于描述系统或单独对象的外部可见行为。 UML中的状态图主要用于建立类或对象的动态行为模型,表现一个对象所经历的状态序列,引起状态或活动转移的事件,以

2、及因状态或活动的转移而伴随的动作。,状态图,实体的生存期比较复杂时,需要状态图对类的所有实例的生命周期建模。 大多数面向商业的应用中的类不需要状态图 以下情况经常使用状态图 动态模型中产生或接收大量信息的类 界面类 实时系统中的类,状态图,状态图,8,实时系统中的类,闲置状态,拨号状态,通话状态,拿起听筒拨号,线路拨通,挂断电话,电话机,电话线状态图,9,主要内容,1. 状态机 2. 状态 3. 事件 4。转移 5. 组合状态 6. 状态图的应用,状态机和状态图建模,时间:2019年1月16日,I 引 言,在软件系统中有这样一类对象, 它们一方面需要处理各种随机发生的事件序列,通过相应的动态行

3、为产生对事件的响应 另一方面,其特定时刻的动态行为取决于此对象在早些时刻的行为的结果。,I 引 言,根据当前事件,以及对以前事件的响应的结果决定对当前事件的响应的软件对象的动态行为,称为是事件驱动的。 在UML里,最适合于描述这类动态行为的建模手段,就是状态机。 状态机 用状态:记录以前的动态行为的结果, 用转移(迁移):描述软件对象对外来事件的响应以及响应的状态的变化。,例如:图1描述一个软件的图形用户界面的动态行为的状态机。 它描述的是一个位图观察器的图象浏览工具的动态行为。 它可以通过鼠标在窗口上拖动图象,以观察图象的不同局部。,图1. 状态机,16,9.1 状态机1,UML用状态机对系

4、统的动态特征建模。 状态机表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起,响应事件,执行某些动作,引起转移到新状态,在新状态下响应事件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。 状态机的组成: 状态、转移、事件、活动、动作等。,17,9.1 状态机2,状态机用于对一个模型元素建立行为模型, 一个对象,一个子系统,整个系统。 在UML中状态机用状态图可视化表示。 状态图:状态的节点、转移、事件等组成。,源状态,目标状态,事件,状态机:在类层次反映状态与状态转化的图,它是一个类的对象的所有可能的生命历程的模型。主要用来捕捉外部事件引起的变化,它将一个对象与其外部世界隔

5、离开来独立考察其行为。不宜用来描述系统的整体运作(如有此要求,可用顺序图)。状态机用来描述界面和控制类业务比较合适。,19,9.2 状态State,状态:对象全部属性的当前值。 状态属性:对确定对象的状态有重要意义的属性。 状态属性一般具有少量的值,而且这些属性的值的转换是有限的。并且其属性值反映所属对象的特定状态。 在UML中,对一个对象(模型元素)的行为建模时, 所选择的该对象的生存期中的状态数量是有限的, 对象处于每个状态的持续时间也是有限的。 当发生某个事件或完成某个动作,都会触发状态的转移。,(问题:对象任何一个新的属性值组合就是一个新状态,状态空间太大) 如:对于“汽车”对象,可能

6、有“型号”、“车况”、“使用情况”、“公里数”、“汽油剩余量”等属性。 不应取“公里数”或“汽油剩余量”作为状态属性,可取“使用情况”作为属性状态。则,“汽车”对象的有限个不同状态:“跑车”、“停车”、“维修”、“闲置”、“报废”等。,21,9.2.1 状态图标,状态图标(状态节点) 一个状态可以加入信息: 活动 activity 动作action 事件Event 效应effect entry/exit,statement,entry /action do / activity event /effect,在某个时间内系统处于某一状态下发生的。do/将要发生的动作,当系统发生特定的迁移、进入或

7、退出特定状态下发生的瞬时行为,为响应事件而执行的行为,22,9.2.2 状态行为1,进入操作(entry) 系统进入该状态时要发生的动作, 前面加上entry和“ / ”。 不可中断。 活动(do) 系统处于该状态时要发生的活动, 前面加上do和“ / ”。 活动是可中断行为, 可以在对象处于该状态时 运行完毕,也可以在对象 转入另一状态时中断。,航班预定 entry / 将时刻表发布到 Internet,航班取消 do / 为客户寻找其它航班,航班进入预定状态时, 系统将时刻表发布到Internet。 尽管发布动作在技术上是可以 中断的,但其速度很快,用户 很难在其发生时取消事物。,23,9

8、.2.2 状态行为2,退出操作(exit): 系统离开该状态时要发生的动作, 前面加上exit和“ / ”。 不可中断。 发送事件 :在活动、进入和退出操作的动作中可以是对象内部发生的行为, 也可能是向另外 一个对象发送消息。,飞行状态 exit / 记录登陆时间,状态名 entry / 目标对象.消息名(消息参数) do / 目标对象.消息名(消息参数) exit / 目标对象.消息名(消息参数),24,9.2.3 初始与终结状态,状态图中定义的状态有:初态、终态、中间状态、组合状态、历史状态等。 初始状态: 模型元素的初始状况,代表一个状态图的起始点,是一个伪状态。 初始状态是转移的初始源

9、,而不能是转移的目标。 终结状态: 模型元素的最后状态,代表一个状态图的终止点,是一个伪状态。 终结状态是转移的最后目标,而不能是转移的初始源。 状态图只能有一个初态,而终态可以有多个,也可以没有终态,9.3 事件Event,事件是指某时刻发生的事情 事件是指已发生并可能引发某种活动的一件事 效应:为响应事件而执行的行为 活动: 由效应触发的实际行为,某个状态的多个活动 迁移到达上的活动 进入、推出活动 do活动,9.3 事件Event,不同类型的事件 调用事件:表示操作的调用 信号事件 信号是指从一个对象到另一个对象的单项数据流动 信号事件指某时刻发生的事情 变化事件 满足布尔表达式而引起的

10、事件(对控制条件的连续测试),表示时间段 when( battery power lower limit) 时间事件 在绝对时间上或某个时间后发生的事情引起的事情,表示时间点 When(date = 2011/11/1) After (10s) defer事件(延迟事件) 格式为事件名/defer。 延迟事件在本状态中不进行处理,而将其推迟到下一个状态再处理,练习,用状态图描述简单信号灯的变化,转移(transition): 是一个状态向另外一个状态的转换。对象处在源状态时,发生一个事件,如果条件满足,则执行相应的动作,对象由源状态转移到目标状态。 转移之前对象所处的状态为源状态,转移之后对象

11、所处的状态为目标状态 转移用箭头表示,如果没有标注事件,则本转移为自动转移。箭尾连接出发状态,即源状态,箭头连接到达状态,即目标状态。 警戒条件(guard):是为了要让转移发生而必须为真的布尔表达式。 例如:当你早上出门的时候(事件),如果温度在冰点以下(条件),那你要戴手套(下一状态)。表示:出门冰点以下,9.4状态转移(迁移)的概念,当发生一个转移时,该转移进入的状态为活动状态,它将执行相应的动作。 当发生一个转移离开一个状态时,该状态变为非活动状态。 当标在迁移箭头上的事件出现时会引起状态的迁移。此时,首先执行引起迁移的事件中的动作,然后迁移到新的状态,执行新状态中的内部动作(包括en

12、try、exit、do以及用户定义的动作)。 在执行do或用户定义的动作时,可以被外部的事件(将导致该状态的迁移)中断,但entry动作和exit动作是不能被中断的,并且它们总是要执行完的。,源状态,目标状态,事件条件/动作,转移的类型1, 自身转移: 源状态和目标状态为同一状态的转移。首先当前状态下正在执行的do动作全部停止,然后执行退出动作,接着执行引起转移事件的相关动作,紧接着回到该状态,开始执行该状态的入口动作和其他动作,不会改变对象的状态;调用状态的入口和出口动作。,自转移,注意内部转移和自转移的区别:自转移会激发状态的入口动作和出口动作,而内部转移不会。, 自动转移: 一个 状态根

13、据本状态的有关情况,自动触发进入目标状态,在转移上没有事件。,自动转移, 条件转移: 通过分支判断所确定的转移。,条件转移,转移的类型2,32,9.4.1 转移类型3,复合转移(Compound-Transition) 由简单转移通过分支判定、分叉组成。 判定: 在状态图中的一个特定的位置,工作流在此依据条件的取值而发生的分支。判定用空心小菱形表示。,33,9.4.1 转移类型4,34,源状态,目标状态4,目标状态3,目标状态2,目标状态1,事件1,条件1/动作1,条件3/动作3,条件4/动作4,条件5/动作6,条件2/动作2,条件6/动作6,多条件链式分支,源状态,目标状态4,目标状态3,目

14、标状态2,目标状态1,事件1条件1 and 条件3/动作1,动作3,多条件非链式分支,事件1条件2 and 条件6/动作2,动作6,事件1条件2 and 条件5/动作2,动作5,事件1条件1 and 条件4/动作1,动作4,35,9.4.2 转移示例,未分配任务,已分配任务,取消对任务的资源分配,NumAssTasks1 / NumAssTasks-1,NumAssTasks=1 / NumAssTasks=0,分配任务给资源 / NumAssTasks+1,资源休闲,资源管理员,PRMS的一个资源状态图,分配任务给资源 / NumAssTasks+1,内部转移(迁移),状态的内部转移(迁移)

15、是不会引起状态变化的转移(迁移),此转移(迁移)的触发不会导致状态的入口/出口动作的被执行。 状态变化的含义:从一个状态变为另一状态 图形表示 由于内部转移(迁移)不引起状态的转换, 因此它的文字标识(text lable)被附加在表示状态的圆角矩形内部, 不使用箭头进行图形标识,转移条件,状态转移触发表示当一个特定的事件发生或某些条件满足时,一个源状态下的对象将完成一些特定的动作,称为转移条件。 描述状态转态的形式化语法格式如下: 事件条件/动作表达式 发送子句 事件:指已发生并可能引发某种活动的一件事; 条件:由方括号围起的关系或逻辑表达式; 动作表达式:一个触发状态迁移时可执行的过程表达

16、式。 发送子句:动作的一个特例,说明调用的事件名(操作)是哪个对象的。,简单状态转移的表达,简单状态变化指的是同一个对象的两个状态之间的变化。它表示一个对象从一个状态进入了另一个状态,表示当一个条件满足时要发生的一个事件。整个事件可以有参数。这些参数可能用于描述这个变化过程的活动之中,也可能用于下一个状态的初始活动。 变化是用一根带有实心箭头的直线来表示的。该直线可以有一个用字符串表示的标识: event-signature guard-condition /action-expression send-clause 其中的事件签名 (event-signature) 描述了一个事件以及它的参数:event-name ( parameter ,),简单状

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号