快速入门UML时序图「建议收藏」

快速入门UML时序图「建议收藏」使用UML时序图重构代码使用UML时序图时序图是什么时序图的元素组合块(CombinedFragment)举例使用UML时序图最近,在重构项目中的老代码的时候,业务复杂,文档缺失。抽丝剥茧,沉迷在剪不断理还乱的纷繁的关系中,像是苏东坡诗中的那只高贵的乌鸦先生找不到落脚之处。披沙拣金,终于理出一点头绪,生怕忘了,赶紧记下来,又苦于没有好的方式去表达这些错杂的关系,蓦然发现,UML时序图是表达业…

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

使用UML时序图

最近,在重构项目中的老代码的时候,业务复杂,文档缺失。抽丝剥茧,沉迷在剪不断理还乱的纷繁的关系中,像是苏东坡诗中的那只高贵的乌鸦先生找不到落脚之处。披沙拣金,终于理出一点头绪,生怕忘了,赶紧记下来,又苦于没有好的方式去表达这些错杂的关系,蓦然发现,UML时序图是表达业务动态关系的好工具。赶紧来学习一下这个工具。

时序图是什么

时序图(Sequence Diagram)是一种流行的动态建模方案,基于时间顺序去表征对象之间的交互关系,并且使用统一建模语言(UML)去表达时序关系。
时序图的特点:

  • 表征业务的具体细节
  • 对复杂的调用、函数和操作的逻辑关系进行建模
  • 表明对象、组件之间是如何交互的
  • 理解旧代码,规划新场景

时序图的元素

以 StarUML为例。
角色(Actor)。 人或其他系统角色。
生命线(Lifeline)。 从对象图标向下延伸的一条虚线,表示对象存在的时间。如下图,分别对应三种生命线:对象、匿名对象、集合中的指定对象。
生命线
执行(Execution)。 即两个对象之间的交互,请求或相应。小矩形为对于请求的执行过程,执行结束后返回给请求方。消息分为同步消息和异步消息两种,同步消息的末端箭头为黑色实心的,异步消息的末端箭头为空心的。
执行
自调用消息:
快速入门UML时序图「建议收藏」
创建类消息(Create Message):
创建
删除类消息(Delete Message)。对于删除消息,被删除的对象的生命线就会结束。
删除

组合块(Combined Fragment)

组合块是一系列同类交互动作的组合,分支、选择、循环或并行等动作的组合。

  • alternative fragment(denoted “alt”) 与 if…else对应
  • option fragment (denoted “opt”) 与 switch对应
  • parallel fragment (denoted “par”) 表示并发
  • loop fragment(denoted “loop”) 与 for 、while或者 foreach对应
  • break fragment (“break” ) 与 for … break 或 while…break对应
  • critical fragment (“critical”) 并发执行时访问临界资源
  • assert fragment (“assert”) 断言,执行动作之前先进行判断,符合判定条件才继续执行
  • strict fragment (“strict”) 强有序,几个动作的执行严格遵循一定的顺序(不在同一条生命线也要遵循有序性)
  • seq fragment (“seq”) 弱有序,不在同一条生命线上的操作的顺序任意,在同一条生命线上的操作严格有序
  • ignore fragment (“ignore{item1, item2, …}”) 忽略指定操作
  • consider fragment (“consider{item1, item2, …}”) 除指定操作外,忽略其他操作
  • neg fragment (“neg”) 当系统失败(超时或宕机)时的操作为negative
    每种类型组合图例参考这里:Sequence Diagrams Reference

举例

以唐僧师徒4人西天取经的超简化版为例,画出取经过程的时序图。
westJourney

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/147999.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 这是我见过最牛逼的接口自动化测试框架没有之一:基于python+requests+pytest+allure实现

    这是我见过最牛逼的接口自动化测试框架没有之一:基于python+requests+pytest+allure实现这里写自定义目录标题新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入众所周知,企业实现接口自动化最常用的就是两种:1.基于工具类的接口自动化,如:Postman+Newman+Jenkins+Git/svnJmet

  • QThread介绍

    QThread介绍在程序设计中,为了不影响主程序的执行,常常把耗时操作放到一个单独的线程中执行。Qt对多线程操作有着完整的支持,Qt中通过继承QThread并重写run()方法的方式实现多线程代码的编写。针对线程之间的同步与互斥问题,Qt还提供了QMutex、QReadWriteLock、QwaitCondition、QSemaphore等多个类来实现。本篇博客将针对以下几个方面进行讲解[1]QThread的常用接口以及QThread的实现[2]QThread的信号事件[3]QThread执行完后自动释放内存

  • 工程PMO工作

    工程PMO工作

    2021年12月31日
  • Android中mesure过程详解 –[通俗易懂]

    Android中mesure过程详解 –[通俗易懂]invalidate()最后会发起一个View树遍历的请求,并通过执行performTraersal()来响应该请求,performTraersal()正是对View树进行遍历和绘制的核心函数,内部的

  • hostapd 移植和使用[通俗易懂]

    hostapd 移植和使用[通俗易懂]一、hostapd简介hostapd是一个用户态用于AP和认证服务器的守护进程。它实现了IEEE802.11相关的接入管理,IEEE802.1X/WPA/WPA2/EAP认证,RADIUS客户端,EAP服务器和RADIUS认证服务器。二、hostapd移植1.打开hostap官网,下载hostapd-2.7.tar.gz源码包;      2.解压源码包:…

  • 端口被占用问题

    端口被占用问题

发表回复

您的电子邮箱地址不会被公开。

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