快速入门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

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

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

(0)
上一篇 2022年6月29日 下午4:46
下一篇 2022年6月29日 下午5:00


相关推荐

  • directshow摄像头录像_open camera 使用方法

    directshow摄像头录像_open camera 使用方法Win1064+VS2012工程下载:http://download.csdn.net/detail/yulinxx/9263639建一个基于Dialog的MFC程序,而局如下:一个PIC控件,用于显示摄像头捕捉画面,几个按钮创建一个C++类,类名为:CCamera在CCamera.h中,需要包含#include#include”qedit.h”

    2022年10月12日
    5
  • 预测算法——指数平滑法

    预测算法——指数平滑法nbsp 目录 1 指数平滑定义及公式 2 一次指数平滑 3 二次指数平滑 4 三次指数平滑 5 指数平滑系数 的确定 1 指数平滑的定义及公式 nbsp nbsp nbsp nbsp 产生背景 指数平滑由布朗提出 他认为时间序列的态势具有稳定性或规则性 所以时间序列可被合理地顺势推延 他认为最近的过去态势 在某种程度上会持续的未来 所以将较大的权数放在最近的资料 nbsp nbsp nbsp nbsp 基本原理 指数平滑法是移动平均法中的一种 其特点在于给过去的

    2026年3月18日
    2
  • 【Java面试】第二章:P5级面试

    HashMap底层原理,扩容机制,jdk8以后会使用红黑树优化?红黑树和二叉平衡树的区别,红黑树和B树,B+树的区别,Mysql二大引擎索引底层实现,HashMap在多线程环境中为何出错?ConcurrentHashMap底层实现,CAS,原子引用,ABA问题,volatile,如何解决HashMap出现的OOM问题?(WeakHashMap)HashMap是Map的一个实现类,它是以键值对存储数据的,Key-Value都是Map.Entry中的属性。当我们向HashMap中存放一个元素(k1,v1)

    2022年4月17日
    51
  • 微服务架构介绍与分类「建议收藏」

    微服务架构介绍与分类「建议收藏」微服务架构介绍与分类

    2022年4月22日
    47
  • 大数据综述(Hadoop发展历史、大数据处理发展历史、大数据处理架构、数据湖技术等)

    大数据综述(Hadoop发展历史、大数据处理发展历史、大数据处理架构、数据湖技术等)文章目录 0 背景 1 相关公司 2Hadoop 各个版本历史 3 后续不断更新补充 0 背景做大数据开发有一段时间了 但是很多专业术语 概念 行业的发展情况都不是很清楚 本文的目的就是总结大数据的发展历程 让自己更清晰这个行业的发展潜力 以及值不值得继续留在这个行业 1 相关公司雅虎 最早开始做大数据的 谷歌 三篇论文 GoogleFileSy 2003 MapReduce 2004 BigTable 2006 开启了大数据时代 Uber 优步 美国科技公司 打车软件 开发了数据

    2026年3月19日
    3
  • 洗牌算法思路_随机洗牌算法

    洗牌算法思路_随机洗牌算法1.背景    笔试时,遇到一个算法题:差不多是在n个不同的数中随机取出不重复的m个数。洗牌算法是将原来的数组进行打散,使原数组的某个数在打散后的数组中的每个位置上等概率的出现,刚好可以解决该问题。2.洗牌算法    由抽牌、换牌和插牌衍生出三种洗牌算法,其中抽牌和换牌分别对应Fisher-YatesShuffle和Knuth-DurstenfeldShhuffle算法。 …

    2026年2月12日
    6

发表回复

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

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