在UML中,图表大致可分为两大类:结构图和行为图。以下是14种图表类型及其分类的简要说明:
结构图(静态建模):
- 类图(结构):
- 表示系统的静态结构,包括类、属性和关系。
- 对象图(结构):
- 展示某一特定时间点的实例快照,描绘对象及其关系。
- 包图(结构):
- 将元素组织成包,提供系统组织的高层次视图。
- 组件图(结构):
- 关注系统组件及其交互,对系统架构很有用。
- 组合结构图(结构):
- 表示类的内部结构,包括部分、端口和连接器。
- 部署图(结构):
- 描绘系统中组件和节点的物理部署。
行为图(动态建模):
- 用例图(行为):
- 从用户的角度展示系统功能,显示参与者和用例。
- 活动图(行为):
- 模拟系统内活动和动作的流程,包括并行和条件行为。
- 状态机图 (行为):
- 将对象或系统的行为表示为具有状态和转换的有限状态机。
- 顺序图 (行为):
- 展示对象随时间的交互,强调消息的顺序。
- 通信图 (行为):
- 强调对象之间的关系以及它们如何协作完成任务。
- 交互概览图 (行为):
- 结合活动图和顺序图,提供复杂交互的概览。
- 时序图 (行为):
- 关注交互的时间约束,包括生命线和事件。
- 配置文件图 (结构)
- 一种特殊的UML图,通过定义自定义构造型、标记值和约束来扩展UML元模型。配置文件图是UML扩展机制的一部分,可帮助您根据特定的建模需求或领域定制UML。
这些UML图在建模软件系统时具有不同的用途,结构图侧重于静态方面,行为图则关注动态方面。选择合适的图类型取决于您希望表示或传达的系统特定方面。
区分结构图与行为图
结构图提供系统的静态视图,强调其组件、关系和组织结构;而行为图则提供动态视图,关注系统运行时的行为、交互和过程。这两类图各有不同的用途,对于全面建模和文档化软件系统至关重要,能够涵盖其静态和动态两个方面。
以下表格将14种UML图分为两类,并为每种提供一个简要示例:
结构图(静态建模):
| 图类型 | 描述 | 示例 |
|---|---|---|
| 类图 | 表示静态类结构及其关系。 | 示例:使用诸如图书, 作者,以及图书馆. |
| 对象图 | 显示特定时刻的实例及其关系。 | 示例:显示特定的书籍以及成员对象在图书馆系统中。 |
| 包图 | 将元素组织成包或命名空间。 | 示例:将相关类分组到一个图书馆管理包中。 |
| 组件图 | 描绘系统的物理或逻辑组件及其连接。 | 示例:在Web系统中展示数据库、Web服务器和客户端应用程序等软件组件。 |
| 组合结构图 | 通过部件、端口和连接器详细说明类的内部结构。 | 示例:展示包含CPU、内存和主板等组件的计算机系统的内部结构。 |
| 部署图 | 显示组件在节点或服务器上的物理部署。 | 示例:表示Web服务器软件组件如何部署在物理服务器上。 |
行为图(动态建模):
| 图类型 | 描述 | 示例 |
|---|---|---|
| 用例图 | 定义参与者及其通过用例与系统之间的交互。 | 示例:建模客户如何与ATM系统交互以取款。 |
| 活动图 | 描绘系统中的工作流程、过程和动作,包括分支和并行性。 | 示例:展示处理在线订单所涉及的步骤。 |
| 状态机图 | 将对象或系统的行為表示为具有状态和转换的有限状态机。 | 示例:建模交通信号系统的状态和转换。 |
| 顺序图 | 通过消息在时间上展示对象或组件之间的交互。 | 示例:展示用户在登录过程中与数据库系统之间消息的顺序。 |
| 通信图 | 关注系统中对象之间的交互及其协作。 | 示例:可视化聊天应用程序中对象如何交换消息。 |
| 交互概览图 | 结合活动图和顺序图的元素,提供复杂交互的概览。 | 示例:简化零售系统中复杂的订单处理工作流程。 |
| 时序图 | 指定交互的时间约束,包括生命线和事件。 | 示例:展示网络中设备之间数据传输的时间。 |
这些表格将每个UML图分类为“结构图”(静态建模)或“行为图”(动态建模)类别,并为每种类型提供简要描述和示例场景。
UML图在软件设计中的多方面作用
软件设计中的不同类型的图表具有特定用途,并为软件系统提供多种视角。以下是需要不同类型图表的关键原因:
- 清晰性和沟通:软件项目中的不同利益相关者,包括开发人员、架构师、测试人员和业务分析师,对系统理解的需求各不相同。使用不同类型的图表有助于将信息针对其具体角色进行定制,从而提高沟通效率。
- 抽象层次:软件系统复杂,不同方面需要在不同抽象层次上进行考虑。一些图表,如类图,提供高层次的结构视图,而其他图表,如顺序图,则提供详细的动态行为洞察。
- 问题解决:软件设计和开发中的不同问题需要不同的解决方法。例如,在建模系统的静态结构时,类图更为合适,而顺序图则适用于理解动态行为。
- 系统理解: 不同的图表提供了观察系统的不同视角。这有助于全面理解系统,包括其架构、行为、交互以及部署。
- 文档: 全面的文档对于软件项目至关重要。使用各种类型的图表可以创建结构清晰、可视化强的文档,便于开发过程中不同阶段的团队成员查阅。
- 需求分析: 用例图和活动图对于捕捉和分析系统需求及工作流程非常有价值。它们有助于确保软件符合用户需求。
- 架构设计: 组件图和部署图对于架构设计至关重要。它们有助于规划系统的结构以及其在现实环境中的部署方式。
- 测试与验证: 时序图和状态机图有助于设计测试用例,并验证系统行为是否符合需求。
- 决策制定: 不同类型的图表提供不同的洞察。在决策过程中,架构师和项目经理可以利用这些图表评估权衡,做出明智选择。
- 维护便利性: 图表有助于软件的维护与演进。当开发人员需要修改或扩展系统时,这些可视化表示可作为理解现有结构和行为的宝贵参考。
总结
软件设计中UML图表的多样性适应了软件系统的多面性。每种图表类型都有其特定用途,并提供独特的视角,使其成为软件开发各个阶段——从初步设计到实现、测试和维护——不可或缺的工具。











