资源描述
Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,软件开发生命周期与统一建模语言,*,Click to edit Master title style,静态模型,软件开发生命周期与统一建模语言,第,8,章 状态图与活动图,软件开发生命周期与统一建模语言,协作图的定义,协作图的建模过程,回顾,软件开发生命周期与统一建模语言,状态图的定义,状态图的建模,活动图的建模,学习目标,软件开发生命周期与统一建模语言,8.1,状态图(,Statechart Diagram,),状态机,用于描述一个,对象,在其生存期间的,动态行为,,响应事件所经历的状态序列以及伴随的动作。,状态图,用于描述状态机,一个状态机可以用,多个状态图,描述。,状态图与交互图的区别,交互图为了显示某个特定的用例某个特定的场景下对象发生了哪些交互,状态图描述对象整个生命其中表现的动态行为,对象响应事件的动作,对象的状态会发生哪些改变,软件开发生命周期与统一建模语言,软件开发生命周期与统一建模语言,8.1.1,基本概念,什么是状态,(,state,)?,对象生命期中的某个条件或状况,在此期间对象将,满足某些条件、执行某些活动或等待某些事件,。,理解,对象在任何时候都会处于某种状态中,,所有对象都有状态,;,对象所处的状态决定了它如何响应所检测到的事件或所接受的消息;,通常,事件使对象从一个状态转向另一个状态(,状态转移,);,软件开发生命周期与统一建模语言,8.1.1,基本概念,CD,播放器(正常状态下),软件开发生命周期与统一建模语言,动作,Action,可执行的,原子,计算,;,不可中断,,其执行时间可忽略不计;,两种特殊动作(只要进入或离开状态都会执行该动作):,进入动作,(,entry action,),-,进入状态时执行的动作,-,Entry/setMode(onTrack),退出动作(,exit action,),-,退出状态时执行的动作,-,Exit/setMode(offTrack),软件开发生命周期与统一建模语言,转移,Transition,两个状态之间的一种关系,,表示对象在第一个状态执行一定的动作,,并在某个,特定事件发生,而且,满足某个条件时,进入第二个状态。,格式:,事件(参数),条件,/,动作,helplength,(,password,),6/verifyPassword.help(),软件开发生命周期与统一建模语言,事件,Event,是对一个时间和空间上占有一定位置的有意义的事情的规格说明;,事件,触发状态的转移,;,四类主要事件,信号事件,调用事件,变化事件,时间事件,软件开发生命周期与统一建模语言,8.1.2,状态的类型,几种状态类型:,-,初态,-,终态,-,中间状态,-,组合状态,-,历史状态,软件开发生命周期与统一建模语言,1,、初态与终态,初态,(,start state,),显示状态图中状态机的执行(,execution,)的开始;,一个状态机,只能有一个初态,,因为每一个执行都是从相同的地方开始。,如果一个状态机是由多个状态图描述,则多张图用同一个初态,;,嵌套状态,中可以使用新的初态;,终态,(,end state,),表示一个最后的或者终端状态;,终态的数目可以是不确定的(可以不用画出来),软件开发生命周期与统一建模语言,2,、中间状态组成,中间状态的组成,状态名(,name,),进入,/,退出动作(,entry/exit action,),内部转移(,internal transition,),-,不导致状态改变的转换,不会执行,entry,和,exit,动作,子状态(,substate,),-,嵌套在另外一个状态中的状态,延迟事件(,deferred event,),-,延迟到下一状态中处理的事件,软件开发生命周期与统一建模语言,3,、组合,/,嵌套状态,含有子状态的状态被称为组合状态,状态名(,name,),进入,/,退出动作(,entry/exit action,),软件开发生命周期与统一建模语言,3,、组合,/,嵌套状态,两种类型:,与子状态,或子状态,软件开发生命周期与统一建模语言,4,、历史状态,History state,使用历史状态,则可以存储给退出组合状态时所处的子状态,则返回组合状态时可以直接回到相应的子状态;,软件开发生命周期与统一建模语言,8.1.3,状态图,订单处理系统,软件开发生命周期与统一建模语言,8.1.3,状态图,订单处理系统,软件开发生命周期与统一建模语言,8.3,状态图建模技术,为什么要对状态图进行建模?,对象可能会有不同的状态,某些行为依赖于这些状态。例如,按下开关按钮时,电灯将改变当前的状态(由关变开或由开变关),因此:,需要记录对象当前的状态,发生了某种事件才会引起状态间的转移,由一个状态转到另一个状态的过程通常通过方法调用实现,状态图通常作为,对类图的补充,软件开发生命周期与统一建模语言,8.3,状态图建模技术,建模步骤:,找出适合用模型描述其行为的,类,。,确定对象可能存在的,状态,。,确定引起状态转换的,事件,。,确定转换进行时对象执行的相应,动作,。,对建模的结果进行相应的精化和细化。,软件开发生命周期与统一建模语言,8.4,状态图实例,书的状态图:,软件开发生命周期与统一建模语言,8.4,状态图实例,借阅证的状态图:,软件开发生命周期与统一建模语言,8.2,活动图,Activity Diagram,提供了建模,业务工作流,的一种方法;,是一种,特殊的状态图,;,同状态图的区别:,活动图用来建模,某个过程,的,活动序列,,以活动为中心;,状态图用来建模,对象生命周期中,的所有阶段,以状态为中心;,软件开发生命周期与统一建模语言,8.2,活动图,存款,软件开发生命周期与统一建模语言,8.2.1,基本概念,活动,决策,同步,泳道,对象流和对象,软件开发生命周期与统一建模语言,活动,动作状态,指执行,原子的、不可中断的,动作;,并在此动作完成后通过完成,转换,转向另一个状态的状态;,动作状态使用平滑的圆角矩形表示,动作状态所表示的动作写在圆角矩形内部。,软件开发生命周期与统一建模语言,活动,理解:,动作状态是原子的;,不可中断的状态;,瞬时的行为,它所占用的处理事件极短;,动作状态和状态图中的状态不同,它不能有入口动作和出口动作,更不能有内部转移;,在一张活动图中,动作状态允许多处出现。,软件开发生命周期与统一建模语言,活动,活动状态,用于表达状态机中的一个,非原子,的运行;,可以给出入口动作和出口动作等信息;,软件开发生命周期与统一建模语言,活动,理解:,分解,成其他子活动或动作状态;,可以被,中断,;,活动状态的内部活动可以用另一个活动图来表示;,和动作状态不同,活动状态可以有入口动作和出口动作,也可以有内部转移;,动作状态是活动状态的一个特例,,如果某个活动状态只包括一个动作,那么它就是一个动作状态。,软件开发生命周期与统一建模语言,动作流(,transition,),所有,动作状态,之间的,转换流,称之为动作流。,与状态图的转换相同,活动图的转换也用带箭头的直线表示,箭头的方向指向转入的方向。,软件开发生命周期与统一建模语言,决策(,decision,),用于表示对象类所具有的条件行为(,警戒条件,);,条件行为用,分支和合并,表达;,一个分支有,一个入转换和两个带条件的出转换,,出转换的条件应当是,互斥,的,这样可以保证,只有一条出转换能够被触发,;,一个合并有,两个带条件的入转换和一个出转换,,合并表示从对应的分支开始的条件行为的结束;,软件开发生命周期与统一建模语言,决策(,decision,),软件开发生命周期与统一建模语言,同步(,synchronization,),显示业务用例的工作流程中的,并行线程,;,分叉,用于将动作流分为两个或者多个,并发运行的分支,;,汇合,则用于,同步,这些并发分支,以达到共同完成一项事务的目的;,理解:,汇合,代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才能继续往下进行。,每个汇合可以有两个或多个输入转换和一个输出转换;,分叉,可以用来描述并发线程,,每个分叉可以有一个输入转换和两个或多个输出转换,,每个转换都可以是独立的控制流;,软件开发生命周期与统一建模语言,同步(,synchronization,),软件开发生命周期与统一建模语言,泳道(,swimlane,),对活动图中的活动,分组,,并把每一组指定给,负责这组活动的业务组织即对象,;,泳道区分了负责活动的对象,,明确地表示了哪些活动是由哪些对象进行的;,每个活动只能明确地属于一个泳道;,泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。,软件开发生命周期与统一建模语言,泳道(,swimlane,),软件开发生命周期与统一建模语言,对象流(,objectFlow,),对象流是,动作状态或者活动状态,与,对象,之间的依赖关系,表示动作使用对象或者动作对对象的影响。,对象流中的对象特点:,一个对象可以由多个动作操纵;,一个动作输出的对象可以作为另一个动作输入的对象;,在活动图中,,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存期的不同时间点,;,软件开发生命周期与统一建模语言,对象流(,objectFlow,),软件开发生命周期与统一建模语言,8.2.2,活动的分解,一个活动可以分为若干个动作或子活动,这些动作和子活动本身可以组成一个活动图;,一个包含子活动的活动和嵌套了子状态的组合状态类似,概念上也相对统一。,一个不含内嵌活动或动作的活动称之为,简单活动,;一个嵌套了若干活动或动作的活动称之为,组合活动,,组合活动有自己的名字和相应的子活动图。,软件开发生命周期与统一建模语言,8.2.3,活动图,软件开发生命周期与统一建模语言,8.5,活动图建模技术,识别要对其工作流描述的,类或对象,。,确定工作流的初始状态和终止状态,明确工作流的,边界,。,对,动作状态或活动状态,建模。,对,动作流,建模。,对,对象流,建模。,对建立的模型进行精化和细化。,软件开发生命周期与统一建模语言,8.5,实例,软件开发生命周期与统一建模语言,8.5,实例,“,餐馆订餐”系统的用例图,软件开发生命周期与统一建模语言,“记录预约”用例的事件路径如下:,1,接待员输入要预约的日期,2,系统显示该日的预约,3,有一张合适的餐桌可以使用,接待员输入顾客的姓名和电话号码、预约的时间、用餐人数和餐桌号,3a,)没有合适的餐桌可以使用,3a1,)用例终止,4,系统记录并显示该预约,4a,)输入的预约人数多于餐桌能容纳的人数,4a1,)系统发出一个警告信息,询问用户是否想要继续预约,4a1a,)如果回答“否”,用例将不进行预约而终止,4a1b,)如果回答“是”,预约将被输入,并附有一个警告标志,软件开发生命周期与统一建模语言,建模主事件流,软件开发生命周期与统一建模语言,建模扩展事件流,软件开发生命周期与统一建模语言,划分游泳道后的活动图,软件开发生命周期与统一建模语言,8.6,活动图实例,1,、图书馆,系统管理员,通过图书管理系统对读者的借阅进行管理(查询、添加、删除和更新借阅信息),请画出系统管理员维护借阅者账户信息的活动图。,软件开发生命周期与统一建模语言,8.6,活动图实例,软件开发生命周期与统一建模语言,8.6,活动图实例,图书管理员的日常工作主要是通过图书管理系统处理借书与还书,借阅者借阅书籍的数量是受限制的,超过还书期限需要缴纳罚金。请给出图书管理员的活动图,软件开发生命周期与统一建模语言,8.6,活动图实例,软件开发生命周期与统一建模语言,8.6,活动图实例,3,、借阅者通过自助终端可以查找书籍,查看书籍信息,只有在登陆帐户的情况下才能保存书籍记录,请给出借阅者的活动图。,软件开发生命周期与统一建模语言,8.6,活动图实例,软件开发生命周期与统一建模语言,总结,协作图和时序图是一对孪生兄弟,它们都能表示对象间的交互过程。但是它们的侧重点不同;,时序图清楚地表示了交互作用中的时间顺序,但没有明确表示对象间的关系;,协作图清楚地表示了对象间的关联关系,但时间顺序必须从顺序号获得;,软件开发生命周期与统一建模语言,总结,UML,中的图及其相互关系,Thank You!,
展开阅读全文