顺序图
- 格式:doc
- 大小:141.50 KB
- 文档页数:8
顺序图功能
顺序图是用来描述系统中的事件交互和参与者之间的交互过程,它展示了事件的序列性、参与者的交互、消息的传递和响应等。
顺序图的功能主要有以下几个方面:
1. 交互过程的可视化:顺序图通过图形化的方式展示了系统中参与者之间的交互过程,使得人们可以直观地了解事件是如何发生,并且可以清楚地看到交互的顺序和关系。
2. 事件和消息的交互描述:顺序图通过表示事件和消息的箭头以及箭头上的标识符,清楚地展示了交互过程中消息的传递和响应,使得人们可以准确地描述和理解事件之间的关系。
3. 可视化系统的结构和行为:顺序图可以用来描述系统的结构和行为,可以展示参与者之间的相互作用、系统的工作流程和具体的处理过程等,非常方便理解和沟通系统的设计和实现。
4. 用例场景的描述和验证:顺序图可以用来描述和验证用例场景,可以清晰地展示用例的流程和参与者之间的交互,从而帮助人们更好地了解用例的功能和特点,并进行需求的分析和确认。
5. 系统的动态行为模拟和测试:顺序图可以用来模拟和测试系统的动态行为,可以根据顺序图中的交互逻辑和时间顺序,来模拟和实现系统的具体行为和响应,从而验证系统的正确性和性能。
6. 分析和优化系统的性能和效率:顺序图可以用来分析系统的性能和效率,可以清晰地展示系统中交互的过程和消息的传递,从而帮助人们发现系统的瓶颈、优化系统的性能、提高系统的效率等。
总之,顺序图是一种非常有用和强大的工具,可以用来描述和展示系统中的交互过程和消息传递,可以帮助人们更好地理解和分析系统的结构和行为,从而支持系统的设计、实现、模拟、测试和优化等工作。
UML九种建模图--顺序图概述顺序图是⼀种交互图(interaction diagram).交互图展现了⼀种交互,它由⼀组对象或参与者以及它们之间可能发送的消息构成。
交互图专注于系统的动态视图。
顺序图是强调消息的时间次序的交互图。
组成顺序图主要有4个标记符:对象、⽣命线、消息和激活。
对象三种表⽰⽅法1.包括对象名和类名,2、只有类名3.只有对象名⽣命线⽣命线⽤于描述对象的存在周期,对象下⽅的虚线就是该对象的⽣命线。
激活控制焦点是指活动者或对象处于执⾏状态的时间段消息消息⽤于描述对象间交互的⽅式及内容。
消息分为四种:同步消息、异步消息、返回消息、⾃关联消息1.同步消息:⼀个对象向另⼀个对象发出同步消息后,将处于阻塞状态,⼀直等到另⼀个对象的回应表⽰⽅式:2.异步消息:⼀个对象向另⼀个对象发出异步消息后,这个对象可以进⾏其他的操作,不需要等到另⼀个对象的响应表⽰⽅式:3.返回消息:同步消息的返回消息表⽰⽅式:4.⾃关联消息:⽤来描述对象内部函数的互相调⽤表⽰⽅式:还有顺序图中对于流程控制的模块:复合⽚段复合⽚段有多种,在此主要介绍⼀下⼏种:条件判断、可选、循环、同步1.条件判断:⽤于描述代码中if…else…这种结构标记为“alt”例如:2.可选:是⼀种特殊的“条件判断”,它只是⼀个if,没有else if或else 可选的标记为:opt3.循环:是指代码中的for、while之类的语句块循环的标记为:loop例如:下图中[m,n]是指⾄少执⾏m次,最多执⾏n次4.同步:⽤于描述多线程的情况同步的标记是:par画顺序图的步骤:1. 确定交互的范围2. 确定参与交互的活动者与对象3. 确定活动者、对象的⽣存周期4. 确定交互中产⽣的消息5. 细化消息的内容。
顺序图(SequenceDiagram)
顺序图(Sequence Diagram):
是⼀种强调对象间消息传递次序的交互图,⼜称为时序图或序列图。
描述了在⼀个⽤例或操作的执⾏过程中对象如何通过消息相互交互,说明了消息如何在对象之间被发送和接收以及发送的顺序。
组成:
交互⽚段(Interaction Fragment):
⼀个复杂的顺序图可以划分为⼏个⼩块,每⼀个⼩块称为⼀个交互⽚段,由⼀个⼤⽅框包围。
常⽤的操作符包括:
1) alt:多条路径,条件为真时执⾏。
2) opt:任选,仅当条件为真时执⾏。
3) par:并⾏,每⼀⽚段都并发执⾏。
4) loop:循环,⽚段可多次执⾏。
消息:
1)调⽤消息(Call Message): 在顺序图中有的消息对应于激活,表⽰它将会激活⼀个对象。
2)发送消息(Send Message): 如果消息没有对应激活框,表⽰它不是⼀个调⽤消息,不会引发其他对象的活动。
3)⾃⾝消息(Self Call Message): 如果对象的⼀个⽅法调⽤了⾃⼰的另⼀个⽅法时,消息是由对象发送给⾃⾝。
4)创建/销毁消息(Create/Destroy Message): 创建消息⽤于使⽤new关键字创建另⼀个对象,⽽销毁消息⽤于调⽤对象的销毁⽅法将⼀个对象从内存中销毁。
在下⼀节我们讨论⼀下状态图。
4.2 顺序图构建顺序图是以图形方式记录情景(scenarios)的方式。
每当要记录一系列动作时,就可以构建顺序图,而不是编写情景。
什么时候要这么做呢?由用例图部分可知,用例由一系列任务(情景)构成,可通过构建顺序图将它记录下来。
假如有图4-8中的文本记录的情景,为什么要构建一个顺序图呢?原因有三个:要记录支持对象:可记录通常不在情景中描述的所有辅助对象。
由图4-8中的情景可知,可能需要一个订单表,可从中提取列表,选择用哪些订单构建清单。
如果用顺序图记录,则比在情景中用普通文本描述更容易。
要记录技术问题:随着项目的发展,可能要记录一些关于顺序图的技术问题。
例如,可记录所需要的参数类型和默认值等。
如果这个阶段了解这些信息,则确实应该记录下来,开发人员和测试者将用到这些信息。
如果将这些信息记录在顺序图中,则更容易理解要实现的内容。
一幅图片能抵得上千言万语:图形更容易记录问题,如果用普通文字描述的话,可能需要很多话语才能说清楚。
顺序图与后面介绍的协作图属于同一系列。
二者的区别在于:顺序图基于时间显示情景,而协作图显示对象之间的关联方式。
所谓基于时间,即一件事情先发生,接着发生另一件事情,事情完全按描述的顺序发生。
上面提到过,顺序图常与用例(情景)相关。
不过,顺序图也可用于其他许多目的。
用例一节曾介绍过,如果不了解正处理的业务,或任务非常复杂,需要了解业务过程的更多信息,则可执行业务分析。
在执行业务分析时,可用顺序图记下所有过程(这很可能是业务用例)。
实际上,顺序图可能是记录要实现内容的最强大工具。
顺序图包含以下一些元素:●对象(objects)●激活(activations)●消息(messages)●注解(notes)下面几节将描述这些顺序图元素。
4.2.1 对象解决方案中对象的表示符号是矩形,如图4-16所示。
顺序图中的对象是解决方案中的持久元素。
它们可能是表、物理窗体或类。
一般情况下,对象表示解决方案中的类,也可表示节点、行动者和表等。
构建顺序图的一个主要原因是:可了解顺序图中可能作为对象的候选对象。
图4-16 包含类生命线的顺序图练习4-8显示如何将对象插入顺序图。
练习4-8(1) 在VEA中新建UML模型。
注意:在新模型中执行本练习时,将自动显示顺序图。
或者,可右击需要插入顺序图的包,并选择New | Sequence Diagram插入顺序图。
(2) 从Shapes窗口中的UML Sequence选项卡中将Object Lifeline(对象生命线)拖入图中。
(3) 双击对象生命线,将对象生命线的名称改为Class1,该名称必须惟一。
注意:当UML模型不包含任何类时(如本例),在打开UML Classifier Role Properties对话框(如双击Object Lifeline形状)时,将自动打开UML Class Properties对话框。
这是因为每个对象必须与分类器(类)相关。
如果UML模型中已有类,则当双击Object Lifeline形状时,UML Class Properties对话框不会自动打开。
此时,可通过选择UML Classifier Role Properties对话框中的Classifier列表,来设置分类器。
如果不存在,可单击New按钮创建,并指定设置。
(4) 在自动打开的UML Class Properties对话框中,可接受新建类(分类器)的默认名Class1。
单击OK。
顺序图如图4-16所示。
提示:当同时按下Ctrl和Shift键时,指针将变成一个放大镜,左击将放大视图,右击将缩小视图。
在放大或缩小时,新视图将居中。
分类器(classifier)由类生命线表示。
在本例中,类生命线表示Class1类。
由第2章知,对象可以是人,也可以是物,故可以是类。
对象也可以是行动者。
在练习4-9中,为顺序图添加一个行动者对象。
练习4-9(1) 右击准备放置行动者的包,从弹出菜单中选择New | Actor,在Model Explorer中构建行动者。
(2) 在UML Actor Properties对话框中单击OK,以接受默认名(Actor1)。
(3) 将Object Lifeline拖入顺序图。
(4) 双击Object Lifeline形状,将名称改为Actor1(不一定使Object Lifeline与其分类器同名,但名称必须惟一)。
如图4-17所示。
图4-17 包含类和行动者生命线的顺序图由图4-17可看到,Object Lifeline形状已改为Actor形状,因为它通过分类器设置表示行动者。
另外注意Object Lifeline形状下的虚垂线,这就是生命线。
生命线表示时间,其长度应反映实际时间(对象被销毁前的生命期)。
不能将动作直接连接到生命线,为达到目的,需要使用激活,见4.2.2节。
4.2.2 激活激活是可连接到对象生命线的细长矩形。
这样,对象生命线(对象)能参与动作。
动作(action)类似于事件,可由用户(例如,当用户双击时)、另一个系统或信号(例如,日子或日期的特定时间)触发。
练习4-10演示如何为对象添加激活。
练习4-10(1) 对于在练习4-8中构建,在练习4-9中进行修改的顺序图,将Activation拖到Class1对象生命线。
(2) 将Activation形状的终点连接到对象生命线的连接点,两个连接点必须相连(可能要拖动Object Lifeline形状进行扩展,使其大于Activation形状)。
(3) 重新调整Activation形状的长度,以表示执行动作需要的时间。
不能指定时间量,如30分钟,但可指定动作将占用多少对象生命线。
例如,如果占用整个生命线,则该动作占用100%的对象生命期。
如图4-18所示。
图4-18 包含Activation形状的顺序图由图4-18可以看到,Class1对象准备参与动作,将消息传给其他对象,或从其他消息接收消息。
4.2.3 消息对象(如类、表等)是解决方案的持久元素。
消息是对象之间执行的动作,经常是类的方法,是未实例化对象或代码模块中的函数。
消息标志着两个对象之间的通信,从而表示一个动作。
在顺序图中,消息只表示一条消息[9]。
顺序图存在以下消息类型,如图4-19所示。
图4-19 6种顺序图消息类型消息:这是普通消息。
它连接到两个不同对象生命线的连接点。
在图4-19中,Message1是个消息例子。
此类消息表示一个动作,与接收对象(箭头所指的对象)的方法或操作相关。
换言之,接收消息的对象执行这个请求上的动作。
消息可包含传给要执行方法的参数。
消息(调用):消息调用的流程类型是过程调用,即消息调用是过程调用的一部分。
尽管如此,消息调用的行为类似于普通消息。
图4-19的Message2和Message3是消息调用。
Message3与Message2不同,它是到发送对象本身的消息调用(例如,给出一些多态行为)。
消息(返回):返回消息是将信息返给对象的消息,一般发生在执行动作之后。
返回信息不执行动作,仅返回信息,与普通消息的方法或操作无关。
在图4-19中,Message4和Message6是返回消息,但Message6是发送对象本身的所返回消息。
消息(异步):异步调用是流程类型被设置为异步的消息。
这意味着,发送对象将消息发送给接收对象,并不等待接收对象的响应。
发送对象可继续其他操作,同时接收对象执行发送消息的动作请求。
在图4-19中,Message5是异步消息。
异步消息与普通消息和消息调用不同,因为异步消息不是真正的方法(操作),而是一种接收(reception)。
接收仅指示分类器(操作)能对指定信号做出反应。
要将一条消息添加到顺序图中,将Message形状从UML Sequence选项卡拖到图中,并将连接点连接起来。
消息可包含参数,如果确保将所需参数添加到消息,则开发人员可真正使用此类文档来构建类图。
还可指定顺序编号,这有利于表示发送消息的顺序及哪些消息是相关的。
将顺序图的编号用作快速索引,顺序说明了消息的位置(在协作图中,顺序编号更加重要)。
双击消息,并在Sequence文本框中输入编号,即可指定顺序编号。
设有一个对象,一个名为Order的类,该对象包含称为GetList的方法或操作,它检索出特定日期的订单列表。
要检索订单列表,需要从Orders表提取信息,Orders表包含所有订单。
Orders表也是一个对象。
可以记录该对象,见练习4-11。
练习4-11(1) 在VEA中新建UML模型。
(2) 使用名称Order和Implementation Class定型,在Top Package包新建一个类。
(3) 使用名称Orders,在Top Package包构建另一个类。
(4) 将Object Lifeline形状拖入当前图,将其命名为Order。
将这个分类器设置为Top Package::Order。
(5) 将Object Lifeline形状拖入当前图,并将其命名为Orders。
再将这个分类器设置为Top Package::Orders,如图4-20所示。
图4-20 包含对象的顺序图注意:在图4-20中,使用Implementation Class定型来指示类是一个实现类。
类也可能是表示类型的类型类(type class)。
实现类可以是特殊类型的实现,在建模时,在类型类和实现类之间构建关系。
下一步添加GetList动作,该动作从Orders表检索特定日期的所有订单。
要添加动作,必须首先将Activation放在Object Lifeline上。
可通过从UML Sequence选项卡拖动Message 形状,将GetList消息放在图中,并连接参与消息交互的两个对象的连接点。
练习4-12演示了该方法。
练习4-12(1) 将Activation形状拖放到练习4-11构建的顺序图的Order对象生命线上。
(2) 将Activation形状拖放到Orders对象生命线上,如图4-21所示。
图4-21 包含对象和激活的顺序图(3) 将Message形状拖入图中,将Order对象生命线和Orders对象生命线连接起来,如图4-22所示。
可以看到,Message1消息从Order对象发送到Orders对象。
不过,它还未在Orders对象上执行任何操作。
图4-22 包含消息的顺序图(4) 将消息重命名为GetList。
(5) 双击Message形状,打开UML Message Properties对话框。
注意:当接收Message形状的对象不包含任何操作时(如本例),在打开UML Message Properties 对话框时,将自动打开UML Operation Properties对话框。