`

2-时序图

    博客分类:
  • UML
阅读更多

元素: http://www.uml-diagrams.org/sequence-diagrams.html/sequence-diagrams.html

图的目的

序列图主要用于按照交互发生的一系列顺序,显示对象之间的这些交互。很象类图,开发者一般认为序列图只对他们有意义。然而,一个组织的业务人员会发现,序列图显示不同的业务对象如何交互,对于交流当前业务如何进行很有用。除记录组织的当前事件外,一个业务级的序列图能被当作一个需求文件使用,为实现一个未来系统传递需求。在项目的需求阶段,分析师能通过提供一个更加正式层次的表达,把用例带入下一层次。那种情况下,用例常常被细化为一个或者更多的序列图。

组织的技术人员能发现,序列图在记录一个未来系统的行为应该如何表现中,非常有用。在设计阶段,架构师和开发者能使用图,挖掘出系统对象间的交互,这样充实整个系统设计。

序列图的主要用途之一,是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。序列图除了在设计新系统方面的用途外,它们还能用来记录一个存在系统(称它为“遗产”)的对象现在如何交互。当把这个系统移交给另一个人或组织时,这个文档很有用。

概念:

序列图的主要目的是定义事件序列,产生一些希望的输出。重点不是消息本身,而是消息产生的顺序;不过,大多数序列图会表示一个系统的对象之间传递的什么消息,以及它们发生的顺序。图按照水平和垂直的维度传递信息:垂直维度从上而下表示消息/调用发生的时间序列,而且水平维度从左到右表示消息发送到的对象实例。

1.生命线,用一个方格和一条虚线表示,生命线的命名标准:实体名:类名

   

      2.消息

为了可读性,序列图的第一个消息总是从顶端开始,并且一般位于图的左边。然后继发的消息加入图中,稍微比前面的消息低些。

为了显示一个对象(例如,生命线)传递一个消息给另外一个对象,你画一条线指向接收对象,包括一个实心箭头(如果是一个同步调用操作)或一个棍形箭头(如果是一个异步讯号)。消息/方法名字放置在带箭头的线上面。正在被传递给接收对象的消息,表示接收对象的类实现的一个操作/方法。在图 4 的例子中,analyst对象调用ReportingSystem 类的一个实例的系统对象。analyst对象在调用系统对象的 getAvailableReports 方法。系统对象然后调用secSystem 对象上的、包括参数userId的getSecurityClearance 方法,secSystem的类的类型是 SecuritySystem,下面是一个在对象之间传递消息的实例,图中还包括两个返回消息,返回消息是可选的,一个返回消息画作一个带开放箭头的虚线,向后指向来源的生命线,在这条虚线上面,你放置操作的返回值。 

 

   

 为了要画一个调用本身的对象,如你平时所作的,画一条消息,但是不是连接它到另外的一个对象,而是你把消息连接回对象本身。系统对象调用它的 determineAvailableReports 方法

UML序列图(时序图) - Fighter - Fight for my dream

 

 

下图中的消息实例显示同步消息;

UML序列图(时序图) - Fighter - Fight for my dream

然而,在序列图中,你也能为异步消息建模。一个异步消息和一个同步的画法类似,但是消息画的线带一个棍形矛头,如下图:

UML序列图(时序图) - Fighter - Fight for my dream 

组合碎片(变体方案,选择项,和循环)

然而,在大多数的序列图中,UML 1.x“in-line”约束不足以处理一个建模序列的必需逻辑。这个功能缺失是 UML 1.x 的一个问题。UML 2 已经通过去掉“in-line”约束,增加一个叫做组合碎片的符号元件,解决了这一个问题。一个组合碎片用来把一套消息组合在一起,在一个序列图中显示条件分支。UML 2 规范指明了组合碎片的 11 种交互类型。

变体

变体用来指明在两个或更多的消息序列之间的、互斥的选择。3 变体支持经典的“if then else”逻辑的建模(举例来说,如果 我买三个,然后 我得到 我购买的20% 折扣;否则 我得到我购买的 10% 折扣)。 4 操作元被虚线分开。每个操作元有一个约束进行测试,而这个约束被放置在生命线顶端的操作元的左上部。 5 如果操作元的约束等于“true”,然后那个操作元是要执行的操作元。图 8:包含变体组合碎片的一个序列图片段

就如你将会在图 8 中注意到的,一个变体的组合碎片元件使用框架来画。单词“alt”放置在框架的namebox里。然后较大的长方形分为 UML 2 所称的操作元。

UML序列图(时序图) - Fighter - Fight for my dream

选择项

选择项组合碎片用来为序列建模,这些序列给予一个特定条件,将会发生的;或者,序列不发生。一个选择项用来为简单的“if then”表达式建模。(例如,如果架上的圈饼少于五个,那么另外做两打圈饼)。

选择项组合碎片符号与变体组合碎片类似,除了它只有一个操作元并且永不能有“else”约束以外(它就是如此,没有理由)。要画选择项组合,你画一个框架。文字“opt”是被放置在框架的 namebox 里的文本,在框架的内容区,选择项的约束被放置在生命线顶端上的左上角。 然后选择项的消息序列被放在框架的内容区的其余位置内。这些元件如图 9 所示。

UML序列图(时序图) - Fighter - Fight for my dream

图 9:包括选择项组合碎片的一个序列图片段

阅读选择项组合碎片很容易。图 9 是图 7 的序列图片段的再加工,但是这次它使用一个选择项组合碎片,因为如果Student的逾期平衡等于0,需要传递更多的消息。按照图 9 的序列图,如果Student的逾期平衡等于零,然后传递addStudent,getCostOfClass和chargeForClass消息。如果Student的逾期平衡不等于零,那么在选择项组合碎片中,序列不传递任何一个消息。

例子图 9的序列图片段包括一个选择项约束;然而,约束不是一个必需的元件。在高层次、抽象的序列图中,你可能不想叙述选择项的条件。你可能只是想要指出片段是可选择的。

 

6 被放置在左上角。然后循环的消息序列被放在框架内容区的其余部分中。在一个循环中,除了标准的布尔测试外,一个约束能测试二个特定的条件式。特定的约束条件式是写作“minint = [the number]”(例如,“minint = 1”)的最小循环次数,和写作“maxint = [the number]”(例如,“maxint = 5”)的最大循环次数。通过最小循环检验,循环必须运行至少指定次数,而循环执行次数不能达到约束指定的最大循环次数。

图 10:循环组合碎片的一个序列图例子

UML序列图(时序图) - Fighter - Fight for my dream

 

在图 10 中显示的循环运行,直到 reportsEnu 对象的 hasAnotherReport 消息返回false。如果循环序列应该运行,这个序列图的循环使用一个布尔测试确认。为了阅读这个图,你和平常一样,从顶部开始。当你到达循环组合碎片,做一个测试,看看值 hasAnotherReport 是否等于true。如果 hasAnotherReport 值等于true,于是序列进入循环片断。然后你能和正常情况一样,在序列图中跟踪循环的消息。

分享到:
评论

相关推荐

    UML-时序图总结.doc

    ### UML时序图知识点详解 #### 一、UML时序图概述 **时序图**(Sequence Diagram)是UML(Unified Modeling Language,统一建模语言)中的一种交互图,主要用于展示系统中对象之间的交互关系及其发生的顺序。通过...

    highCharts-时序图

    在"时序图"这个场景中,HighCharts被用来展示实时更新的数据,就像心电图一样连续不断地展示时间序列信息。这种类型的图表对于监控动态变化的数据非常有用,比如在金融市场的股票价格跟踪、物联网设备的状态监测或者...

    音视频-编解码-时序图像特征检测的理论方法及应.pdf

    2. 为克服SAX(Symbolic Aggregate Approximation)方法在边界处容易丢失信息的问题,提出了动态长度分割(DLS)模型。DLS根据时间序列的极值动态调整分割边界,并基于最大熵选择优化字符集,进一步精细化优化分割...

    电子-如何看懂时序图的资料.rar

    2. **STM32时序图分析**: - STM32单片机在系统中的角色:作为控制器,负责接收和处理来自外部硬件(如传感器)和软件(如固件)的消息,控制系统的运行。 - 时序图示例:例如,STM32可能与ADC(模拟数字转换器)...

    时序图例子.txt

    根据提供的文件信息,本文将围绕“时序图”这一主题展开详细讨论,涵盖时序图在软件开发设计中的应用、作用及其对项目开发文档编写的支持等方面。时序图是UML(统一建模语言)中的一种图形化表示方法,主要用于描述...

    eclipse下生成Java类图和时序图

    本文将详细介绍如何在Eclipse集成开发环境中生成Java类图和时序图,以及如何利用提供的资源来实现这一目标。 首先,我们需要了解Eclipse中的UML支持。Eclipse本身并不内置UML建模功能,但可以通过安装插件来扩展这...

    android 时序图

    在Android开发中,时序图(Sequence Diagram)是一种重要的建模工具,用于描述对象之间交互的顺序和时间关系。它是UML(统一建模语言)的一部分,帮助开发者清晰地理解系统中不同组件如何协同工作。时序图展示了消息...

    EC11旋转编码器时序图.rar_EC11旋转编码器_ec11时序图_编码器时序_编码器时序图_逻辑分析仪

    本资料"EC11旋转编码器时序图.rar"包含了一定位对一脉冲和两定位对一脉冲两种类型的EC11编码器在正转、反转以及连续转动时的时序图。 首先,我们需要理解编码器的基本工作原理。EC11编码器内部通常包含一个光学或...

    主板技嘉M78GM-S2H时序图

    主板技嘉M78GM-S2H时序图,手工绘制,相信很多不懂的人都可以通过这个图片做到入门时序

    教你如何看懂时序图

    时序图,全称为顺序图或序列图,是UML(统一建模语言)中的一种图形表示法,主要用于描述系统中的对象如何交互以及在时间上的顺序。它通过可视化的方式展现了对象间的动态协作关系,帮助我们理解系统的行为。时序图...

    Educode单总线CPU设计实验(定长指令周期3级时序)(HUST)

    2 定长指令周期---时序发生器FSM设计 3 定长指令周期---时序发生器输出函数设计 4 硬布线控制器组合逻辑单元 5 定长指令周期---硬布线控制器设计 6 定长指令周期---单总线CPU设计 全通关(放入logisim可查看电路,...

    如何看懂数字电路时序图

    在深入探讨如何理解数字电路中的时序图之前,我们首先需要明确时序图的基本概念及其在数字电子系统设计中的重要性。时序图是一种图形化的表示方法,用于展示数字电路中信号随时间变化的情况,特别是在涉及多信号交互...

    中兴struts2 时序图

    在Struts2的时序图中,主要展示了以下关键组件和它们之间的交互: 1. **用户**: 用户通过浏览器发起HTTP请求,这是整个交互的起点。 2. **Web服务器**: 接收到用户的请求后,Web服务器负责将请求分发到相应的...

    如何读单片机的时序图

    2. **理解时序图中的关键时间参数**: - **数据保持时间(Data Hold Time)**:数据需要保持稳定不变的最短时间。 - **数据建立时间(Data Setup Time)**:数据需要提前到达的最短时间。 - **输出有效时间...

    uml建模时序图

    **一、时序图简介** 时序图,全称为序列图或顺序图,是统一建模语言(UML)中的重要图表类型,主要用于描述系统中各个对象如何按照时间顺序进行交互。这种图清晰地展现了对象之间的消息传递,帮助开发者理解系统的...

    andytiming画时序图小软件

    2. timing.bmp、demo.bmp:这是软件生成的时序图的位图文件,用户可以将完成的时序图导出为图像,便于分享或嵌入到其他文档中。 3. AndyTiming.exe:这是软件的可执行文件,双击即可启动软件,开始绘制时序图。 4. ...

    Springboot启动时序图

    下面将详细解析SpringBoot启动时序图及相关知识点。 1. **初始化过程** - 当我们运行一个SpringBoot应用,首先执行的是`main`方法,通常是在`Application`类中定义。 - `SpringApplication.run()`方法是启动的...

    时序图示例

    2. 自动化:时序图的自动化将变得更加普遍,帮助开发者快速生成和维护时序图。 3. 集成化:时序图的集成化将变得更加普遍,帮助开发者将时序图与其他UML图形集成。 时序图是一种强大的UML图形,用于描述系统中的...

    Eclipse导出类图时序图(亲测),安装截图

    在本文中,我们将深入探讨如何在Eclipse集成开发环境中导出类图和时序图,以及如何确保这一过程在最新版本的Eclipse中仍然有效。Eclipse作为一个强大的Java开发工具,也提供了对统一建模语言(UML)的支持,允许...

Global site tag (gtag.js) - Google Analytics