资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,10,章 状态图与活动图,*,UML,系统建模基础教程,UML,建模实例教程,UML,建模实例教程,第,10,章 状态图与活动图,10.1,动态建模概述,10.2,状态图,10.3,活动图,10.4,活动图与状态图的比较,UML,系统建模基础教程,10.1,动态建模概述,1.,状态图与活动图在系统建模中的位置,在,UML,软件开发过程中,是通过建立,业务用例模型,对系统进行需求分析的,对于某些重要的用例采用,活动图,来配合描述用例具体实现的流程,在系统分析阶段也经常用活动图来进一步深入描述用例图的具体功能实现流程。,在系统分析与系统设计阶段都涉及到对象类的,动态建模,。对象的动态模型是描述系统的动态行为的,,分为状态模型和交互模型,。,在,UML,中,用,状态图和活动图,为状态模型建模,用顺序图和合作图为交互模型建模。,需求分析,系统分析,实现,测试,部署,系统设计,用例建模,对象类建模,对象交互模型:,顺序图,/,协作图,对象状态模型:,状态图,/,活动图,活动图,第,10,章 状态图与活动图,10.1,动态建模概述,1.,状态图与活动图在系统建模中的位置,在系统分析系统阶段用,状态图和活动图,为对象动态模型中的状态模型建模。,在系统设计阶段阶段对已经建立的对象动态模型(,状态图、活动图,、,顺序图和协作图,)采用迭代式的方式进一步细化和完善。,需求分析,系统分析,实现,测试,部署,系统设计,用例建模,对象类建模,对象交互模型:,顺序图,/,协作图,对象状态模型:,状态图,/,活动图,活动图,第,10,章 状态图与活动图,10.1,动态建模概述,2.,系统设计做什么?,在,UML,的面向对象开发过程,系统设计是在系统分析的基础上,对系统分析阶段建立的对象静态模型、对象的动态模型的进一步细化,是对这些模型的更加详细的设计、补充和完善。,系统设计时,从类中导出对象,关注对象的关系、行为和,对象间的通信是如何实现的,。对每个类的属性和操作出更详细的设计,并设计相关联类间的消息规约。加入,接口类对象,,建立更完整的,对象的静态、动态模型,。,系统设计包括系统对象设计、系统体系结构设计和系统设计的优化和审查。,(需求分析的用例模型 反映系统,能做什么,?系统分析的对象类建模是关心系统,对谁做,的问题,而系统设计的动态建模是解决系统,如何做,的。),第,10,章 状态图与活动图,10.1,动态建模概述,3.,顺序图做什么?,顺序图(,Sequence Diagram,)描述了,对象,之间,传送消息,的时间顺序,它用来表示,用例中,的,行为顺序,,当执行一个用例行为时,顺序图中的每条消息对应了一个类操作中引起转换的触发事件。,1),确认和丰富一个使用语境的逻辑表达。,一个系统的使用情境就是系统潜在的使用方式的描述,也就是它的名称所要描述的。一个使用情境的逻辑可能是一个用例的一部分,或是一条控制流。,2),细化用例的表达,。我们前面已经提到,序列图的主要用途之一,就是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。,3),有效地描述如何分配各个类的职责以及各类具有相应职责的原因,。我们可以根据对象之间的交互关系来定义类的职责,各个类之间的交互关系构成一个特定的用例。,第,10,章 状态图与活动图,10.1,动态建模概述,4.,协作图做什么?,协作图(,Collaboration Diagram,)是顺序图之外的另一种表示交互的方法。主要描述,协作对象间的交互和链接,强调的是对象结构相关的信息,。顺序图和协作图都描述交互,但是顺序图强调的是时间,而,协作图强调的是空间,。,1,) 通过描绘对象之间消息的传递情况来反映具体的使用语境的逻辑表达。一个使用情境的逻辑可能是一个用例的一部分,或是一条控制流。这和序列图的作用类似。,2,),显示对象及其交互关系的空间组织结构,。协作图显示了在交互过程中各个对象之间的组织交互关系以及对象彼此之间的链接。与序列图不同,协作图显示的是对象之间的关系,并不侧重交互的顺序,它没有将时间作为一个单独的维度,而是使用序列号来确定消息及并发线程的顺序。,3,),表现一个类操作的实现,。协作图可以说明类操作中使用到的参数、局部变量以及返回值等。当使用协作图表现一个系统行为时,消息编号对应了程序中嵌套调用结构和信号传递过程。,第,10,章 状态图与活动图,10.1,动态建模概述,5.,状态图做什么?,状态图,(,State Diagram,),主要用来描述对象、子系统、系统的生命周期。通过状态图,可以表现系统中一个,对象,所具有的各种,状态,和这个对象从一种状态到另一种状态的转换(,迁移,),以及影响对象这些状态的,事件,(如收到消息、时间已到、报错、条件为真)等。它主要描述某个对象从一个状态到另一个状态变化迁移的,控制流,。,第,10,章 状态图与活动图,10.1,动态建模概述,6.,活动图做什么?,活动,图(,Activity Diagram,)主要用于描述系统中对象的一个,活动,到另一个活动的,控制流,、一个事务的,活动序列,、,工作的流程,和,并发,的处理能力。,需求分析中的活动,图主要用来配合描述某个重要的用例,,用图型的方式对用例的具体实现的过程进行描述,,这样比文字的描述更直观、更准确地说明用例的功能,在系统分析与设计过程中,经常用活动图进一步深入描述用例图的具体实现流程。,系统设计中的活动图对系统的,业务工作流,、,操作建模,,它描述业务流中从一个活动到另一个活动的控制流。它描述活动的序列,用来,分析和验证用例,,理解工作流程,,描述复杂过程的算法,,并具支持带条件的行为和并,发行的多程建模,。,第,10,章 状态图与活动图,10.2,状态图,10.2 .1,状态图概述,10.2.2,状态图的组成,10.2.3,状态图创建案例,第,10,章 状态图与活动图,10.2 .1,状态图概述,状态图(,Statechart,Diagram,)是软件系统进行面向对象分析的一种常用工具,它通过建立,对象、子系统、系统的生命周期,模型(状态)来描述对象、子系统随时间变化的动态行为。,状态图详细说明了一个对象生命周期内的可能的,状态,序列,状态允许发生的,迁移,,会引起迁移发生的事件,以及为了响应事件而执行的,行为,。,第,10,章 状态图与活动图,10.2 .1,状态概述,并不是对所有的对象都创建状态图,只有当,行为的改变和状态有关,时才创建状态图。,如图书管理系统中的图书(相关:新书、在架、预订、借出、注销)和读者帐号(有效、挂失、失效)可以创建其状态图,而图书管理员帐号则没有必要建立状态图。,与类图、对象图和用例图不同,,状态图只能对单个对象建立模型,,而类图、对象图和用例图可以对一个系统或一组类建立模型。,第,10,章 状态图与活动图,10.2 .1,状态概述,状态图清晰地描述了状态之间的转换顺序,通过状态的转换顺序可以清晰看出事件的,执行顺序,。,清晰的事件顺序有利于程序员在开发程序时避免出现事件错序的情况。,状态图清晰地描述了状态转换时所必须触发的,事件、监护条件和动作,等影响转换的因素。,状态图通过判定可以更好地描述工作流因为不同的条件发生的,分支,。,第,10,章 状态图与活动图,10.2.2,状态图的组成,状态图由状态、转换、事件、活动和动作,5,部分组成:,1,状态,指的是对象在其生命周期中的一种状况,处于某个特定状态中的对象必然会满足某些条件、执行某些动作或者是等待某些事件。一个状态的生命周期是一个有限的时间阶段。,2,转换,指的是两个不同状态之间的一种关系,表明对象将在第一个状态中执行一定的动作,并且在满足某个特定条件下由某个事件触发进入第二个状态。,3,事件,指的是发生在时间和空间上的对状态机来讲有意义的那些事情。事件通常会引起状态的变迁,促使状态机从一种状态切换到另一种状态,如信号、对象额度创建和销毁等。,4,活动,指的是状态机中进行的非原子操作。,5,动作,指的是状态机中可以执行的那些原子操作,所谓原子操作指的是它们在运行的过程中不能被其他消息所中断,必须一直执行下去,最终导致状态的变更或者返回一个值。,第,10,章 状态图与活动图,10.2.2,状态图组成,1,起点和终点,(起始状态与终止状态,特殊状态节点),起点代表状态图的一个初始状态,此状态代表状态图的起始位置。起点只能作为转换的源,而不是作为转换的目标。,起点在一个状态图中只允许有一个,。,终点代表状态图的最后状态,此状态代表状态图的终止位置。终点只能作为转换的目标,而不是作为转换的源。,终点在一个状态图中可以有一个或多个,,表示一个活动图的最后和终结状态。,第,10,章 状态图与活动图,10.2.2,状态图组成,2.,状态,状态是指在对象的生命期中的,一个条件或状况,,在此期间对象将满足某些条件、执行某些,活动,或等待某些,事件,。,第,10,章 状态图与活动图,10.2.2,状态图组成,理解状态的特征,状态是一个时间段:,在,员工下班回家,的过程中,经历的状态包括:,到下班时间了,收拾东西,准备回家,(不考虑加班);,开始,等待电梯,;,乘坐电梯,下楼,;,乘坐电梯,到达楼下,;,(发现没带家里钥匙,上楼拿)乘坐电梯,上楼,;,去公交车站,等车,;,乘公共汽车,去菜场,;,买菜,;,回到家,。,第,10,章 状态图与活动图,10.2.2,状态图组成,理解状态的特征:,(,1,),进入,/,退出动作,:对象本身的一个操作。如果在电梯里是一个状态的话,那员工进电梯和出电梯就是状态“在电梯里”的,进入,/,退出动作。,(,2,),内部转换,:例如员工在去等电梯的时候发现钥匙没带,此时我们不用在“等电梯”以后,而是在“准备回家”的状态中就去拿钥匙了。虽然整体的状态没有发生变化,但对于对象本身来说,前后是不一样的,一个是有钥匙,一个是没有钥匙。,(,3,),子状态,:如果需要进一步描述员工对象在电梯里聊天、打电话等状态时,这些状态就是该对象的“在电梯里”状态的子状态。,(,4,),延迟事件,:现在不立即产生的事件,该事件是在一段时间以后才产生的事件。员工必须等待到达,17:50,的时候,才能下班。,第,10,章 状态图与活动图,10.2.2,状态图组成,状态图符的三个组成部分:状态名、状态变量、事件。,一个状态一般包含三个部分,如图所示。第,事件,一部分为,状态的名,称,,如空闲、已付、移动、在菜场等。第二部分为,可选的,状态变量,的变量名和变量值,。属性(变量)指的是状态图中类的属性。第三部分为,可选的活动表,,列出有关的,事件和活动,。,第,10,章 状态图与活动图,10.2.2,状态图组成,3.,事件,事件是在,某个时刻,发生的事情,一个事件是一次激发的产生,激发可以触发一个状态转换。“事件”指的是发生的且引起某些动作执行的事情,即,事件表示在某一特定的时间或空间出现的能够引发状态改变的运动变化。,事件是一个,时间点,事件种类如下,。,第,10,章 状态图与活动图,10.2.2,状态图组成,事件是一个时间点:,在,员工下班回家,的过程中,,发生的事件,包括:,到下班时间了,,收拾东西,准备回家,(不考虑加班);,开始,等待电梯,;,电梯到达梯上,;,乘坐,电梯,到达楼下,;,(,发现没带家里钥匙,,上楼拿)乘坐电梯,上楼,;,去公交车站,等车,;,乘坐的公共汽车到了(),乘公共汽车,去菜场,;,买菜,;,回到家,。,第,10,章 状态图与活动图,10.2.2,状态图组成,事件的种类:,事件可以分成明确或隐含的几种,主要包括:,状态内部的事件、消息,事件和时间事件等。,状态内部的事件,(又称为动作,Activety,):,主要有入口事件、出口事件和,DO,事件等。,第,10,章 状态图与活动图,10.2.2,状态图组成,消息,信号事件和调用事件。,调用事件:一个对象调用另一个对象的操作,标在迁移线上,调用事件后,引起状态迁移。,如,补办借书证(帐号),调用后,帐号由挂失状态迁移到有效状态。,信号事件:由发出信号事件和接收信号事件构成。,发出信号事件,接收信,号事件,第,10,章 状态图与活动图,10.2.2,状态图组成,时间事件,:,由,after,事件、,when,事件和,defer,事件。,其中,aftert,事件和,when,事件,后跟有动作,。,第,10,章 状态图与活动图,10.2.2,状态图组成,4.,迁移(转换),状态的改变,转换表示当一个特定事件发生或者某些条件满足时,一个源状态下的对象完成一定的动作后将发生状态转变,转向另一个称之为目标状态的状态。当发生转换时,转换进入的状态为活动状态,转换离开的状态变为非活动状态。,第,10,章 状态图与活动图,10.2.2,状态图组成,迁移的特征,:,第,10,章 状态图与活动图,10.2.2,状态图组成,监护条件,:转换可能具有一个监护条件,监护条件是一个布尔表达式,它是触发转换必须满足的条件。,第,10,章 状态图与活动图,10.2.2,状态图组成,触发器事件:,触发器事件就是能够引起状态转换的事件。如果此事件有参数,则这些参数可以被转换所用,也可以被监护条件和动作的表达式所用。,动作:,动作(,Action,)通常是一个简短的计算处理过程或一组可执行语句。动作也可以是一个动作序列,即一系列简单的动作。,动作有两种情况:,附加到相应的,迁移线上,或对应的,状态框内,。,第,10,章 状态图与活动图,10.2.2,状态图组成,外部转换,:,外部转换,是一种改变状态的转换,也是最普通最常见的一种转换。在,UML,中,它用从源状态到目标状态的带箭头的线段表示,其他属性以文字串附加在箭头旁。,第,10,章 状态图与活动图,10.2.2,状态图组成,内部转换,只有源状态,没有目标状态,不会激发入口和出口动作,因此,内部转换激发的结果不改变本来的状态,。如果一个内部转换带有动作,它也要被执行。内部转换常用于对不改变状态的插入动作建立模型。要注意的是内部转换的激发可能会掩盖使用相同事件的外部转换。,内部转换的表示法与入口动作和出口动作的表示法很相似。他们的区别主要在于入口和出口动作使用了保留字“,entry”,和“,exit”,,其它部分两者的表示法相同。,第,10,章 状态图与活动图,判定示例,无判定示例,10.2.2,状态图组成,5.,判定,判定用来表示一个事件依据不同的监护条件有不同的影响。在实际建模的过程中,如果遇到需要使用判定的情况,通常用监护条件来覆盖每种可能,使得一个事件的发生能,保证触发一个转换,。,第,10,章 状态图与活动图,10.2.2,状态图组成,6.,分叉与汇合,同步条,是为了说明,并发,工作流,的分支与汇合。状态图和活动图中都可能用到同步。在,UML,中,同步用一条线段来表示。,第,10,章 状态图与活动图,10.2.3,状态图创建案例,在,UML,中,交互模型描述若于对象共同协作完成一项作,而状态图则是描述,一个对象穿越若干用例,的行为。建立状态图模型的建模步骤如下:,1,)确定状态图的主体,它可以是,一个系统,、一个用例、一个,对象,;,2,)确定主体的生存期的各种稳定的,状态及顺序,;,3,)确定状态迁移的,事件,;,4,)附加上必要的,动作,,把动作附加到相应的,迁移线上,或对应的,状态框内,;,5,)审核状态图,确认所有状态在事件触发下都可到达、死锁状态(无迁移)。,第,10,章 状态图与活动图,10.2.3,状态图创建案例,进销存管理系统中“产品”的状态图,1.,确定状态图的主体,要创建状态图,首先要标识出哪些实体需要使用状态图进一步建模。虽然我们可以为每一个类、操作、包或用例创建状态图,但是这样做势必浪费很多的精力。一般来说,不需要给所有的类都创建状态图,只有,具有重要动态行为的类,才需要。,从另一个角度看,状态图应该用于复杂的实体,而不必用于具有复杂行为的实体。使用,活动图可能会更加适合那些有复杂行为的实体,。,具有清晰、有序的状态实体最适合使用状态图进一步建模,。,对于产品出入仓库来说,需要建模的,实体就是产品,。,第,10,章 状态图与活动图,10.2.3,状态图创建案例,进销存管理系统中“产品”的状态图,2.,确定状态图中实体的状态,对于一个入库的产品来说,它的状态主要包括:,(1),未入库状态,(2),入库状态,(3),被排除状态,(4 ),销售出库状态,第,10,章 状态图与活动图,10.2.3,状态图创建案例,进销存管理系统中“产品”的状态图,3.,创建相关事件完成状态图,当确定了需要建模的实体,并找出了实体的初始状态和终止状态以及其他相关状态后,就可以着手创建状态图。,首先,我们要,找出相关的事件和转换,。对于企业的产品来说,刚被生产出来的产品可以通过仓库管理员添加成为入库的产品。当入库产品被出售,产品品处于被销售状态。,当产品由于过期、损坏等因素造成的不合格时,产品会被剔除。根据产品的各种状态以及转换规则。,第,10,章 状态图与活动图,10.2.3,状态图创建案例,网上商城中“商品”的状态图,1.,商品对象,2.,状态序列,3.,转换事件及活动。,第,10,章 状态图与活动图,10.2.3,状态图创建案例,图书管理系统的图书,状态图,1.,图书对象,2.,状态序列,3.,转换事件及活动。,第,10,章 状态图与活动图,10.2.3,状态图创建案例,员工下班回家状态图,(1),确定状态对象:员工。,(,2,)添加状态,选择状态图绘图工具栏上的相应按钮,在绘图区域中单击鼠标左键,就可以绘制状态。,第,10,章 状态图与活动图,10.2.3,状态图创建案例,员工下班回家状态图,(,3,)添加状态之间添加状态转换,单击状态图绘制工具栏上的按钮 ,在状态之间添加转换,由此得到的员式下班回家的状态图及其状态转换,第,10,章 状态图与活动图,10.2.3,状态图创建案例,员工下班回家状态图,(,4,)设置状态转移事件,在不同的状态之间进行转换时,需要指定从一种状态转换到另一种状态的事件。,第,10,章 状态图与活动图,10.2.3,状态图创建案例,员工下班回家状态图,(,5,)添加活动,在绘制状态图时,一般情况下需要指定状态的活动。右键单击对应的状态(如:等待电梯),打开状态属性设置对话框,选择,【Actions】,选项卡,右键单击中间空白区域,选择,【Insert】,菜单,完成活动的添加。,第,10,章 状态图与活动图,10.2.3,状态图创建案例,员工下班回家状态图,(,6,)调整大小和位置,遵循美观、实用的原则,调整状态图的大小和位置,得到的员工下班回家的状态图。,第,10,章 状态图与活动图,课堂实践,1,阅读如图所示的学生选课系统中的课程状态图,试着对不同状态间的转换进行描述。,(,1,),maxstudents,表示选修某一门课程的最多人数。,(,2,),students,表示选修了某一门课程的人数。,(,3,),after this term,表示学期结束,第,10,章 状态图与活动图,10.3,活动图,第,10,章 状态图与活动图,10.3,活动图,活动图,(,Activity Diagram,)主要用于描述系统中对象的一个,活动,到另一个活动的,控制流,、一个事务的,活动序列,、,工作的流程,和,并发,的处理能力。,需求分析中的活动,图主要用来配合描述某个重要的用例,,用图型的方式对用例的具体实现的过程进行描述,,这样比文字的描述更直观、更准确地说明用例的功能,在系统分析与设计过程中,经常用活动图进一步深入描述用例图的具体实现流程。,系统设计中的活动图对系统的,业务工作流,、,操作建模,,它描述业务流中从一个活动到另一个活动的控制流。它描述活动的序列,用来,分析和验证用例,,理解工作流程,,描述复杂过程的算法,,并具支持带条件的行为和并,发行的多程建模,。,第,10,章 状态图与活动图,10.3.1,活动图概述,活动图的作用,:,*,描述一个操作执行过程,中所完成的工作,说明角色、工作流、组织和对象是如何工作的。,*,活,动图对用例描述,尤其有用,它可建模用例的工作流、,显示用例内部和用例之间的路径,。,*,显示如何执行一组相关的,动作,,以及这些动作如何影响它们周围的对象。,*,活,动图可以画出工作流用以描述业务,,有利于与领域专家进行交流。通过活动图可以明确业务处理操作是如何进行的,以及可能产生的变化。,*,描述复杂过程的算法,,在这种情况下使用的活动图和传统的程序流程图的功能是相似的。,活动图,与常用的程序,流程图,相似,它们的主要区别在于程序流程图一般用来表示串行过程,而,活动图则可以用来表示,并行,过程,。,第,10,章 状态图与活动图,10.3.1,活动图概述,第,10,章 状态图与活动图,10.3.2,活动图组成,1,动作状态,动作状态是指执行原子的、不可中断的动作,并在此动作完成后转换到另一个状态。动作状态有如下,特点,:,动作状态是原子的,它是构造活动图的最小单位,无法分解为更小的部分;,动作状态是不可中断的,它一旦运行就不能中断,一直运行到结束;,动作状态是瞬时的行为,它所占用的处理时间极短,有时甚至可以忽略;,动作状态有入转换,入转换可以是动作流,也可以是对象流。动作状态至少有一条出转换,这条转换以内部动作的完成为起点,与外部事件无关;,动作状态与状态图中的状态不同,它不能有入口动作和出口动作,也不能有内部转移;,动作状态允许多处出现在同一活动图中。,第,10,章 状态图与活动图,10.3.2,活动图组成,2,活动状态,活动状态是非原子性的,用来表示一个具有子结构的纯粹计算的执行。 活动状态有如下,特点,:,活动状态可以分,解成其他子活动,或动作状态,由于它是一组不可中断的动作或操作的组合,所以,可以被中断,;,活动状态的,内部活动可以用另一个活动图,来表示;,活动状态可以有,入口动作和出口动作,,也可以有内部转移;,动作状态是活动状态的一个特例,如果某一个活动状态只包括一个动作,那么它就是一个动作状态。,第,10,章 状态图与活动图,10.3.2,活动图组成,3,动作流,:动作流是指所有动作状态之间的转换。,4.,分支与合并,分支是软件系统流程中很常见的一种逻辑,它一般用来表示对象所具有的条件行为,,每一部分都有单独的监护条件和不同的结果。,合并包括两个带条件的入转换和一个出转换(即两个入口和一个出口),用来表示从对应的分支开始的条件行为的结束。,第,10,章 状态图与活动图,10.3.2,活动图组成,5.,分叉与汇合(结合),活动图显求了如何协调多个事件,当执行活动时,有可能并行使用这些事件。,考虑一对夫妻的餐馆就餐活动,如右图,仅当两盘菜都做好后才会提供这套便餐。,第,10,章 状态图与活动图,10.3.2,活动图组成,5.,分叉与汇合,分叉用于将动作流分为两个或多个并发运行的分支,汇合则用于将不同的分支汇聚一起,汇合有多个入转换和一个出转换,,,出转换开始于所有并行活动都完成时,。,活动图主要用于为,有多个活动并行执行的业务建模,第,10,章 状态图与活动图,10.3.2,活动图组成,6,泳道,为了对活动的职责进行组织而在活动图中将活动状态分为不同的组,称为泳道(,Swimlane,)。,每个泳道代表特定含义的状态职责部分。,泳道显示了对象对系统所做的贡献。,第,10,章 状态图与活动图,带泳道活动图的特点:,-,泳道显示了对象对系统所做的贡献。,第,10,章 状态图与活动图,10.3.2,活动图组成,7,对象流,对象可以在活动图中显示,表示动作状态或者活动状态与对象之间的依赖关系。,对象可以作为动作的输入或输出,或简单地表示指定动作对对象的影响。,第,10,章 状态图与活动图,10.3.2,活动图组成,在活动图中,对象流描述了动作状态或者活动状态与对象之间的关系,表示了,动作使用对象以及动作对对象的影响,对象用矩形符号来表示,在矩形的内部有对象名或类名。对象流用带有箭头的虚线表示。,活动图中的对象流,第,10,章 状态图与活动图,活动图中加入对象流更能显示系统的交互:,第,10,章 状态图与活动图,在活动图中添加对象及对象流:,步骤:,工具,CREATE,OBJECT,第,10,章 状态图与活动图,10.3.2,活动图组成,8,组合活动,在,UML,的活动图中,一个大的活动可以分为若干个动作或子活动,这些动作或子活动本身又可以组成一个活动图。,第,10,章 状态图与活动图,10.3.3,活动图创建案例,活动图建模步骤:,(1),确定对象:找出,负责实现,工作流的主体对象。,对象主要参考与,业务工作流相关的用例,中的,参与者。,为,重要的对象分配一条,泳道。,(2),确定范围:明确起始状态和终止状态。,(3),确定主要,活动序列,:建模主要,用例路径,。,(4),处理迁移:分支状态迁移,并发与同步(分叉与结合)迁移。,(5),确定工作流中涉及的重要对象:添加,对象流,。,第,10,章 状态图与活动图,活动图的创建示例:用户购物活动图,10.3.3,活动图创建案例,电子商城用户购物活动图,1.,标识活动图的用例,用户购物活动中要涉及多个用例,完成工作流的主要对象是购物用户如图。,第,10,章 状态图与活动图,活动图的创建示例,:,用户购物活动图,10.3.3,活动图创建案例,电子商城用户购物活动图,2.,建模用例的路径,用户登录,首先选择要查看商品信息,,最后退出系统。,第,10,章 状态图与活动图,活动图的创建示例,:,用户购物活动图,10.3.3,活动图创建案例,电子商城用户购物活动图,3.,创建活动图,在创建活动图的过程中,需要注意如下问题:,考虑用例其他可能的工作流情况,如执行过程中,可能出现的错误或是可能执行其他活动。,使用泳道细化活动图。,按照时间顺序自上而下的,排列泳道内的动作或者状态。,使用并发时,不要漏掉任何的,分支,,尤其是当分支比较多的时候。,第,10,章 状态图与活动图,10.3.3,活动图创建案例,电子商城用户,前台,购物活动图,4.,在,Rose,中绘制活动图,(,1,)创建活动图包图(起点的问题),(,2,)创建新的活动图,单击“,Logical View”,节点,选择,【,New】,【Activity,Diagram】,,输入新的活动图的名称(如:前台购物),第,10,章 状态图与活动图,10.3.3,活动图创建案例,电子商城用户,前台,购物活动图,(,3,)添加购物用户活动图的,起点,和终点。,(,4,),添加动作状态或活动状态。基本操作方式同状态图。,(,5,),增加分支与合并。购物用户通过网上系统进行购物时,如果没有登录系统,则需要进行登录才能完成商品的购买操作。,第,10,章 状态图与活动图,10.3.3,活动图创建案例,电子商城用户购物活动图,(,6,)增加分叉与汇合,。购物用户进入网上系统后,在未登录状态下可以搜索并查看商品,并查询商品的详细情况。用户登录系统后,既可以查看商品信息,购买商品,也可以修改个人信息和查看个人信息。因此,,查看并购买商品和修改,/,查看个人信息属于并行流。,第,10,章 状态图与活动图,活动图的创建示例:,教师查看、修改学生信息,10.3.3,活动图创建案例,教师管理学生信息活动图,1.,标识活动图的用例,对于“教师查看、修改学生信息”来说,它的参与者是教师,教师在查看、修改学生信息的活动中有以下,3,个用例:,登录;,查询学生信息;修改学生信息。,第,10,章 状态图与活动图,活动图的创建示例,10.3.3,活动图创建案例,教师管理学生信息活动图,2.,建模用例的路径,教师登录后,首先选择要查看哪位同学的信息,查看之后修改该学生的信息,修改完成后保存修改过的信息,最后退出系统。,第,10,章 状态图与活动图,10.3.3,活动图创建案例,教师管理学生信息活动图,3.,创建活动图,在创建活动图的过程中,需要注意如下问题:,考虑用例其他可能的工作流情况,如执行过程中,可能出现的错误或是可能执行其他活动。,使用泳道细化活动图。,按照时间顺序自上而下的,排列泳道内的动作或者状态。,使用并发时,不要漏掉任何的,分支,,尤其是当分支比较多的时候。,第,10,章 状态图与活动图,10.3.3,活动图创建案例,系统管理员查看修改员工信息,活动图,1.,确定需求用例,对于“系统管理员查看修改员工信息”来说,参与者是系统管理员,系统管理员在查看修改员工信息的活动中,有,3,个用例:,1,登录:要进入系统,首先要登录。,2,查询员工信息:进入系统后可以选择查询不同员工的信息。,3,修改员工信息:需要修改某些员工的部分信息,比如员工晋升后需要修改的员工的职务和工资信息。,第,10,章 状态图与活动图,10.3.3,活动图创建案例,系统管理员查看修改员工信息,活动图,2.,确定用例路径,第,10,章 状态图与活动图,10.3.3,活动图创建案例,系统管理员查看修改员工信息,活动图,3.,绘制完整的活动图,第,10,章 状态图与活动图,10.4,活动图与状态图的比较,状态图描述了一个特定对象的,所有可能状态,,以及由于各种事件的发生而引起的,状态之间的转移,;用来描述一个对象在其生命周期的行为,主要,强调外部动作,的影响。活动图是一种描述工作流的方式,它用来描述采取何种动作、做什么、何时发生以及在何处发生。活动图是由状态图扩展而来的,是状态图的另外一种表现形式,它们之间有联系有区别。,第,10,章 状态图与活动图,10.4,活动图与状态图的比较,状态图和活动图的相同点:,1.,描述图符基本一样。,2.,都可以描述一个系统和对象在生存期间的状态和行为;,3.,都可以描述系统或对象在多线程操作中的同步和并发行为。,.,都可以采用分支流描述一个系统或对象的行为控制。,总之,活动图是描述一个系统或对象的动态行为的一种方法,它是状态图的另一种形式。,第,10,章 状态图与活动图,10.4,活动图与状态图的比较,状态图和活动图的主要区别在于:,1.,触发迁移的机制不同:,状态图中对象状态的迁移,一般都有一个,触发迁移的事件发生,。活动图中的活动状态迁移不需要事件触发,一个活动结束可以直接进入下一个活动。,2.,描述多个对象共同完成一个操作的机制不同:,状态图一般用于描述一个对象生存期内的经历的行为、,状态,,引起状态转移的,事件,及因状态转移发生的,动作,。若活动涉及多个对象,则采用,状态嵌套,的方式来描述多个对象共同完成的一个操作。,而活动图利用泳道将,穿越多个对象的操作,组织起来,它能清楚的表明动作在哪里(对象)执行。,第,10,章 状态图与活动图,实验五 状态图与活动图,实验目的:,理解并掌握状态图和活动图的画法。,实验内容:,1.,使用状态图来描述学生管理系统中学生对象,/,课程对象状态变化过程,;,2.,绘制学生管理系统中系统管理员查询、更改学生信息的活动图。,第,10,章 状态图与活动图,完,第,10,章 状态图与活动图,课堂实践,(,1,)阅读图书管理系统的系统管理员维护图书用户信息的活动图,试着对系统管理员的维护读者活动进行描述。,(,2,)绘制,WebShop,电子商城系统中订单处理的活动图。,第,10,章 状态图与活动图,第,10,章 状态图与活动图,图书管理系统“借书活动图”,第,10,章 状态图与活动图,
展开阅读全文