UML(统一建模语言)

目录

一、用例图(Use Case Diagram)

二、类图(Class Diagram)

2.1、泛化(Generalization)

2.2、实现(Realization)

2.3、关联(Association)

2.4、聚合(Aggregation)

2.5、组合(Composition)

2.6、依赖(Dependency)

三、时序图(Sequence Diagram)

四、状态图(State Diagram)

五、活动图(Activity Diagram)

六、组件图(Component Diagram)

七、部署图(Deployment Diagram)

八、总结


在软件工程中,UML(统一建模语言)图有很多种类型,主要包括:

  1. 用例图(Use Case Diagram):描述系统的功能和用户(或其他系统)与系统之间的交互。
  2. 类图(Class Diagram):描述系统中对象的类型以及它们之间存在的各种静态关系。
  3. 对象图(Object Diagram):表示某一时刻系统中对象的状态。
  4. 时序图(Sequence Diagram):描述对象之间随时间的交互顺序。
  5. 协作图(Communication Diagram):类似于时序图,但重点展示对象间的消息流动。
  6. 状态图(State Diagram):描述对象在其生命周期中不同状态的变化。
  7. 活动图(Activity Diagram):表示工作流或业务流程中的活动和控制流。
  8. 组件图(Component Diagram):描述系统的物理组件及其关系。
  9. 部署图(Deployment Diagram):展示系统硬件节点及其上部署的软件组件。

一、用例图(Use Case Diagram)

功能:
用例图主要描述系统的功能(用例)以及参与者(用户或其他系统)与系统之间的交互。它帮助确定系统的功能需求并描绘系统的外部视角。

应用阶段:

  • 需求分析阶段用来与客户或相关方讨论系统的需求,确定系统应该提供哪些功能,以及用户或其他系统如何与这些功能交互。
  • 概要设计阶段在概要设计中,基于用例图进一步定义系统的功能模块和各个模块的接口。

用例图中包含以下三种关系:

  • 包含关系使用符号《include》,想要查看订单列表,前提是需要先登录。
  • 扩展关系使用符号《extend》,基于查询订单列表的功能,可以增加一个导出数据的功能
  • 泛化关系,子用例继承父用例所有结构、行为和关系。

二、类图(Class Diagram)

功能:
类图描述系统中类的静态结构,展示类的属性、方法以及类之间的关系(如继承、关联、依赖等)。它是面向对象设计的核心部分。

应用阶段:

  • 概要设计阶段在系统功能模块确定之后,类图有助于定义每个模块的类结构,指导后续的详细设计。
  • 详细设计阶段类图进一步精细化,补充类的属性、方法,明确类之间的关系,并指导代码实现。

类之间的关系主要有六种:关联、依赖、继承(泛化)、实现、聚合、组合

2.1、泛化(Generalization)

  • 【泛化关系】是一种继承关系,表示子类继承父类的所有特征和行为。

2.2、实现(Realization)

  • 【实现关系】是一种类与接口的关系,表示类是接口所有特征和行为的实现。

2.3、关联(Association)

  • 【关联关系】是一种拥有关系,它使得一个类知道另一个类的属性和方法。
  • 【代码体现】成员变量

2.4、聚合(Aggregation)

  • 【聚合关系】是一种整体与部分的关系。且部分可以离开整体而单独存在。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
  • 【代码体现】成员变量

2.5、组合(Composition)

  • 【组合关系】是一种整体与部分的关系。但部分不能离开整体而单独存在,组合关系是关联关系的一种,是比聚合关系还要强的关系。
  • 【代码体现】成员变量

2.6、依赖(Dependency)

  • 【依赖关系】是一种使用关系,即一个类的实现需要另一个类的协助。

三、时序图(Sequence Diagram)

功能:
时序图用于描述对象之间随时间顺序的交互。它展示了系统中各个组件如何通过消息进行交互,以及消息传递的顺序。

应用阶段:

  • 概要设计阶段在定义了系统的模块和功能之后,时序图帮助展示模块间的交互方式,进一步明确系统设计。
  • 详细设计阶段通过时序图详细描述系统中各个对象和类之间的消息传递,帮助开发者实现交互逻辑。

支付宝条码支付场景的序列图。

四、状态图(State Diagram)

功能:
状态图用于描述对象在其生命周期中可能处于的不同状态以及状态之间的转变。它强调对象状态的变化和触发条件。

应用阶段:

  • 需求分析阶段可以帮助分析对象生命周期中的状态变化,尤其对于复杂的业务逻辑和流程至关重要。
  • 概要设计阶段用来细化业务对象的生命周期和状态管理,为后续设计提供指导。
  • 详细设计阶段进一步细化状态转移的规则和条件。

门在其生命周期内所经历的状态。

五、活动图(Activity Diagram)

功能:
活动图用于描述系统中的工作流或业务流程,它展示了一个过程或操作中的活动和决策节点,以及活动之间的控制流。

