时序图完整版本_第1页
时序图完整版本_第2页
时序图完整版本_第3页
时序图完整版本_第4页
时序图完整版本_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

时序图1系统或对象的动态模型主要包括状态模型和交互模型。状态模型用来描述系统或对象的动态行为,用状态图和活动图进行描述,因此状态图和活动图又统称为行为图;交互模型主要用来帮助人们观察和分析系统的交互行为,用时序图和协作图进行描述,因此时序图和协作图又统称为交互图(Interactiondiagram)。交互图2时序图和协作图从不同的角度描述了为完成某种系统功能,系统中各对象间的交互与协作,可以有效地帮助人们观察和理解系统的动态行为。通常用来描述一个用例的行为,实现一个用例,完成对系统的动态行为建模;时序图主要用来描述对象之间信息交换时的时间顺序。而协作图则用来描述系统对象之间如何协作共同完成系统功能要求,它们相互补充,并可以相互转化。

3顺序图面向时间描述对象交互的图协作图对象间消息的结构化视图4

时序图按照时间顺序显式对象之间交互的图5时序图(SequenceDiagram)在一些参考书中也被称为顺序图,是一种详细地表示对象之间行为交互关系的图按时间顺序把各个对象所执行的操作以及它们之间所传送的消息展现出来可以清晰而直观的表示对象之间的行为交互关系以及操作和消息的时序关系。

6时序图的主要用途之一是用来为某个用例的泛化功能提供其所缺乏的解释,即把用例表达的要求转化为更进一步的精细表达。用例常常被细化为一个或多个时序图。时序图除了在设计新系统方面的用途之外,它还能用来记录一个存在系统的对象现在如何交互。7登录(1)用户将用户名和密码提交给LoginAction(2)由LoginAction调用UserManager

(3)UserManager到用户数据库UserServer中查找用户对象并返回(4)由UserManager判断用户名是否为空、密码是否正确(5)然后将User对象返回(6)返回后台登录主界面。例子8例子9时序图的最大特点是:它以二维的平面上的一维来表示时间进度,在时间维上展开了一组相互协作的对象在完成某项功能时所发生的行为与事件各个对象所执行的操作以及它们之间所传送的消息,从而能够在逻辑上清晰的刻画这些操作和消息的时序关系乃至因果关系。时序图提供了对象所执行的操作以及对象之间传送的消息随时间推移的、清晰的和可视化的轨迹。10简单时序图

时序图的组成11UML顺序图与用例图和类图的关系12(1)

顺序图的组成活动者(actor)或者对象(object)生命线(lifeline)激活(activation)/控制焦点(focusofcontrol)消息(message)当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的事件。13UML-14-消息:向哪个对象发消息实际上就是调用它的类中的操作,就是调用箭头指向的对象所在类的一个operation。订单类发消息给客户类调用客户类中的“验证客户”操作14从参与者到对象和从对象到参与者之间发送的消息从对象传递给另一个对象的消息在类图中的类的对象使用系统的参与者,这个系统是为某个用例的某个场景设计的对象生命线表示从上到下的时间顺序,消息1在消息2之前发生,消息2在消息3之前发生窄长方框用以强调这个部分处于活动状态15顺序图生命线消息控制焦点对象16在UML中,时序图用一个二维图描述系统中各个对象之间的交互关系。其中,纵轴是时间轴,时间沿竖线向下延伸,由上至下表示时间的先后顺序。横轴代表了参与相互作用的对象。当对象存在时,生命线由一条虚线表示;当对象的过程处于激活状态时,生命线上用一个激活条表示。消息用从一个对象到另一个对象生命线的箭头表示,箭头一时间顺序从上到下排列。17(2)

活动者或对象活动者和对象按照从左到右的顺序排列一般最多两个活动者,他们分列两端。启动这个用例的活动者往往排在最左边;接收消息的活动者则排在最右端;对象从左到右按照重要性排列或按照消息先后顺序排列。1819

活动者或对象对象的命名方式有三种:包括对象名和类名类名(匿名对象)对象名(不关心类)20(3)

