时序图绘制要点时序图画的是什么时序图的基本图例有哪些绘制时序图注意要点有哪些1、时序图从角色开始那角色对象需要画激活条吗2、调用线与激活条开始端的上下距离有要求吗3、时序图每个调用都必须有返回吗必须画返回的情况可以不画返回的情况最佳实践建议4、时序图foundMessage线和message线有什么区别核心区别消息的发起方不同具体对比实际使用场景时序图画的是什么时序图画的是系统运行起来后代码调用顺序对象执行顺序。时序图Sequence Diagram画的是对象之间按时间顺序交互的消息序列。它直观展示了“什么对象在什么时间点给另一个对象发送了什么消息”以及对象状态的变化。因为采用二维布局其中时间维从上到下递增所以叫“时序图”。时序图的基本图例有哪些对象生命线激活块这些激活块儿与关系线分为一组一组的代表不同的方法调用情况。调用关系线绘制时序图注意要点有哪些1、时序图从角色开始那角色对象需要画激活条吗不需要因为激活条表示对象正在“执行代码”。而角色Actor在时序图中代表系统外部的用户或其他系统我们只关心它与系统交互不关心它内部如何执行。2、调用线与激活条开始端的上下距离有要求吗核心原则消息箭头到达的时刻就是被调用对象激活条开始的时刻——两者在垂直位置上应该对齐箭头的尖端正好指向激活条的顶部端点。具体画法消息箭头从调用方生命线画出指向被调用方生命线箭头尖端触碰到被调用方生命线的那一点就是激活条顶端的起始点两者在垂直线上处于同一高度常见错误示例❌ 箭头画到激活条中间位置意味着对象在收到消息之前就开始执行了逻辑不通❌ 箭头画到激活条上方很远的地方然后激活条从下面才开始中间产生莫名其妙的空白时间正确的逻辑顺序调用方发出消息箭头起点消息在空中飞行箭头斜线部分消息到达目标箭头尖端目标立即开始执行激活条顶端与箭头尖端对齐3、时序图每个调用都必须有返回吗一句话总结同步调用必须画返回体现等待异步和void调用可以省略。不是必须的但建议大部分调用都画返回。具体分情况必须画返回的情况同步调用实心箭头调用方会阻塞等待结果。如果不画返回无法体现调用方何时恢复执行。比如查询数据库、调用API获取数据。可以不画返回的情况异步调用开放箭头调用方发完消息就继续干别的不等待结果。典型场景发送MQ消息、触发后台任务。构造方法创建对象后不需要返回值。显而易见的返回比如save()方法约定返回布尔值但成功/失败已在主流程中用alt分支体现可以省略返回箭头。无返回值方法void明确没有返回内容。最佳实践建议关键业务逻辑画返回让流程清晰简化非核心交互如果返回对理解流程无帮助可以省略保持一致性同一张图里对同类调用统一处理要么都画要么都不画4、时序图foundMessage线和message线有什么区别核心区别消息的发起方不同● Message从已知对象生命线发出的消息你明确知道谁调用的● Found Message从不明来源发出的消息箭头起点是空白没有连接任何生命线具体对比|–特征 |–Message线 |–Found Message线-|起点 连接在某条生命线上 悬空起点是个实心圆或空白含义 明确知道发送方是谁 消息来自未知/未画出的对象典型场景 对象A主动调用对象B 系统收到外部事件、定时器触发、消息队列消费实际使用场景Found Message 常用于外部触发用户点击但你没画Actor、硬件信号、第三方回调定时任务Timer 触发执行不关心谁启动的定时器消息队列从MQ消费消息消息的生产者不在图中简化视图某些消息的发起方与当前分析无关故意省略drawio在线绘图工具https://app.diagrams.net/