应用阶段:

  • 需求分析阶段帮助分析业务流程,定义系统应支持的工作流。
  • 概要设计阶段将业务流程映射到系统设计中,帮助分析系统中活动的执行流程。
  • 详细设计阶段进一步细化工作流,描述活动之间的具体交互和执行顺序。

六、组件图(Component Diagram)

功能:
组件图描述系统的物理组件及其之间的关系,通常用于展示系统的模块化结构和不同组件之间的依赖。

应用阶段:

  • 概要设计阶段在模块划分完成后,组件图有助于展示系统的模块间关系,进一步明确每个模块的职责。
  • 详细设计阶段帮助团队理解系统的组件结构,特别是在大规模分布式系统或微服务架构中,展示各组件如何协同工作。

订单系统组件依赖于客户资源库和库存系统组件。中间的虚线箭头表示依赖关系。另外两个符号,表示组件连接器,一个提供接口,一个需要接口。

七、部署图(Deployment Diagram)

功能:
部署图展示系统的物理架构,展示系统如何部署到硬件节点上以及这些节点之间的关系。它帮助理解系统的硬件和软件之间的映射。

应用阶段:

  • 概要设计阶段定义系统的物理架构,帮助理解部署的物理环境,如服务器、数据库、网络等。
  • 详细设计阶段详细定义每个组件在物理设备上的部署情况,特别是在云架构或分布式系统中。

八、总结

以下是软件系统设计三个阶段主要使用的一些UML图:

  • 需求分析阶段:主要使用用例图、状态图、活动图。
  • 概要设计阶段:用来展示系统的整体结构,使用类图、组件图、用例图、活动图、时序图等。
  • 详细设计阶段:进一步细化设计,使用类图、对象图、时序图、协作图、状态图、部署图等。

分享一个笔者工作中用的比较多的UML工具:
使用简单的文字描述画UML图的开源工具。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

流浪猫流浪狗领养PHP网站源码

源码介绍 流浪猫流浪狗领养PHP网站源码,适合做猫狗宠物类的发信息发布。当然其他信息发布也是可以的。 导入数据库,修改数据库配置/application/database.php 设置TP伪静态,设置运行目录, 后台:/abcd.php/dashboard?…

轻量级适合阅读的优秀 C++ 开源项目

CTPL 这是一个现代简易版的、高效的C线程池库&#xff0c;代码行数500行左右。 代码示例&#xff1a; void first(int id) { std::cout << "hello from " << id << \n; } struct Second { void operator()(int id) const { std::cout << &q…

下载导出Tomcat上的excle文档,浏览器上显示下载

目录 1.前端2.Tomcat服务器内配置3.在Tomcat映射的文件内放置文件4.重启Tomcat&#xff0c;下载测试 1.前端 function downloadFile() {let pictureSourceServer "http://192.168.1.1:8080/downFile/";let fileName "测试文档.xlsx";let fileURL pictu…

winform第三方界面开源库AntdUI的使用教程保姆级环境设置篇

1. AntdUI 1.1. 导入项目 1.1.1. 首先新建一个空白的基于.net的Winfrom项目1.1.2. 复制AntdUI中src目录到我们的解决方案下面1.1.3. 解决方案下添加现有项目1.1.4. 添加项目引用 1.2. 编写代码 1.2.1. 改写Form1类&#xff0c;让其继承自public partial class Form1 : AntdUI.W…

【DES加密】

什么是DES DES(Data Encryption Standard) 是一种对称加密算法。它的设计目标是提供高度的数据安全性和性能。 DES的概念 DES使用56位的密钥和64位的明文块进行加密。DES算法的分组大小是64位&#xff0c;因此&#xff0c;如果需要加密的明文长度不足64位&#xff0c;需要进…

【FPGA】时序约束与分析

设计约束 设计约束所处环节&#xff1a; 约束输入 分析实现结果 设计优化 设计约束分类&#xff1a; 物理约束&#xff1a;I/O接口约束&#xff08;例如引脚分配、电平标准设定等物理属性的约束&#xff09;、布局约束、布线约束以及配置约束 时序约束&#xff1a;设计FP…

docker搭建atlassian-confluence:7.2.0

文章目录 引言I 部署前准备数据库镜像准备自己构建镜像dockerhub第三方镜像II 安装启动容器基础配置(获取服务器ID)授权码获取集群选择设置数据库配置管理员账号引言 准备数据库、镜像启动容器获取服务器ID根据服务器ID等信息,基于atlassian-agent.jar 授权I 部署前准备 数…

征战越南电商直播,SD - WAN 专线赋能企业带货新征程

在当今数字化商业浪潮中&#xff0c;越南电商市场正经历着蓬勃发展与激烈变革。根据 Sapo Technology Joint Stock Company 对全国 15,000 名卖家的深度调查&#xff0c;2024 年零售业务的直播领域呈现出多元竞争态势。Facebook Live 强势占据多渠道或仅在线销售卖家总直播会话…

