UML2.0中的14种图简介,并借助AI生成UML图
UML2.0中的14种图简介,并借助AI生成UML图
- 绘制流程
- 结构图(Structure Diagrams)
- 1. 类图(Class Diagram):
- 2. 对象图(Object Diagram):
- 3. 组件图(Component Diagram,构件图):
- 4. 部署图(Deployment Diagram):
- 5. 复合结构图(Composite Structure Diagram,组合结构图):
- 6. 包图(Package Diagram):
- 7. 配置图(Profile Diagram,轮廓图):
- 行为图(Behavior Diagrams)
- 8. 用例图(Use Case Diagram):
- 9. 活动图(Activity Diagram):
- 10. 状态图(State Machine Diagram):
- 11. 序列图(Sequence Diagram):
- 12. 通信图(Communication Diagram,协作图):
- 13. 交互概览图(Interaction Overview Diagram):
- 14. 时序图(Timing Diagram):
- 应用场景
UML(统一建模语言)2.0中定义了14种不同类型的图表,用于从不同角度描述系统。这些图表分为结构图和行为图两大类。
绘制流程
1、大模型生成UML图的草图,可以是ASCII表示,如图:
用户 界面 数据库
| | | |--登录请求-------->| | | |---验证用户信息---->| | |<--返回验证结果-----| |<--显示登录结果----| | | | |
2、使用大模型根据草图,生成PlantUML代码:
@startuml skinparam sequenceArrowThickness 2
skinparam sequenceParticipant underline actor 用户
boundary 界面
database 数据库 用户 -> 界面: 登录请求
activate 界面
界面 -> 数据库: 验证用户信息
activate 数据库
数据库 --> 界面: 返回验证结果
deactivate 数据库
界面 --> 用户: 显示登录结果
deactivate 界面 @enduml
3、将代码添加到PlantUML在线编辑网站
可使用 PlantUML 绘制 UML 中的各种类型的图表:https://plantuml.com/zh/,可以编辑预览预览UML图,之后就可以下载了!
PlantUML是一个通用性很强的工具,可以快速、直接地创建各种图表,如序列图、用例图、类图、对象图、活动图、组件图、部署图、状态图、时序图等,其他图支撑不太好,需要使用前面的图进行模拟。
结构图(Structure Diagrams)
结构图主要描述系统的静态结构:
1. 类图(Class Diagram):
- 显示系统中的类、接口及它们之间的关系
- 展示属性、方法和关系(如继承、实现、依赖等)
- 是UML中最常用的图表之一
ASCII图示:
+--------------------+
| Customer |
+--------------------+
| -name: String |
| -id: int |
+--------------------+
| +getName(): String |
| +setName(String) |
+--------------------+ ▲ |
+--------------------+
| VIPCustomer |
+--------------------+
| -level: int |
+--------------------+
| +getDiscount() |
+--------------------+
PlantUML生成图:
@startuml class Customer { -name: String -id: int +getName(): String +setName(String)
} class VIPCustomer { -level: int +getDiscount()
} Customer <|-- VIPCustomer @enduml
2. 对象图(Object Diagram):
- 类图的实例,显示系统某一时刻的对象状态
- 表示对象之间的实际关系和具体属性值
ASCII图示:
+--------------------+
| customer: Customer |
+--------------------+
| name = "张三" |
| id = 12 |
+--------------------+
PlantUML生成图:
@startuml
object 对象1
对象1 : name = "张三"
对象1 : id = 12object "第 2 个对象" as o2
o2 : name = "李四"
o2 : id = 23
@enduml
3. 组件图(Component Diagram,构件图):
- 展示系统的组件及其依赖关系
- 表示软件系统的物理结构和组织
ASCII图示:
+-----------------+ +-----------------+
| <<组件>> | | <<组件>> |
| Web UI | | 业务逻辑层 |
+-----------------+ +-----------------+ | | | <<使用>> | <<使用>> v v
+-----------------+ +-----------------+
| <<组件>> | | <<组件>> |
| 用户服务 | | 数据访问层 |
+-----------------+ +-----------------+ | | <<使用>> v +-----------------+ | <<组件>> | | 数据库 | +-----------------+
PlantUML生成图:
@startuml skinparam component { BackgroundColor<<组件>> White BorderColor Black
} [Web UI] <<组件>> as webui
[业务逻辑层] <<组件>> as business
[用户服务] <<组件>> as userService
[数据访问层] <<组件>> as dataAccess
[数据库] <<组件>> as database webui -down-> userService : <<使用>>
business -down-> dataAccess : <<使用>>
dataAccess -down-> database : <<使用>> @enduml
4. 部署图(Deployment Diagram):
- 描述系统运行时的物理架构
- 显示硬件节点、软件组件的分布及它们的关系
ASCII图示:
+---------------+ +---------------+
| Web Server | | App Server |
| +--------+ | | +--------+ |
| |Web App | |------>| |Business| |
| +--------+ | | |Logic | |
+---------------+ | +--------+ | +-------+-------+ | v +---------------+ | Database | | Server | +---------------+
PlantUML生成图:
@startuml node "Web Server" { component "Web App"
} node "App Server" { component "Business Logic"
} node "Database Server" { database "Database"
} "Web Server" --> "App Server"
"App Server" --> "Database Server" @enduml
5. 复合结构图(Composite Structure Diagram,组合结构图):
- 展示类或组件的内部结构
- 显示各部分如何相互协作
ASCII图示:
+-------------------------------+
| 电脑系统 |
| |
| +-------+ +---------+ |
| | CPU |<------>| 内存 | |
| +-------+ +---------+ |
| ^ ^ |
| | | |
| v v |
| +-------+ +---------+ |
| | 硬盘 |<------>| 网卡 | |
| +-------+ +---------+ |
+-------------------------------+
PlantUML生成图:
@startuml package "电脑系统" { component CPU component "内存" component "硬盘" component "网卡" CPU <--> "内存" CPU <--> "硬盘" "内存" <--> "网卡" "硬盘" <--> "网卡"
} @enduml
6. 包图(Package Diagram):
- 显示系统的包结构和包之间的依赖关系
- 帮助管理大型系统的组织结构
ASCII图示:
+----------------+ +----------------+
| UI包 | | 业务逻辑包 |
| |---->| |
+----------------+ +----------------+ | | | | v v
+----------------+ +----------------+
| 工具包 | | 数据访问包 |
| |<----| |
+----------------+ +----------------+
PlantUML生成图:
@startuml package "UI包" as UI
package "业务逻辑包" as BL
package "工具包" as Tools
package "数据访问包" as DA UI --> BL
UI --> Tools
BL --> DA
DA --> Tools @enduml
7. 配置图(Profile Diagram,轮廓图):
- 用于定义UML的扩展机制
- 允许开发者定制UML以适应特定领域
ASCII图示:
<<stereotype>>
+----------------+
| 移动设备 |
+----------------+
| +安全级别: int |
+----------------+
PlantUML生成图:
@startuml skinparam stereotypeCBackgroundColor #ADD8E6 class "移动设备" <<stereotype>> { + 安全级别 : int
} @enduml
行为图(Behavior Diagrams)
行为图主要描述系统的动态行为:
8. 用例图(Use Case Diagram):
- 从用户角度描述系统功能
- 展示系统与外部参与者的交互
ASCII图示:
+-----------------------------+
| ATM系统 |
| |
| +----------+ |
| | | |
| | 取款 |<------+ |
| | | | |
| +----------+ | |
| | |
| +----------+ | |
| | | | |
| | 查询余额 |<------+------ 客户
| | | | |
| +----------+ | |
| | |
| +----------+ | |
| | | | |
| | 存款 |<------+ |
| | | |
| +----------+ |
| |
+-----------------------------+
PlantUML生成图:
@startuml left to right direction actor 客户 as customer rectangle "ATM系统" { usecase "取款" as withdraw usecase "查询余额" as checkBalance usecase "存款" as deposit
} customer --> withdraw
customer --> checkBalance
customer --> deposit @enduml
9. 活动图(Activity Diagram):
- 描述业务流程、算法或操作的工作流程
- 类似于流程图,但支持并行行为建模
ASCII图示:
+----------------+ | 开始购物 | +----------------+ | v +----------------+ | 浏览产品 | +----------------+ | v +----------------+ | 选择产品 | +----------------+ | v +----------------+ | 加入购物车 | +----------------+ | v +----------------+ | 是否继续购物? | +----------------+ / \[是] / \ [否] / \| v | +----------------+ | | 结算 | | +----------------+ | | | v | +----------------+ | | 输入地址 | | +----------------+ | | | v | +----------------+ | | 选择支付 | | +----------------+ | | | v | +----------------+ | | 确认订单 | | +----------------+ | | | v | +----------------+ | | 支付成功 | | +----------------+ | | v v
+----------------+ +----------------+
| 继续浏览 | | 结束购物 |
+----------------+ +----------------+
PlantUML生成图:
@startuml start
:开始购物; repeat :浏览产品; :选择产品; :加入购物车; :是否继续购物?;
backward:是;
repeat while (继续购物?) :结算;
:输入地址;
:选择支付;
:确认订单;
:支付成功;
:结束购物; stop @enduml
10. 状态图(State Machine Diagram):
- 描述对象在生命周期内的状态变化
- 展示事件如何触发状态转换
ASCII图示:
+----------+ 注册 +----------+ | 未注册 |-------->| 待激活 | +----------+ +----------+ | | 激活 v +----------+ 冻结 +----------+ | 已冻结 |<--------| 正常 | +----------+ +----------+ | ^ | | | 解冻 | +-------------------->+
PlantUML生成图:
@startuml [*] --> 未注册 未注册 --> 待激活 : 注册
待激活 --> 正常 : 激活
正常 --> 已冻结 : 冻结
已冻结 --> 正常 : 解冻 @enduml
11. 序列图(Sequence Diagram):
- 展示对象之间的交互顺序
- 强调消息的时间顺序
ASCII图示:
用户 界面 数据库 | | | |--登录请求-------->| | | |---验证用户信息---->| | |<--返回验证结果-----| |<--显示登录结果----| | | | |
PlantUML生成图:
@startuml skinparam sequenceArrowThickness 2
skinparam sequenceParticipant underline actor 用户
boundary 界面
database 数据库 用户 -> 界面: 登录请求
activate 界面
界面 -> 数据库: 验证用户信息
activate 数据库
数据库 --> 界面: 返回验证结果
deactivate 数据库
界面 --> 用户: 显示登录结果
deactivate 界面 @enduml
12. 通信图(Communication Diagram,协作图):
- 也称为协作图
- 展示对象之间的交互关系
- 强调对象之间的组织结构而非时间顺序
+-------+ | 用户 | +-------+ | 1:登录请求 | v +-------+ +-------+ | 界面 |--2:验证-->| 数据库 | +-------+ +-------+ | 4:显示结果 | v +-------+ | 用户 | +-------+
PlantUML生成图:
@startuml ' 定义对象
object "用户" as user
object "界面" as ui
object "数据库" as db ' 定义对象间的链接和消息
user --> ui : 1: 登录请求
ui --> db : 2: 验证
db --> ui : 3: 返回结果
ui --> user : 4: 显示结果@enduml
13. 交互概览图(Interaction Overview Diagram):
- 结合活动图和序列图的特点
- 展示复杂交互的控制流程
ASCII图示:
+----------------+ | 开始登录 | +----------------+ | v +----------------+ | 验证用户名密码 | +----------------+ | [验证成功] / \/ \
+----------------+ +----------------+
| sd 查询用户权限 | | sd 记录登录失败 |
+----------------+ +----------------+ \ / \ / \ / +----------------+ | 结束登录 | +----------------+
PlantUML生成图:
@startuml:开始登录; :验证用户名密码;if (验证成功?) then (yes):查询用户权限;
else (no):记录登录失败;
endif:验证结束;@enduml
14. 时序图(Timing Diagram):
- 展示对象状态随时间变化的情况
- 特别适用于实时系统的建模
和序列图对比:
特性 | 序列图 | 时序图 |
---|---|---|
主要关注点 | 对象间的消息交互 | 对象的状态变化 |
时间轴方向 | 垂直方向(从上到下) | 水平方向(从左到右) |
表达重点 | 交互顺序和逻辑流程 | 状态持续时间和变化时刻 |
适用场景 | 分析对象协作和消息流 | 分析实时系统中状态变化 |
表示方式 | 生命线和消息箭头 | 状态线和状态变化点 |
ASCII图示:
状态 ^
闲置 |__________ _________ | | |
忙碌 | |______________| | | | +---------------------------------> 时间 收到请求 处理完成
PlantUML生成图:
@startuml
concise "状态 " as Server @0
Server is 闲置 @5
Server is 忙碌 @15
Server is 闲置 @enduml
应用场景
- 需求分析阶段:用例图、活动图
- 系统设计阶段:类图、对象图、序列图
- 实现阶段:组件图、部署图
- 测试阶段:状态图、时序图
对于不同的建模需求,可以选择使用不同类型的UML图表,它们共同帮助开发团队更好地理解、设计和实现软件系统。