zoukankan      html  css  js  c++  java
  • UML之时序图

    顺序图的概念: 顺序图是按时间顺序显示对象交互的图。它显示了参与交互的对象和所交换信息的先后顺序,用来表示用例中的行为,并将这些行为建模成信息交换。

    顺序图是一种交互图,强调消息的时间顺序,亦称时序图

    顺序图主要包括四个元素:对象、生命线、激活和消息。

    在UML中,顺序图将交互关系表示为一张二维图。

    其中纵向是代表时间维度,时间向下延伸,按时间依次列出各个对象所发出和接收的消息。水平方向是代表对象的维度,排列着参与交互的各个独立的对象。

    顺序图的三种主要作用:

    1)细化用例的表达。本章前面我们已经提到,使用顺序图的一大用途,就是讲用例所描述的需求与功能转化为更加正式、层次更加分明的细化表达。

    2)有效地描述类职责的分配方式。我们可以根据顺序图中各对象之间的交互关系和发送的消息来进一步明确对象所属类的职责。

    3)丰富系统的使用语境的逻辑表达。系统的使用语境即为系统可能的使用方式和使用环境。

    顺序图的组成元素:对象、生命线、激活、消息。

    对象

      顺序图中的对象与对象图中的概念一样,都是类的实例。顺序图中的对象可以是系统的参与者或者任何有效的系统对象。

      对象的创建由头符号来表示,即在对象创建点的生命线顶部使用显示对象名和类名的矩形框来标记。

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

    生命线

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

      在顺序图中,生命线位于每个对象的底部中心位置,显示为一条垂直的虚线,与时间轴平行,带有一个显示对象的头符号。

      对于在交互过程中被创建的对象,其生命线从接收到新建对象的消息时开始。对于在交互过程中被销毁的对象,其生命线在接收到销毁对象的消息时或在自身最后的返回消息之后结束,同时用一个“X”标记表明生命线的结束。

    激活

      激活,又称为控制焦点,表示一个对象执行一个动作所经历的时间段,既可以是直接执行,也可以是安排下级过程执行。同时,激活也可以表示对应对象在这段时间内不是空闲的,它正在完成某个任务,或正被占用。

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

    消息

      除了以上这些消息类型以外,Rose还扩充了两种消息类型,分别是阻止消息与超时消息。

        阻止消息:当消息的发送者传递消息给接收者,如果接收者无法立即接收,则发送者放弃该消息。

        超时消息:若发送消息后接收者无法在指定时间内接收,则发送者放弃该消息。

    顺序图中的结构化控制

    在UML 2中,顺序图提供了“片段” 机制,可以通过顺序图来表达更加复杂的动作序列。

    可选片段:关键字为opt,表示一种单条件分支。

    条件片段:关键字为alt,表示一种多条件分支。

    并行片段:关键字为par,表示片段内有多个并行子片段的片段。

    循环片段:关键字为loop,表示一个循环。

    交互片段:关键字为ref,表示对一段交互的引用。

    顺序图建模技术

    按时间顺序对控制流建模:

      设置交互的语境。交互语境即交互所在的环境,包括交互属于那个系统、子系统,包含哪些类和对象,对应于哪个用例或协作的脚本等。

      设置交互的场景,即识别对象在交互中扮演的角色,根据对象的重要性排列对象的顺序。

      为对象设置生命线。

      按时间顺序排列消息。

      设置激活期。

      附加时间和空间约束。

      设置前置与后置条件。

    补充

    顺序图的变体——时间图

    时间图是UML 2中新增加的图,相当于另一种显示顺序图的方法。

    时间图与顺序图的主要不同之处有:

    1)时间轴与对象轴交换了位置。在时间图中,纵向表示不同对象,横向表示时间的延伸。

    2)不同对象的生命线在独立的矩形框中显示,矩形框纵向堆砌成整个图。

    3)对象可以有不同的状态。每个对象的状态在其生命线的最左侧纵向排列,生命线通过上下起伏来表示对象当前所处的状态。

    4)可以显示一个时间标尺。时间标尺上有时间刻度,用来表示时间间隔。

    5)不同对象生命线上的时间是同步的。

    建立顺序图的步骤:

    1.确定需要建模的工作流

    2.从左到右布置对象

    3.添加消息和条件以便创建工作流

    例子:系统用户注册模块

     

    案例(1)就餐

    需求描述如下:

          客人到餐厅就餐,服务员提供菜单,客人点菜后把菜单交给服务员。服务员向客人确定菜单后,将菜单提交给大堂经理。大堂经理把菜单提交给大厨,大厨完成菜品后传递给大堂经理,大堂经理安排服务员传菜。有的客人可能需要酒水,有的客人不需要酒水。客人结束用餐后,服务员提供账单,客人结账。

    确认对象

    确定出现顺序

    确定消息

    案例(2)ATM机取款

    需求描述如下:

      用户通过ATM机,插入银行卡。系统提示输入密码,用户输入密码。系统检查密码是否正确,密码正确用户选择取款。系统提示输入取款金额。用户输入金额,系统判断其合法性。在获取用户输入金额后,系统开始事物处理,减少账户金额,输出相应现金。

    案例(3)成绩查询

    需求描述如下:

      老师通过学号在系统查询成绩,有存在、不存在两种情况。存在显示成绩,不存在显示查无此人。

  • 相关阅读:
    python--模块导入与执行
    python--re模块
    python--递归函数
    CSRF攻击与防御
    XSS跨站脚本攻击
    HTTP协议详解以及URL具体访问过程
    Git服务器搭建
    浅谈PHP异常处理
    常用的几个PHP加密函数
    PHP将数据导出Excel表中(投机型)
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/10356740.html
Copyright © 2011-2022 走看看