UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
第7章状态机图 状态机图是系统分析的一种常用工具,用于描述系统的行为。 在一般的面向对象技术中状态机图又称为状态迁移图,它是有限状态机的图形表示,用于描述对象类的一个对象在其生存期间的行为。 UML的状态机图主要用于建立对象类或对象的动态行为模型,表现一个对象所经历的状态序列,引起状态或活动转移的事件,以及因状态或活动转移而伴随的动作。 状态机图也可用于描述Use Case,以及全系统的动态行为。 UML的状态机图的表示风格是建立在David Harel状态图 (StateChat)的基础上的。Home
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
第7章状态机图7.1 7.2 7.3状态机状态机图状态
7.47.5 7.6Home
转移并发状态机图状态机图的应用
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.1状态机 在计算机技术中,状态机的概念和使用由来已久。 在程序设计语言的编译技术中,用有限状态机描述词法分析过程; 在操作系统中,进程调度、缓冲区调度等都可以采用状态机描述(参见图7.1 )。 UML用状态机对系统的动态特征建模。 UML定义状态机是一个行为(Behavior),它说明一个模型元素在其生命期间的状态的序列,及其对事件的响应。 状态机表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起,响应事件,执行某些动作,引起转移到新状态,又在新状态下响应事件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。Home
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.1状态机 例:UNIX操作系统中的进程的生命周期可用状态机简略表示,如图7.1所示。
图7.1 UNIX进程的状态和转移
Home
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.1状态机 状态机由状态、转移、事件、活动、动作等组成。 状态(State)表示一个模型元素在生存期的一种状况,如满足某些条件,进行某些活动,或等待某些事件的出现等。一个状态在一个有限的时间段内存在。 转移(Transition)表示一个模型元素的不同状态之间的联系。在事件的触发下,一个状态可以转移到另一个状态。 事件(Event)是一个有意义的出现(Occurrence)的说明。该出现在某个时间和空间点发生,并且立即触发一个状态的转移。 活动(Activity)是在状态机中进行的一个非原子的执行,它由一系列的动作组成。 动作(Action)是一个可执行的原子计算,它导致状态的变更或返回一个值。 状态机用于对一个模型元素建立行为模型,该模型元素通常是一个对象类,也可以是一个Use Case,甚至整个系统。Home
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.2状态机图 在UML中状态机可以用两种方式可视化地表达:状态机图和活动图。 状态机图(State Machine Diagram)着重于对一个模型元素的可能的状态及其转移建立模型。活动图
着重于对一个活动到另一个活动的控制流建立模型。 状态机图由表示状态的节点和表示状态之间的转移的弧组成。 在状态机图中,若干个状态节点由一条或多条转移弧连接,状态的转移由事件触发。模型元素的行为模型化为在状态机图中的一个周游,在此周游中状态机执行一系列的动作。 一个状态机图表现了一个对象(或模型元素)的生存史,显示触发状态转移的事件和因状态改变而导致的动作。Home
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.2状态机图 UML的状态机图的图形元素有如下几种: 1.状态 状态用一个带圆角的矩形框表示,框内标有状态的名称和其他一些信息。 状态图标可以进一步划分成3个分隔框:名称框、内部转移框和嵌套状态机图框,如图7.2所示。 在名称框中标出状态的名称。 在内部转移框中规定动作或活动。Home
图7.2状态的图形表示
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.2状态机图 状态可以是简单状态或组合状态。 包含有子状态的状态称为组合状态(Composite State)。 在一个组合状态的嵌套状态机图的分隔框内放置被嵌套的子状态机图。对于一个简单状态,嵌套状态机图分隔框可以缺省。
图7.3状态转移的图形表示
Home
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.2状态机图2.转移 转移用实箭线表示,箭尾连接出发状态,即源状态,箭头连接到达状态,即目标状态。 在箭线上可以标示与该转移有关的选项:事件、保安条件 (Guard Condition)和动作。 当处于源状态的对象接收到一个事件,并且保安条件得到满足(如果有保安条件的话)时,则执行相应的动作,并从源状态转移到目标状态。如果在转移箭线上不标示触发转移的事件时,则从源状态转移到目标状态是自动进行的。 状态转移的图形表示如图7.3所示。
Home
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.2状态机图3.初始状态(Initial State) 初始状态是模型元素的初始状况,代表一个状态机图的起始点,是一个伪状态(Pseudo State)。 初始状态用一个实心的圆表示。 4.终结状态(Final State) 终结状态是模型元素的最后的状态,代表一个状态机图的终止点,是一个伪状态。 终结状态用一个圆中套一个小实心圆表示。
Home
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.2状态机图5.判定(Decision) 判定是在状态机图中的一个特定的位置,工作流(Work flow)在此按保安条件的取值而发生分支。 判定用空心小菱形表示。 一般,判定只有一个入转移和两个出转移,保安条件为布尔表达式。根据保安条件表达式的值为“真”或“假”,触发不同的分支转移。 判定也可以是有一个入转移和多个出转移。
Home
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.2状态机图6.同步(Synchronization) 同步可视化地定义了并发工作流的分劈(Fork)与接
合(Join)。 分劈是一个源状态分为两个或两个以上的目标状态,接合是两个以上的源状态连接为一个目标状态。 在分劈与接合之间的工作流是并行执行的。 同步在状态机图中用一条粗短实线表示,称为同步杆,如图7.4所示。
图7.4控制的分劈和接合的图形表示
Home
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.2状态机图 例:项目与资源管理系统PRMS的一个资源对象的状态机图,如图7.5所示。
图7.5项目与资源管理系统PRMS的一个资源状态机图
Home
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.3状态7.3.17.3.2 7.3.3 7.3.4Home
概述组合状态顺序状态历史状态
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.3.1概述 从原则上说,对象属性的任何一个值的组合就是一个状态,全部的状态构成一个对象的状态空间。 并非这个状态空间中的每一个状态都是值得关注的。在对一个系统或对象建立动态行为模型时,最关心的是那些明显影响行为的属性和属性值,以及由它们表达的状态。 对确定对象的状态有重要意义的属性称为状态属性 (State Attribute)。 在建立状态机模型时,需要正确地找出一个对象的全部状态属性,根据它们的值划分对象状态。
Home
UML与系统分析设计系列教程,详细介绍UML的基础知识,在面向对象系统设计中的应用,以及相关案例的介绍
7.3.1概述 在对一个对象(模型元素)的行为建模时,所选择的该对象(模型元素)的生存期中的状态的数量是有限的。 对象(模型元素)处于每个状态的持续时间也是有限的。当发生某个事件,或完成了某个动作或活动的执行,都会触发状态的转移。 UML对一个状态的描述包含以下信息:名字、入口动作与出口动作、内部转移、嵌套子状态、延迟事件等。 例:一个状态的示例,如图7.6所示。
图7.6状态图标示例
Home