UML时序图简析[通俗易懂]

UML时序图简析[通俗易懂]前言在嵌入式软件开发中,必然会遇到与其他控制板卡或者服务器通信的情况。比如,制作一个无线远程控制系统。系统分为,输入设备,云端服务器,执行设备。其中输入设备,用户可以通过设备上的触摸屏进行交互,控制或者监测远程设备云端服务器,收发终端,接收输入设备的命令,并将其转换为执行设备可识别的信号发送到可执行设备。执行设备,执行服务器发送过来的命令,并且反馈当前的设备的一些状态.简单如下图所示。一般,这样的系统需要多人共同协作完成,输入设备的开发人员负责输入设备开发,云端负责云端,执行端负责执行端

大家好,又见面了,我是你们的朋友全栈君。

前言

在嵌入式软件开发中,必然会遇到与其他控制板卡或者服务器通信的情况。比如,制作一个无线远程控制系统。
系统分为,输入设备,云端服务器,执行设备。其中

  • 输入设备,用户可以通过设备上的触摸屏进行交互,控制或者监测远程设备
  • 云端服务器,收发终端,接收输入设备的命令,并将其转换为执行设备可识别的信号发送到可执行设备。
  • 执行设备,执行服务器发送过来的命令,并且反馈当前的设备的一些状态.

简单如下图所示。
在这里插入图片描述
一般,这样的系统需要多人共同协作完成,输入设备的开发人员负责输入设备开发,云端负责云端,执行端负责执行端。那么必定要制定通信协议,让系统中的各个节点能够相互识别对方的信息。而通信协议都比较专业,涉及很深的技术细节,而且不直观。

怎么样能够简洁的描述这三个设备之间的通信交互过程呢?也方便让团队内部其他人员明白整个的交互过程,更方便于开会评审。

通常我们都会想到用流程图。流程图固然是好的,但还是不够直观,流程图重在表述系统内部的逻辑流程。描述多个设备之间通信交互过程还是不够直观。有没有其他更直观的方式呢。

uml序列图的出现就是为了解决上述问题。先不去了解序列图的相关概念,先看一个小的例子。

ATM机取钱交互流程

大家比较容易理解的一个模型就是ATM取钱模型。采用序列图描述整个流程如下:

在这里插入图片描述
仔细看下上面的图,哪怕没有任何编程经验的人是不是也能大致看的懂?这个系统实际上是分为3部分。终端ATM,服务器,个人账户数据库。

上述箭头代表了命令或者数据的流动方向。这样图形化的方式,很容易让人理解清楚整个系统的交互流程。接下来,看一下时序图的定义以及制作。

UML时序图定义

定义:时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。

上述定义来源于百度百科,从定义中可以看出,时序图就是用来描述系统内部多个对象之间交互过程的。

时序图元素

1、 角色(actor)

系统角色可以是人,或者其他系统。上述例子中的的角色就是人。

2、对象(object)

对象位于时序图的顶部,用一个方框标识。

3、生命线(lifeline)

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

4、控制焦点(activation)

控制焦点标识时序图中的西乡执行一项操作的时期,在时序图中每条生命线上以比较窄的巨星代表活动期。

5、消息(message)

消息是对象直接交互的信息流,存在于时序图的两条生命线之间,用带箭头的线标识,箭头方向代表消息的传送方向。实线代表传送的消息(命令),虚线代表对象反馈的消息(返回值)。

组合片段

组合片段用于解决信息交互执行时的条件。比如if,else等条件判断。
初步学习的话只需要了解OPT片段,标识一个可能发生或者可能不发生的序列,可以在临界中指定序列发生的条件。

示例图中的3个方框就是opt。

示例标注如下:
请添加图片描述
这样理解起来就更清晰了。制作过程也很简单,找到对应的软件即可。时序图在描述对象之间交互逻辑上还是非常简单直观的。适合用在在写具体代码前,团队内部理清系统各个硬件节点交互逻辑的时候。

这样理清楚后,负责各个模块的都能对这个系统的交互有全面深入的理解。这样开发起来就更顺利,减少了返工,以及写代码过程中发现逻辑有问题,而又要拉团队成员一起再确定交互逻辑的情况。

UML时序图绘制软件drawio

时序图可以用viso,process on等软件绘制,但这些都要收费。这里推荐一款完全免费的作图工具,UML时序图只是其中的一个功能。

