• 统一建模语言UML(4)时序图


    概述

    时序图更多只是一种叫法,平常我们所说的顺序图、序列图也是在称呼它

    时序图是基于交互的对象行为建模,是 UML 用于描述对象之间信息的交互过程的方法,是描述对象间协作关系的模型。

    一种用来表示实体间交互关系的图

    时序图用于捕获系统运行中对象之间有时间顺序的交互,是由生命线和消息组成

    用途:显示对象之间的关系,并强调对象之间消息的时间顺序

    时序图将交互关系表示为一个二维图。

    1. 纵向是时间轴,时间沿竖线向下延伸。
    2. 横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。
    3. 当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。
    4. 消息用从一个对象的生命线到另一个对象生命线的箭头表示。
    5. 箭头以时间顺序在图中从上到下排列

    组成元素

    下面描述几个常用的元素

    对象

    代表时序图中的对象在交互中所扮演的角色,一般使用矩形表示.

    表示系统的参与者或者如何有效的系统对象

    在这里插入图片描述
    对象的三种命名方式

    1. 第一种方式包括对象名和类名,例如:直播课时:课时,在时序图中,用“对象:类”表示;

      类和对象之间是抽象与具体的关系。类是一个模板,是对一类事物的抽象描述;
      对象用于表示现实中该事物的个体。类是在对象之上的抽象,对象则是类的具体化,是类的实例。
      也就是说类只是对象的一个实例,一个对象可以有多个实例

    2. 第二种方式只显示类名,即表示它是一个匿名对象,例如: :课程;在时序图中,用“:类”表示;
    3. 第三种方式只显示对象名不显示类名,例如:讲师;在时序图中,用“对象”表示。
      在这里插入图片描述

    (2)命名方式的选择

    三种命名方式均可,哪种最容易让阅读该时序图的人理解,就选择哪种。

    (3)对象的排列顺序

    对象的左右顺序并不重要,但是为了作图清晰整洁,通常应遵循以下两个原则:

    1. 把交互频繁的对象尽可能的靠拢;
    2. 把初始化整个交互活动的对象放置在最左端。

    生命线

    生命线代表时序图中的对象在一段时期内的存在。时序图中每个对象底部中心都有一条垂直的虚线,这就是对象的生命线。

    对象间的消息存在于两条虚线间

    其相当于一个时间段,表示对象在一段时间内的存在时间,而且从时序图的顶部一直延伸至底部,长度取决于交互时间

    在这里插入图片描述

    对象生命线

    在这里插入图片描述

    消息

    两个对象之间的单路通信,从发送方指向接收方。
    消息的传递一般有以下几种方式:

    1. 同步消息:消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。
    2. 异步消息:消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。
    3. 返回消息:返回消息表示从过程调用返回
    4. 自关联消息: 自身调用自身的方法,即自我调用的同步消息

    同步消息

    消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。
    发送人需要等待消息的响应。带实心箭头的实线表示
    在这里插入图片描述

    异步消息

    发送人不需要等待消息的响应。带线型箭头的实线表示

    在这里插入图片描述

    返回消息

    返回消息表示从过程调用返回

    带线型箭头的虚线表示
    A

    自关联消息

    在这里插入图片描述

    激活

    表示的是一个对象直接或者通过从属操作而完成操作的过程。

    在时序图中一般激活符号的顶端与激活时间对其,低端与完成时间对齐,被执行的操作则用文字进行标识

    又叫控制焦点,它代表时序图中在对象时间线上某段时期执行的操作,以一个很窄的矩形表示。

    在这里插入图片描述

    注释

    对用来对UML实体进行文字描述的
    在这里插入图片描述

    用户

    即系统角色,可以是人、其他系统或子系统
    在这里插入图片描述

    组合片段

    组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程

    组合片段共有13种:

    1. ref:引用其他地方定义的组合片段;
    2. alt(选择):在一组行为中根据特定的条件选择某个交互;表示条件选择的意思,类似if else。alt需填写参数。

      选择:包含一个片段列表,这些片段包含备选消息序列,在任何场合下只发生一个序列。
      可以在每个片段中设置一个临界来指示该片段可以运行的条件。else的临界指示其他任何临界都不为true时运行的片段。如果所以临界都为false并且没有else,则不执行任何片段

    3. opt(选项):表示一个可选的行为;

      选项:包含一个可能发生或可能不发生的序列,可以在临界中知道序列发生的条件

    4. break(中断):提供了和编程语言中的break类拟的机制;

      中断:如果执行此片段,则放弃序列的其余部分。可以使用临界来指示发生中断的条件

    5. par(并行):支持交互片段的并发执行;

      并行:并行处理,片段中的诗句可以交错

    6. seq(弱顺序):强迫交互按照特定的顺序执行;

      弱顺序,有两个或更多操作数片段,涉及同一生命线的消息必须一片段的顺序发生。如果消息涉及的生命线不同,来自不同片段的消息可能会并行交错

    7. strict(强顺序):明确定义了一组交互片段的执行顺序;

      强顺序,有两个或更多操作数片段,这些片段必须按给定顺序发生

    8. neg:用来标志不应该发生的交互;
    9. region:标志在组合片段中先于其他交互片断发生的交互;
    10. ignore:明确定义了交互片段不应该响应的消息;
    11. consider:明确标志了应该被处理的消息
    12. assert:标志了在交互片段中作为事件唯一的合法继续者的操作数;
    13. loop(循环):说明交互片段会被重复执行

      循环,片段重复一定次数,可以在临界中指示片段重复条件。Loop组合片段具有“Min”和“Max”属性,它们指示片段可以重复的最新和最大次数。默认值是无限制

    Alt(选择)

    一组行为中根据特定的条件选择某个交互;表示条件选择的意思,类似if else。alt需填写参数。

    包含一个片段列表,这些片段包含备选消息序列,在任何场合下只发生一个序列。

    可以在每个片段中设置一个临界来指示该片段可以运行的条件。else的临界指示其他任何临界都不为true时运行的片段。如果所以临界都为false并且没有else,则不执行任何片段
    在这里插入图片描述

    opt(选项)

    表示一个可选的行为;

    包含一个可能发生或可能不发生的序列,可以在临界中知道序列发生的条件

    在这里插入图片描述

    loop(循环)

    说明交互片段会被重复执行

    片段重复一定次数,可以在临界中指示片段重复条件。Loop组合片段具有“Min”和“Max”属性,它们指示片段可以重复的最新和最大次数。默认值是无限制

    在这里插入图片描述

    par(并行)

    支持交互片段的并发执行;

    并行处理,片段中的诗句可以交错

    在这里插入图片描述

    ref(引用)

    引用其他地方定义的组合片段;

    表示引用的意思,某部分交互被定义在另一个图中。可将一个规模较大的图划分为若干个规模较小的图,方便图的管理和复用。

    ref不用要填写参数
    在这里插入图片描述
    引用的身份认证时序图:
    在这里插入图片描述

    break(中断)

    表示中断处理,跳转的意思,类似java代码中break语句。break需填写参数。
    在这里插入图片描述

    seq(弱顺序)

    有两个或更多操作数片段。涉及同一生命线的消息必须以片段的顺序发生。如 果消息涉及的生命线不同 ,来自不同片段的消息可能会并行交错。

    strict(强顺序)

    有两个或更多操作数片段。这些片段必须按给定顺序发生。

    neg(否定)

    此片段中显示的序列不得发生。通常用在 Consider 或 Ignore 片段中。
    用来标志不应该发生的交互;

    region

    标志在组合片段中先于其他交互片断发生的交互;

    ignore(忽略)

    此片段未描述的消息列表。这些消息可发生在运行的系统中 ,但对此描述来说 意义不大。

    在"Messages"属性中键入该列表。

    明确定义了交互片段不应该响应的消息;

    consider(考虑)

    明确标志了应该被处理的消息

    指定此片段描述的消息列表。其他消息 可发生在运行的系统中,但对此描述来 说意义不大。
    在"Messages"属性中键入该列表。

    assert

    标志了在交互片段中作为事件唯一的合法继续者的操作数;

    时序图画法

    画法参考1

    具体分为以下5步:

    1. 确定交互过程的上下文;
    2. 识别参与过程的交互对象;
    3. 为每个对象设置生命线;
    4. 从初始消息开始,依次画出随后消息;
    5. 考虑消息的嵌套,标示消息发生时的时间点。

    在这里插入图片描述

    画法参考2

    时序图的绘制技巧:

    1. 从初始消息开始画,依次画出随后消息,并给每个消息分配序号,方便理解。

    2. 角色和对象用名词,消息用动词。

    3. 角色放在时序图的开始位置,对象重要程度或使用频率从左到右排列。这就要根据时间的流程考虑了,是一个比较主观的事情。

    4. 控制焦点两端要以消息元素封顶,控制焦点不要超过消息元素。

  • 相关阅读:
    YAML学习笔记
    万界星空科技/免费MES系统/开源MES/免费追溯管理
    基于布谷鸟搜索混合灰狼优化算法求解单目标优化问题(AGWOCS)
    y79.第四章 Prometheus大厂监控体系及实战 -- prometheus的服务发现机制(十)
    富友支付最近“战况”
    asp毕业设计——基于asp+access的文学网站设计与实现(毕业论文+程序源码)——文学网站
    TypeScript type 和 interface区别
    你的Jmeter是不是经常乱码?教你用四种方法解决它!
    学习笔记——Java入门第二季
    LLM之RAG理论(十)| RAT:一种协同CoT和RAG的 AI 提示策略,助力解决长任务推理和生成
  • 原文地址:https://blog.csdn.net/yyuggjggg/article/details/126237347