第9章状态机图.ppt
《第9章状态机图.ppt》由会员分享,可在线阅读,更多相关《第9章状态机图.ppt(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、状态机图是系统分析的一种常用工具,用于描述系统的行状态机图是系统分析的一种常用工具,用于描述系统的行为。为。在一般的面向对象技术中状态机图又称为状态迁移图,它在一般的面向对象技术中状态机图又称为状态迁移图,它是有限状态机的图形表示,用于描述类的一个对象在其生是有限状态机的图形表示,用于描述类的一个对象在其生存期间的行为。存期间的行为。UMLUML的状态机图主要用于建立类或对象的动态行为模型,的状态机图主要用于建立类或对象的动态行为模型,表现一个对象所经历的状态序列,引起状态或活动转移的表现一个对象所经历的状态序列,引起状态或活动转移的事件,以及因状态或活动转移而伴随的动作。事件,以及因状态或活
2、动转移而伴随的动作。第第9 9章章 状态机状态机图图第第9 9章章 状态机状态机图图9.9.1 1 状态机状态机9.2 9.2 状态机图状态机图9.3 9.3 状态状态9.4 9.4 转移转移9.5 9.5 并发状态机图并发状态机图9.6 9.6 状态机图的应用状态机图的应用在计算机技术中,状态机的概念和使用由来已久。在计算机技术中,状态机的概念和使用由来已久。在程序设计语言的编译技术中,用有限状态机描述词法分在程序设计语言的编译技术中,用有限状态机描述词法分析过程;析过程;在在操作系统中,进程调度、缓冲区调度等都可以采用状态操作系统中,进程调度、缓冲区调度等都可以采用状态机描述(参见图机描述
3、(参见图9.1 9.1)。)。UMLUML用状态机对系统的动态特征建模。用状态机对系统的动态特征建模。UMLUML定义状态机是一个行为(定义状态机是一个行为(BehaviorBehavior),),它说明一个模它说明一个模型元素在其生命期间的状态的序列,及其对事件的响应。型元素在其生命期间的状态的序列,及其对事件的响应。状态机表示一个模型元素在其生命期间的情况:从该模型状态机表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起,响应事件,执行某些动作,引起转移元素的开始状态起,响应事件,执行某些动作,引起转移到新状态,又在新状态下响应事件,执行动作,引起转移到新状态,又在新状态下响应事
4、件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。到另一个状态,如此继续,直到终结状态。9.1 9.1 状态机状态机例:例:UNIXUNIX操作系统中的进程的生命周期可操作系统中的进程的生命周期可用状态机简略表示,如图用状态机简略表示,如图9.19.1所示。所示。9.1 9.1 状态机状态机图9.1 UNIX进程的状态和转移 状态机由状态、转移、事件、活动、动作等组成。状态机由状态、转移、事件、活动、动作等组成。状态(状态(StateState)表示一个模型元素在生存期的一种状况,如满足某些条件,表示一个模型元素在生存期的一种状况,如满足某些条件,进行某些活动,或等待某些事件的出现等
5、。一个状态在一个有限的时进行某些活动,或等待某些事件的出现等。一个状态在一个有限的时间段内存在。间段内存在。转移(转移(TransitionTransition)表示一个模型元素的不同状态之间的联系。在事件的表示一个模型元素的不同状态之间的联系。在事件的触发下,一个状态可以转移到另一个状态。触发下,一个状态可以转移到另一个状态。事件(事件(EventEvent)是一个有意义的出现(是一个有意义的出现(OccurrenceOccurrence)的说明。该出现在某的说明。该出现在某个时间和空间点发生,并且立即触发一个状态的转移。个时间和空间点发生,并且立即触发一个状态的转移。活动(活动(Activ
6、ityActivity)是在状态机中进行的一个非原子的执行,它由一系列是在状态机中进行的一个非原子的执行,它由一系列的动作组成。的动作组成。动作(动作(ActionAction)是一个可执行的原子计算,它导致状态的变更或返回一是一个可执行的原子计算,它导致状态的变更或返回一个值。个值。状态机用于对一个模型元素建立行为模型,该模型元素通常是一个类,状态机用于对一个模型元素建立行为模型,该模型元素通常是一个类,也可以是一个也可以是一个Use CaseUse Case,甚至整个系统。甚至整个系统。9.1 9.1 状态机状态机在在UMLUML中状态机可以用两种方式可视化地表达:状态机图中状态机可以用两
7、种方式可视化地表达:状态机图和活动图。和活动图。状态机图(状态机图(State Machine DiagramState Machine Diagram)着重于对一个模型元素着重于对一个模型元素的可能的状态及其转移建立模型。活动图着重于对一个活的可能的状态及其转移建立模型。活动图着重于对一个活动到另一个活动的控制流建立模型。动到另一个活动的控制流建立模型。状态机图由表示状态的节点和表示状态之间的转移的弧组状态机图由表示状态的节点和表示状态之间的转移的弧组成。成。在状态机图中,若干个状态节点由一条或多条转移弧连接,在状态机图中,若干个状态节点由一条或多条转移弧连接,状态的转移由事件触发。模型元素
8、的行为模型化为在状态状态的转移由事件触发。模型元素的行为模型化为在状态机图中的一个周游,在此周游中状态机执行一系列的动作。机图中的一个周游,在此周游中状态机执行一系列的动作。一个状态机图表现了一个对象(或模型元素)的生存史,一个状态机图表现了一个对象(或模型元素)的生存史,显示触发状态转移的事件和因状态改变而导致的动作。显示触发状态转移的事件和因状态改变而导致的动作。9.2 9.2 状态机图状态机图UMLUML的状态机图的图形元素有如下的状态机图的图形元素有如下几种几种:1 1状态状态 状态用一个带圆角的矩形框表示,状态用一个带圆角的矩形框表示,框内标有状态的名称和其他一些信框内标有状态的名称
9、和其他一些信息。息。状态图标可以进一步划分成状态图标可以进一步划分成3 3个分个分隔框:名称框、内部转移框和嵌套隔框:名称框、内部转移框和嵌套状态机图框,如图状态机图框,如图9.29.2所示。所示。在名称框中标出状态的名称在名称框中标出状态的名称。在内部转移框中规定动作或活动在内部转移框中规定动作或活动。9.2 9.2 状态机图状态机图图9.2 状态的图形表示 状态可以是简单状态或组合状态。状态可以是简单状态或组合状态。包含有子状态的状态称为组合状态(包含有子状态的状态称为组合状态(Composite StateComposite State)。)。在一个组合状态的嵌套状态机图的分隔框内放置被
10、嵌套的在一个组合状态的嵌套状态机图的分隔框内放置被嵌套的子状态机图。对于一个简单状态,嵌套状态机图分隔框可子状态机图。对于一个简单状态,嵌套状态机图分隔框可以缺省。以缺省。9.2 9.2 状态机图状态机图 2 2转移转移 转移用实箭线表示,箭尾连接出发状态,即源状态,箭头转移用实箭线表示,箭尾连接出发状态,即源状态,箭头连接到达状态,即目标状态。连接到达状态,即目标状态。在箭线上可以标示与该转移有关的选项:事件、警戒条件在箭线上可以标示与该转移有关的选项:事件、警戒条件(Guard ConditionGuard Condition)和动作。和动作。当处于源状态的对象接收到一个事件,并且警戒条件
11、得到当处于源状态的对象接收到一个事件,并且警戒条件得到满足(如果有警戒条件的话)时,则执行相应的动作,并满足(如果有警戒条件的话)时,则执行相应的动作,并从源状态转移到目标状态。如果在转移箭线上不标示触发从源状态转移到目标状态。如果在转移箭线上不标示触发转移的事件时,则从源状态转移到目标状态是自动进行的。转移的事件时,则从源状态转移到目标状态是自动进行的。状态转移的图形表示如图状态转移的图形表示如图9.39.3所示。所示。9.2 9.2 状态机图状态机图图9.3 状态转移的图形表示 9.2 9.2 状态机图状态机图 3 3初始状态(初始状态(Initial StateInitial State
12、)初始状态是模型元素的初始状况,代表一个状态机图的起始初始状态是模型元素的初始状况,代表一个状态机图的起始点,是一个伪状态(点,是一个伪状态(Pseudo StatePseudo State)。)。初始状态用一个实心的圆表示。初始状态用一个实心的圆表示。4 4终结状态(终结状态(Final StateFinal State)终结状态是模型元素的最后的状态,代表一个状态机图的终终结状态是模型元素的最后的状态,代表一个状态机图的终止点,是一个伪状态。止点,是一个伪状态。终结状态用一个圆中套一个小实心圆表示。终结状态用一个圆中套一个小实心圆表示。9.2 9.2 状态机图状态机图 5 5判定(判定(D
13、ecisionDecision)判定是在状态机图中的一个特定判定是在状态机图中的一个特定的位置,工作流(的位置,工作流(Work flowWork flow)在此在此按警戒条件的取值而发生分支。按警戒条件的取值而发生分支。判定用空心小菱形表示。判定用空心小菱形表示。一般,判定只有一个入转移和两一般,判定只有一个入转移和两个出转移,警戒条件为布尔表达式。个出转移,警戒条件为布尔表达式。根据警戒条件表达式的值为根据警戒条件表达式的值为“真真”或或“假假”,触发不同的分支转移。,触发不同的分支转移。判定也可以是有一个入转移和多判定也可以是有一个入转移和多个出转移。个出转移。6 6同步(同步(Sync
14、hronizationSynchronization)同步可视化地定义了并发工作流的分叉(同步可视化地定义了并发工作流的分叉(ForkFork)与汇合(与汇合(JoinJoin)。)。分叉是一个源状态分为两个或两个以上的目标状态,汇合是两个以上的分叉是一个源状态分为两个或两个以上的目标状态,汇合是两个以上的源状态连接为一个目标状态。源状态连接为一个目标状态。在分叉与汇合之间的工作流是并行执行的。在分叉与汇合之间的工作流是并行执行的。同步在状态机图中用一条粗短实线表示,称为同步杆,如图同步在状态机图中用一条粗短实线表示,称为同步杆,如图9.49.4所示。所示。9.2 9.2 状态机图状态机图图9
15、.4 控制的分叉和汇合的图形表示 例:例:项目与资源管理系统项目与资源管理系统PRMSPRMS的一个资源对象的状态机图的一个资源对象的状态机图,如,如图图9.59.5所所示。示。9.2 9.2 状态机图状态机图图9.5 项目与资源管理系统PRMS的一个资源状态机图 9.3 9.3 状态状态9.3.1 9.3.1 概述概述9.3.2 9.3.2 组合状态组合状态9.3.4 9.3.4 历史状态历史状态9.3.3 9.3.3 顺序状态顺序状态从原则上说,对象属性的任何一个值的组合就是一个从原则上说,对象属性的任何一个值的组合就是一个状态,全部的状态构成一个对象的状态空间。状态,全部的状态构成一个对
16、象的状态空间。并非这个状态空间中的每一个状态都是值得关注的。并非这个状态空间中的每一个状态都是值得关注的。在对一个系统或对象建立动态行为模型时,最关心的在对一个系统或对象建立动态行为模型时,最关心的是那些明显影响行为的属性和属性值,以及由它们表是那些明显影响行为的属性和属性值,以及由它们表达的状态。达的状态。对确定对象的状态有重要意义的属性称为状态属性对确定对象的状态有重要意义的属性称为状态属性(State AttributeState Attribute)。)。在建立状态机模型时,需要正确地找出一个对象的全在建立状态机模型时,需要正确地找出一个对象的全部状态属性,根据它们的值划分对象状态。部
17、状态属性,根据它们的值划分对象状态。9.3.1 9.3.1 概述概述在对一个对象(模型元素)的行为建模时,在对一个对象(模型元素)的行为建模时,所选择的该对象(模型元素)的生存期中所选择的该对象(模型元素)的生存期中的状态的数量是有限的。的状态的数量是有限的。对象(模型元素)处于每个状态的持续时间对象(模型元素)处于每个状态的持续时间也是有限的。当发生某个事件,或完成了也是有限的。当发生某个事件,或完成了某个动作或活动的执行,都会触发状态的某个动作或活动的执行,都会触发状态的转移。转移。UMLUML对一个状态的描述包含以下信息:名对一个状态的描述包含以下信息:名字、入口动作与出口动作、内部转移
18、、嵌字、入口动作与出口动作、内部转移、嵌套子状态、延迟事件等。套子状态、延迟事件等。例:一个状态的示例,如图例:一个状态的示例,如图9.69.6所示。所示。9.3.1 9.3.1 概述概述图9.6 状态图标示例 一个不含内嵌套状态的状态,称为简单状态。一个不含内嵌套状态的状态,称为简单状态。如果一个状态内嵌套了若干个状态,则称该状态为超状态如果一个状态内嵌套了若干个状态,则称该状态为超状态(SuperstateSuperstate)或组合状态(或组合状态(Composite StateComposite State),),其中被嵌套的状态其中被嵌套的状态称为子状态(称为子状态(Substate
19、Substate)。)。子状态本身仍然可以是一个组合状态。子状态本身仍然可以是一个组合状态。超状态中的每一个被嵌套的状态机图所表示的子状态机,都对应于超状态中的每一个被嵌套的状态机图所表示的子状态机,都对应于该超状态内的正在进行的一个活动。该超状态内的正在进行的一个活动。子状态机图的所在区域必有自己的初始状态和终结状态。对组合状子状态机图的所在区域必有自己的初始状态和终结状态。对组合状态的一个入转移代表对其子区域内的初始状态的入转移;对子区域态的一个入转移代表对其子区域内的初始状态的入转移;对子区域内的终结状态的转移代表包含它的组合状态的相应活动的完成。内的终结状态的转移代表包含它的组合状态的
20、相应活动的完成。注意,动作(注意,动作(ActionAction)与活动(与活动(ActivityActivity)的含义是不同的。的含义是不同的。动作与转移相关,动作是一组原子的可执行语句,它调用某个操作,动作与转移相关,动作是一组原子的可执行语句,它调用某个操作,很快完成,不能被中断。很快完成,不能被中断。活动是动作的非原子序列,有一定的运行期限,活动可能被某个事活动是动作的非原子序列,有一定的运行期限,活动可能被某个事件中断。件中断。9.3.2 9.3.2 组合状态组合状态例:例:一个表示网一个表示网上商店处理送货上商店处理送货过程的状态机图,过程的状态机图,如图如图9.79.7所示。它
21、所示。它是一个带有组合是一个带有组合状态的状态机图。状态的状态机图。9.3.2 9.3.2 组合状态组合状态图9.7 组合状态机图示例 组合状态可以包含有顺序子状态或并发子状态。组合状态可以包含有顺序子状态或并发子状态。一个组合状态从理论上说可以嵌套任意层次,而外部组一个组合状态从理论上说可以嵌套任意层次,而外部组合状态本身可以作为一个简单状态来对待。合状态本身可以作为一个简单状态来对待。采用组合状态可以简化对复杂行为的建模。采用组合状态可以简化对复杂行为的建模。更为重要的是组合状态清楚地表达了状态的结构关系,更为重要的是组合状态清楚地表达了状态的结构关系,便于分清主次,分别对待。便于分清主次
22、,分别对待。如果状态图中的状态比较多,若不采用如果状态图中的状态比较多,若不采用组合状态,则转组合状态,则转移线的交叉现象会不可避免,图面将凌乱不堪。移线的交叉现象会不可避免,图面将凌乱不堪。例如,图例如,图9.89.8的送货处理状态机图是图的送货处理状态机图是图9.79.7的另一个版本,的另一个版本,其中没有采用组合状态。在图其中没有采用组合状态。在图9.89.8的状态机图中出现了转的状态机图中出现了转移线交叉。移线交叉。9.3.2 9.3.2 组合状态组合状态例:未采用组合状态表示的例:未采用组合状态表示的送货处理状态机图,如图送货处理状态机图,如图9.8 9.8 所示。所示。9.3.2
23、9.3.2 组合状态组合状态图9.8 送货处理状态机图示例 顺序状态(顺序状态(Sequential StateSequential State)又称为不相交状态又称为不相交状态(Disjoint StateDisjoint State),),它们是一个一个顺序转移的,不是它们是一个一个顺序转移的,不是并发存在的。并发存在的。顺序状态表现正常的顺利的行为。顺序状态表现正常的顺利的行为。在在行为过程中常会出现各种非正常的情况,为此,必然行为过程中常会出现各种非正常的情况,为此,必然要为每一个状态画出一条表现非正常行为的转移箭线要为每一个状态画出一条表现非正常行为的转移箭线 ,图面将凌乱。图面将凌
24、乱。可以可以使用组合状态和顺序子状态的概念解决此类建模问使用组合状态和顺序子状态的概念解决此类建模问题。题。例如,在例如,在图图9.99.9中,中,“活动活动”状态是一个组合状态,状态是一个组合状态,“验验卡卡”、“拨号拨号”、“通话通话”、“挂断挂断”等状态是它的顺等状态是它的顺序子状态,它们构成序子状态,它们构成“活动活动”状态内部的子状态机。状态内部的子状态机。9.3.3 9.3.3 顺序状态顺序状态例:例:顺序状态示例,如图顺序状态示例,如图9.99.9所示。它是表示所示。它是表示ICIC卡电话机卡电话机工作的部分状态机图。工作的部分状态机图。9.3.3 9.3.3 顺序状态顺序状态图
25、9.9 顺序状态示例 在一个组合状态中所包含的一个由顺序子状态构成的子状态机中,在一个组合状态中所包含的一个由顺序子状态构成的子状态机中,必定有一个子初始状态。每次进入该组合状态,被嵌套的子状态机必定有一个子初始状态。每次进入该组合状态,被嵌套的子状态机从它的子初始状态开始运作(除非直接转移到特定的子状态)。从它的子初始状态开始运作(除非直接转移到特定的子状态)。有的情况下,当离开一个组合状态后,又重新进入该组合状态,但有的情况下,当离开一个组合状态后,又重新进入该组合状态,但是不希望从它的子初始状态开始运作,而是直接进入到上次离开该是不希望从它的子初始状态开始运作,而是直接进入到上次离开该组
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 状态机图 状态机
限制150内