目录
UML(统一建模语言)包含九种图,这些图用于可视化、指定、构造和文档化软件系统的不同方面。以下是对这九种UML图的简要概述
一、UML 的主要图表类型
UML图可以分为结构图和行为图两大类:
-
结构图:
-
类图(Class Diagram): 描述系统的静态结构,包括类、属性、操作和关系。
-
对象图(Object Diagram): 展示系统在某一时刻的实例状态。
-
组件图(Component Diagram): 描述软件系统的物理组件及其依赖关系。
-
部署图(Deployment Diagram): 描述软件系统在硬件上的部署情况。
-
-
行为图:
-
用例图(Use Case Diagram): 描述系统的功能需求,从用户角度展示系统如何交互。
-
状态图(State Diagram): 描述对象在其生命周期内的状态变化。
-
活动图(Activity Diagram): 描述业务流程或操作序列。
-
序列图(Sequence Diagram): 描述对象之间的交互顺序。
-
协作图/通信图(Collaboration/Communication Diagram): 描述对象之间的交互,强调对象之间的组织关系。
-
二、用例图(Use Case Diagram)
用例图(Use Case Diagram)是统一建模语言(UML)中的一种重要图表,用于描述系统的功能需求,以及外部参与者如何与系统交互。以下是对用例图的详细解释:
1.用例图的基本概念
-
目的:
-
用例图的主要目的是从用户的角度描述系统的功能。
-
它展示了谁(参与者)可以使用系统,以及他们能做什么(用例)。
-
它有助于在项目早期捕捉和定义系统的需求。
-
-
组成部分:
-
参与者(Actor):
-
代表与系统交互的外部实体,可以是人、其他系统或设备。
-
参与者位于系统边界之外。
-
-
用例(Use Case):
-
代表系统提供的特定功能或服务。
-
用例描述了参与者如何使用系统实现特定目标。
-
-
关联(Association):
-
表示参与者和用例之间的交互关系。
-
它表明参与者可以使用特定的用例。
-
-
系统边界:
-
系统边界,表示系统的范围。系统内为系统提供的功能,系统外为和系统产生交互的参与者。
-
-
包含(Include):
-
用来将多个用例共同的功能提取出来,方便多次调用,减少用例的重复。
-
-
扩展(Extend):
-
表示在特定的条件下,用例将会增加新的行为。
-
-
2.用例图的作用
-
需求分析:
-
帮助识别和定义系统的功能需求。
-
促进开发人员、用户和利益相关者之间的沟通。
-
-
系统设计:
-
为系统设计提供基础,帮助确定系统的边界和功能模块。
-
有助于识别潜在的风险和问题。
-
-
沟通交流:
-
用例图简单直观,便于理解,是项目参与者之间沟通的有效工具。
-
3.用例图的使用场景
-
软件开发的需求分析阶段。
-
业务流程建模。
-
系统功能描述。
4.绘制用例图的注意事项
-
从用户的角度出发,描述系统的功能。
-
用简洁明了的语言描述用例。
-
确保用例图覆盖系统的主要功能。
-
绘制的用例图应该清楚的体现参与者和用例之间的关系。
三、类图(Class Diagram)
类图(Class Diagram)是统一建模语言(UML)中一种重要的静态结构图,它用于描述系统的静态结构,即系统中的类、接口以及它们之间的关系。以下是对类图的详细解释:
1.类图的基本概念
-
目的:
-
展示系统的静态设计视图。
-
描述系统的类、属性、操作(方法)以及它们之间的关系。
-
为系统的实现提供蓝图。
-
-
组成部分:
-
类(Class):
-
代表具有相同属性和行为的对象的集合。
-
在类图中,类通常用矩形框表示,矩形框分为三个部分:类名、属性和操作。
-
-
属性(Attribute):
-
描述类的特征或状态。
-
属性通常包括属性名和类型。
-
-
操作(Operation):
-
描述类的行为或方法。
-
操作通常包括操作名、参数列表和返回类型。
-
-
关系(Relationship):
-
描述类之间的连接。
-
常见的关系包括关联、聚合、组合、继承和实现。
-
-
2.类图的作用
-
系统设计:
-
帮助设计系统的对象模型。
-
提供系统的静态结构视图。
-
-
代码生成:
-
可以作为代码生成的基础。
-
帮助开发人员理解和实现系统。
-
-
沟通交流:
-
是开发人员之间沟通的有效工具。
-
帮助团队成员理解系统的设计。
-
3.类图中的关系
-
关联(Association):
-
表示类之间的连接。
-
可以是一对一、一对多或多对多关系。
-
-
聚合(Aggregation):
-
一种特殊的关联关系,表示“整体-部分”关系。
-
部分对象可以独立于整体对象存在。
-
-
组合(Composition):
-
一种更强的聚合关系,表示“整体-部分”关系。
-
部分对象不能独立于整体对象存在。
-
-
继承(Inheritance):
-
表示类之间的继承关系。
-
子类继承父类的属性和操作。
-
-
实现(Realization):
-
表示类实现接口的关系。
-
类必须实现接口中定义的所有操作。
-
4.类图的使用场景
-
面向对象软件开发的设计阶段。
-
数据库设计。
-
系统架构设计。
四、组件图(Component Diagram)
组件图(Component Diagram)是统一建模语言(UML)中的一种结构图,它主要用于描述软件系统的物理架构,展示软件组件及其之间的依赖关系。以下是对组件图的详细解释:
1.组件图的基本概念
-
目的:
-
描述软件系统的物理结构,即组件之间的组织和依赖关系。
-
展示软件系统的构建块,以及它们如何组合成更大的系统。
-
有助于理解系统的模块化和可重用性。
-
-
组成部分:
-
组件(Component):
-
代表系统中一个可替换的物理部分,通常是一个可执行文件、库或软件包。
-
组件定义了其提供的接口和需要的接口。
-
-
接口(Interface):
-
定义组件提供的服务或需要的服务。
-
提供的接口表示组件可以执行的操作,需要的接口表示组件依赖的其他组件的操作。
-
-
依赖(Dependency):
-
表示一个组件依赖于另一个组件提供的服务。
-
依赖关系表明一个组件的更改可能会影响另一个组件。
-
-
-
端口(Port):
-
组件和接口的连接点。
-
2.组件图的作用
-
系统架构设计:
-
帮助设计系统的物理架构,确定组件的划分和依赖关系。
-
有助于提高系统的模块化和可重用性。
-
-
软件部署:
-
为软件部署提供指导,帮助确定组件的部署位置和依赖关系。
-
-
维护和升级:
-
帮助理解系统的组件结构,便于进行维护和升级。
-
-
可视化:
-
将复杂的软件系统可视化,更易于理解
-
五、部署图(Deployment Diagram)
部署图(Deployment Diagram)是统一建模语言(UML)中的一种图,它描述了软件系统在硬件上的物理部署情况。以下是对部署图的详细解释:
1.部署图的基本概念
-
目的:
-
展示软件系统的物理架构,包括硬件和软件组件的分布。
-
描述软件系统如何在硬件节点上部署和运行。
-
帮助理解系统的硬件需求和部署拓扑。
-
-
组成部分:
-
节点(Node):
-
代表硬件设备或执行环境,如服务器、计算机、移动设备等。
-
节点可以包含软件组件。
-
-
组件(Component):
-
代表软件系统的物理部分,如可执行文件、库、软件包等。
-
组件部署在节点上。
-
-
连接(Connection):
-
表示节点之间的通信链路,如网络连接。
-
制品(Artifact):
-
代表软件开发物理产物,例如,可执行文件,库,配置文件等等。
-
-
2.部署图的作用
-
系统部署规划:
-
帮助规划软件系统的部署方案,确定硬件需求和部署拓扑。
-
有助于优化系统的性能和可靠性。
-
-
硬件配置:
-
为硬件配置提供指导,确保硬件满足软件系统的需求。
-
-
故障排除:
-
帮助理解系统的物理架构,便于进行故障排除和维护。
-
-
可视化:
-
将复杂的软件系统部署可视化,更易于理解。
-
3.部署图的使用场景
-
分布式系统部署。
-
嵌入式系统部署。
-
云计算环境部署。
-
软件系统的发布。
4.部署图的重要意义
-
清晰的物理架构:
-
部署图清晰地展示了软件系统的物理架构,便于理解和沟通。
-
-
优化部署:
-
通过部署图,可以优化软件系统的部署方案,提高系统的性能和可靠性。
-
-
便于维护:
-
部署图有助于进行软件系统的维护和故障排除。
-
六、对象图(Object Diagram)
对象图(Object Diagram)是统一建模语言(UML)中的一种结构图,它展示了系统在某一特定时刻的实例状态。以下是对对象图的详细解释:
1.对象图的基本概念
-
目的:
-
展示系统在某一时刻的静态快照。
-
描述对象实例及其之间的关系。
-
有助于理解类图的实例。
-
-
组成部分:
-
对象(Object):
-
类的实例。
-
在对象图中,对象通常用矩形框表示,包含对象名和类名(可选)。
-
可以显示对象的属性值。
-
-
链接(Link):
-
对象之间的连接,表示对象之间的关系。
-
链接对应于类图中的关联。
-
值(Value):
-
对象实例的属性所对应的值。
-
-
2.对象图的作用
-
验证类图:
-
通过创建对象图,可以验证类图的正确性和完整性。
-
有助于发现类图中的潜在问题。
-
-
理解对象关系:
-
展示特定场景下的对象关系,帮助理解复杂的对象交互。
-
-
测试用例:
-
可以作为测试用例,验证系统在特定状态下的行为。
-
-
可视化:
-
对象图可以帮助我们把复杂的类图所描述的抽象关系,进行实例化,使得我们更容易理解。
-
3.对象图与类图的关系
-
对象图是类图的实例。
-
类图描述类的静态结构,对象图描述对象实例的静态状态。
-
一个类图可以对应多个对象图,每个对象图代表系统在不同时刻的状态。
4.对象图的使用场景
-
测试类图的正确性。
-
展示特定场景下的对象关系。
-
作为测试用例。
-
用于理解复杂的类图。
七、时序图(Sequence Diagram)
时序图(Sequence Diagram),也称为序列图或顺序图,是统一建模语言(UML)中的一种交互图,它主要用于描述对象之间交互的顺序,并强调时间顺序。以下是对时序图的详细解释:
1.时序图的基本概念
-
目的:
-
展示对象之间交互的顺序。
-
强调时间顺序。
-
帮助理解对象之间的动态行为。
-
-
组成部分:
-
对象(Object):
-
参与交互的实体,可以是类的实例、角色或系统。
-
对象用垂直的生命线表示。
-
-
生命线(Lifeline):
-
表示对象存在的周期。
-
生命线是一条垂直的虚线。
-
-
消息(Message):
-
对象之间传递的信息。
-
消息用带箭头的线条表示,箭头方向表示消息传递的方向。
-
-
激活(Activation):
-
表示对象正在执行操作的时间段。
-
激活用生命线上的矩形框表示。
-
-
组合片段(Combined Fragment):
-
用来表示条件逻辑,循环等。
-
-
2.时序图的作用
-
描述交互行为:
-
清晰地展示对象之间的交互顺序和消息传递。
-
-
分析系统行为:
-
帮助分析系统的动态行为,发现潜在的问题。
-
-
设计系统交互:
-
为系统设计提供参考,确定对象之间的交互方式。
-
-
沟通交流:
-
是开发人员之间沟通的有效工具。
-
3.时序图的使用场景
-
描述用例场景:
-
展示用例执行过程中的对象交互。
-
-
分析系统行为:
-
分析系统的动态行为,发现性能瓶颈和潜在问题。
-
-
设计接口:
-
设计对象之间的接口,确定消息传递的方式。
-
-
软件测试:
-
可以辅助测试用例的生成。
-
4.时序图的重要意义
-
清晰的交互顺序:
-
时序图清晰地展示了对象之间的交互顺序,便于理解和分析。
-
-
强调时间顺序:
-
时序图强调时间顺序,有助于发现时序相关的问题。
-
-
便于沟通:
-
时序图是一种直观的图形化表示,便于开发人员之间的沟通。
-
八、协作图(Collaboration Diagram)
协作图(Collaboration Diagram)是统一建模语言(UML)中的一种交互图,它主要用于描述对象之间的交互,并强调对象之间的组织关系。以下是对协作图的详细解释:
1.协作图的基本概念
-
目的:
-
展示对象之间的交互。
-
强调对象之间的组织关系。
-
描述对象如何协同工作以实现特定目标。
-
-
组成部分:
-
对象(Object):
-
参与交互的实体,可以是类的实例、角色或系统。
-
对象用图标表示。
-
-
链接(Link):
-
表示对象之间的连接,表明对象之间存在关系。
-
-
消息(Message):
-
对象之间传递的信息。
-
消息用带箭头的线条表示,箭头方向表示消息传递的方向。
-
消息的序号,表明消息传递的顺序。
-
-
2.协作图的作用
-
描述交互行为:
-
清晰地展示对象之间的交互和消息传递。
-
-
分析系统结构:
-
帮助分析系统的静态结构,发现对象之间的组织关系。
-
-
设计系统交互:
-
为系统设计提供参考,确定对象之间的交互方式。
-
-
沟通交流:
-
是开发人员之间沟通的有效工具。
-
3.协作图与时序图的区别
-
协作图和时序图都用于描述对象之间的交互,但它们强调的方面不同。
-
时序图强调时间顺序,展示消息传递的先后顺序。
-
协作图强调对象之间的组织关系,展示对象如何协同工作。
-
协作图更侧重与对象的相互关系,时序图更侧重与时间顺序。
4.协作图的使用场景
-
描述用例场景:
-
展示用例执行过程中的对象交互。
-
-
分析系统行为:
-
分析系统的动态行为,发现对象之间的组织关系。
-
-
设计接口:
-
设计对象之间的接口,确定消息传递的方式。
-
5.协作图的重要意义
-
清晰的组织关系:
-
协作图清晰地展示了对象之间的组织关系,便于理解和分析。
-
-
强调对象交互:
-
协作图强调对象相互之间的交互,有助于发现对象组织结构中的问题。
-
-
便于沟通:
-
协作图是一种直观的图形化表示,便于开发人员之间的沟通。
-
九、状态图(State Diagram)
状态图(State Diagram),也称为状态机图(Statechart Diagram),是统一建模语言(UML)中的一种行为图,它主要用于描述一个对象在其生命周期内可能经历的各种状态,以及这些状态之间的转换。以下是对状态图的详细解释:
1.状态图的基本概念
-
目的:
-
描述对象在其生命周期内的动态行为。
-
展示对象在不同事件触发下的状态变化。
-
帮助理解和设计复杂对象的行为。
-
-
组成部分:
-
状态(State):
-
对象在某一时刻的条件或情况。
-
状态用圆角矩形表示。
-
-
转换(Transition):
-
状态之间的改变,由事件触发。
-
转换用带箭头的线条表示,箭头方向表示状态转换的方向。
-
-
事件(Event):
-
触发状态转换的外部或内部信号。
-
事件通常与转换相关联。
-
-
动作(Action):
-
状态转换时执行的操作。
-
进入状态时执行的进入动作,退出状态时执行的退出动作,和转换时执行的转换动作。
-
-
初始状态(Initial State):
-
对象生命周期的起点。
-
用实心圆表示。
-
-
终止状态(Final State):
-
对象生命周期的终点。
-
用带圆圈的实心圆表示。
-
-
2.状态图的作用
-
描述动态行为:
-
清晰地展示对象的状态变化和事件触发。
-
-
分析系统行为:
-
帮助分析系统的动态行为,发现潜在的问题。
-
-
设计系统行为:
-
为系统设计提供参考,确定对象的状态转换逻辑。
-
-
沟通交流:
-
是开发人员之间沟通的有效工具。
-
3.状态图的使用场景
-
描述复杂对象的生命周期:
-
例如,描述订单、用户会话或设备的生命周期。
-
-
设计用户界面:
-
描述用户界面元素的状态和转换。
-
-
嵌入式系统开发:
-
描述硬件设备的状态和响应。
-
-
协议设计:
-
描述通讯协议状态转换。
-
4.状态图的重要意义
-
清晰的状态转换:
-
状态图清晰地展示了对象的状态转换,便于理解和分析。
-
-
强调事件驱动:
-
状态图强调事件驱动,有助于发现事件处理中的问题。
-
-
便于沟通:
-
状态图是一种直观的图形化表示,便于开发人员之间的沟通。
-
十、活动图(Activity Diagram)
活动图(Activity Diagram)是统一建模语言(UML)中的一种行为图,它主要用于描述业务流程、工作流程或操作序列。以下是对活动图的详细解释:
1.活动图的基本概念
-
目的:
-
描述业务流程或操作序列。
-
展示活动的顺序和控制流。
-
帮助理解复杂的工作流程。
-
-
组成部分:
-
活动(Activity):
-
代表一个操作或任务。
-
活动用圆角矩形表示。
-
-
动作(Action):
-
动作是活动图内最小的执行单元。
-
动作是不可在细分的。
-
-
控制流(Control Flow):
-
表示活动之间的顺序关系。
-
控制流用带箭头的线条表示,箭头方向表示活动的执行顺序。
-
-
初始节点(Initial Node):
-
表示活动的起点。
-
用实心圆表示。
-
-
终止节点(Final Node):
-
表示活动的终点。
-
用带圆圈的实心圆表示。
-
-
决策节点(Decision Node):
-
表示流程中的分支点。
-
用菱形表示。
-
-
合并节点(Merge Node):
-
合并节点是用来把不同的控制流在汇聚到一起。
-
用菱形表示。
-
-
分支(Fork)和汇合(Join)节点:
-
表示并发执行的活动。
-
用粗横线表示。
-
-
泳道(Swimlane):
-
表示活动的执行者或组织。
-
泳道用垂直或水平的矩形框表示。
-
-
对象节点(Object Node):
-
代表流程中的数据对象。
-
对象节点显示了活动之间的数据流。
-
-
2.活动图的作用
-
描述业务流程:
-
清晰地展示业务流程的步骤和顺序。
-
-
分析系统行为:
-
帮助分析系统的动态行为,发现潜在的问题。
-
-
设计系统流程:
-
为系统设计提供参考,确定活动的执行顺序和控制流。
-
-
沟通交流:
-
是开发人员、业务人员和用户之间沟通的有效工具。
-
3.活动图的使用场景
-
业务流程建模:
-
描述企业或组织的业务流程。
-
-
工作流程建模:
-
描述软件系统的操作流程。
-
-
算法设计:
-
描述算法的执行步骤。
-
-
用户界面设计:
-
描述用户界面的操作流程。
-
4.活动图的重要意义
-
清晰的流程描述:
-
活动图清晰地展示了活动的执行顺序和控制流,便于理解和分析。
-
-
强调流程控制:
-
活动图强调流程控制,有助于发现流程中的问题。
-
-
便于沟通:
-
活动图是一种直观的图形化表示,便于开发人员、业务人员和用户之间的沟通。
-
十一、9种UML类图对比表格
关键区别:
-
静态 vs. 动态:
-
类图、对象图、组件图和部署图主要描述系统的静态结构。
-
用例图、状态图、活动图、序列图和协作图主要描述系统的动态行为。
-
-
结构 vs. 行为:
-
类图、对象图、组件图和部署图属于结构图。
-
用例图、状态图、活动图、序列图和协作图属于行为图。
-
-
强调方面:
-
不同的图强调不同的方面,如交互顺序、对象关系、状态变化等。
-
图类型 | 目的 | 主要组成部分 | 强调方面 | 典型用途 |
用例图(Use Case Diagram) | 描述系统的功能需求,从用户角度展示系统如何交互。 | 参与者(Actor)、用例(Use Case)、关联(Association) | 功能需求、用户交互 | 需求分析、功能范围定义 |
类图(Class Diagram) | 展示系统的静态结构,描述类、接口及其关系。 | 类(Class)、属性(Attribute)、操作(Operation)、关系(Relationship) | 静态结构、对象模型 | 系统设计、代码生成 |
对象图(Object Diagram) | 展示系统在某一时刻的实例状态。 | 对象(Object)、链接(Link) | 实例状态、对象关系 | 验证类图、展示对象关系 |
状态图(State Diagram) | 描述对象在其生命周期内的状态变化。 | 状态(State)、转换(Transition)、事件(Event) | 对象行为、状态变化 | 描述复杂对象行为、状态转换 |
活动图(Activity Diagram) | 描述业务流程或操作序列。 | 活动(Activity)、控制流(Control Flow)、决策节点(Decision Node) | 业务流程、操作序列 | 业务流程建模、工作流程设计 |
序列图(Sequence Diagram) | 描述对象之间的交互顺序。 | 对象(Object)、生命线(Lifeline)、消息(Message) | 交互顺序、时间顺序 | 描述对象交互、消息传递顺序 |
协作图(Collaboration Diagram)/通信图(Communication Diagram) | 描述对象之间的交互,强调对象之间的组织关系。 | 对象(Object)、链接(Link)、消息(Message) | 对象关系、交互组织 | 描述对象交互、组织关系 |
组件图(Component Diagram) | 描述软件系统的物理组件及其依赖关系。 | 组件(Component)、接口(Interface)、依赖(Dependency) | 物理组件、依赖关系 | 系统架构设计、组件组织 |
部署图(Deployment Diagram) | 描述软件系统在硬件上的部署情况。 | 节点(Node)、组件(Component)、连接(Connection) | 物理部署、硬件配置 | 系统部署规划、硬件配置 |