UML顺序图(序列图、时序图)

1.1什么是用例

用例是一个系统提供给参与者的外部接口,代表着一系列交互步骤,最终目标是要实现参与者的目标。用例的表达有条简洁至上的原则,即越朴素越好,越不涉及代码知识越好,而且用例很难与类、接口等元素一一对应。因此,为了方便开发人员统筹和协调各个类和对象

1.2什么是顺序图

顺序图用于描述系统功能的各个不同角色之间相互协作、传递消息的顺序关系。

顺序图也被称作序列图、时序图)是按时间顺序显示对象交互的图,具体来说,它显示了参与交互的对象和所交换信息的先后顺序,用来表示用例中的行为,并将这些行为建模成信息交换。

由于在绘制顺序图之前一般己经做过了分析类的工作,所以在顺序图中,可以引人类和对象的概念来帮助建模。当执行一个用例行为时,顺序图中的每一条消息对应了一个类的操作或状态机中引起转换的触发事件。也就是说,顺序图在一个编程人员可以理解的模型基础上对用例进行了翻译,把抽象的各个步骤转化成大致的消息传递序列,供程序员们按图索骥。并且,图这一形式本身用来表达一些序列就是极为恰当的,这也就使得顺序图成为描述一个过程的强有力的工具。

顺序因主要包括四个元素:对象(object)、生命线 (lifeline)、激活 (activation)和消息(message)。在UMI 中,顺序图将交互关系表示为一张二维图。其中纵向代表时间维度,时间向下延伸,按时间依次列出各个对象所发出和接收的消息。横向代表对象的维度,排列着参与交互的各个独立的对象。一般主要参与者放在最左边,次要参与者放在最右边

顺序图是按时间顺序描述一个交互及消息传递的一种方式,顺序图主要有以下三种作用:

  1. 细化用例的表达。

  2. 有效地描述类职责的分配方式。

  3. 丰富系统的使用语境的逻辑表达。

1.3顺序图的组成元素

  1. 对象与生命线

    顺序图中的对象与对象图中的概念一样,都是类的实例。顺序图中的对象可以是系统的参与在者或者任何有效的系统对象。对象的创建由头符号来表示,即在对象创建点的生命线顶部使用显示对象和类名的矩形来标记,二者用冒号隔开(即对象名:类名)这种格式。

    在位置上,一个被放置于顺序图顶端的对象,意味着在这个交互开始之前,我们已经拥有这样一个对象了。如果一个对象出现在其他位置上(不在顶端),则说明这个对象是在交互执行到某些步骤的时候被创建出来的,被创建出来的对象可以在接下来的时间里被其他对象的消息所激活,也可以以同样的方式被销毁。

    对象在其在顺序图中的生命周期表示为一条生命线。生命线代表了一次交互中的一个参与对象在一段时间内存在。具体地说,在生命线所代表的时间内,对象一直是可以被访问的-----随时可以发送消息给它

  2. 激活

    激活,又称为控制焦点,表示一个对象执行一个动作所经历的时间段,既可以直接执行,也可以通过安排下级过程来执行。同时,激活可以表示对应对象在这段时间内不是空闲的,它正在完成某个任务,或正在被占用。一般来说,一个激活的开始应该是收到了其他对象传来的消息,这段激活会处理该消息,执行一些相关操作,然后反馈或者进行下一步消息传递。通常来说,一个激活结束的时候应该伴有一个消息的发出。

    激活在UML中用一个细长的矩形表示,显示在生命线上。矩形的顶部表示对象所执行动作的开始,底部表示动作的结束。

  3. 消息

    消息是从一个对象(发送者)向另一个对象(接收者)发送信号,或由一个对象(发送者或调用者)调用另一个对象(接收者)的操作。消息是对象和对象协同工作的信息载体,它代表了一系列实体间的通信内容。消息的实现有不同的方式,如过程调用、豆式地产:生一个事 件、活动线程间的内部通信等。例如,当某对象调用了另一个对象的一个操作时,就可以看作是两个对象之间通过发送消息来达成的。

    发送信号和调用类的操作是相似的。他们都是两个对象之间的通信,以此来传递信息值,接收者所接受到的值来做出相应的反应,然而在现实层面上,信号和调用各自有不同的特性和细节行为,因此二者是不同的UML元素。

    在顺序图中,消息表不为从一个对象的生命线指向另一个对絮的生命线的箭头。有些信息可能是从外部发来的。在不确定外部对象的类型时,也可以从图的边缘处引入箭头来表示外部消息。顺序图中不同生命线上的时标是相互独立的,所以箭头和生命线所成的角度不具有任何意义。对于某一对象发给自己的消息,箭头的起点和终点都是在同一条生命线上。消息按照时间顺序从图的顶部到底部垂直排列。如果一个收到信息的对象还没有被激活,那么这条消息将会激活这个对象。

    最常见的消息是简单消息(又被称为顺序消息)。简单消息的图形表示也同样简单,只要用一个实心箭头就可以。简单消息表示控制流,可以泛指任何交互,但不描述任何通信信息当你的设计不需要复杂的消息类型,或者能很容易判断出顺序图中各个消息的消意类型时,为简单起见,你可以将所有的消息都画成简单消息。

    在传送一个消息时,对消息的接收往往会产生一个动作。这个动作可能引发目标对象以及该对象可以访问的其他对象的状态改变。根据消息产生的动作,消息也有不同的表示在UML中,有以下几种主要动作:

    调用:调用某个对象的一个操作。可以是对象之间的调用,也可以是对对象本身的调用,即自身调用或递归调用。调用属于同步机制,例如:当对象A发送消息调用对象B时,A会等待B执行完所调用的方法后再继续执行。在UML中使用一个头部为实心三角的箭头来表示调用

    返回:返回消息不是主动发出的,而是一个对象接收到其他对象的消息后返回的消息。很多情况下一个消息的接收会要求一个返回,如果把所有对源消息的返回全部绘制在顺序图中,图将变的复杂难以阅读。所以仅需要绘制重要的返回消息。在UML中虚线箭头表示返回

    创建:创建一个对象时发送的消息,在UML中使用具有<<create>>构造型的消息表示

    销毁:销毁一个对象(也允许对象销毁自身)。

