时序图

news/2025/1/1 18:50:18/文章来源:https://www.cnblogs.com/pinganxile/p/18639708

    时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的。顺序图中显示的是参与交互的对象及其对象之间消息交互的顺序。时序图中包括的建模元素主要有:对象(Actor)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)等等。

时序图的主要元素

  1. 生命线 (Lifeline):

    • 表示参与交互的对象或参与者,通常以一条垂直虚线表示,并在顶部标注对象的名称和类型。如果对象是匿名的或者其具体实例不重要,则可以只用类名来标识。
  2. 激活期 (Activation):

    • 生命线上的一段水平矩形,表示该对象在一个特定时间段内处于活跃状态,即正在执行某个操作或处理消息。
  3. 消息 (Message):

    • 消息是从一个对象发送到另一个对象的动作,用带箭头的线连接两个生命线,箭头指向接收消息的对象。消息可以是同步的(实心箭头),也可以是异步的(开口箭头)。此外,还可以有返回消息,用来表示方法调用的结果。
  4. 创建和销毁:

    • 可以显示对象的创建(通过构造函数调用)和销毁(如垃圾回收)时刻,这通常会出现在生命线的开始或结束位置。
  5. 自我消息 (Self Message):

    • 对象内部的方法调用,可以用箭头指向同一个生命线来表示。
  6. 条件分支 (Conditional Branches):

    • 使用框内的文字(如altopt)来表示选择性执行的消息序列。例如,alt用于表达互斥条件,而opt则表示可选操作。
  7. 循环 (Loop):

    • 当需要重复执行某些消息时,可以在框内标记出循环条件。
  8. 组合片段 (Combined Fragment):

    • 用于组织复杂的交互模式,比如并行执行、选择性执行等。组合片段包括但不限于par(并行)、loop(循环)、opt(选项)、alt(替代)。
  9. 注释 (Comment):

    • 为图表中的元素添加说明文字,帮助理解复杂的行为逻辑。

时序图的应用场景

  • 设计阶段:帮助开发团队理解系统内部的工作流程,特别是不同对象之间的通信机制。
  • 文档化现有系统:作为逆向工程的一部分,记录已有软件系统的交互细节。
  • 测试计划:基于时序图制定详细的测试案例,确保所有预期的行为都被验证。
  • 需求分析:与利益相关者沟通,确保对系统功能的理解一致。

时序图示例

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/861046.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构复习

背诵 线性表前驱:后继表长:空表:首元结点:头结点:头指针线性表的结构特点,除了第一个和最后一个元素外,每个节点都只有一个前驱和后继。线性表的存储方式:栈与队列顺序栈链栈链队列栈与队列存储数据栈的应用:循环列表判队空、队满条件,串串是一段有限长的字符序列,由…

java期末总结第二章

2.java编程基础 1.标识符与命名规范 标识符是给Java中的类、方法、变量、包命名的符号: 只能由字母、数字、下划线、美元符号组成,并且不能以数字开头。 Java标识符大小写敏感,长度无限制 标识符不可以是Java关键字和保留字 2.变量的定义和赋值 变量赋值语法如下: int a, b…

轻舟已撞大冰山

一、关于软工 1.1 想象和目标 在软工这门课正式开课之前,我早已听闻其威名。大二那年,看到学长学姐们为了软工课日日夜夜地开会,我心中对这门课的印象便牢牢地刻上了“麻烦”、“恐怖”、“费劲”这些字眼。甚至开始怀疑,一个学分的实践课,真的值得如此? 作为一个“只会考…

高性能计算-GPU编程模型(21)

1. GPU的内存模型 GPU编程数据需要从CPU主存拷贝到GPU全局存储器,所有线程共享全局存储。开辟的全局存储器空间指针在CPU代码中不能解引用使用,应在计算完结果后再拷贝回CPU主存空间。线程块内共享存储。 (1) 线程私有的存储有寄存器、本地内存 (2) 线程块内有块内线程共享的…

YEAH!!!

目录一.过往云烟1. 对于软件工程课程的想象2.在这门课程中的投入与产出3.印象最深刻的答辩二.果实1.故事2.新伙伴3.大提升软件工程真的是一门很不错的课程!如今也是轻舟已过万重山,但我永远怀念开发福小研的日子!!!三.致谢 一.过往云烟 1. 对于软件工程课程的想象“制作软…

【前端开发】代码上传前怎么避免把 账号,密码,AppId, key 之类私密信息 提交上去

平时我们写代码的时候难免会有一些私密信息不行提交到git仓库上去,比如 账号,密码,AppId, key 之类不希望公开的信息,但是提交代码难免会有疏漏的时候,对此我们可以写个 githook 来协助我们进行检查。 目的 在Git提交操作前,对即将提交的文件进行全面扫描,检查其中是否存…

已有的事后必再有

学期回顾 1.1 回顾对软件工程课程的想象 对软件工程的第一印象 最初,我对软件工程的理解非常肤浅,以为它只是一门普通的专业课程。然而,随着个人作业、结对作业和团队编程的深入,我深刻体会到了软件开发的巨大压力。 初步达到我的预期 在这三个月的学习实践中,我参与了需求…

秒杀场景的设计思考

秒杀场景的设计思考 在学习Redis的之后,一个绕不开的话题就是秒杀系统的设计。本文将从下面几个方面展开一下个人简单的理解:秒杀场景的介绍 设计的核心思路 怎么限流、削峰、异步 planB 总结‍ 秒杀场景的介绍 秒杀场景是大家常说的高并发场景,但是实际上其与单纯的高并发还…

UE4.27, 揣摩源码, 序列化 (三) FLinkerLoad, FLinkerSave

3. FLinkerLoad, FLinkerSave分别是UObject的反序列化和序列化的内核3.0. UPackage与UObjectUObject因为涉及与其他UObject的复杂引用关系,如果我们客制化地单独正反序列化每一个UObject,我们会在反序列化的时候惊觉这是繁琐而不可能的。为了满足UObject这种复杂的对象的序列…

设计Element UI表单组件居然如此简单!

0 前言 上文讲解了Jest框架对组件库测试,TypeScript和Jest都为代码质量和研发效率。之前实现Container和Button组件以渲染功能为主,可根据不同属性渲染不同样式去实现布局和不同格式的按钮。 本文的表单组件,除了要渲染页面组件,还支持很好页面交互,从Element3的表单组件开…

Kubernetes(v1.29)学习笔记

什么是KubernetesK8s是Kubernetes的简称,是一个开源的容器编排系统,用于自动部署、扩展和管理容器化应用程序。 Kubernetes源于希腊语,意为“舵手”或“飞行员”,其主要功能包括服务发现与负载均衡、存储编排、Secret和配置管理、批量执行、水平扩缩、自动化上线和回滚、自…

简答题

1 冯诺依曼结构计算机的基本思想是什么 ?按此思想设计的计算机硬件系统的应由那些部件组成,它们各有什么作用? 存储程序和程序控制是冯诺依曼结构计算机的主要设计思想。存储程序是指将解题的步骤编写为程序,然后将程序和运行程序所需要的数据以二进制的形式存放到存储器中…