当前位置: 首页 > news >正文

解忧杂货铺(二):UML时序图

目录

1、概述

2、UML时序图

2.1、什么是时序图

2.2、时序图的元素

2.2.1 角色(Actor)

2.2.2 对象(Object)

2.2.3 生命线(LifeLine)

2.2.4 控制焦点(Activation)

2.2.5 消息(Message)

2.2.6 自关联消息

2.2.7 组合片段


1、概述

        在看AUTOSAR规范的时候发现时序图里面的有些含义是模糊理解的,所以在网上看到别人写的好的就自己记录下,非原创。

2、UML时序图

2.1、什么是时序图

        时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

2.2、时序图的元素

        概述一个图示

2.2.1 角色(Actor)

        时序图开始的主角,可以是电脑、主机、小人等任意图标,一般以小人做为角色图标。

2.2.2 对象(Object)

        对象位于时序图的顶部,以一个矩形表示。

2.2.3 生命线(LifeLine)

        时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线(对象的时间线)。以一条垂直的虚线表。

2.2.4 控制焦点(Activation)

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

2.2.5 消息(Message)

        表现代表对象之间发送的信息。消息分为三种类型。

        同步消息(Synchronous Message)
        消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。以一条实线+实心箭头表示。

        异步消息(Asynchronous Message)
        消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。以一条实线+大于号表示。

        返回消息(Return Message)
        返回消息表示从过程调用返回。以小于号+虚线表示

  • 实线+实心箭头     : 主动类型的同步调用或者请求

  • 实线+大于号箭头 : 主动类型的异步调用或者请求

  • 虚线+实心箭头    :  收到请求后同步的返回过程

  • 虚线+小于号箭头:   收到请求后异步的返回过程

2.2.6 自关联消息

        表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心剪头表示。

2.2.7 组合片段

        标示循环、判断、中断…的框框 专业的组合片段共有13种,名称及含义如下.

组合名称组合含义
ref引用其他地方定义的组合片段
alt在一组行为中根据特定的条件选择某个交互
opt表示一个可选的行为
break提供了和编程语言中的break类拟的机制
par支持交互片段的并发执行
seq强迫交互按照特定的顺序执行
strict明确定义了一组交互片段的执行顺序
neg用来标志不应该发生的交互
region标志在组合片段中先于其他交互片断发生的交互
ignore明确定义了交互片段不应该响应的消息
consider明确标志了应该被处理的消息
assert标志了在交互片段中作为事件唯一的合法继续者的操作数
loop说明交互片段会被重复执行

抉择(Alt)

        Alt片段组合可以理解为if…else if…else条件语句

        抉择用来指明在两个或更多的消息序列之间的互斥的选择,抉择在任何场合下只发生一个序列。注意Alt方框中间的虚线,虚线把Alt分两部分,只执行虚线上面或者虚线下面其中之一

选项(Opt
        包含一个可能发生或不发生的序列。Opt相当于if…语句

循环(Loop)
        片段重复一定次数,可以在临界中指示片段重复的条件。Loop相当于for语句。

并行(Par)
        并行处理,片段中的事件可以并行交错。Par相当于多线程。

http://www.lryc.cn/news/36077.html

相关文章:

  • 微信小程序的代码由哪些结构组成?
  • Cloud Kernel SIG月度动态:发布 ANCK 新版本及 Plugsched v1.2.0
  • Jedis 使用详解(官方原版)
  • 关于Pytorch中的张量学习
  • 基于Transformer的目标检测算法学习记录
  • 嵌入式学习笔记——使用寄存器编程实现按键输入功能
  • 打卡小达人之路:Spring Boot与Redis GEO实现商户附近查询
  • Apache HTTP Server <2.4.56 mod_proxy_uwsgi 模块存在请求走私漏洞(CVE-2023-27522)
  • JUC并发编程设计模式
  • HTTPS加密解析
  • Python每日一练(20230309)
  • 哈希表题目:数组的度
  • 初识rollup 打包、配置vue脚手架
  • 软考网络工程师证书有用吗?
  • postgresql 自动备份 bat实现
  • gdb:在命令行中会莫名暂停;detach-on-fork
  • 【3.9】RedisAOF日志、字符串、操作系统进程管理
  • 安装mayavi的成功步骤
  • vue+echarts.js 实现中国地图——根据数值表示省份的深浅——技能提升
  • [oeasy]python0104_指示灯_显示_LED_辉光管_霓虹灯
  • Easy Deep Learning——卷积层
  • 深入分析@Bean源码
  • Web Components学习(1)
  • Element-UI实现复杂table表格结构
  • Azure AD 与 AWS 单一帐户SSO访问集成,超详细讲解,包括解决可能出现的错误问题
  • lvgl 笔记 按钮部件 (lv_btn) 和 开关部件 (lv_switch)
  • Python高频面试题——生成器(最通俗的讲解)
  • 品牌软文怎么写?教你几招
  • Kubernetes (k8s) 污点(Taint)介绍、示例
  • Docker学习(二十一)构建 java 项目基础镜像