您好,欢迎访问三七文档
第7章时序图系统或对象的动态模型主要包括状态模型和交互模型。状态模型用来描述系统或对象的动态行为,用状态图和活动图进行描述,因此状态图和活动图又统称为行为图;交互模型主要用来帮助人们观察和分析系统的交互行为,用时序图和协作图进行描述,因此时序图和协作图又统称为交互图。7.1概述时序图(SequenceDiagram)也被称为顺序图,是一种详细地表示对象之间行为交互关系的图,主要用来描述对象之间信息交换时的时间顺序。因此可以清晰而直观的表示对象之间的行为交互关系以及操作和消息的时序关系。时序图的主要用途把用例表达的要求转化为更进一步的精细表达。它还能用来记录一个存在系统的对象现在如何交互。用例常常可被细化为一个或多个时序图。时序图的最大特点是:它以二维的平面上的一维来表示时间进度,在时间维上定义各个对象所执行的操作以及它们之间所传送的消息。从而能够在逻辑上清晰的刻画这些操作和消息的时序关系乃至因果关系。简单时序图7.2时序图元素及表示法在UML中,时序图用一个二维图描述系统中各个对象之间的交互关系。其中,纵轴是时间轴,时间沿竖线向下延伸,由上至下表示时间的先后顺序。横轴代表了参与相互作用的对象。当对象存在时,生命线由一条虚线表示;当对象的过程处于激活状态时,生命线上用一个激活条表示。消息用从一个对象到另一个对象生命线的箭头表示,箭头以时间顺序从上到下排列。7.2时序图元素及表示法时序图有4种基本图形元素,包括:对象(object)生命线(lifeline)激活(activation)消息(message)1.对象时序图中的对象在概念上和它在对象图中的定义是一致的,其图形表示也相同。每个对象显示在单独的列里,用一个矩形框代表一个对象,框内填写对象名和它所属的类名,中间用一个冒号隔开。Object1:ClassA2.生命线生命线是对象标识符在垂直方向上拖出的一条长虚线,表示时序图中的对象在一段时间内的存在。每个对象的底部中心的位置都带有生命线。生命线是一条时间线,从时序图的顶部一直延伸到底部,所用的时间取决于交互的持续时间。3.激活当一条消息被传递给对象的时候,它会触发该对象的某个行为,激活了该对象。在UML中,激活用一个在生命线上的细长矩形框表示。矩形本身被称为对象的激活期或控制期,对象就是在激活期顶端被激活的。激活期说明对象正在执行某个动作。当动作完成后,此时对象的一个激活期也宣告结束。4.消息消息是用来说明时序图中不同活动对象之间的通信。在时序图中,消息是由从一个对象的生命线指向另一个对象的生命线的直线箭头来表示的,箭头上面还可以表明要发送的消息名及序号。在各个对象之间消息的次序由它们在垂直轴上的时间顺序决定。激活的应用激活示例当进行时序图建模时,所用到的消息主要包括以下几种类型:简单消息(SimpleMessage)同步消息(SynchronousMessage)异步消息(AsynchronousMessage)反身消息(MessagetoSelf)返回消息(ReturnMessage)(1)简单消息(SimpleMessage)简单消息是在同步和异步之间没有区别的消息。在不知道消息的类型的情况下就可以使用简单消息。在对系统进行时序图建模时,可以对所有的消息都使用简单消息进行表示,然后再根据情况确定消息的类型。(2)同步消息(SynchronousMessage)同步消息最常见的情况是调用,即消息发送者(对象)在它的一个操作执行时调用接收者(对象)的一个操作,此时消息名称通常就是被调用的操作名称。当消息被处理完后,可以送回一个简单消息,或者是隐含的返回。(3)异步消息(AsynchronousMessage)异步消息表示发送消息的对象不用等待回应的返回消息,即可开始另一个活动。异步消息就是发送方只负责将消息发送到接收方,至于接收方如何响应,发送方则不需要知道。对接收方来说,在接收到消息后它既可以对消息进行处理,也可以什么都不做。(4)反身消息(MessagetoSelf)反身消息是一个对象将一个消息发送给它自己的消息。如果一条消息只能作为反身消息,那么说明该操作只能由对象自身的行为触发。这表明该操作可以被设置为private属性,只有属于同一个类的对象才能够调用它。(5)返回消息(ReturnMessage)返回消息是表示控制流从过程调用后,处理结果返回信息。返回消息一般可以缺省,隐含表示每一个调用都有一个配对的调用返回。5.消息中的参数和序号时序图中的消息除了具有消息名称之外还可以包含许多附加的信息。消息可以与类中的操作等效,即消息可以带有可传递到被调用对象的参数列表,并且最多包含一个返回给调用对象的返回值。当时序图中的消息比较多时,还可以通过对消息前置序号表达式的方式指定消息的顺序。消息内容标识的格式为:[序号][监护条件]*[重复次数][返回值表:=]操作名(参数表)表示消息在对象间交互的时间顺序号。一般用正整数1、2、3……表示。嵌套消息用十进制数1.1、1.2、2.1、2.2……表示。序号在时序图中是可以默认的,但在协作图中是必不可少的。可选项,以布尔表达式形式表示。满足监护条件时才能发送消息。监护条件默认时,表示消息无条件发送。可选项,表示消息重复发送的次数。只有“*”号,无[重复次数]时,表示消息多次发送,次数未定。此项默认时,表示只发送一次。以“,”区分的名称列表,分别表示完成指定操作后返回的系列值。可默认。接收该消息的对象类角色中的操作名。参数表是以“,”区分的实参表,实参的个数、次序、类型必须与该操作的形参一致。6.对象的创建和撤销对象的创建有几种情况:时序图中的对象的默认位置是在图的顶部,如果对象在这个位置上,那么说明在发送消息时,该对象就已经存在了;如果对象是在执行的过程中创建的,那么它的位置应该处在图的中间部分。对象的创建有两种方法:ObjectAObjectB1:Create()2:ReturnMessageObjectAObjectB1:Create()2:ReturnMessage在新创建的对象时,都可以发送“destroy”消息来撤销新创建对象。要想说明某个对象被撤销,需要在被撤销对象的生命线末端放一个“×”符号进行标识。ObjectAObjectB1:Destroy()2:Returnvoid7.3时序图建模对系统动态行为建模的过程中,当强调按时间展开信息的传送时,一般使用时序图建模技术。一个单独的时序图只能显示一个控制流。使用时序图建模时,可以参考以下策略:①设置交互的语境,这些语境可以是系统、子系统、类、用例和协作的一个脚本。②识别对象在交互语境中所扮演的角色,根据对象的重要性及相互关系,将其从左至右放置在时序图的顶部。③设置每个对象的生命线。通常情况下,对象存在于整个交互过程中,但它们也可以在交互过程中创建和撤销。④标明消息。从引发某个消息开始,在生命线之间画出从顶到底依次展开的消息,显示每个消息的内容标识。⑤设置对象的激活期,可视化消息的嵌套或可视化实际计算发生时的时间点。⑥如果需要设置时间或空间的约束,可以为每个消息附上合适的时间和空间约束。⑦如果需要形式化的说明某控制流,可以为每个消息附上前置和后置条件。7.4时序图建模实例例:图书管理系统时序图建模1.添加借阅者添加借阅者的过程为:系统管理员选择菜单项“添加借阅者”,弹出AddBorrowerDialog对话框。系统管理员可以在该对话框中输入借阅者的信息并提交,随后系统对管理员所提交的借阅者信息进行验证,查看输入的借阅证号是否已经存在于系统中,若不存在,则为借阅者创建一个账户,并存储借阅者信息。:Administrator:ManagerWindow:AddBorrowerDialog:Borrower1:AddBorrower()2:CreateDialog()3:AddBorrower()4:FindBorrower()5:NewBorrower()6:Write():Administrator:ManageWindow:UpdateBorrowerDialog:Borrower1:UpdateBorrower()2:CreateDialog()3:FindBorrower()4:FindBorrower()5:UpdateBorrowerInfo()6:UpdateBorrowerInfo()7:Write()2.修改借阅者3.删除借阅者4.添加书目5.修改书目6.删除书目7.添加图书8.删除图书9.添加管理员……第8章协作图时序图和协作图都可以用来描述系统对象之间的交互。时序图强调一组对象之间交互的时间顺序。协作图则是描述组成系统的各个成分之间如何协作来实现系统的交互行为。8.1概述协作图(CollaborationDiagram)是UML1.x版本中的名称。在当时的认识中,认为它就是描述一个协作的,所以称之为协作图。UML2.0重新定义了协作的概念,并认为所谓协作图与协作概念实际上没有什么必然联系,为了避免误会,所以将它改名为通信图(CommunicationDiagram)。因此,在很多参考书中使用通信图而不是协作图进行说明。时序图强调的是交互的时间顺序;而协作图强调的是交互的情况和参与交互的对象的整体组织。从另一个角度来看,时序图按照时间顺序布局;而协作图按照空间组织布局。:ObjectB:ObjectA:Actor1:Message2:Message3:Message4:Message5:Message简单协作图8.2协作图元素及表示法构成协作图的图形元素主要有3种:对象(object)链接(link)消息(message)1.对象协作图中的对象与时序图中的对象类似,用一个矩形框代表一个对象,框内填写对象名和它所属的类名,中间用一个冒号隔开。协作图中无法表示对象的创建和撤销,所以对象在协作图中的位置没有限制。2.链接链接是两个对象间的连接。它的图形符号也是用一条连接在两个对象间的实线表示。在连接线上可以标明对象名。3.消息消息代表协作图中对象间通过链接发送的消息。消息由一个对象发出,由消息所指的对象接收。形成消息流。消息流上标有消息的序号和对象间发送的消息,消息的序号表明了消息发送的先后顺序。一条消息会触发接收对象中的一项操作。:ObjectA:ObjectB1:Message2:Message3:Message对象消息链接协作图与时序图的互换(F5)协作图和时序图都是表示对相间的交互作用,只是它们的侧重点有所不同。协作图和时序图在语义上是等价的,它们可以从一种形式的图转换成另一种形式的图,而不丢失任何消息。例:以图书管理系统中借阅图书为例:时序图与协作图之间转换。F5或在RationalRose中,在Browse菜单下选择:CreateCollaborationDiagram或CreateSequenceDiagram(1)根据时序图信息创建协作图(2)根据协作图信息创建时序图:Librarian:MainWindow:BorrowDialog:Borrower:Book:Loan1:BorrowBook()2:CreateDialog()3:GetBorrowerID()4:FindBorrower()5:InputBookID()6:FindBook()7:NewLoan()8:Write()9:AddLoan()10:Write()11:SetLoan()12:Write():Librarian:MainWindow:BorrowDialog:Borrower:Book:Loan1:BorrowBook()3:GetBorrowerID()5:InputBookID()2:CreateDialog()4:FindBorrower()9:AddLoan()10:Write()6:FindBook()11:SetLoan()12:Writ
本文标题:时序图和协作图
链接地址:https://www.777doc.com/doc-5332462 .html