这个软件叫做drawio,分为网页版,以及客户端版。完全无需注册,直接就可以使用。
链接如下:
网页版,https://app.diagrams.net/网页版可以将文件保存到本地,格式可以保存为图片格式。
windows桌面版https://github.com/jgraph/drawio-desktop/releases最新版本为16.5.1

在这里插入图片描述

drawio软件操作

安装完成后,点击桌面图标启动软件。
在这里插入图片描述
显示界面如下所示
在这里插入图片描述
点击创建新绘图,选择UML,点击创建,可以玄策其中的模板,然后创建,也可以直接创建空白绘图。在这里创建的是空白绘图。
在这里插入图片描述
界面如下图所示:
在这里插入图片描述
可能一开始是左侧是没有UML和UML2.5菜单栏的。这是需要点击左下角的更多图形,进行UML图形添加,具体操作按照下图操作。

在这里插入图片描述
添加完后,界面上就可以看到左侧有UML,UML2.5图库。
在这里插入图片描述
直接点击或者拖动对应的图标到界面上就行了。要输入文字就选中要输入文字的对象,然后按enter键,测试过程中发现双击文字不好使。

在这里插入图片描述

常用快捷键

ctrl + r :切换箭头方向。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149074.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android Studio debug使用release的签名

    Android Studio debug使用release的签名当我们在做微信微博sdk分享的时候调试非常麻烦,因为要使用对应的签名版本才能调用sdk成功。当我们使用AndroidStudio的Gradle之后会很简单的解决这个问题。1.我们把签名文件放到工程根目录下(这样做是为了保持路径的统一)2.在Gradle中引入如下代码:  //配置keystore签名  signingConfigs{    release

    2022年10月16日
    3
  • Java实现国密算法SM2,SM3,SM4,并且实现ECB和CBC模式

    Java实现国密算法SM2,SM3,SM4,并且实现ECB和CBC模式代码中实现了电码本ECB模式和密文分组连接CBC模式,SM3.java和SM4.java为算法实现类,utils的都是根据实现类写的工具,可以根据需要调用杂凑算法SM3的杂凑功能获得杂凑值。SM4.java中sm4_crypt_ecb(SM4_Contextctx,byte[]input)ECB模式加解密方法,根据密钥判断加解密功能sm4_crypt_cbc(…

    2022年9月23日
    3
  • 游戏开发学习路线

    游戏开发学习路线当你在吃鸡,王者农药的时候是否有想过如何才能做出一款这样让人神迷的游戏?游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指引,是可以事半功倍的。下面就结合自己的学习历程和大家分享下游戏开发的学习路线。1.介绍游戏开发分为客户端和服务端两条不同的路线,路线不同,所需的技能也不同。但有些…

    2022年4月19日
    79
  • Pycharm和Pytorch安装教程配置环境以及遇到的问题:

    Pycharm和Pytorch安装教程配置环境以及遇到的问题:Pycharm和Pytorch安装教程配置环境以及遇到的问题:注意:我们每次新建完项目,都要检查一下python解释器和conda.exe是否选择正确。一.如何找到Anconda哪个环境中安装了pytorch?Anconda提供环境,我们安装pytorch也是在一个环境下,所以不是在每个环境中都能用pytorch。那么我们如何找到我们pytorch安装的环境呢?要有NVDIA的显卡,才能用CUDA(AMD的小伙伴可能泪目了),查CUDA的版本比较简单,就不总结了。打开Anconda,输入conda

    2022年8月27日
    3
  • IntentService的原理及使用

    在Android开发中,我们或许会碰到这么一种业务需求,一项任务分成几个子任务,子任务按顺序先后执行,子任务全部执行完后,这项任务才算成功。那么,利用几个子线程顺序执行是可以达到这个目的的,但是每个线程必须去手动控制,而且得在一个子线程执行完后,再开启另一个子线程。或者,全部放到一个线程中让其顺序执行。这样都可以做到,但是,如果这是一个后台任务,就得放到Service里面,由于Service和Ac

    2022年4月7日
    41
  • ANDROID自己定义视图——onLayout源代码 流程 思路具体解释[通俗易懂]

    ANDROID自己定义视图——onLayout源代码 流程 思路具体解释

    2022年1月27日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号