UML(统一建模语言)是一种用于软件系统分析和设计的标准化建模语言,它通过不同类型的图形化表示来描述系统的结构和行为。以下是每种图的含义和用途的简明解释:
一、结构图(Structural Diagrams)
描述系统的静态结构,即系统的组成部分及其关系。
1. 类图(Class Diagram)
用途:描述系统中的类(Class)、类的属性、方法以及类之间的关系(如继承、关联、依赖、组合等)。
核心:面向对象设计的核心工具,常用于系统架构设计阶段。
2. 对象图(Object Diagram)
用途:展示系统在某一时刻的具体对象实例及其关系,是类图的运行时快照。
特点:用于调试或验证类图的正确性。
3. 构件图(Component Diagram)
用途:描述系统的物理组件(如代码模块、库、可执行文件)及其依赖关系。
应用:适用于模块化设计和系统部署规划。
4. 部署图(Deployment Diagram)
用途:展示系统的物理部署结构,如服务器、设备、软件组件在硬件上的分布。
场景:常用于分布式系统或云计算环境的设计。
5. 包图(Package Diagram)
用途:将系统划分为逻辑上的包(Package),表示模块或子系统的分组关系。
作用:用于管理大型系统的复杂性和依赖关系。
6. 组合结构图(Composite Structure Diagram)
用途:描述复杂对象(如组件、类)的内部结构,展示其组成部分如何协作。
适用:适用于组件间交互复杂的系统设计。
7.制品图(Artifact Diagram)
用途:描述系统的物理文件(如源代码、配置文件、数据库脚本)及其关系。
应用:辅助代码管理和部署。
二、行为图(Behavioral Diagrams)
描述系统的动态行为,即系统如何响应事件或随时间变化。
1. 用例图(Use Case Diagram)
用途:从用户视角描述系统功能(用例)及其参与者(Actor),用于需求分析。
核心:强调“用户希望系统做什么”。
2. 活动图(Activity Diagram)
用途:描述业务流程或算法的执行流程,类似流程图,但支持并行、分支等复杂逻辑。
场景:适用于业务流程建模或复杂操作步骤的规划。
如:请假的审批流程图。
3. 状态图(State Machine Diagram)
用途:展示对象在其生命周期内状态的变化(如事件触发状态转移)。
典型应用:适用于具有明确状态切换的系统(如订单状态、设备控制)。
4. 顺序图(Sequence Diagram)
用途:按时间顺序描述对象之间的消息传递,强调交互的时序性。
特点:直观展示“谁在何时调用谁”。
5. 通信图(Communication Diagram)
用途:与顺序图类似,但更侧重对象之间的结构关系(如关联)而非严格时序。
旧称:协作图(Collaboration Diagram)。
6. 时间图(Timing Diagram)
用途:强调对象状态变化的时间约束,常用于实时系统设计。
特点:以时间轴为基准展示状态变化。
7. 交互概览图(Interaction Overview Diagram)
用途:将多个交互图(如顺序图、活动图)组合成一个高层概览,展示整体流程。
作用:用于简化复杂交互的描述。
三、总结:如何选择UML图?
- **设计静态结构**:类图、构件图、部署图。
- **分析用户需求**:用例图。
- **描述业务流程**:活动图、状态图。
- **展示对象交互**:顺序图、通信图。
- **规划系统部署**:部署图、组件图。