软件测试之黑盒测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 概念与定义 黑盒测试&#xff1a;又称功能测试、数据驱动测试或基于需求规格说明书的测试。通过黑盒测试来检测每个功能是否都能正常使用。黑盒测 试把测试对象看…

熵与交叉熵:从不确定性角度理解 KL 散度

从不确定性减少视角理解KL散度 【 Transformer 系列&#xff0c;故事从 d k \sqrt{d_k} dk​ ​说起】 LLM这么火&#xff0c;Transformer厥功甚伟&#xff0c;某天心血来潮~&#xff0c;再去看看&#xff01; 它长这个样子&#xff1a; 深入浅出 Transformer 看完后&#xff…

【Unity3D】导出Android项目以及Java混淆

Android Studio 下载文件归档 | Android Developers Android--混淆配置&#xff08;比较详细的混淆规则&#xff09;_android 混淆规则-CSDN博客 Unity版本&#xff1a;2019.4.0f1 Gradle版本&#xff1a;5.6.4&#xff08;或5.1.1&#xff09; Gradle Plugin版本&#xff…

vue3 + ts + element-plus(el-upload + vuedraggable实现上传OSS并排序)

这里创建项目就不多说了 安装element-plus npm install element-plus 安装vuedraggable npm install vuedraggable 安装ali-oss npm install ali-oss 这里是封装一下&#xff1a;在components创建文件夹jc-upload>jc-upload.vue 在封装的过程中遇到了一个问题就是dr…

如何在 Linux系统用中挂载和管理磁盘分区

在 Linux 系统中&#xff0c;挂载和管理磁盘分区是系统管理的基本任务之一。以下是详细步骤&#xff0c;帮助你完成这一过程。 1. 查看现有磁盘和分区 首先&#xff0c;使用以下命令来查看系统中的磁盘和分区&#xff1a; bash 复制 lsblk或者使用&#xff1a; bash 复制…

Opencv图片的旋转和图片的模板匹配

图片的旋转和图片的模板匹配 目录 图片的旋转和图片的模板匹配1 图片的旋转1.1 numpy旋转1.1.1 函数1.1.2 测试 1.2 opencv旋转1.2.1 函数1.2.2 测试 2 图片的模板匹配2.1 函数2.2 实际测试 1 图片的旋转 1.1 numpy旋转 1.1.1 函数 np.rot90(kl,k1)&#xff0c;k1逆时针旋转9…

【YOLOv8杂草作物目标检测】

YOLOv8杂草目标检测 算法介绍模型和数据集下载 算法介绍 YOLOv8在禾本科杂草目标检测方面有显著的应用和效果。以下是一些关键信息的总结&#xff1a; 农作物幼苗与杂草检测系统&#xff1a;基于YOLOv8深度学习框架&#xff0c;通过2822张图片训练了一个目标检测模型&#xff…

vue3 react使用高德离线地图,最新解决内网情况首次不能加载离线地图2025年1月10日

下载离线资源 下载地址 https://download.csdn.net/download/u010843503/90234612 2、部署私有化瓦片资源 ngxin中配置如下 server{listen 18082;server_name localhost;location / {root D:/GisMap/_alllayers;#try_files $uri $uri/ /index.html;#index index.html;} }下载…

Hbuilder ios 离线打包sdk版本4.36,HbuilderX 4.36生成打包资源 问题记录

1、打包文档地址https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios.html#%E9%85%8D%E7%BD%AE%E5%BA%94%E7%94%A8%E7%89%88%E6%9C%AC%E5%8F%B7 2、配置应用图标 如果没有appicon文件&#xff0c;此时找到 Assets.xcassets 或者 Images.xcassets(看你sdk引入的启动文件中…

Unity中 Xlua使用整理(二)

1.Xlua的配置应用 xLua所有的配置都支持三种方式&#xff1a;打标签&#xff1b;静态列表&#xff1b;动态列表。配置要求&#xff1a; 列表方式均必须是static的字段/属性 列表方式均必须放到一个static类 建议不用标签方式 建议列表方式配置放Editor目录&#xff08;如果是H…

【计算机网络】课程 实验二 交换机基本配置和VLAN 间路由实现

实验二 交换机基本配置和VLAN 间路由实现 一、实验目的 1&#xff0e;了解交换机的管理方式。 2&#xff0e;掌握通过Console接口对交换机进行配置的方法。 3&#xff0e;掌握交换机命令行各种模式的区别&#xff0c;能够使用各种帮助信息以及命令进行基本的配置。 4&…

【数据结构:前缀树Trie】

目录 前言前缀树介绍和应用一、前缀树的定义前缀树的问题和思考前缀树的映射思想前缀树三大性质 二.前缀树节点结构三. 前缀树接口介绍和实现四个接口API1. insert(String word)2. search(String word)3. startsWith(String pre)4. delete(String word) API实现1. 查询操作sear…