资源描述
Click to edit Master title style,Click to edit Master text styles,Second Level,Third Level,Fourth Level,Fifth Level,*,第四讲,交互图,行为图和实现图,刘超,北京航空航天大学软件工程研究所,2000 年 3月,第一部分,交互图:,顺序图和合作图,引,言;,交互图用例;,顺序图;,合作图;,小 结。,I,引 言,交互图描述对象之间的动态合作关系以及合作过程中的行为次序。,交互图常常用来描述一个用例的行为,显示该用例中所涉及的对象以及这些对象之间的消息传递情况。,交互图有顺序图和合作图两种形式。,II,交互图,的,用例:订货系统,订单提交窗口对象发送“,prepare”,消息给订单对象。,订单对象发送“,prepare”,消息给订单上的每个订单项对象。,每个订单项检查其对应的仓库货物:,如果检查结果为真,,,则订单项对象从对应的仓库货物中减去所订购的数量;,否则,仓库要求一次新的进货。,III,顺序图,订货系统的顺序图;,并发过程、激活和审查失败;,顺序图的基本要,素;,顺序图的可视化图符,。,订货系统的顺序图,needsToRecorder,=“true”new,创建,交付货物,check=“true”new,返回,进货货物,check=true remove(),needsToRecorder,(),回授,订单提交窗口,订单项,仓库货物,对象,check(),条件,订单,prepare(),消息,迭代,*,prepare(),对象的生命线,并发过程、激活和审查失败,交易协调人,be,I,nvalid,new,new,交易,new,第二个交易审查员,fail,new,第一个交易审查员,终止检测,kill,顺序图的基本要,素,顺序图描述对象之间的动态交互关系,着重体现对象间消息传递的时间顺序。,顺序图的基本要,素:,对象:对象、对象的生命线、激活的对象和对象的删除。,消息:简单消息、同步消息、异步消息、返回消息。,条件、,注释体和注释连接。,顺序图的可视化图符,激活的 对象,带有生命线的对象,Object:Class,分支 生命线,删除标志,简单消息,用于表示对象正执行某一动作,在对象的生命线之间发送消息的同时即激活对象。,用于表示顺序图中参与交互的对象,每个对象的下方都带有生命线,用于表示该对象在某段时间内是存在的。,生命线可以劈分成多条生命线,用于表示条件,接收分支消息。,标于生命线或激活上。表示已删除该对象或活动的执行。,表示简单的控制流。用于描述控制如何在对象间进行传递,不考虑通信的细节。,名 称,描 述,可视化图符,顺序图的可视化图符,(续),注释连接,注释体,返回消息,异步消息,同步消息,名 称,可视化图符,注释连接将注释体与要描述的实体相连。说明该注释体是对该实体所进行的描述。,用于对,UML,实体进行文字描述。,用于表示从同步消息激活的动作返回到调用者的消息。,表示异步控制流。当调用者发出消息后不要等待消息的返回即可继续执行自己的操作。异步消息主要用于描述实时系统中的并发行为。,表示嵌套的控制流。操作的调用是一种典型的同步消息。调用者发出消息后必须等待消息的返回;当处理消息的操作执行完毕,调用者才可继续执行自己的操作。,描 述,IV,合作图,简单编号方案的合作图;,订货系统的,合作,图;,消息执行顺序的编号方案;,对象名称的命名方案;,合作图的可视化图符。,简单编号方案的合作图,2*:,prepare(),对象,消息,3:,check(),4:check=trueremove(),7:,check=truenew,1:,prepare(),:订单提交窗口,:订单,:交付货物,电视栏目:订单项,5:,needsToRecorder,(),时序号,回授,:购进货物,6:,new,电视库存:仓库货物,订货系统的,合作,图,合作图描述对象之间消息的连接关系,侧重说明哪些对象之间有消息传递。,合作图中对象用对象图符表示,箭头表示消息发送的方向,编号标明消息的执行顺序。,与顺序图相比,通过编号来看消息的执行顺序比较困难,但合作图中对象间灵活的空间布局可以更方便地展示动态连接关系等有用信息。,消息执行顺序的编号方案,合作图中最常用的消息执行顺序的编号方案有两种:,顺序法:用简单编号方案,从1开始,由小到大,顺序排列。,层次法:用小数点制编号方案,此时常常要求表示系统号、子系统号和模块号。,UML,使用了小数点方案。,对象名称的命名方案,一个,UML,对象名称的命名方案:,对象名:类名。,其中对象名或类名可以省略,但不能同时都省略。,如果省略对象名,则应保留分号;如果省略类名,则不必保留分号。,合作图的可视化图符,名 称,可视化图符,单个对象,Object:Class,表示合作图中参与交互的对象。,多个对象,Object:Class,表示一组对象。,关联,表示对象间的各种关系,包括组成关联和聚集关联。,聚集关联,表示类的对象之间的关系是整体与部分的关系。,组成关联,表示类的对象之间的关系是整体拥有各部分且部分与整体共存亡。,描 述,指向源的简单消息,表示对象间从目的对象向源对象发送简单消息。,合作图的可视化图符,(续),名 称,描 述,可视化图符,表示对象间从源对象向目的对象发送异步消息。,表示对象间从源对象向目的对象发送同步消息。,表示对象间从目的对象向源对象发送同步消息。,注释体用于对,UML,实体进行文字描述。,将注释体与要描述的实体相连。,指向目的的异步消息,指向目的的同步消息,指向源的 同步消息,注释体,注释连接,指向目的的简单消息,表示对象间从源对象向目的对象发送简单消息。,表示对象间从目的对象向源对象发送异步消息。,指向源的 异步消息,V,小 结,顺序图突出对象的执行时序,合作图能更清楚地表示对象之间的静态连接关系。,交互图擅长显示对象之间的合作关系,尽管它并不对这些对象的行为进行精确定义。如要描述一个用例中几个对象协同工作的行为时,交互图是一种有力的工具。,虽然交互图能清楚地显示消息机制,但当消息中有太多的条件或循环时,交互图就失去其简明性。交互图仅适用于条件判断和循环不太多的时序过程。,当行为比较简单时,交互图比较好;当行为比较复杂时,则应使用活动图。,如果想描述跨越多个用例的单个对象的行为,应当使用状态图。如果想描述跨越多个用例或多个线程的复杂行为,则应使用活动图。,最基本的选择原则是用哪种图更简明清楚则选用哪种图。“越简明,价值越大”。,第二部分,行为图:,状态图和活动图,状态图;,活动图。,I,状态图的基本要素,基本概念;,状态图的基本要素;,小 结。,I.1,基本概念,状态图有多种形式,以基于,David,Harel,的状态表方法在,OO,技术中最为流行。,状态图描述系统对象的动态行为,一般描述一个特定对象在其生命周期中的所有可能状态以及由于各种事件的发生而引起状态的转移条件。,I.2,状态图的基本要素,实例:,订单对象的状态图;,状态语法和转移语法;,状态的转移,条件;,转移条件的互斥性;,状态图的基状态表示法;,并发状态图。,实例:,订单对象的状态图,all items checked&,all items available,收到货物,all items,available,发货,活动,do/initiate,delivery,发货状态,/,get first item,all items checked&,some items not in stock,取下一项,not all items checked,开始,do/check,item,检查状态,收到货物,some items not in stock,转移,状态,回授,等待状态,已发货 状态,事件名条件/动作名,do,/,活动名,状态语法和转移语法,状态之间的转移可带有标注,,由三部分组成(每一部分都可省略),,其语法为:,事件名 条件/动作名,状态图中的,状态包含一个活动,由两部分组成,(每一部分也都可省略),,其语法为:,do,/,活动名,动作与活动都是一种过程,都由订单对象中的方法来实现,但动作与转移关联,处理较快且不会被中断;活动与状态关联,处理时间较长且可以被事件中断。,状态的转移,条件,转移中的事件表示输入条件:,一个非真即假的逻辑判断。当且当条件为“真”时才发生转移。,当状态中的活动完成后,且当相应的输入事件发生时,转移才会发生;如转移上没有标明引发转移的事件,则表示状态中的活动一旦完成,转移立即发生。,在本例中,从检查状态出来三个转移,而且,都标有条件。,转移条件的互斥性,对于一个给定状态,只能产生一个转移。因此从相同状态出来的、事件相同的几个转移条件是互斥的。,图中列出了从检查状态引出的三个条件。,如没有检查完所有项,则取下一项并回到检查状态继续检查。,如已检查完所有项,且都有足够的货物,则转移到发货状态。,如已检查完所有项,但有一些项缺货,则转移到等待状态。,状态图的基状态,表示法,do/check,item,检查状态,等待状态,取消状态,do/initiate,delivery,发货状态,已发货 状态,取消状态,do/initiate,delivery,发货状态,do/check,item,检查状态,等待状态,已发货 状态,发货状态,基状态名,并发状态图,终点,拒绝 状态,已发货状态,取消 状态,终点,已确认状态,付款确认 状态,等待 状态,发货 状态,检查 状态,并发状态图,(续),并发状态图由两个或多个并发子图组成,每个子图叫作一个并发段。在任何时刻,一个对象的状态是每个并发段中各取一个状态的组合。当对象离开并发段后,它又恢复成一个单一的状态。,如果并发子图中的一个状态首先完成,它将首先转入下一个状态。但是,如果异常事件发生,则进入唯一的异常状态。,当一个对象有几个相互独立的行为时,并发状态图可以方便地刻画它的行为。但一个对象的并发行为不应太多;如果太多,应将其状态图分细。,I.3,小 结,评 述;,状态图的基本要素;,状态图的元语。,评 述,状态图、交互图和活动图:状态图适合描述跨越多个用例的单个对象的行为,不适合描述多个对象之间的协作行为。交互图适合描述单个用例中多个对象之间的协作行为。活动图适合描述多个对象跨越多个用例时的总面貌。,不应对系统中的每个类都画状态图,而只应对某些关键类建立状态图;而且应将状态图与其它技术组合使用。,状态图的基本要素,状态:初态、中间状态、复合状态、终态和并发条。,条件和转移:转移、条件、条件判断标志和历史标志。,注释:注释体和注释连接。,状态图的元语,初态,表示状态图的起始点。,名 称,描 述,可视化图符,中间状态,表示状态图的简单状态。,State,状 态,复合状态,表示状态图的复合状态,可细化为多个子状态,用“或”和“与”两种关系相连。,State,复合状态,条件判断标志,表示状态间的条件分支转移。,终态,表示状态图的终点。,状态图的元语,(续),将注释体与要描述的实体相连,说明该,Note,是针对该实体所进行的描述。,用于对复合状态中的某个子状态做标志,说明该子状态是退出复合状态时最后所处的状态。,表示并发状态。,描 述,注释连接,并发条,名 称,用于说明两个对象间存在某种关系,如满足某个条件并当某一事件发生时,对象将从一个状态变迁到另一个状态并同时执行一些活动。,转移,用于对,UML,实体进行文字描述。,注释体,可视化图符,历史标志,H,II,活动图的基本要素,引 言;,活动图的基本要素;,小结。,II.1,引 言,基本概念;,活动图,示,例;,活动图的元模型。,基本概念,从概念层看,活动表示需要由人,或,计算机来完成的任务。图中描述了“人找饮料喝”这一过程。,从说明层或实现层看,,活动表示类中的方 法,。图中描述了名字为“人”的对象类中一个关于“找饮料喝”的方法。,来源:活动图主要来源于,Jim,Odell,的事件图,、,SDL,状态建模技术和,Petri,网技术。,活动图的核心符号是活动,通过连接将活动组成活动图。,活动图,示,例,没有可口可乐,判断条件,判定活动,找到可,口可乐,活动,找到咖啡,没有咖啡,同步条件,找饮料,将咖啡放到 过滤器中,取一听,可口可乐,加水到,容器中,取出,咖啡杯,人,熄灭咖啡炉,点燃,咖啡炉,把过滤器放到咖啡炉上,冲调咖啡,终点,喝饮料,倒咖啡,活动的,元模型,活动的元模型基于,SADT,技术,它包含五个元 素:,输入,输出,支持,控制和,活动。,活 动,控 制,输 入,输 出,支 持,II.2,活动图的基本要素,活动和组合活动;,特殊活动;,对 象;,起点和终点;,信息流,数据流,信号流;,泳道和时标;,注释体和注释连接。,活动和组合活动,活动:活动图所描述的过程中的某一原子活动,(即不可再被细分)。,组合活动:活动图所描述的过程中的某一活动可再分为成多个活动,(一般用另一张活动图加以描述)的,活动,。,组合活动的定义是递归的。,特殊活动,条件判断,同步条,信号接收和信号发送,条件判断:表示活动流程中的判断。通常有多个信息流从它引出,表示决策后的不同活动分支。,同步条:表示活动之间的同步。一般有一个或多个信息流向它引入,有一个或多个信息流从它引出,表示引入的信息流同时到达,引出的信息流被同时触发。,信号接收:若与信号流相连,表示它是某个活动转移的必要条件,等价于信息流上的事件标识。,信号发送:若与信号流相连,表示在某个活动转移发生时向某个对象发送一个信号,等价于信息流上的发送子句。,对 象,对象若与信号流相连,表示它是与活动图中的对象进行交互,(接收或发送信号)的其他对象,。,对象若与数据流相连,表示它是活动的输入或输出。,信息流,数据流,信号流,信息流:用于连接活动、组合活动及特殊活动(如起点、终点、同步条及判断等),表示活动的转移。,数据流:用于连接活动与对象,表示该对象是该活动的输入或输出。,信号流:将一个控制信号发送(或控制信号接收)与一个对象相连接,表示向该对象发送(或由该对象接收)一个控制信号。,起点和终点,起点:,活动图中所有活动的起点。每幅活动图一般有且仅有一个起点。,终点:活动图中活动的终点是指,所有被触发的活动都已执行完毕,且没有待执行的活动时,。每幅活动图一般有一个或多个终点,。,死端点:,若,一个活动执行后不再执行别的活 动,则,该活动,叫作死端点。此时没有定义,该幅活动图的终点,。,泳道和时标,活动图能指出发生了什么,但不能指出该项活动由谁来完成。因而在概念层无法描述每个活动由谁来负责,在说明层和实现层无法描述每个活动是由哪个类来完成的。,活动图也不能指出该项活动需要在哪个,阶段,完成。因而在概念层无法描述项目计划。,解决这个问题的,一种,方法是,将活动图中的,活动进行,分组。活动图有三种分组方法:,泳道法:用于对活动图中的活动按横向进行分组,同一组活动由一个或多个对象负责完成。,时标法:用于对活动图中的活动,也是,按横向进行分组,同一组活动都是属于,在,同一阶段要完成的活动。,泳道和时标相结合的方法:横向按时标分组;纵向按泳道分组。,注释体和注释连接,注释体:用于对,UML,实体进行文字描述。,注释连接:用于将注释体与要描述的实体相连,说明该注释体是针对该实体所进行的描述。,II.3,小 结,活动图的优点和缺点;,何时可使用活动图;,何时不应使用活动图;,UML,活动图元语小结,。,活动图的优点和缺点,优点:最适合支持并行行为,而且也是支持多线程编程的有力工具。,缺点:很难清楚地描述动作与对象之间的关系。虽然在活动旁标出对象名或者采用泳道技术可以定义这种关系,但仍然没有交互图简单直接。,因此,像大多数建模技术一样,最好把活动图与其他技术结合使用。,何时可使用活动图,分析用例。,能直观清晰地分析用例,了解应当采取哪些动作以及这些动作之间的依赖关系。一张完整的活动图是所有用例的集成图。,理解牵涉多个用例的工作流。,在难于区分不同用例而对整个系统的工作过程又十分清楚时,可以先构造活动图,然后用切片技术派生用例图。,处理多线程应用。,采用“分层抽象,逐步细化”的原则描述多线程。,何时不应使用活动图,显示对象间的合作。,用交互图显示对象间的合作更简单直观,。,显示对象在生命周期内的运转情况。,活动图可以表示活动的激活条件,但不能表示一个对象的状态变换条件。因此,当要描述一个对象整个生命周期的运转情况时,应当使用状态图。,UML,活动图元语小结,名 称,描 述,可视化图符,起 点,表示活动图中所有活动的起点,(,一般每幅活动图有且仅有一个起点,),。,活 动,活 动,表示活动图所描述的过程中的某一活动。该活动是原子活动,(,即不可再被细分,),。,终 点,表示活动图中活动的终点。一般每幅活动图有一个或多个终点。,组合活动,组合活动,表示活动图所描述的过程中的某一活动。该活动可再细分成多个活动,(,一般用另一张活动图加以描述,),。,若与信号流相连,表示它是与活动图中的对象进行交互,(,接收或发送信号,),的其他对象;若与数据流相连,表示它是活动的输入产品或输出产品。,对 象,对象,UML,活动图元语小结,(续),同步条,一种特殊活动,表示活动之间的同步。一般有一个或多个信息流向它引入,有一个或多个信息流从它引出,表示引入的信息流同时到达,引出的信息流被同时触发。,条件判断,一种特殊活动,表示活动流程中的判断。通常有多个信息流从它引出,表示决策后的不同活动分支。,信号接收,信号接收,一种特殊活动,若与信号流相连,表示相应信号的接收是某个活动转移的必要条件。等价于信息流上的事件标识。,信号发送,信号发送,一种特殊活动,若与信号流相连,表示在某个活动转移发生时向某个对象发送一个信号。等价于信息流上的发送子句。,用于对活动图中的活动进行分组,同一组活动由一个或多个对象负责完成。,描 述,名 称,可视化图符,泳 道,泳道,UML,活动图元语小结,(续),将注释体与要描述的实体相连,说明该注释体是针对该实体所进行的描述。,用于连接活动与对象,表示该对象是该活动的输入或输出。,描 述,注释连接,数据流,名 称,用于对,UML,实体进行文字描述。,注释体,可视化图符,信息流,用于连接活动、组合活动及特殊活动,(,如起点、终点、同步条及判断等,),,表示活动的转移。,将一个信号发送,(,或信号接收,),与一个对象相连接,表示向该对象发送,(,或由该对象接收,),一个信号。,信号流,第三部分,实现图:,构件图和配置图,构件图;,配置图。,I,构件图,引言;,构件图示,例;,构件图的基本要素;,UML,构件图元语,小结。,引 言,本章将讨论系统的实现图,即构件图和配置图,它们显示系统实现时的一些特性。其中:,构件图显示代码的静态结构,(逻辑结构);,配置图显示系统运行时刻的实现结构。,构件图示,例,构件,circle,类,(,circle.,obj,),square,类,(,square.,obj,),依赖,square,类,(,square.,cpp,),circle,类,(,circle.,cpp,),main,类,(,main.,cpp,),main,类,(,main.,obj,),图形库,(,graphic.,dll,),主执行程序,(,main.exe),构件图的基本要素,源代码构件;,二进制构件;,可执行构件。,软构件是一个实际文件,有以下几种:,构,件图显示软构件以及它们,(,编译、链接或执行时,),相互之间的依赖关系,以及接口和调用关系。,UML,构件图元语,小结,描 述,用于对,UML,实体进行文字描述。,将注释体与要描述的实体相连。说明该注释体是针对该实体所进行的描述。,构件代表可执行的物理代码模块。,有两个构件元素,X、Y,,修改元素,X,的定义可能会引起对另一个元素,Y,的定义的修改,则称元素,Y,依赖于元素,X。,对外提供的可见操作和属性,称之为构件的界面。,可视化图符,构件,名,称,注释体,构 件,注释连接,界 面,依赖关系,II,配置图,引 言;,配置图,示,例;,配置图的基本要素;,UML,配置图,元语,小结。,引 言,配,置图用来描述系统硬件的物理拓扑结构以及在此结构上执行的系统软件。,配置图可以显示计算结点的拓扑结构和通信路径、结点上运行的软构件、软构件包含的逻辑单元,(对象、类等),。,配置图是描述任何基于计算机的应用系统(,尤其是基于,Internet,和,Web,的分布式计算系统,)的物理配置或逻辑配置的有力工具,。,配置图,示,例,肝病部门配置,肝病部门服务器,肝病部门服务器,应用程序,对象数据库,保健区,糖尿病部门服务器,对象数据库,保健区,一台多窗口,PC,肝病部门,客户外观,肝病部门,用户界面,TCP/IP,TCP/IP,配置,医疗知识,配置用户,配置图的基本要素,结点:配置图中的结点代表物理设备及其在上运行的软件系统。结点用一个立方体表示,结点名放在左上角。图中有“一台多窗口,PC”、“,肝病部门服务器”和“糖尿病部门服务器”等三个结点。,连接:,结点之间的连线表示系统之间的通信路径(在,UML,中称为连接),,通信类型放在连接旁边的“”之间。,构件:而配置图中,每个构件代表一个负责某种专门处理,(即具有某种专门功能),的包。因此,配置图显示了各个包在系统中运行的分布情况。,接口:一个构件可以有多个接口,以表示出哪些构件与哪一个接口进行通信。,对象:配置图中的对象与对象图中的对象表示法相同。,UML,配置图,元语,小结,可视化图符,构件,对象,结点,描 述,名,称,构件代表可执行的物理代码模块。,对外提供的可见操作和属性,称之为构件的界面。,对象是类的一个实例。,一个结点代表一个物理设备以及在其上运行的软件系统,。,构 件,界 面,对 象,结 点,UML,配置图,元语,小结,(续),结点之间的连线表示系统之间进行交互的通信路径,在,UML,中称为连接。,有两个构件元素,X、Y,,修改元素,X,的定义可能会引起对另一个元素,Y,的定义的修改,则称元素,Y,依赖于元素,X。,描 述,可视化图符,名,称,用于对,UML,实体进行文字描述。,将注释体与要描述的实体相连。说明该注释体是针对该实体所进行的描述。,注释体,注释连接,连 接,依赖关系,
展开阅读全文