第6章 活动图.ppt
第6章 活动图,内容提纲,1.活动图2.活动图的应用,1.活动图,1.1 活动图1.2 活动图组成元素,1.活动图,活动图(Activity Diagrams)为系统的动态方面建模的5个图之一。它主要是一个流图,描述从活动到活动的流。活动是在状态机中进行的一个非原子的执行,它由一系列的动作组成。动作是由可执行的不可分的计算组成,这些计算引起系统的状态发生变化或返回一个值。,1.1 活动图,1.活动图,活动图(Activity Diagrams)通常,活动图记录单个操作或方法的逻辑、单个用例或商业过程的逻辑流程。在UML中,活动的起点用来描述活动图的开始状态,用黑的实心圆表示。活动的终止点描述活动图的终止状态,用一个含有实心圆的空心圆表示。活动图中的活动既可以是手动执行的任务,也可以是自动执行的任务,用圆角矩形表示。,1.活动图,活动图区别于其它动态建模图(1)交互作用图强调从对象到对象的控制流;(2)时序图强调消息的时间顺序;(3)协作图强调交互作用的对象的结构关系;(4)交互作用图着眼于传递消息的对象,活动图则着眼于在对象间传递的操作;(5)活动图根据对象状态的变化来确定动作与动作的结果。在活动图中,一个动作结束后自动进入下一个动作;而在状态图中,状态的跃迁可能需要事件的触发。,1.活动图,活动图的作用(1)描述一个操作执行过程中所完成的工作。说明角色、工作流、组织和对象是如何工作的。(2)活动图对用例描述尤其有用,它可建模用例的工作流,显示用例内部和用例之间的路径。它可以说明用例的实例是如何执行动作以及如何改变对象状态。(3)显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。(4)活动图对理解业务处理过程十分有用。活动图可以画出工作流用以描述业务,有利于与领域专家进行交流。通过活动图可以明确业务处理操作是如何进行的,以及可能产生的变化。(5)描述复杂过程的算法,在这种情况下使用的活动图和传统的程序流程图的功能是差不多的。,1.活动图,活动图主要组成元素(1)活动状态或动作状态;(2)跃迁;(3)对象;活动图与状态机 活动图是一种特殊的状态机,大部分的状态都是活动状态,大部分跃迁都是由源状态活动的完成类触发的。,1.2 活动图组成元素,1.活动图,典型案例,1.活动图,动作状态活动状态跃迁分支分叉和联结泳道对象流,1.2 活动图组成元素,1.活动图,动作状态 可执行的、不可分的计算,代表动作的执行。如为属性赋值、调用一个对象的操作、发送一个信号给一个对象等。动作状态不能被分解,即事件可以发生,但动作状态的工作没有被打断。完成动作状态中的工作花费相当短的执行时间。,1.活动图,动作状态实例,1.活动图,活动状态 非原子的,可以分解,可以被打断,通常需要一段时间才能完成。动作状态可看作活动状态的特例,活动状态可看作一个组合,由其他活动状态和动作状态构成。活动状态可以有入口、出口动作和子状态机的规定。,1.活动图,活动状态实例,1.活动图,活动状态实例组合活动 购物,当选购完商品后就需要付款。虽然付款只是一个活动状态,但是付款却可以包括不同的情况。对于会员来说,一般是打折后付款,而一般的顾客就要全额付款了。这样,在付款这个活动状态中,就又内嵌了两个活动,所以付款活动状态就是一个组合活动。,1.活动图,跃迁 用来表示从一个动作或活动状态传递到下一个动作或活动状态的路径。一项操作可以描述为一系列相关活动。一个活动仅一个起始点,但可有多个结束点。判断标志可以有多个输入和输出跃迁,但在活动的运作中仅触发一个满足条件的跃迁。,1.活动图,分支 规定了基于布尔表达式的替换路径。分支起始于判定,有一个输入,两个或多个输出。每个输出跃迁上的布尔表达式为真时,跃迁触发。所有护卫条件不重复,且能覆盖所有的可能性。,1.活动图,分支迭代 用一个活动状态来设置迭代因子的初始化值,另一个活动状态来增加迭代因子的值,用一个分支来判断迭代是否结束。,1.活动图,活动图实例,1.活动图,分叉和联结(Forking and Joining)UML中使用同步条来规定并行控制流的分叉和联结。同步条是一条粗的水平线或垂直线。,1.活动图,分叉和联结(Forking and Joining),1.活动图,分叉和联结(Forking and Joining),1.活动图,分叉 分叉表示将单一的控制流分为两个或多个并发的控制流。分叉有一个输入跃迁和多个输出跃迁,每个输出代表一个独立的控制流。在分叉下面,与每个输出路径相关的活动是并行进行的。并发分为真正并发(多CPU)和交叉并发(单CPU)。,1.活动图,联结 代表了两个或多个并发控制流的同步,联结有多个输入跃迁和一个输出跃迁。联结以上,与各路径有关的活动是并行的。在联结处,并发的流同步,所有的输入流到达同步流后,同步条将多个输入控制流合并,输出一个控制流,进而执行后面的活动。,1.活动图,1.活动图,描述系统的行为,不描述具体的处理过程。允许并发活动。,1.活动图,描述各种活动的顺序关系。,1.活动图,泳道(Swimlanes)泳道说明活动由谁来完成,将活动图的逻辑描述与顺序图、合作图的责任描述结合起来。泳道用矩形框来表示(泳道名唯一),属于某个泳道的活动置于该矩形框中,将对象名置于举行框的顶部,表示泳道中的活动由该对象负责。前两活动图中皆含两个泳道,后两活动图含三个泳道。,1.活动图,泳道(Swimlanes),1.活动图,对象流(Object Flow)与活动图有关的控制流可能涉及到对象。可将对象置于活动图中,用依赖关系将对象和产生、修改或破坏该对象的活动或跃迁连接。依赖关系和对象的使用称为对象流。活动图除可说明对象流,还可说明对象的角色、状态和属性值的变化。,1.活动图对象流,1.活动图对象流,2.活动图的应用,2.1 为工作流建模 2.2 为操作建模 2.3 JAVA代码建模,2.活动图的应用,工作流 工作流常用于可视化、规范、构建和文档化系统的商业过程。为工作流建模(1)确定工作流的中心。针对复杂系统建模。(2)选择与工作流有关的商业对象。为每个对象创建一个泳道。(3)识别工作流初始状态的前置条件和工作流最终状态的后置条件。,2.1 为工作流建模,2.活动图的应用,为工作流建模(4)从工作流的初始状态开始,规定随时间发生的活动和动作,置于活动图中。(5)对于复杂动作或多次出现的动作集合,可将它们折叠为活动状态,再提供一个单独的活动图来展开活动状态。活动图的粗细粒度(6)用跃迁连接活动状态和动作状态,从工作流中的顺序流开始,后考虑分支,再考虑分叉和联结。(7)工作流涉及的对象,置于活动图中。,2.活动图的应用,为操作建模(1)收集与操作有关的抽象,如参数、返回值、相关类属性等。(2)识别工作流初始状态的前置条件和工作流最终状态的后置条件,还要识别出在操作执行过程中必须持有的操作所在类的不变量。(3)从工作流的初始状态开始,规定随时间发生的活动和动作,置于活动图中。(4)必要时使用分支、分叉和联结。,2.2 为操作建模,2.活动图的应用,代码建模 可用活动图为每个操作流程建模,实际中少用,因代码更易理解。只有当操作行为复杂,代码难以阅读时,才用活动图为操作建模。,2.3 JAVA代码建模,JAVA代码Public void handleThread(int state)for(int i=0;i controls.length;i+)if(state=CustomControlsContext.START)if(controlsi.instanceofCustomControls)(CustomControls)controlsi.start();else if(state=CustomControlsContext.STOP)if(controlsi.instanceofCustomControls)(CustomControls)controlsi.stop();,2.活动图的应用,2.活动图的应用操作活动图,2.活动图的应用,案例1:学生信息管理系统1.确定需求用例 站在教师的角度,完成“教师查看修改学生信息”,参与者是教师,教师在查看修改学生信息的活动中,有3个用例:(1)登录:要进入系统,首先要登录。(2)查询学生信息:进入系统后可以选择查询不同学生的信息。(3)修改学生信息:需要修改某些学生的部分信息,比如考试过后需要修改学生的成绩信息。,2.活动图的应用,2.活动图的应用,2.确定用例路径,2.活动图的应用,3.绘制活动图,2.活动图的应用,案例2:远程网络教学系统 1.对于“远程网络教学系统”,学生登录后可以下载课件。在登录时,系统需要验证用户的登录信息,如果验证通过系统会显示所有可选服务。如果验证失败,则登录失败。当用户看到系统显示的所有可选服务后,可以选择下载服务,然后下载需要的课件。下载完成后用户退出系统,系统则会注销相应的用户信息。画出学生下载课件的活动图。,2.活动图的应用,2.活动图的应用,案例2:远程网络教学系统 2.在“远程网络教学系统”中,系统管理员登录后可以处理注册申请或者审核课件。在处理注册申请后,需要发送邮件通知用户处理结果;在审核完课件后,需要更新页面信息以保证用户能看到最新的课件,同时系统更新页面。当完成这些工作后,系统管理员退出系统,系统则注销系统管理员账号。画出系统管理员的工作活动图。,2.活动图的应用,思考,思考问题 利用活动图对自己熟悉的一个现实中的工作流建模。,