Unified Modeling Language,统一建模语言
UML(Unified Modeling Language,统一建模语言)是一种标准化的图形化建模语言,用于可视化、规范和文档化软件系统的设计。UML 提供了一套通用的符号和规则,帮助开发者、架构师和团队成员更好地理解和沟通软件系统的结构和行为。
UML 的主要用途
- 需求分析:帮助团队理解系统需求。
- 系统设计:描述系统的结构和行为。
- 文档化:生成系统设计的文档。
- 沟通:促进团队成员之间的协作和理解。
- 代码生成:某些工具可以从 UML 图生成代码。
常见的 UML 图类型
UML 包含 14 种图,分为两大类:
-
结构图(描述系统的静态结构)
- 类图(Class Diagram):描述类及其关系。
- 对象图(Object Diagram):展示对象及其关系。
- 组件图(Component Diagram):描述系统的组件及其依赖关系。
- 部署图(Deployment Diagram):展示系统的物理部署结构。
- 包图(Package Diagram):展示包及其依赖关系。
- 复合结构图(Composite Structure Diagram):展示类的内部结构。
- 结构对象图(Structural Object Diagram):展示对象的静态结构。
-
行为图(描述系统的动态行为)
- 用例图(Use Case Diagram):描述系统的功能和用户交互。
- 活动图(Activity Diagram):展示流程和活动。
- 状态图(State Diagram):描述对象的状态及其转换。
- 时序图(Sequence Diagram):展示对象之间的交互顺序。
- 通信图(Communication Diagram):展示对象之间的交互关系。
- 交互概览图(Interaction Overview Diagram):结合活动图和交互图。
- 时序图(Timing Diagram):描述对象随时间的变化。
UML 图的特点
- 标准化:UML 是一种国际标准(ISO/IEC 19505)。
- 通用性:适用于各种软件开发方法(如面向对象、敏捷开发等)。
- 可扩展性:支持自定义符号和规则。
- 工具支持:许多工具(如 Visio、StarUML、PlantUML)支持 UML 图的绘制。
UML 的应用场景
- 软件开发:需求分析、设计、文档化。
- 系统架构:描述系统的整体结构。
- 业务建模:描述业务流程和规则。
- 教育和培训:帮助学习者理解系统设计。
以下是一些常见的 UML 图的示例,包括 类图 和 用例图,这些是最常用的 UML 图类型之一。
1. 类图(Class Diagram)示例
类图用于描述系统的静态结构,展示类及其关系(如继承、关联、依赖等)。
示例:图书馆管理系统
+----------------+ +----------------+ +----------------+
| Library | | Book | | Member |
+----------------+ +----------------+ +----------------+
| - books: List | | - title: String| | - name: String |
| - members: List| | - author: String| | - borrowedBooks: List |
+----------------+ ---------------- ++ +----------------+
| + addBook(book: Book): void | | + borrowBook(member: Member): void |
| + removeBook(book: Book): void | | + returnBook(member: Member): void |
+----------------+ +----------------+ +----------------+
关系:
Library
包含多个Book
(一对多关系)。Library
包含多个Member
(一对多关系)。Member
可以借阅Book
(关联关系)。
2. 用例图(Use Case Diagram)示例
用例图用于描述系统的功能和用户(参与者)如何与系统交互。
示例:图书馆管理系统
plaintext+----------------+ +----------------+ +----------------+
| Member | | System | | Librarian |
+----------------+ +----------------+ +----------------+| | || | || +----------------+ | +----------------+ || | Borrow Book |<-----+ | Add Book | || +----------------+ +----------------+ || | || +----------------+ | +----------------+ || | Return Book |<-----+ | Remove Book | || +----------------+ +----------------+ || | |+--------------------------+ +----------------+ || | Search Book | |+----------------+ || | |+--------------------------+ +----------------+ || | View Reports | |+----------------+ |
关系:
- 参与者:
Member
:可以借书和还书。Librarian
:可以添加书、删除书、搜索书和查看报告。
- 用例:
Borrow Book
:成员可以借书。Return Book
:成员可以还书。Add Book
:管理员可以添加书。Remove Book
:管理员可以删除书。Search Book
:管理员和成员都可以搜索书。View Reports
:管理员可以查看报告。
3. 时序图(Sequence Diagram)示例
时序图用于描述对象之间的交互顺序。
示例:用户登录系统
Participant User
Participant System
Participant DatabaseUser -> System: Enter username and password
System -> Database: Verify credentials
alt Valid credentialsDatabase --> System: Return successSystem --> User: Login successful
else Invalid credentialsDatabase --> System: Return failureSystem --> User: Login failed
end
关系:
- 用户输入用户名和密码。
- 系统将请求发送到数据库。
-库 数据验证凭据并返回结果。 - 系统根据结果向用户反馈。
相关文章:
Unified Modeling Language,统一建模语言
UML(Unified Modeling Language,统一建模语言)是一种标准化的图形化建模语言,用于可视化、规范和文档化软件系统的设计。UML 提供了一套通用的符号和规则,帮助开发者、架构师和团队成员更好地理解和沟通软件系统的结构…...
OCP证书有效期是永久,但需要更新
在数据库管理领域,OCP证书作为Oracle认证体系中的重要组成部分,一直是数据库专业人士追求的目标。许多考证者会有疑惑:OCP证书是永久有效的吗?需要更新吗? Oracle官方明确规定:OCP证书一经获得,终身有效。无…...
服务器本地搭建
socket函数 它用于创建一个新的套接字(socket)。 函数原型 #include <sys/socket.h> int socket(int domain, int type, int protocol);参数解释 domain:它指定了通信所使用的协议族,常见的取值如下: AF_INET…...
调节磁盘和CPU的矛盾——InnoDB的Buffer Pool
缓存的重要性 无论是用于存储用户数据的索引【聚簇索引、二级索引】还是各种系统数据,都是以页的形式存放在表空间中【对一个/几个实际文件的抽象,存储在磁盘上】如果需要访问某页的数据,就会把完整的页数据加载到内存中【即使只访问页中的一…...
[dp12_回文子串] 最长回文子串 | 分割回文串 IV
目录 1.回文子串 题解 2.最长回文子串 题解 3.分割回文串 IV 题解 dp[i][j] 表示 s 字符串 [i, j] 的子串,是否是回文串( 建始末表) 将两个 for 循环的结果,借助二维 dp 来存 1.回文子串 链接:647. 回文子串 给你一个字符…...
分布式应用架构的演变
整体演变过程 第一阶段:单一应用架构 单一应用架构,是把所有服务都放在一个项目中,进行打包部署到服务器上,如果流量特别大的话,就在另外的服务器上部署相同的功能模块用来分摊流量。但是这样的话,一旦有某…...
zephyr RTOS 中 bt_le_adv_start函数的功能应用
目录 概述 1 功能 1.1 功能介绍 1.2 函数原型 2 参数说明 2.1 广播参数(bt_le_adv_param) 2.2 常用广播选项(options) 2.3 广播数据(bt_data) 3 示例代码 3.1 启动可连接广播(带设备名…...
双按键控制LED(中断优先级)
1.启动时,两个LED灯熄灭,1秒钟后(定时器实现),LED自动点亮; 2.按键1按下后,通过中断int0把两个LED熄灭5s时间,int0优先级设置为最高(优先级必须设置,设置后才…...
美团即时零售大动作,将独立的闪购将会改变什么?
4月12日上午,美团核心本地商业CEO王莆中在社交媒体上发文,宣布美团将在下周正式发布即时零售品牌,标志着美团将进一步发展即时零售业务。 首先,从市场格局角度来看,美团将独立的闪购品牌推出,会进一步加剧…...
如何安装git?
以下是 Windows、macOS 和 Linux 系统安装 Git 的详细步骤: 一、Windows 系统安装 Git 下载安装包 访问 Git 官网下载页,点击下载 Windows 版安装程序(如 Git-2.45.1-64-bit.exe)。 运行安装程序 安装选项: 选择安装路…...
Ubuntu上docker、docker-compose的安装
今天来实践下Ubuntu上面安装docker跟docker-compose,为后面安装dify、fastgpt做准备。 一、安装docker sudo apt-get updatesudo apt-get install docker.io 然后系统输入 docker --version 出现下图即为docker安装成功。 二、安装docker-compose 我先看下系统…...
ubuntu如何设置静态ip
服务器有时是通过dhcp动态获取ip的,有时出于远程登录方便的考虑,会将其设置为静态ip,以下是设置静态ip的方法 在 Ubuntu 中设置静态 IP 的方法取决于你使用的网络管理工具(如 netplan、NetworkManager 或 ifconfig)。…...
js原型和原型链
js原型: 1、原型诞生的目的是什么呢? js原型的产生是为了解决在js对象实例之间共享属性和方法,并把他们很好聚集在一起(原型对象上)。每个函数都会创建一个prototype属性,这个属性指向的就是原型对象。 …...
大数据 - 2. Hadoop - HDFS
前言 HDFS:分布式文件系统 为什么海量数据需要分布式存储技术? 文件过大时,单台服务器无法承担,要靠数量来解决。数量的提升带来的是网络传输、磁盘读写、CPU、内存等各方面的提升。 众多的服务器一起工作,如何保证…...
嵌入式硬件常用总线接口知识体系总结和对比
0.前言 在嵌入式工程实现中,多多少少我们都使用过总线,各种各样的总线应用于不同场合,不同场景有不同的优势,但是我们在作为工程师过程中在如何选择项目合适的总线,根据什么来选?需要我们对项目全局和总线特征有所了解,本文目的就是对比多种总线的关键特征 我们在聊到…...
prime 1 靶场笔记(渗透测试)
环境说明: 靶机prime1和kali都使用的是NAT模式,网段在192.168.144.0/24。 Download (Mirror): https://download.vulnhub.com/prime/Prime_Series_Level-1.rar 一.信息收集 1.主机探测: 使用nmap进行全面扫描扫描,找到目标地址及…...
(二十四)安卓开发中的AppCompatActivity详解
在安卓开发中,AppCompatActivity 是一个非常核心的类,它继承自 Activity,并通过 Android Support Library(现已迁移至 AndroidX)提供了对 ActionBar 和 Material Design 的支持。它的主要作用是帮助开发者在不同版本的…...
AI大模型+全渠道整合:容联七陌智能客服赋能制造业升级
自《中国制造2025》战略提出以来,制造业的智能化发展进入快车道,但行业仍面临劳动力成本上升、供应链不透明、客户需求碎片化等挑战。企业亟需通过技术手段实现降本增效,而智能化客户服务成为关键突破口。 与此同时,客服行业正经历…...
Vue 技术解析:从核心概念到实战应用
Vue.js 是一款流行的渐进式前端框架,以其简洁的 API、灵活的组件化结构和高效的响应式数据绑定而受到开发者的广泛欢迎。本文将深入解析 Vue 技术的核心概念、原理和应用场景,帮助开发者更好地理解和使用 Vue.js。 一、Vue 的设计哲学与核心概念 &…...
中英文提示词对AI IDE编程能力影响有多大?
深度剖析 🧠:中英文提示词对AI IDE编程能力影响有多大?(附实战建议) 作者:AI助手 | 日期:2023-10-27 | 标签:AI, IDE, Prompt Engineering, LLM, 编程效率 摘要:随着 AI…...
ARM处理器程序烧写方式
一、烧写原理 无论是jtag还是串口烧写,本质都是先通过上位机(keil 或者flymcu或者芯片官方上位机等烧写bin的上位机)往mcu的ram里烧写一段代码即.FLM文件,这段代码在上位机(keil体现在配置项里,flymcu应该…...
AI 项目详细开发步骤指南
AI 项目详细开发步骤指南 一、环境搭建详解 1. JDK 17 安装与配置 Windows 系统安装步骤: 访问 Oracle 官网下载 JDK 17 安装包:https://www.oracle.com/java/technologies/downloads/#java17下载 Windows x64 Installer 版本双击安装包,…...
文本纠错WPS插件:提升文档质量的利器
文本纠错WPS插件:提升文档质量的利器 引言 在数字化办公日益普及的今天,文档的质量直接影响到我们的工作效率和形象。一个错别字或标点错误,可能就会让我们的专业形象大打折扣。今天,我要向大家介绍一款强大的WPS插件——文本纠…...
Node.js 模块包的管理和使用是
一、模块包的概念 1.模块分类: 核心模块:Node.js 内置模块(如 fs, http, path),无需安装直接引用。 本地模块:开发者自己编写的模块文件,通过相对路径引入。 第三方模块:通过 npm…...
腾讯云golang一面
go垃圾回收机制 参考自:https://zhuanlan.zhihu.com/p/334999060 go 1.3 标记清除法 缺点 go 1.5 三色标记法 屏障机制 插入屏障 但是如果栈不添加,当全部三色标记扫描之后,栈上有可能依然存在白色对象被引用的情况(如上图的对象9). 所以要对栈重新进行三色标记扫…...
【Three.js基础学习】35.Particles Cursor Animation Shader
前言 关于着色器应用和画布,实现黑白色照片动态效果 一、代码 script.js import * as THREE from three import { OrbitControls } from three/addons/controls/OrbitControls.js import particlesVertexShader from ./shaders/particles/vertex.glsl import p…...
安卓性能调优之-掉帧测试
掉帧指的是某一帧没有在规定时间内完成渲染,导致 UI 画面不流畅,产生视觉上的卡顿、跳帧现象。 Android目标帧率: 一般情况下,Android设备的屏幕刷新率是60Hz,即每秒需要渲染60帧(Frame Per Second, FPS&a…...
六、分布式嵌入
六、分布式嵌入 文章目录 六、分布式嵌入前言一、先要配置torch.distributed环境二、Distributed Embeddings2.1 EmbeddingBagCollectionSharder2.2 ShardedEmbeddingBagCollection 三、Planner总结 前言 我们已经使用了TorchRec的主模块:EmbeddedBagCollection。我…...
13-scala模式匹配
模式匹配是检查某个值(value)是否匹配某一个模式的机制,一个成功的匹配同时会将匹配值解构为其组成部分。它是Java中的switch语句的升级版,同样可以用于替代一系列的 if/else 语句。 语法 一个模式匹配语句包括一个待匹配的值&a…...
Multisim使用说明详尽版--(2025最新版)
一、Multisim14前言 1.1、主流电路仿真软件 1. Multisim:NI开发的SPICE标准仿真工具,支持模拟/数字电路混合仿真,内置丰富的元件库和虚拟仪器(示波器、频谱仪等),适合教学和竞赛设计。官网:艾…...
试一下阿里云新出的mcp服务
前言 MCP这段时间的发展可谓是如火如荼,各种教程也是层出不穷,基本的教程都是如何集成各类型的mcp(比如高德地图)到开发工具(比如cursor),效果很好,但是有个问题就是,配置教程较为繁琐。 阿里云悄然上线的mcp 今天早上…...
正弦波有效值和平均值(学习笔记)
一个周期的正弦波在坐标轴上围的面积有多大? 一般正弦波以 y Asin(wx)表示,其中A为振幅,W为角速度。周期T 2π/w; 确定积分区间是x 0,到x 2π。 计算绝对值积分: 变量代还:wx θ,dx dθ…...
科研软件分享
这个帖子不定期更新,分享博主自己使用的很好用的科研软件 1 connectedpaper Connected Papers | Find and explore academic papers 2 Semantic Scholar...
Python(12)深入解析Python参数传递:从底层机制到高级应用实践
目录 一、参数传递的编程哲学1.1 参数传递的本质1.2 参数传递类型矩阵 二、参数传递核心规则2.1 位置参数与关键字参数2.2 可变参数处理 三、参数传递高级特性3.1 类型约束与提示3.2 参数内存优化 四、参数传递工程实践4.1 防御性参数校验4.2 参数依赖注入 五、参数传递性能优化…...
MVCC是什么?MVCC的作用是什么?MVCC实现方式有哪些?
MVCC(多版本并发控制)详解 一、MVCC是什么? MVCC(Multi-Version Concurrency Control,多版本并发控制)是数据库管理系统中的一种并发控制机制,它通过维护数据的多个版本来实现非阻塞读和高并发…...
007.Gitlab CICD缓存与附件
文章目录 缓存与产物缓存与产物概述 同分支不同job数据共享默认数据共享不同 Job 数据共享 不同分支相同job数据共享跨分支同job数据共享 不同分支不同job数据共享跨分支跨job数据共享 将文件/夹保存为附件产物介绍创建产物跨job共享产物 缓存与产物 缓存与产物概述 缓存是一…...
A006-基于Selenium和JMeter的吉屋web端的自动化测试设计与实现
产出:自动测试脚本测试用例开题报告自动化测试报告论文jmeter性能测试 --------------------**论文主要内容***----- 第1章 吉屋web端需求分析 1.1 吉屋web端功能需求分析 由于社会对知识获取的需求不断增长,海量繁多的房屋信息已难以依靠传统人工高效…...
图像预处理-边缘填充,透视变换和色彩空间基础
一.边缘填充 一般来图片操作之后会有空区域,就是对空出来的区域进行了像素值的填充,(0,0,0)也就是黑色像素值的填充。 # 默认黑色填充 import cv2 as cvimg cv.imread(../images/lena.png) # 先让原图旋转45度 M cv.getRotatio…...
数字化赋能,众趣科技助力智慧园区深化管理运营能力
数字化、网络化和智能化,被公认为是未来社会发展的大趋势。随着全球物联网、云计算等新一代信息技术不断成熟,传统的招商管理运营模式难以满足园区当下所需,以“园区互联网”为理念的“智慧园区”应运而生,同时融入社交、移动、物…...
《AI大模型应知应会100篇》 第16篇:AI安全与对齐:大模型的灵魂工程
第16篇:AI安全与对齐:大模型的灵魂工程 摘要 在人工智能技术飞速发展的今天,大型语言模型(LLM)已经成为推动社会进步的重要工具。然而,随着这些模型能力的增强,如何确保它们的行为符合人类的期…...
MCP的另一面
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
Golang|锁相关
文章目录 并发安全性与原子操作读写锁分布式锁 并发安全性与原子操作 普通数据类型在并发读写中是会出现问题的,有时候操作会被吞,导致脏写,比如上面n加了两次应该为2,但是由于并发,n最后还是只加了一次 读写锁 sync.…...
大模型面经 | 介绍一下大模型微调方法Prefix Tuning、Prompt Tuning、P-Tuning和P-Tuning v2
大家好,我是皮先生!! 今天给大家分享一些关于大模型面试常见的面试题,希望对大家的面试有所帮助。 往期回顾: 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题一) 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题二) 大模型面经 | 春招、秋招算法…...
JMeter的高并发和高频率和分布式
性能测试 模拟各种正常的、峰值的测试环境,检测程序的各项性能指标是否能够达标 高并发 JMeter中内置了定时器,可以实现时间模式相关的性能测试 需求1:同一时刻100个同学去访问学生管理系统的查询所有学院信息功能,统计高并发情况下平均响…...
设计模式-模板模式
设计模式-模板模式,不用重复写大的逻辑,父类定义好不变的模板方法,子类使用,当框架是父类的框架时可以继承...
手机端可部署的开源大模型; 通义千问2.5训练和推理需要的内存和外存
手机端可部署的开源大模型 目录 手机端可部署的开源大模型Qwen2.5 0.5B 7b 推理采用手机内存需要多少Qwen2.5 0.5B不同量化精度下的内存需求Qwen2.5 7B不同量化精度下的内存需求通义千问2.5训练和推理需要的内存和外存推理阶段1. Qwen2.5 - 7B2. Qwen2.5 - 14B3. Qwen2.5 - 72B…...
记录学习的第二十五天
今天终于又开始更新了。实在是星期六的蓝桥杯给了我一个大大的打击,今天终于好不容易缓过来了,可以好好学算法了。 还是老规划,力扣的每日一题。不过今天的每日一题我之前做过了,就又提交了一次来签到。 之后三道哈希表题目。 我一…...
leetcode03 -- 武汉旅游查询系统
武汉旅游查询系统 1 界面展示 1.首页地图界面 2.查找功能 在查找框内输入查找的景点名称 查找到的景点在地图上进行定位,右侧展示景点的详细信息。 3.添加景点功能 在地图上点击某个位置,系统弹出一个输入框供用户填写景点的名称和描述。 在弹出的输入框中输入景点名…...
R 语言科研绘图第 39 期 --- 饼状图-旭日
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
R语言操作练习2
加载tidyr包,探索table1,table2,table3,table4a, table4b维度和结构 将table4a进行宽转长操作,列名为country,year,population 基于题2,以country为横坐标,population为纵坐标,fillyear,采用dodge形式作柱…...