生命线生命线(Lifeline):每个对象都有自己的生命线,用来表示在该用例中一个对象在一段时间内的存在垂直的虚线如果对象生命期结束,则用注销符号表示对象默认的位置在图顶部,表示对象在交互之前已经存在如果是在交互过程中由另外的对象所创建,则位于图的中间某处。21(4)

激活期当一条消息被传递给对象的时候,它会触发该对象的某个行为,这时就说该对象被激活了。在UML中,激活用一个在生命线上的细长矩形框表示。矩形本身被称为对象的激活期或控制期,对象就是在激活期顶端被激活的。激活期说明对象正在执行某个动作。当动作完成后,伴随着一个消息箭头离开对象的生命线,此时对象的一个激活期也宣告结束。22(5)

消息面向对象方法中,消息是对象间交互信息的主要方式。结构化程序设计中,模块间传递信息的方式主要是过程(或函数)调用。对象A向对象B发送消息,可以简单地理解为对象A调用对象B的一个操作(operation)。23

消息顺序图中,尽力保持消息的顺序是从左到右排列的。一个顺序图的消息流开始于左上方,消息2的位置比消息1低,这意味着消息2的顺序比消息1要迟。因为西方的阅读习惯是从左到右。顺序图中消息编号可显示,也可不显示。协作图中必须显示。24

消息在任何一个软件系统中,对象都不是孤立存在的,它们之间通过消息进行通信。消息是用来说明时序图中不同活动对象之间的通信。因此,消息可以激发某个操作、创建或撤销某个对象。在时序图中,消息是由从一个对象的生命线指向另一个对象的生命线的直线箭头来表示的,箭头上面还可以表明要发送的消息名及序号。在多个对象之间,消息的次序由它们在垂直轴上的相对位置决定。2526当进行时序图建模时,所用到的消息主要包括以下几种类型:简单消息(SimpleMessage)同步消息(SynchronousMessage)异步消息(AsynchronousMessage)反身消息(MessagetoSelf)返回消息(ReturnMessage)2728简单消息(SimpleMessage)简单消息是在同步和异步之间没有区别的消息。使用简单消息是因为有时消息是同步还是异步无关紧要,或者在不知道消息的类型的情况下就需要用到简单消息。在对系统进行时序图建模时,可以对所有的消息都使用简单消息进行表示,然后再根据情况确定消息的类型。29同步消息

(SynchronousMessage)同步消息最常见的情况是调用,即消息发送者对象在它的一个操作执行时调用接收者对象的一个操作,此时消息名称通常就是被调用的操作名称。当消息被处理完后,可以回送一个简单消息,或者是隐含的返回。30异步消息

(AsynchronousMessage)异步消息表示发送消息的对象不用等待回应的返回消息,即可开始另一个活动。异步消息在某种程度上规定了发送方和接收方的责任,即发送方只负责将消息发送到接收方,至于接收方如何响应,发送方则不需要知道。对接收方来说,在接收到消息后它既可以对消息进行处理,也可以什么都不做。31反身消息(MessagetoSelf)时序图建模过程中,一个对象也可以将一个消息发送给它自己,这就是反身消息。如果一条消息只能作为反身消息,那么说明该操作只能由对象自身的行为触发。这表明该操作可以被设置为private属性,只有属于同一个类的对象才能够调用它。在这种情况下,应该对时序图进行彻底的检查,以确定该操作不需要被其他对象直接调用。3233返回消息(ReturnMessage)返回消息是时序图的一个可选择部分,它表示控制流从过程调用的返回。返回消息一般可以缺省,隐含表示每一个调用都有一个配对的调用返回。是否使用返回消息依赖于建模的具体/抽象程度。如果需要较好的具体化,返回消息是有用的;否则,主动消息就足够了。3435

消息Rose新增消息阻止(Balking)接收者如果无法立即接收消息,则发送者放弃该消息超时(Time-out)如果接收者无法在指定的时间内接收消息,则发送者放弃该消息Q:这两种消息可以看做是同步or异步消息?365.消息中的参数和序号

时序图中的消息除了具有消息名称之外还可以包含许多附加的信息。消息可以与类中的操作等效,即消息可以带有可传递到被调用对象的参数列表,并且最多包含一个返回给调用对象的返回值。当时序图中的消息比较多时,还可以通过对消息前置序号表达式的方式指定消息的顺序。37

