《第5章 系统分析与动态行为建模教学课件.pptx》由会员分享,可在线阅读,更多相关《第5章 系统分析与动态行为建模教学课件.pptx(129页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5章 系统分析与动态行为建模在线开放课程 SDUFE面向对象系统分析与设计在线开放课程第第5章章 系系统分析与分析与动态行行为建模建模 引引导导案例案例 5.2 顺顺序序图图建模建模建模建模 5.1 动态动态行行为为建模建模 5.3 通信通信图图建模建模 5.4 状状态图态图建模建模5.5 动态动态行行为为建模建模实实例例在线开放课程引导案例:赤壁之战与系统建模l“赤壁之赤壁之战”的用例的用例图4在线开放课程引导案例:赤壁之战与系统建模l“赤壁之赤壁之战”的的顺序序图5在线开放课程引导案例:赤壁之战与系统建模l“赤壁之赤壁之战”的的顺序序图(改(改进)6在线开放课程引导案例:赤壁之战与系统建
2、模l“赤壁之赤壁之战”中的中的类7在线开放课程引导案例:赤壁之战与系统建模l案例案例总结:l顺序序图是按是按时间顺序描述一个交互及消息序描述一个交互及消息传递的一种的一种方式,主要有以下三种作用:方式,主要有以下三种作用:细化用例的表达。前面已经提到,顺序图的一大用途,细化用例的表达。前面已经提到,顺序图的一大用途,就是将用例所描述的需求与功能转化为更加正式、层次就是将用例所描述的需求与功能转化为更加正式、层次更加分明的细化表达。更加分明的细化表达。有效地描述类职责的分配方式。我们可以根据顺序图中有效地描述类职责的分配方式。我们可以根据顺序图中各对象之间的交互关系和发送的消息来进一步明确对象各
3、对象之间的交互关系和发送的消息来进一步明确对象所属类的职责。所属类的职责。丰富系统的使用语境的逻辑表达。系统的使用语境即为丰富系统的使用语境的逻辑表达。系统的使用语境即为系统可能的使用方式和使用环境。系统可能的使用方式和使用环境。8在线开放课程5.1 动态行为建模l所有系统均可表示为两个方面:静态结构和动态行为;所有系统均可表示为两个方面:静态结构和动态行为;UMLUML提供多种图以捕获和描述系统的这两个方面。提供多种图以捕获和描述系统的这两个方面。l在在UMLUML中,使用中,使用类图类图描述系统的静态结构,说明系统包描述系统的静态结构,说明系统包含哪些对象类以及它们之间的关系。含哪些对象类
4、以及它们之间的关系。l在在UMLUML中,中,动态行为模型动态行为模型(也称为动态模型或行为模型)(也称为动态模型或行为模型)包括包括交互模型交互模型、状态模型状态模型和和活动模型活动模型。交互模型(顺序图和通信图)强调对象间的合作关系与时间交互模型(顺序图和通信图)强调对象间的合作关系与时间顺序,通过对象间的消息传递来完成系统的交互。顺序,通过对象间的消息传递来完成系统的交互。状态模型(状态机图)关注一个对象的生命周期内的状态及状态模型(状态机图)关注一个对象的生命周期内的状态及状态变迁,以及引起状态变迁的事件和对象在状态中的动作状态变迁,以及引起状态变迁的事件和对象在状态中的动作等。等。活
5、动模型(活动图)用于描述对象的一个活动到另一个活动活动模型(活动图)用于描述对象的一个活动到另一个活动的控制流、活动的序列、工作的流程和并发的处理行为等。的控制流、活动的序列、工作的流程和并发的处理行为等。9在线开放课程5.1 动态行为建模l建立动态行为模型的步骤:建立动态行为模型的步骤:分析所有的用例,理解系统中的交互行为,编写典型交分析所有的用例,理解系统中的交互行为,编写典型交互序列的场景,虽然场景中不可能包括每个偶然事件,互序列的场景,虽然场景中不可能包括每个偶然事件,但是至少必须保证不遗漏常见的交互行为,为系统建立但是至少必须保证不遗漏常见的交互行为,为系统建立交互模型;交互模型;从
6、场景中提取出对象之间的事件,确定触发每个事件的从场景中提取出对象之间的事件,确定触发每个事件的动作对象及接受事件的目标对象;动作对象及接受事件的目标对象;排列事件发生的次序,确定每个对象可能有的状态及状排列事件发生的次序,确定每个对象可能有的状态及状态之间的转移关系,并用状态图描述它们;态之间的转移关系,并用状态图描述它们;最后,比较各个对象的状态图,检查它们之间的一致性最后,比较各个对象的状态图,检查它们之间的一致性和完整性。和完整性。10在线开放课程5.1.1 交互模型l信息系统中的任务是通过对象之间的合作来完成的。信息系统中的任务是通过对象之间的合作来完成的。如如“赤壁之战赤壁之战”的案
7、例所示,对象之间的合作是通过的案例所示,对象之间的合作是通过对象之间的消息的传递实现的。对象之间的消息的传递实现的。l对象之间的合作在对象之间的合作在UMLUML中被称为中被称为交互交互,即交互是一组对,即交互是一组对象之间为完成某一任务(如完成一个操作)而进行的象之间为完成某一任务(如完成一个操作)而进行的一系列信息交换的行为说明。交互可以对软件系统为一系列信息交换的行为说明。交互可以对软件系统为实现某一任务而必须实施的动态行为进行建模。实现某一任务而必须实施的动态行为进行建模。l交互模型是用来描述对象之间以及对象与参与者交互模型是用来描述对象之间以及对象与参与者(actor)(actor)
8、之间的动态协作关系以及协作过程中行为次序之间的动态协作关系以及协作过程中行为次序的图形文档。它通常用来描述一个用例的行为,显示的图形文档。它通常用来描述一个用例的行为,显示该用例中所涉及的对象和这些对象之间的消息传递情该用例中所涉及的对象和这些对象之间的消息传递情况。因此,可以使用交互模型对用例图中的控制流况。因此,可以使用交互模型对用例图中的控制流(用例描述)建模,用它们来描述用例图的行为。(用例描述)建模,用它们来描述用例图的行为。11在线开放课程5.1.1 交互模型l交互模型包括交互模型包括顺序图顺序图和和通信图通信图(UML2.0UML2.0之前称协作图)之前称协作图)两种形式。两种形
9、式。l顺序图着重描述对象按照时间顺序的消息交换,通信顺序图着重描述对象按照时间顺序的消息交换,通信图着重描述系统成分如何协同工作图着重描述系统成分如何协同工作(即侧重于空间的协即侧重于空间的协作作)。l顺序图和通信图从不同的角度表达了系统中的交互及顺序图和通信图从不同的角度表达了系统中的交互及系统的行为,它们之间可以相互转化。一个用例需要系统的行为,它们之间可以相互转化。一个用例需要一个或多个顺序图或通信图,除非特别简单的用例。一个或多个顺序图或通信图,除非特别简单的用例。12在线开放课程5.1.2 状态模型l在面向对象建模中,对象的行为是通过其操作来描述在面向对象建模中,对象的行为是通过其操
10、作来描述的,而整个系统的行为主要体现于其中各个对象的行的,而整个系统的行为主要体现于其中各个对象的行为以及通过消息所发生的行为联系。然而,对那些状为以及通过消息所发生的行为联系。然而,对那些状态比较复杂,而且在不同状态下其行为将呈现许多变态比较复杂,而且在不同状态下其行为将呈现许多变化的对象,如果不分析和辨别它的各种状态,只是笼化的对象,如果不分析和辨别它的各种状态,只是笼统地来认识对象的行为,往往难以把各种情况都考虑统地来认识对象的行为,往往难以把各种情况都考虑得很周全。因此,对一些状态复杂的对象进行状态建得很周全。因此,对一些状态复杂的对象进行状态建模,将有助于准确、精细地定义对象的属性和
11、操作。模,将有助于准确、精细地定义对象的属性和操作。l在在UMLUML中,状态机图是描述一个实体基于事件反应的动中,状态机图是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应,状态机图就是对一个状态模型。同的事件做出反应,状态机图就是对一个状态模型。13在线开放课程5.1.3 活动模型l活动模型描述的是从活动到活动的控制流,用于描述活动模型描述的是从活动到活动的控制流,用于描述多个对象在交互时采取的活动,它关注对象如何相互多个对象在交互时采取的活动,它关注对象如何相互活动以完成一个事务。活动以完成一个事务。
12、l活动图的主要用途有两种:一是为业务流程建模;二活动图的主要用途有两种:一是为业务流程建模;二是为对象的特定操作建模。是为对象的特定操作建模。l在在需求分析中需求分析中对活动图的介绍主要是为了分析用例,对活动图的介绍主要是为了分析用例,或理解涉及多个用例的工作流程,除此之外,活动图或理解涉及多个用例的工作流程,除此之外,活动图还可以描述具体的操作过程,比如处理多线程应用等。还可以描述具体的操作过程,比如处理多线程应用等。因此,活动图可以在系统需求分析阶段使用(描述用因此,活动图可以在系统需求分析阶段使用(描述用例),也可以在系统设计阶段使用。例),也可以在系统设计阶段使用。14在线开放课程15
13、5.2 顺序图建模l顺序序图(Sequence Diagram)(Sequence Diagram)又称又称时序序图、序列、序列图l定定义:是一种:是一种详细表示表示对象之象之间以及以及对象与参与者象与参与者之之间交互交互的的图,由一由一组协作的作的对象象(或参与者或参与者)以及它以及它们之之间可可发送的送的消息消息组成成,强调消息之消息之间的的顺序序。l对象之象之间的交互表的交互表现为一个一个对象象发送一个消息送一个消息给另另一个一个对象。通常情况下,当一个象。通常情况下,当一个对象象调用另一个用另一个对象象中的操作中的操作时,消息是通,消息是通过一个一个简单的操作的操作调用来用来实现;当操
14、作当操作执行完成行完成时,控制和,控制和执行行结果返回果返回给调用者。用者。在线开放课程umluml和和ooadooad快速入快速入门门165.2.1 顺序图概述用例图用例图类图类图顺序图顺序图动态行为动态行为(系统外在行为系统外在行为)静态结构静态结构(系统内在结构系统内在结构)动态行为动态行为(系统内在行为系统内在行为)参与者、用例参与者、用例类类对象对象(object)(object)包含、扩展包含、扩展关联关联消息消息(message)(message)类图、用例图和顺序图的比较在线开放课程175.2.1 顺序图概述双叉法顺序图关联了类图与用例图两方顺序图关联了类图与用例图两方面,表示
15、了系统在与参与者互动面,表示了系统在与参与者互动执行某一个用例期间,系统内部执行某一个用例期间,系统内部的一群小对象的协作情况。因此,的一群小对象的协作情况。因此,系统分析师可以使用双叉法,同系统分析师可以使用双叉法,同步进行类图与用例图的分析,然步进行类图与用例图的分析,然后尽快通过顺序图来整合、调整后尽快通过顺序图来整合、调整三方面的图,如右图所示。三方面的图,如右图所示。在线开放课程18 顺序图整合了用例与类既然顺序图用来表示执行既然顺序图用来表示执行期间系统内部一群对象之期间系统内部一群对象之间的互动情况,因此在实间的互动情况,因此在实际操作中,我们经常使用际操作中,我们经常使用顺序图
16、来表示某一个用例顺序图来表示某一个用例的执行期间系统内部的运的执行期间系统内部的运作情况。至于系统内部有作情况。至于系统内部有哪些对象可用,理所当然哪些对象可用,理所当然地规范在类图中。地规范在类图中。请看右图请看右图,系统系统分析师可分析师可以使用顺序图来整合用例以使用顺序图来整合用例与类。与类。5.2.1 顺序图概述在线开放课程l正是由于顺序图具备了时间顺序的概念,从而可以清晰地正是由于顺序图具备了时间顺序的概念,从而可以清晰地表示对象在其生命周期的某一时刻的动态行为。顺序图可表示对象在其生命周期的某一时刻的动态行为。顺序图可以说明操作的执行、用例的执行或系统中的一次简单的交以说明操作的执
17、行、用例的执行或系统中的一次简单的交互情节。互情节。l另外,由于在绘制顺序图之前一般已经做过了分析类的工另外,由于在绘制顺序图之前一般已经做过了分析类的工作,所以在顺序图中,可以引入类和对象的概念来帮助建作,所以在顺序图中,可以引入类和对象的概念来帮助建模。当执行一个用例行为时,顺序图中的每一条消息对应模。当执行一个用例行为时,顺序图中的每一条消息对应了一个类的操作或状态机中引起转换的触发事件。也就是了一个类的操作或状态机中引起转换的触发事件。也就是说,顺序图在一个编程人员可以理解的模型基础上对用例说,顺序图在一个编程人员可以理解的模型基础上对用例进行了翻译,把抽象的各个步骤转化成大致的消息传
18、递序进行了翻译,把抽象的各个步骤转化成大致的消息传递序列,供程序员们按图索骥。并且,图这一形式本身用来表列,供程序员们按图索骥。并且,图这一形式本身用来表达一些序列就是极为恰当的,这也就使得顺序图成为描述达一些序列就是极为恰当的,这也就使得顺序图成为描述一个过程的强有力的工具。一个过程的强有力的工具。5.2.1 顺序图概述在线开放课程lBCEBCE模式模式lBCEBCE模式(模式(Boundary-Control-Entity PatternsBoundary-Control-Entity Patterns)是用例)是用例技术的创始人技术的创始人Ivar JacobsonIvar Jacobs
19、on提出来的。提出来的。BCEBCE模式在概念上模式在概念上很浅显易懂,跟著名的很浅显易懂,跟著名的MVCMVC模式(模式(Model-View-Control Model-View-Control PatternPattern)概念相似。简单来说,在)概念相似。简单来说,在BCEBCE模式中,将对象分模式中,将对象分为三类:边界类(为三类:边界类(boundary classboundary class)、控制类()、控制类(control control classclass)和实体类()和实体类(entity classentity class)。关于类的版型在本)。关于类的版型在本书第
20、书第4 4章做了详细讲述,此处不再赘述。章做了详细讲述,此处不再赘述。5.2.1 顺序图概述在线开放课程lBCEBCE模式模式5.2.1 顺序图概述在线开放课程lBCEBCE模式模式l应用应用BCEBCE模式建立顺序图时,要注意以下几点内容:模式建立顺序图时,要注意以下几点内容:针对一个用例,可以对应生成一个控制类。针对一个用例,可以对应生成一个控制类。参与者对象只能跟边界对象互动。参与者对象只能跟边界对象互动。实体对象不能发送消息给边界对象和控制对象。实体对象不能发送消息给边界对象和控制对象。比较特别的是比较特别的是,如果只是单纯对数据表进行增加、删,如果只是单纯对数据表进行增加、删除、修改
21、和查询的话,可以不设置控制对象,让边界除、修改和查询的话,可以不设置控制对象,让边界对象直接发送消息给实体对象。对象直接发送消息给实体对象。5.2.1 顺序图概述在线开放课程l顺序图中包括的建模元素有对象顺序图中包括的建模元素有对象(参与者实例也是参与者实例也是对象对象)、生命线、生命线(lifeline)(lifeline)、控制焦点、控制焦点(focus of(focus of control)control)、消息、消息(message)(message)等。等。5.2.2 顺序图的组成在线开放课程l顺序图顺序图是一个二维图形。在顺序图中水平方向为是一个二维图形。在顺序图中水平方向为对象
22、维,沿水平方向排列的是参与交互的对象。对象维,沿水平方向排列的是参与交互的对象。其中对象间的排列顺序并不重要,但一般把表示其中对象间的排列顺序并不重要,但一般把表示参与者的对象放在图的两侧,主要参与者放在最参与者的对象放在图的两侧,主要参与者放在最左边,次要参与者放在最右边左边,次要参与者放在最右边(或表示人的参与者或表示人的参与者放在最左边,表示系统的参与者放在最右边放在最左边,表示系统的参与者放在最右边)。l顺序图中的垂直方向为时间维顺序图中的垂直方向为时间维,沿垂直向下方向按沿垂直向下方向按时间递增顺序列出各对象所发出和接收的消息,时间递增顺序列出各对象所发出和接收的消息,水平水平方向方
23、向表示不同表示不同的的对象或参与者对象或参与者。5.2.2 顺序图的组成在线开放课程umluml和和ooadooad快速入快速入门门251.对象与生命线 生命线(lifeline)对象(object)在线开放课程26顺序图中的对象是类的实例。顺序图中的对象可以是系统顺序图中的对象是类的实例。顺序图中的对象可以是系统的参与者或者任何有效的系统对象。的参与者或者任何有效的系统对象。对象由对象名和类名的矩形框来标记。对象由对象名和类名的矩形框来标记。“对象名对象名对象名对象名:类名类名类名类名”对象的名字可以被省略,表示是一个对象的名字可以被省略,表示是一个匿名对象匿名对象;在保证不;在保证不混淆的
24、情况下,对象所属的类名(包括前面的冒号)也允许混淆的情况下,对象所属的类名(包括前面的冒号)也允许被省略。被省略。1.对象与生命线对象与生命线在线开放课程27顺序图中的大部分对象是存在于整个交互过程的,即对顺序图中的大部分对象是存在于整个交互过程的,即对象创建于顺序图顶部,其生命线一直延伸至底部。如果一象创建于顺序图顶部,其生命线一直延伸至底部。如果一个对象出现在其他位置上(不在顶端),则说明这个对象个对象出现在其他位置上(不在顶端),则说明这个对象是在交互执行到某些步骤的时候被创建出来的。是在交互执行到某些步骤的时候被创建出来的。生命线生命线:表示对象在一段时间内存在表示对象在一段时间内存在
25、,垂直虚线垂直虚线,置于对象置于对象下面;下面;生命线生命线可在某处分成两条或多条并行的生命线可在某处分成两条或多条并行的生命线,也也可在某处合并;可在某处合并;但生命线不能超过销毁处。但生命线不能超过销毁处。1.对象与生命线对象与生命线在线开放课程281.对象与生命线对象与生命线在线开放课程292.激活(控制焦点、控制期)l激活表示激活表示对象的一个操作象的一个操作执行的持行的持续时间,也表示了也表示了对象和象和它的它的调用者之用者之间的控制关系。的控制关系。l同同时时,激活也表示,激活也表示该对该对象在象在这这段段时间时间内不是空内不是空闲闲的,它正在的,它正在完成某个任完成某个任务务,或
26、者,或者说说正被占用。正被占用。l一个激活的开始一个激活的开始应该应该是收到了其他是收到了其他对对象象传传来的消息,并在来的消息,并在这这段激活的段激活的时间时间里里处处理理该该消息,消息,执执行一些相关的操作,然后反行一些相关的操作,然后反馈馈或者或者进进行下一步消息行下一步消息传递传递。l一个激活一个激活结结束的束的时时候候应该应该伴有一个消息的伴有一个消息的发发出。出。在线开放课程302.激活(控制焦点、控制期)l激活的表示方式:激活的表示方式:激活在激活在UMLUML中用一个中用一个细长细长的矩形表示,的矩形表示,显显示在生命示在生命线线上。上。l矩形的矩形的顶顶部表示部表示对对象所象
27、所执执行行动动作的开始作的开始,底部表示底部表示动动作的作的结结束。束。l在在UML2UML2中,使用中,使用术语执术语执行行说说明(明(execution specificationexecution specification)代替了激活。)代替了激活。在线开放课程3.消 息l消息消息:消息是从一个消息是从一个对对象(象(发发送者)向另一个送者)向另一个对对象(接收者)象(接收者)发发送的信号,或由一个送的信号,或由一个对对象(象(发发送者或送者或调调用者)用者)调调用另一个用另一个对对象(接收者)的操作。象(接收者)的操作。l消息是消息是对对象和象和对对象象协协同工作的信息同工作的信息载
28、载体,它代表了一系列体,它代表了一系列实实体体间间的通信内容。消息的的通信内容。消息的实现实现有不同的方式,例如,当某有不同的方式,例如,当某对对象象调调用了另一个用了另一个对对象的一个操作象的一个操作时时,就可以看作是两个,就可以看作是两个对对象之象之间间通通过发过发送消息来达成的。送消息来达成的。在线开放课程3.消 息l在在顺顺序序图图中,消息表示中,消息表示为为从一个从一个对对象的生命象的生命线线指向另一个指向另一个对对象的生命象的生命线线的箭的箭头头。l如果是某一如果是某一对对象象发给发给自己的消息,自己的消息,则则箭箭头头的起点和的起点和终终点都在点都在同一条生命同一条生命线线上上(
29、自调用自调用)。l消息箭消息箭头头使用阿拉伯数字作使用阿拉伯数字作为为序号,按照序号,按照时间顺时间顺序从序从图图的的顶顶部到底部垂直排列来表示通信部到底部垂直排列来表示通信图图中中发发送消息的送消息的顺顺序。如果一个序。如果一个收到消息的收到消息的对对象象还还没有被激活,那么没有被激活,那么这这条消息将会激活条消息将会激活这这个个对对象。象。自调用在线开放课程3.消 息l简单简单消息消息(Simple MessageSimple Message):顺序图中最常见的消息:顺序图中最常见的消息。l简单简单消息的消息的图图形表示也同形表示也同样简单样简单,只要用一个,只要用一个实实心箭心箭头头就可
30、就可以。以。l简单简单消息表示控制流,可以泛指任何交互,但不描述任何通消息表示控制流,可以泛指任何交互,但不描述任何通信信息。当你的信信息。当你的设计设计不需要复不需要复杂杂的消息的消息类类型,或者能很容易判型,或者能很容易判断出断出顺顺序序图图中各个消息的消息中各个消息的消息类类型型时时,为简单为简单起起见见,可以将所,可以将所有的消息都画成有的消息都画成简单简单消息。消息。在线开放课程3.消 息l调调用(用(callcall)/同步消息(同步消息(Synchronous MessageSynchronous Message):消息的消息的发送者把控制送者把控制传递给消息的接收者,然后停止活
31、消息的接收者,然后停止活动,调用者用者发出出消息后必消息后必须等待消息返回,只有当等待消息返回,只有当处理消息的操作理消息的操作执行完行完毕后,后,调用者才可用者才可继续执行自己的操作行自己的操作。调用某个用某个对象的一个操作,象的一个操作,可以是可以是对象之象之间的的调用,也可以是用,也可以是对对象本身的象本身的调用,即自身用,即自身调用或用或递归调用。例如,当用。例如,当对象象A A发送消息送消息调用用对象象B B时,A A会会等待等待B B执行完所行完所调用的方法后再用的方法后再继续执行。行。l一般地,一般地,调用消息的接收者必用消息的接收者必须是一个被是一个被动对象,即它是一象,即它是
32、一个需要通个需要通过消息消息驱动才能才能执行行动作的作的对象。另外象。另外调用消息必有用消息必有一个配一个配对的返回消息,的返回消息,为了了图的的简洁和清晰,与和清晰,与调用消息配用消息配对的返回消息可以不用画出。的返回消息可以不用画出。(1)调用)调用/同步消息同步消息在线开放课程35l异步异步(asynchronous)(asynchronous)消息的消息的发送者通送者通过消息把信号消息把信号传递给消息的接收者,然后消息的接收者,然后继续自己的活自己的活动,不等待,不等待接收者返回消息或控制。异步消息的接收者和接收者返回消息或控制。异步消息的接收者和发送者送者是并是并发工作的。工作的。l
33、主要用于描述主要用于描述实时系系统中的并中的并发行行为。(2)异步消息)异步消息3.消 息在线开放课程l返回消息不是主返回消息不是主动发动发出的,面是一个出的,面是一个对对象接收到其他象接收到其他对对象的象的消息后返回的消息。消息后返回的消息。l很多情况下一个消息的接收都会要求一个返回,但如果把所很多情况下一个消息的接收都会要求一个返回,但如果把所有有对对源消息的返回全部源消息的返回全部绘绘制在制在顺顺序序图图中,中,图图将将变变得得过过于复于复杂杂而而难难以以阅读阅读,所以所以仅仅仅仅需要需要绘绘制重要的返回消息即可。制重要的返回消息即可。返回消息返回消息都是异步消息,可以并都是异步消息,可
34、以并发运行。运行。(3)返回消息)返回消息3.消 息在线开放课程37l创建(建(createcreate):):创建一个建一个对象象时发送的消息,在送的消息,在UMLUML中使用中使用具有具有构造型的消息表示。构造型的消息表示。(4)创建()创建(create)3.消 息在线开放课程38l销毁(destroydestroy):):销毁一个一个对象(也允象(也允许对象象销毁自身)。自身)。UMLUML中使用具有中使用具有构造型的消息表示。构造型的消息表示。(5)销毁()销毁(destroy)3.消 息在线开放课程39l同步是指事同步是指事务之之间非并行非并行执行的一种状行的一种状态,一般需要一个
35、事,一般需要一个事务停止工作停止工作等待另外一个事等待另外一个事务工作的完成。工作的完成。这种种“暂停停-等待等待”的行的行为又称作阻塞。同步又称作阻塞。同步消息意味着消息意味着发出出该消息的消息的对象将不再象将不再继续进行后行后续工作,工作,专心等待消息接心等待消息接收方返回消息。收方返回消息。l大多数方法大多数方法调用使用的都是同步消息(因此一般情况下并不需要使用同用使用的都是同步消息(因此一般情况下并不需要使用同步消息的表示法)。只有在并行程序中才可能出步消息的表示法)。只有在并行程序中才可能出现非同步的消息,即异步非同步的消息,即异步消息。消息消息。消息发出者在出者在发出异步消息之后,
36、不必等待接收者的返回消息便可出异步消息之后,不必等待接收者的返回消息便可以以继续自己的活自己的活动和操作。和操作。l例如,例如,编辑软件向打印机件向打印机发送打印命令后,不必等待打印完成就可以送打印命令后,不必等待打印完成就可以继续编辑。如果异步消息返回,而。如果异步消息返回,而对象需要接收象需要接收这个返回消息并个返回消息并调用新的方用新的方法,那么法,那么这个个过程叫作程叫作“回回调”。一般来。一般来说,异步消息需要有消息中,异步消息需要有消息中间件的件的支持,消息中支持,消息中间件将异步消息存件将异步消息存储起来并逐个起来并逐个发送,消息返回送,消息返回时再再经由它由它准确地送准确地送给
37、原原发送者。送者。(6)同步消息和异步消息的比较)同步消息和异步消息的比较3.消 息在线开放课程40l消息上可以加一个条件。条件是一个布消息上可以加一个条件。条件是一个布尔表达式,它表示消表达式,它表示消息息执行与否取决于行与否取决于该表达式的表达式的值。对条件建模条件建模时,在消息前面,在消息前面加一个条件子句,例如加一个条件子句,例如x0 x0。(7)消息的条件表达形式)消息的条件表达形式3.消 息在线开放课程41l在使用在使用顺序序图的的过程中,尤其是程中,尤其是对于于UMLUML的初学者,很可能的初学者,很可能会因会因为复复杂的消息符号而的消息符号而导致致难以以绘制和理解制和理解顺序序
38、图。l在在这里推荐一种做法,即所有的消息全部使用里推荐一种做法,即所有的消息全部使用简单消息和返消息和返回消息的表示法来表示,可以使用不同回消息的表示法来表示,可以使用不同颜色和字体的文字,在色和字体的文字,在箭箭头上方做上方做这个消息的个消息的类型注型注释(是否(是否传参,有何目的等),参,有何目的等),下方做下方做这个消息的同步、异步情况的注个消息的同步、异步情况的注释。建议:建议:3.消 息在线开放课程l在顺序图中,除按顺序排列消息之外,还有可能对消息进在顺序图中,除按顺序排列消息之外,还有可能对消息进行选择、循环和并行处理等行选择、循环和并行处理等。lUML1xUML1x版本中表达这些
39、结构化消息的方式比较有限,加条版本中表达这些结构化消息的方式比较有限,加条件是方法之一。件是方法之一。UML2.0UML2.0以上版本中,提供了以上版本中,提供了“片段片段”(Fragment)”(Fragment)机制,每个片段有一个关键字来表明控制机制,每个片段有一个关键字来表明控制类型,每个片段可以包含一个消息序列甚至更多的子片段,类型,每个片段可以包含一个消息序列甚至更多的子片段,这使得我们可以在顺序图中表达更复杂的动作序列。这使得我们可以在顺序图中表达更复杂的动作序列。l在在UML2xUML2x版本中将控制操作符表示为顺序图上的一个矩形版本中将控制操作符表示为顺序图上的一个矩形区域,
40、其左上角有一个小五边形的标签,用来表明控制操区域,其左上角有一个小五边形的标签,用来表明控制操作符的类型。这些矩形的交互区域放在对象的生命线上,作符的类型。这些矩形的交互区域放在对象的生命线上,操作符对穿过它的生命线发挥作用。操作符对穿过它的生命线发挥作用。5.2.3 顺序图中的结构化控制在线开放课程l(1 1)可选片段:可选片段:关键字为关键字为optopt,表示一种单条件分支。如表示一种单条件分支。如果执行到该操作符标识的交互区域时中括号中的监护条件果执行到该操作符标识的交互区域时中括号中的监护条件成立,那么操作符的主体(即该矩形区域)就会得到执行。成立,那么操作符的主体(即该矩形区域)就
41、会得到执行。l(2 2)条件片段:)条件片段:关键字为关键字为altalt,表示一种多条件分支。如表示一种多条件分支。如果需要根据控制条件是否满足而做出不同的决策,那么可果需要根据控制条件是否满足而做出不同的决策,那么可以在条件执行的片段内部使用水平虚线把交互区域分割成以在条件执行的片段内部使用水平虚线把交互区域分割成几个分区。当生命线运行到这一区域时,根据片段中注明几个分区。当生命线运行到这一区域时,根据片段中注明的条件,选择其中一个分区执行。如果有多于一个监护条的条件,选择其中一个分区执行。如果有多于一个监护条件为真,那么选择哪个分区是不确定的,而且每次执行的件为真,那么选择哪个分区是不确
42、定的,而且每次执行的选择可能不同。如果所有的监护条件都不为真,那么控制选择可能不同。如果所有的监护条件都不为真,那么控制将跨过这个控制操作符而继续执行,其中的一个分区可以将跨过这个控制操作符而继续执行,其中的一个分区可以用特殊的监护条件用特殊的监护条件else,else,如果其他所有区域的监护条件如果其他所有区域的监护条件都为假,那么执行该分区。都为假,那么执行该分区。5.2.3 顺序图中的结构化控制在线开放课程l(3 3)并行片段并行片段:关键字为:关键字为parpar,用水平虚线把交互区域分割成几个分用水平虚线把交互区域分割成几个分区,表示区域内有两个或更多的并行子片段。当顺序图执行到这一
43、片区,表示区域内有两个或更多的并行子片段。当顺序图执行到这一片段时,各子片段并行执行,各子片段中的消息顺序是不确定的,当所段时,各子片段并行执行,各子片段中的消息顺序是不确定的,当所有的子片段均执行完毕,并行片段重新收拢到一起,回到同一个顺序有的子片段均执行完毕,并行片段重新收拢到一起,回到同一个顺序流。如果不同的计算之间有交互存在,就不能用这种操作符。然而,流。如果不同的计算之间有交互存在,就不能用这种操作符。然而,现实世界中大量存在这种可分解为独立、并行活动的情况,因此这是现实世界中大量存在这种可分解为独立、并行活动的情况,因此这是一个很有用的。一个很有用的。l(4 4)循环片段:)循环片
44、段:关键字为关键字为looploop,表示一个循环。使用循环片段以及循表示一个循环。使用循环片段以及循环片段中的条件符号,可以得到一个循环结构,只要被包括在条件符环片段中的条件符号,可以得到一个循环结构,只要被包括在条件符号中的条件仍然满足,那么就继续进行循环块中的工作,直到循环条号中的条件仍然满足,那么就继续进行循环块中的工作,直到循环条件为假,跳出循环块,进入下一段生命线。件为假,跳出循环块,进入下一段生命线。l(5 5)交互片段:)交互片段:关键字为关键字为refref,表示对一段交互的引用。在一个交互表示对一段交互的引用。在一个交互图中使用交互片段来引用其他交互图。其表示方法是在操作符
45、为图中使用交互片段来引用其他交互图。其表示方法是在操作符为refref的片段矩形中写明引用的交互图名称。当有一段交互需要经常被执行的片段矩形中写明引用的交互图名称。当有一段交互需要经常被执行时,可以使用交互片段将其预先时,可以使用交互片段将其预先“打包打包”成一个顺序片段,后面在需成一个顺序片段,后面在需要再进入这一段流程时仅要再进入这一段流程时仅“调用调用”这一功能即可。这一功能即可。5.2.3 顺序图中的结构化控制在线开放课程l如果某个生命线并不在某个控制符的覆盖范围内,那么这个生命线就如果某个生命线并不在某个控制符的覆盖范围内,那么这个生命线就可以在矩形区域的顶部中断,然后在其底部重新开
46、始。图可以在矩形区域的顶部中断,然后在其底部重新开始。图5-125-12的的“用用户户”对象的生命线就是这种情况,在对象的生命线就是这种情况,在“密码有效密码有效”的可选片段中,不的可选片段中,不需要用到需要用到“用户用户”对象,所以该对象的生命线在这个矩形区域的上方对象,所以该对象的生命线在这个矩形区域的上方中断,下方继续。中断,下方继续。5.2.3 顺序图中的结构化控制在线开放课程46顺序图示例1Use Case Use Case:AddCourseAddCourseID:UC8 Actors:RegistrarID:UC8 Actors:RegistrarPreconditions:Pr
47、econditions:The Registrar has logged on to the The Registrar has logged on to the systemsystemFlow of events:Flow of events:1.The Registrar selects 1.The Registrar selects“add courseadd course”2.The system accepts the name of the new course2.The system accepts the name of the new course3.The system
48、creates the new course3.The system creates the new coursePostconditions:Postconditions:A new course has been added to the A new course has been added to the systemsystem在线开放课程47顺序序图实例例:RegistrationManagerAddcourse(“UML”)UML:CoursecreateRegistrar选择“添加课程”系统接受新课程的名称系统创建新课程在线开放课程48顺序图示例2业业 务务 描描 述述几台计算机
49、共用一台打印机几台计算机共用一台打印机,打印机由一台打印服务打印机由一台打印服务器管理器管理,当打印机空闲时当打印机空闲时,直接打印直接打印,当打印机忙时存当打印机忙时存储到打印队列里。储到打印队列里。在线开放课程49:计算机:打印服务程序:打印队列:打印机打印文件打印文件打印机空闲保存文件打印机忙顺顺 序序 图图在线开放课程505.2.4 构造顺序图模型n使用顺序图的目的通常是对系统的行为控制流进行建模,包括用例或类的行为,或一个单独的操作。n顺序图侧重于按时间顺序对控制流建模,强调按时间展开消息的传送。n对于一个复杂的控制流,可以建立多个顺序图,其中包含一个主干顺序图和多个分支顺序图,再过
50、“包”机制进行统一管理。在线开放课程515.2.4 构造顺序图模型l决定决定为系系统建立哪些建立哪些顺序序图 n为完成一项完整的系统功能,发生在系统内部与外部之间,以及发生在系统内部的全部信息交换,可以理解为一个交互。n为完成一项系统功能中的一部分工作,系统内部的几个对象之间进行的消息传递,也可以理解为一个交互。n最简单的情况,两个对象之间传递一个消息在线开放课程52如何建立顺序图l设置交互的语境 n交互语境即交互所在的环境,包括交互属于哪个系统、子系统,包含哪些类和对象,对应于哪个用例或协作的脚本等。详细审阅有关材料(如有关用例)n明确参加交互的参与者n找出与参与者直接交互的对象n找出与参与