UML

统一建模语言(UML)是一种标准化的建模语言,用于帮助系统和软件开发人员指定、可视化、构建和记录软件系统的工件,以及业务建模和其他非软件系统。
UML 主要使用图形符号来表达软件项目的设计,帮助项目团队进行沟通、探索潜在设计,并验证软件的架构设计。
1. UML 的历史背景
UML 的起源可以追溯到 20 世纪 90 年代初期,当时有多种面向对象的建模方法并存,如 Booch 方法、OMT(对象建模技术)和 OOSE(面向对象的软件工程)。
1994 年,Grady Booch、James Rumbaugh 和 Ivar Jacobson 三位专家联合起来,整合了各自的方法,形成了统一的方法,最终发展为 UML。
1997 年,UML 被对象管理组织(OMG)采纳为标准建模语言,并在 2005 年被国际标准化组织(ISO)接受为标准。
2. UML 的主要图表类型
UML 图表分为两大类:结构图和行为图。
以下是几种主要的 UML 图表类型:
- 用例图:描述系统的功能需求,展示系统与外部用户(参与者)之间的交互。
- 类图:展示系统中的类、接口及其相互关系,描述系统的静态结构。
- 序列图:描述对象之间发送消息的时间顺序,展示多个对象之间的动态协作。
- 活动图:描述系统的动态行为,展示活动的顺序和条件。
- 状态图:描述对象在其生命周期中所经历的状态及其状态转换。
2.1. 用例图
2.2. 组成部分:
- 参与者(Actor):外部用户或系统,与系统进行交互。
- 用例(Use Case):系统提供的功能或服务。
- 关系(Relationships):参与者和用例之间的交互关系。
2.3. 用途:
用例图用于捕捉系统的功能需求,帮助识别不同的用户和他们的需求,便于开发人员理解系统的功能和操作。
2.4. 示例:在线购物系统的用例图
+-------------------+
| 用户 |
+-------------------+
|
v
+-------------------+
| 浏览商品 |
+-------------------+
|
v
+-------------------+
| 添加到购物车 |
+-------------------+
|
v
+-------------------+
| 结账 |
+-------------------+
|
v
+-------------------+
| 支付 |
+-------------------+
2.5. 类图
2.6. 组成部分:
- 类(Class):包含类名、属性和方法的矩形。
- 关系(Relationships):包括依赖、关联、聚合、组合和继承等关系。
2.7. 用途:
类图用于描述系统的静态结构,展示类及其属性、方法和相互关系,帮助开发人员理解系统的组成和设计。
2.8. 示例:在线购物系统的类图
+-------------------+
| 用户 |
+-------------------+
| - 用户名 |
| - 密码 |
+-------------------+
| + 登录() |
| + 注册() |
+-------------------+
|
v
+-------------------+
| 购物车 |
+-------------------+
| - 商品列表 |
| - 总价 |
+-------------------+
| + 添加商品() |
| + 移除商品() |
+-------------------+
|
v
+-------------------+
| 订单 |
+-------------------+
| - 订单号 |
| - 订单状态 |
+-------------------+
| + 生成订单() |
| + 取消订单() |
+-------------------+
2.9. 序列图
2.10. 组成部分:
- 对象(Object):参与交互的实体。
- 生命线(Lifeline):表示对象存在的时间段。
- 消息(Message):对象之间传递的信息。
2.11. 用途:
序列图用于描述对象之间的交互顺序,展示消息的发送和接收顺序,帮助理解系统的动态行为。
2.12. 示例:用户登录流程的序列图
用户 系统
| |
| 输入用户名和密码 |
|------------>|
| | 验证用户名和密码
|<------------|
| 登录成功/失败 |
|------------>|
2.13. 活动图
2.14. 组成部分:
- 活动(Activity):表示执行的操作。
- 决策节点(Decision Node):表示条件分支。
- 开始节点(Start Node)和结束节点(End Node):表示流程的开始和结束。
2.15. 用途:
活动图用于描述系统的动态行为,展示活动的顺序和条件,帮助理解业务流程和操作步骤。
2.16. 示例:订单处理流程的活动图
+-------------------+
| 开始 |
+-------------------+
|
v
+-------------------+
| 选择商品 |
+-------------------+
|
v
+-------------------+
| 添加到购物车 |
+-------------------+
|
v
+-------------------+
| 结账 |
+-------------------+
|
v
+-------------------+
| 支付 |
+-------------------+
|
v
+-------------------+
| 生成订单 |
+-------------------+
|
v
+-------------------+
| 结束 |
+-------------------+
3. 常用的 UML 绘图工具
3.1. Draw.io
3.2. 特点:
- 免费在线工具,支持多种图表类型。
- 界面简洁,易于使用。
- 支持与 Google Drive、OneDrive 等云存储集成。
3.3. 使用场景:
适用于个人和小型团队的快速绘图和协作。
3.4. Lucidchart
3.5. 特点:
- 强大的在线绘图工具,支持团队协作。
- 提供丰富的模板和图表类型。
- 支持与多种第三方工具集成,如 Google Workspace、Microsoft Office 等。
3.6. 使用场景:
适用于需要高级功能和团队协作的中大型项目。
3.7. StarUML
3.8. 特点:
- 专业的 UML 建模工具,支持多种 UML 图表。
- 提供插件扩展功能,支持代码生成和逆向工程。
- 跨平台支持,适用于 Windows、macOS 和 Linux。
3.9. 使用场景:
适用于专业软件开发团队和需要复杂建模功能的项目。
通过以上工具和图表,开发人员可以更好地理解和设计复杂的软件系统,提高开发效率和质量。