消息消息内容标识的格式为:[序号][监护条件]*[重复次数][返回值表:=]操作名(参数表)例:2:display()简单消息1.3.1:p:=find()带返回值的嵌套消息[x<0]4:invert(x,color)条件消息3.1*[x=1..10]:update()

循环消息a3,b4/c2:copy(a,b)线程同步1.1a,1.1b/1.2:continue()带前缀消息在发送线程c的第2个消息之前,必须先发送线程a的第3个消息和线程b的第4个消息在发送消息1.2之前必须已经同时发送并发消息给线程a和b38前缀(predecessor)语法:消息序列号,消息序列号,.../前缀是一个用来同步线程或路径(path)的表达式意思是在发送当前消息之前指定序列号的消息被处理(必须连续执行)消息序列号之间用逗号隔开,用斜杠结束例如1.1a,1.1b/1.2:continue(),在发送消息1.2之前必须已经同时发送并发消息给线程a和b39守卫条件(guard-condition)语法:[条件短语]条件短语通常用伪代码或真正的程序语言来表示,UML并不规定其语法例如,[x<0]4:invert(x,color)40序列表达式(sequence-expression)语法[integer|name][recurrence]:integer为指定消息顺序的序列号,消息1是消息序列的开始消息消息,1.1是消息1的处理过程中的第一条嵌套的消息,消息1.2是消息1的处理过程中的第二条嵌套的消息,一个消息序列的例子如1,1.1,1.2,1.2.1,1.2.2,1.3,等。这样的序列号不仅能够表示消息的顺序而且还能表示消息的嵌套关系(当消息是异步消息时消息为嵌套的操作调用及返回)name表示并发控制线程,例如1.2a和1.2b为同时发送的并发消息41recurrence表示一个条件或迭代的执行有两种选择*[循环子句]循环子句(iteration-clause)用来指定一个循环(重复执行)例如:一个包括循环的消息1.1*[x=1..10]:doSomething()[条件子句]条件子句一般用来表示分枝而不是用作守卫条件[x<0]是两个可以用来分枝的条件子句这两个条件只能有一个为真因而只有一个分枝被执行(即发送与分枝有关的消息)条件子句和循环子句都可以用伪代码或真正的编程语言来表示序列表达式用冒号结束42返回值、消息名和参数表返回值表示一个操作调用(即一个消息)的结果4344(6)Rose中的消息45Simple和Asynchronous都可表示异步,UML1.4之后的版本用Simple消息表示异步ProcedureCall和Synchronous和都可表示同步,UML早期版本用“同步消息”这一术语,目前常用ProcedureCall消息表示同步Return不变新增balking和time-out消息46(7)对象的创建和撤销

对象的创建有几种情况:时序图中的对象的默认位置是在图的顶部,如果对象在这个位置上,那么说明在发送消息时,该对象就已经存在了;如果对象是在执行的过程中创建的,那么它的位置应该处在图的中间部分。47

对象的创建和撤销

对象的创建有几种情况:时序图中的对象的默认位置是在图的顶部,如果对象在这个位置上,那么说明在发送消息时,该对象就已经存在了;如果对象是在执行的过程中创建的,那么它的位置应该处在图的中间部分。48对象的创建有两种方法:

49在处理新创建的对象,或时序图中的其他对象时,都可以发送“destroy”消息来撤销对象。要想说明某个对象被撤销,需要在被撤销对象的生命线末端放一个“×”符号进行标识。

50

时序图建模