1.4顺序图中的结构化控制

在 UML. 1.x中,顺序图十分不擅长表示循环行为和条件行为。因此在 UMI 2.0以上的标淮中,顺序图被赋子了更强大的能力。UML标准给顺序图提供了“片段”(fragment)机制,一个片段有一个关键字,可以包含一个消息序列甚至更多子片段。新增的结构化控制操作符使得我们可以通过顺序图来表达更加复杂的动作序列。在 UML 2 中将控制操作符表示为顺序图上的一个矩形区域,其左上角有一个写在一个小五边形内的标签,水表明控制操作符的类型。操作符对穿过它的生命线发挥作用。如果一条生命线刚好运行到操作符某一位置,操作符可以决定将其中断,并在操作符的另一位置重新开始。下面简要介绍几种常见的控制类型。

  1. 可选片段:关键字为 opt,表示一种单条件分支。如果对象生命线在进人操作符的 时候满足中括号中的条件,那么操作符的主体就会得到执行。监护条件是一个用中 括号括起来的布尔表达式,它可能出现在主体内部任何一条生命线的顶端,它可以 引用该对象的属性。

  2. 条件片段:关键宇为 alt,表示一种多条件分支。如果需要根据控制条件是否被满足 而做出不同的决策,那么可以在条件执行的片段内部使用虚线隔开不同区域。当生 命线运行到这一区城时,根据片段中注明的条件,选择其中一个区域执行。如果有 多于一个监护条件为真,那么选择哪个分区是不确定的,而且每次执行的选择可能 不同。如果所有的监护条件都不为真,那么控制将跨过这个控制操作符而继续执 行。其中的一个分区可以用特殊的监护条件Celse】,如果其他所有区城的监护条件 都为假,那么执行该分区。

  3. 并行片段:关键字为 par,表示片段内有两个或更多的并行子片段。当顺序图执行

  4. 循环片段:关键字为loop,表示一个循环。使用循环片段以及循环片段中的条件符 号,可以得到一个循环结构,只要被包括在条件符号中的条件仍然满,那么就继续 进行循环块中的工作,直到循环条件为假,跳出循环块,进人下一段生命线

  5. 交互片段:关键字为ref,表示对一段交互的引用。在一个交互图中使用交互片段米引用其他交互图。其表示方法是在操作符为ref 的片段矩形中写明引用的交互图名称。当有一段交互需要经常被执行时,可以使用交互片段将其预先打包成一个顺序片段,后面在需要再进人这一段流程时仅仅“调用”这一功能即可

下图显示了一个登录用例的简单顺序图的表示法,其中使用了循环片段与可选片段 循环片段用来表示当密码输人错误时用户需要继续停留在登录页面填写密码;可选片段用 来表示当密码输人成功时才显示登录成功的提示信息

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱摸鱼的呆瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值