资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,状态机,概述:,状态机是展示状态与状态转换的图.UML中用状态机对软件系统的动态特征建模.状态机包含了一个类的对象在其生命期间所有状态的序列以及对象对接收到的事件所产生的反应.利用状态机可以精确地描述对象的行为:从对象的初始状态起,开始响应事件并执行某些动作,这些事件引起状态的转换;对象在新的状态下又开始响应状态和执行动作,如此连续知道终结状态.,状态机地使用范围:,使用非常普遍:在编译技术中通常用有限状态机描述此法分析过程;在操作系统的进程调度中,通常用状态机描述进程各个状态之间的转换关系;在面向对象分析设计中,对象的状态、状态的转换、触发状态转换的事件、对象对事件的响应(事件的行为)都可以用状态图描述,状态机的组成:,状态:,表示一个模型在其生存期内的状况(满足某些条件,执行某些操作,等待某些事件)。一个状态的生存期是一个有限的时间段。,转换:,表示两个不同状态之间的联系,事件可以触发状态之间的转换,事件:,某个时间产生的,可以触发状态转换的,如信号.,活动:,状态机中进行的一个非原子的执行,由一系列动作组成.,动作:,是一个可执行的原子计算,它导致状态的变更或者返回一个值,状态机不仅可以用于描述类的行为,也可以描述用例、协作和方法甚至整个系统的动态行为,1,状态图,概述:,状态图是系统分析的一种常用工具,通过建立类对象的生存周期模型来描述对象随时间编号的动态行为.一个状态图表示一个状态机,主要用于表现从一个状态到另一个状态的控制流。不仅可以展现一个对象拥有的状态,还可以说明事件如何随着时间的推移来影响这些的状态。,状态图的图形元素:,状态、转换、初始状态、终结状态和判定等。,2,3,状态,概述:,状态是状态机的重要组成部分,描述了状态机所建模对象的动态行为产生的结果。描述了一个类对象生命期中的一个时间段。,类对象的任何一个属性值都是一个状态,全部的状态构成一个庞大的状态 空间,然而,并非状态空间的每个状态都是值得关注的,状态图中的状态一般是给给定类对象中的一组属性值,是对象所有属性的子集。,状态建模的对象:,在某些方面性质相似的一组对象值,对象等待一些事件发生时的一段时间,对象执行持续活动时的一段时间,状态分为简单状态和组成状态,状态包括状态名、活动、入口动作和出口动作等。,状态名:,一个状态需要一个状态名以识别不同的状态,内部转换:,只有源状态而没有目标状态,转换激发的结果并不改变状态本,身,如果内部转换带有动作,动作也要被执行,不需要执行入口动作和出,口动作,4,状态,入口动作与出口动作:,入口动作和出口动作表示进入或退出某个状态所要执行的动作,简单状态:,不包含其他状态的状态。没有子结构,但可以具有内部转换、进入动作和,退出动作,组成状态:,可以包含嵌套的子状态的状态,顺序子状态:,一个组成状态的自状态对应的对象在其生命期内的任何时刻都只处于一,个自状态,即多个状态之间是互斥的,不能同时存在,5,状态,并发子状态:,组合状态有两个或者多个并发的子状态机.,顺序子状态与并发子状态的区别在于后者在同一层次给出两个或多个顺序子状态,对象处于,同一层次中来自美国并发子状态的一个时序状态中,历史状态:,当离开一个组成状态重新进入此状态,时不希望从它的子初始状态开始执行,而是希望直接进入上次离开组成状态,时的最后一个子状态,在这种情况下,就要用到历史状态,历史状态代表上次离开,组成状态时的最后一个活动子状态,6,事件,事件表示在某一特定的时间或空间出现的能够引发状态改变的运动变化,事件是一个激励的出现,它定义一个触发子以触发对象改变其状态.任何影,响对象的事物都可以是事件.,1.入口事件:,入口事件表示一个入口的动作序列,在进入状态时执行.入口事件的动作是原子的,并且先于,人和内部活动或转换.,2.出口事件:,出口事件表示一个出口的动作序列,它在退出状态时执行.出口事件也是原子的.跟在所有的,内部活动之后,但是先于所有的出口转换,3.动作事件:,动作事件也称为”do事件”,表示对一个嵌套状态机的调用.与动作事件相关的活动必定引用嵌,套状态机,而非引用包含它的对象的操作.,4.信号事件,:信号是两个对象之间的通信媒介,信号的接收是接收对象的一个事件.分为异步单路通信(发,送者是独立的,不必等待接收者处理信号)和双路通信(至少在每个方向上都要有一个信号,即所谓的多信号).在信号事件中,发送者和接收者可以是同一个对象.,7,事件,5.调用事件:,调用事件是一个对象对调用的接收,这个对象用状态的转换而不是用固定的处理过程实现操,作涉及到两个以上的对象:一个对象请求调用另一个对象的操作.对调用者来说,一旦调用的,接收对象通过由事件触发的转换完成了对调用事件的处理或调用失败,而没有进行任何状,态转换,则控制返回到调用对象.调用事件可以是同步(需要等待操作的完成)也可以是异步,6.修改事件:,修改事件依靠特定属性值的布尔表达式所表示的条件的满足来触发状态的转换.它表示了一,种具有事件持续性的并且可能是涉及全局的计算过程.,监护条件和修改事件区别在于:监护条件只是在引起转换的触发器事件触发时和时间接收者对事,件进行处理时被赋值一次;而修改事件则可以被多次赋值直到条件,为真,多次赋值满足条件后转换也会被激发.,7.时间事件:,时间事件代表时间的流逝.时间事件既可以被指定为绝对形式(天数),也可以被指定为相对形,式(从某一指定事件发生开始所经历的时间),它可以描述一个通知信息,从进入状态来某个,时间期限到达,就激发状态的转换.,8.延迟事件:,延迟事件是在本状态不处理,要推迟到另外一个状态才处理的事件.,8,转换,转换表示当一个特定事件发生或者某些条件得到满足时,一个源状态下的,对象在完成一定的动作后将发生状态转变,转向另一个称为目标状态的状,态.当发生转换时,转换进入的状态为活动状态,转换离开的状态变为非活,动状态. 转换通常分为:外部、内部、完成、复合。转换一般包括信息:,源状态、目标状态、触发事件、监护事件、动作。,1.外部转换:,是一种改变对象状态的转换, 是最常见的一种转换,9,转换,2.内部转换:,有一个源状态但没有目标状态,转换后仍旧是它本身。,内部转换的激发规则和改变状态的外部转换的激发规则,相同,如果一个内部转换带有动作,动作也要被执行。,用于对不改变状态的插入动作建模(建立帮助信息),3.完成转换:,又称为自转换,之所以称为完成转换时因为没有标明触发器事件的转换是由状态中活动的完,成引起的,是自然而然的完成的转换.可以带一个监护条件,这个条件在状态中的活动完成时,被赋值.,内部转换和自转换的区别:自转换时离开本状态后重新进入该状态,会激发状态的入口动作和出口动,作的执行;而内部转换自始至终都离不开本状态,不执行入口和出口动作,4.复合转换:,由简单转换组成,这些简单转换通过分支判定、分叉或接合组合在一起,链式: 非链式:,10,事件,5.触发事件:,状态机描述了对象的具有事件驱动的动态行为,对象动作的执行、状态的改变都是以特定,事件的发生为前提的,触发事件就是能够引起状态转换的事件,可以是信号、调用和时间,段等。,6.监护条件:,监护条件是触发转换必须满足的条件,是一个布尔表达式。当事件被触发时,监护条件,被赋值。若布尔表达式值为真,则转换被触发;若布尔表达式值为假,则不会引起转换。,监护条件只能在触发事件发生时被赋值一次,如果在转换发生后监护条件才变为真,则,转换不会触发。,7.动作:,一组可执行语句或者计算处理过程。动作可以包括发送消息给另一个对象、操作调用、设置,返回值、创建和销毁对象等。动作可以是一个动作序列,即一系列简单的动作的组合。动作,是原子的,不可中断的,动作或动作序列的执行不会被同事发生的其他动作影响或终止。动,作的执行事件非常短,与外界事件所经历的时间相比是可以忽略的。因此,在动作的执行过,程中不能再插入其他事件,动作种类:赋值、调用、创建、销毁、返回、发送、中止,11,状态图建模技术,状态图一般用于对系统中的某些对象,比如类、用例和系统的行为建模。,建模时候要找出对象所处的状态、触发状态改变的动作,以及对象状态,改变时应执行的动作。,建模步骤:,1.找出适合用模型描述其行为的类,2.确定对象可能存在的状态,3.确定引起状态转换的事件,4.确定转换进行时对象执行的相应动作,5.对建模的结果进行相应的精化和细化,12,活动图,概述:,活动是某件事情正在进行的状态,既可以是现实生活中正在进行的某一项工作,也可以是软件系统某个类对象的一个操作.活动在状态机中表现为由一系列动作组成的非原子的执行过程.活动图描述活动的顺序,展现从一个活动到另一个活动的控制流.活动图本质上是一种流程图.,活动图与状态图的区别:,虽然活动图与状态图都是状态机的表现形式,但是有本质的区别:活动图着,重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程;而状态,图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与,活动图与流程图区别:,1.流程图着重描述处理过程,它的主要控制结构是顺序、 分支和循环,,各个处理过程之间有严格的顺序和时间关系;而活动图描述的是,对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,,而非系统的处理过程,2.活动图能够表示并发活动的情形,而流程图不能,3.活动图是面向对象的,而流程图是面向过程的。,13,活动图的组成元素,活动图中包含的图形元素有:,动作状态、活动状态、动作流、分支与合并、分叉与汇合、泳道和对象流等,动作状态:,动作状态时指执行原子的、不可中断的动作,并在此动作完成,后通过完成转换转向另一个状态,特点: 1).原子性,是构造活动图的最小单位,已经无法分解为更小的部分,2).不可中断性,一旦开始运行就不能中断,一直运行到结束,3).瞬时性,所占用的处理事件极短,有时甚至可以忽略,4).可以有入转换,入转换可以是动作流,也可以是对象流.动作状态至少有一,条出转换,这条转换以内部动作的完成为起点,与外部事件无关.,5).和状态图中的状态不同,不能有入口动作和出口动作,更不能有内部转移,6).在一张活动图中,动作状态允许多处出现.,活动状态:,用于表达状态机中的非原子的运行.,特点: 1)可以分解成其他子活动或动作状态,由于它是一组不可中断的,动作或操作的组合,所以可以被中断,2)内部活动可以用另一个活动图来表示,3)和动作状态不同,活动状态可以有入口动作和出口动作,也可以有内部转移,4)动作状态时活动状态的一个特例,某个活动状态只包括一个动作就是一个动作状态,14,活动图的组成元素,动作流:,活动图的转换一般都不需要特定事件的触发.一个动作状态执行完本状态需要完成的动作后会自动转换到另外一个状态.所有动作状态之间的转换流称为动作流,分支与合并:,分支一般用于表示对象,类所具有的条件行为;合并表示从对应,的分支开始的条件行为的结束.,分叉与汇合:,分叉用于将动作流分为两个或者多个,并发运行的分支,汇合则用于同步这些并发分支以达,到共同完成一项事务的目的.分叉可以用来描述并发,线程,每个分叉可以有一个输入转换和两个或多个输出,转换,每个转换都可以是独立的控制流.汇合代表两个或,多个并发控制流同步发生,当所有的控制流都达到汇合点,后,控制才能继续往下进行.每个汇合可以有两个或多个,输入转换和一个输出转换.,15,活动图的组成元素,泳道:,泳道将活动图中的活动划分为若干组,并把每一组指定给负责这组活动的业务组织,即对象.泳道区分了负责活动的对象,它明确的表示了哪些活动是由哪些对象进行的,每个活动 只能明确的属于一个泳道.,对象流:,对象流是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响.用活动图描述某个 队形时,可以把设计到的对象放置在活动图中并用一个依赖将其连接到进行创建,修改和撤销的动作状态或者活动状态上,对象的这种使用方法就构成了对象流。,16,活动图的组成元素,对象流:,特点:,1).一个对象可以由多个动作操纵,2).一个动作输出的对象可以作为另一个动作输入的对象,3).在活动图中,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存,期的不同时间点.,17,活动的分解,一个活动可以分为若干个动作或子活动.这些动作和子活动本身又可以组,成一个活动图.不含内嵌活动或动作的活动称之为简单活动;嵌套了若干活,动或动作的活动称之为组合活动,组合活动有自己的名字和相应的子活动,图.,18,活动图建模技术,在系统建模的过程中活动图能够附加到任何建模元素中以描述其行为,这,些与孙包括用例、类、接口、节点、协作、操作和方法等。,步骤:,1)识别要对工作流描述的类或对象.找出负责工作流实现的业务对象,这些对象可以是现实业务领域的实体,也可以是一种抽象的概念和事物.找出业务对象的目的是为每一个业务对象建立泳道,2).确定工作流的初始状态和终止状态,明确工作流的边界,3).对动作状态或活动状态建模.找出随时间发生的动作和活动,将它们表示为动作状态或活动状态.,4)对动作流建模.对动作流建模时可以首先处理顺序动作,接着处理分支与合并等条件行为,然后处理分叉与汇合等并发行为,19,
展开阅读全文