对系统动态行为建模的过程中,当强调按时间展开信息的传送时,一般使用时序图建模技术。一个单独的时序图只能显示一个控制流。一般情况下,一个完整的控制流是非常复杂的,要描述它需要创建很多交互图(包括时序图和协作图),一些图是主要的,另一些图用来描述可选择的路径和一些例外,再用一个包对它们进行统一的管理。51使用时序图对系统进行交互图建模时,可以参考以下策略:设置交互的语境,这些语境可以是系统、子系统、类、用例和协作的一个脚本。识别对象在交互语境中所扮演的角色,根据对象的重要性及相互关系,将其从左至右放置在时序图的顶部。设置每个对象的生命线。通常情况下,对象存在于整个交互过程中,但它们也可以在交互过程中创建和撤销。对于这类对象,在适当的时刻设置它们的生命线,并用适当的构造型消息显示地说明它们的创建和撤销。52从引发某个消息的信息开始,在生命线之间画出从顶到底依次展开的消息,显示每个消息的内容标识。设置对象的激活期,可视化消息的嵌套或可视化实际计算发生时的时间点。如果需要设置时间或空间的约束,可以为每个消息附上合适的时间和空间约束。如果需要形式化的说明某控制流,可以为每个消息附上前置和后置条件。53建立顺序图的步骤确定交互的范围;识别参与交互的对象和活动者;设置对象生命线开始和结束;设置消息;细化消息;54

案例:存款分析级别的顺序图,粗略,双斜杠忽略消息同步异步类别也无妨55

练习用户打印文件,计算机向打印服务器发送打印命令,打印机如果空闲,则直接打印,否则把打印文件存储在打印队列中。5657

时序图建模实例

图书管理系统时序图建模

1.添加借阅者添加借阅者的过程为:系统管理员选择菜单项“添加借阅者”,弹出AddBorrowerDialog对话框。系统管理员可以在该对话框中输入借阅者的信息并提交,随后系统对管理员所提交的借阅者信息进行验证,查看输入的借阅证号是否已经存在于系统中,若不存在,则为借阅者创建一个账户,并存储借阅者信息。58592.修改借阅者修改借阅者的过程为:系统管理员选择菜单项“修改借阅者”,弹出UpdateBorrowerDialog对话框。系统管理员可以在该对话框中输入借阅者的借阅证号,随后系统查询数据库并显示相关的借阅者信息(如果输入的借阅者信息不存在,则显示提示信息,结束修改操作),修改相关借阅者信息,并存储。60613.删除借阅者删除借阅者的过程为:系统管理员选择菜单项“删除借阅者”,弹出DeleteBorrowerDialog对话框。系统管理员可以在该对话框中输入借阅者的借阅证号,随后系统查询数据库并显示相关的借阅者信息(如果输入的借阅者信息不存在,则显示提示信息,结束删除操作),点击删除按钮,系统确认是否存在与该借阅者相关的借阅信息,若有,显示提示信息,结束删除操作;若没有,则系统删除该借阅者。62634.添加书目添加书目的过程为:系统管理员选择菜单项“添加书目”,弹出AddTitleDialog对话框。系统管理员可以在该对话框中输入图书的名称、ISBN号、出版社名、作者姓名等信息并提交,系统根据提交的ISBN号查询图书的书目是否存在,若不存在,则为创建该书目。64655.修改书目修改书目的过程为:系统管理员选择菜单项“修改书目”,弹出UpdateTitleDialog对话框。系统管理员可以在该对话框中输入图书的ISBN号并提交,随后系统查询数据库并显示相关的书目信息(如果输入的ISBN号不存在,则显示提示信息,结束修改操作),修改相关书目信息,并存储。66676.删除书目删除书目的过程为:系统管理员选择菜单项“删除书目”,弹出DeleteTitleDialog对话框。系统管理员可以在该对话框中输入图书的ISBN号并提交,随后系统查询数据库并显示相关的书目信息(如果输入的书目信息不存在,则显示提示信息,结束删除操作),点击删除按钮,系统验证该书目对应的图书数目是否为0,如果为0,则删除该书目信息;反之,则系统提示必须先删除相应的图书。68697.添加图书添加图书的过程为:系统管理员选择菜单项“添加图书”,弹出AddBookDialog对话框。系统管理员可以在该对话框中输入图书的ISBN号并提交,系统根据提交的ISBN号查询图书的书目是否存在,若不存在,则提示管理员需要先添加书目,然后才可以添加图书;若存在,则添加一个图书,并更新图书对应的书目信息。70718.删除图书删除图书的过程为:系统管理员选择菜单项“删除图书”,弹出DeleteBookDialog对话框。系统管理员可以在该对话框中输入要删除图书的ISBN号并提交,随后系统查询数据库并显示相关的图书信息(如果输入的ISBN号不存在,则显示提示信息,结束删除操作),系统管理员进行确认并点击删除按钮,删除该图书,系统更新相应的书目信息。72739.添加管理员添加管理员的过程为:系统管理员选择菜单项“添加管理员”,弹出AddManagerDialog对话框。系统管理员可以在该对话框中先输入一个用户名和初始密码,然后提交,系统根据提交的用户名和密码验证该用户名是否已经存在,若该用户已经存在,系统则提示出错;若不存在,则系统提示先添加管理员的权限为系统管理员还是图书管理员,并根据系统管理员的选择添加一个图书管理员或系统管理员。747510.删除管理员删除管理员的过程为:系统管理员选择菜单项“删除管理员”,弹出DeleteManagerDialog对话框。系统管理员可以在该对话框中输入要删除的管理员的用户名并提交,随后系统查询数据库,以检验该管理员是否存在,若存在,则删除该管理员。767711.借阅图书借阅图书的过程为:图书管理员选择菜单项“借阅图书”,弹出BorrowDialog对话框,图书管理员在该对话框中输入借阅者信息,然后由系统查询数据库,以验证该借阅者的合法性,若借阅者合法,则在由图书管理员输入所要借阅的图书信息,系统记录并保存该借阅信息。787912.归还图书归还图书的过程为:图书管理员选择菜单项“归还图书”,弹出ReturnDialog对话框,图书管理员在该对话框中输入归还图书编号,然后由系统查询数据库,以验证该图书是否为本馆藏书,若图书不合法,则提示图书管理员;若合法,则由系统查找该图书的借阅者信息,然后删除相对应的借阅记录,并更新借阅者信息。808113.查询借阅信息查询借阅信息的过程为:图书管理员选择菜单项“查询借阅信息”,弹出QueryDialog对话框,图书管理员在该对话框中输入要查询的借阅证号,然后由系统查询数据库,以获得该借阅者信息,并通过显示借阅信息用例显示该借阅者所借阅的所有图书信息。828314.显示借阅信息显示借阅信息的过程为:当BorrowDialog、ReturnDialog和QueryDialog对话框调用Borrower类的GetTitleInfo()方法时,系统获取该借阅者信息,然后根据借阅信息找到所借阅的图书,并进一步获取所借阅图书对应的书目信息,最后由相应的对话框负责显示。848515.超期处理超期处理的前提条件是:当发生借书或还书时,首先由系统找到借阅者的信息,然后调用超期处理以检验该借阅者是否有超期的借阅信息。超期处理的过程为:获取借阅者的所有借阅信息,查询数据库以获取借阅信息的日期,然后由系统与当时日期比较,以验证是否超过了规定的借阅期限,若超过规定的借阅时间,则显示超期的图书信息,以提示图书管理员。868716.管理员登录管理员登录的过程为:当图书管理员或系统管理员运行系统时,系统将首先运行Login对话框,然后又图书管理员或系统管理员输入用户名和密码,并提交到系统,后来由系统查询数据库以完成对用户身份的验证,当通过验证后,将根据登录的用户是系统管理员还是图书管理员,以打开相应的对话框。888917.修改密码修改密码的过程为:图书管理员选择菜单项“修改密码”,弹出ModifyDialog对话框,图书管理员在该对话框中输入旧密码和新密码,并提交,然后由系统查询数据库,以验证当前用户的密码是否与输入的旧密码相同,若相同,则将密码更改为新的密码,并提示图书管理员修改密码成功。90在图中出现了两个Librarian对象,它们的含义是不相同的,一个代表系统的参与者,它不包含在系统中,另一个是为了实现系统的安全性,在系统中创建的参与者对象的映像。

91UML顺序图与用例图和类图的关系92例子——总结信息亭售票中心信用卡服务934.

顺序图UML-94-

此图是描述购票这个用例的顺序图。顾客在信息亭与售票中心通话触发了这个用例的执行。顺序图中付款这个用例包括售票中心与信息亭和信用卡服务处使用消息进行通信过程。此图中存在的事物有:对象(信息亭Kjosk,售票中心BoxOffice,信用卡服务CreditCardService

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论