期末复习

专题(四-九):UML合集

2026 年 06 月 18 日 约 9483 字 · 24 分钟 期末复习

UML图像建模合集

专题 4 — UML 用例图 (Use Case Diagram)

4.1 概述与定位

  • 定义:用例图是从用户视角出发的、描述系统功能范围与外部实体交互的行为静态模型。

  • 定位:主要应用于需求分析阶段,作为建立系统范围标尺(System Boundary)以及与业务方(客户、产品经理)沟通功能需求的通用语言。

4.2 核心元素与关系规范

核心元素/关系标准图形语义核心规则 / 避坑禁忌
参与者 (Actor)系统边界外侧的外部实体代表与系统发生直接交互的角色、外部系统或定时器。
用例 (Use Case)椭圆,内部标注名称命名必须是“动词 + 名词”的动宾短语(例如 借阅图书)。
系统边界 (Boundary)实线矩形框框内为系统用例,框外为参与者,定义系统范围。
关联 (Association)无箭头实线连接参与者与用例,描述交互通路。绝不能连接用例与用例。
包含 (Include)带箭头虚线 <<include>>基础用例在执行过程中强制必选调用子用例。箭头指向子用例
扩展 (Extend)带箭头虚线 <<extend>>扩展用例在特定守卫条件满足时,可选插入基用例。箭头指向基用例
泛化 (Generalization)空心三角箭头实线父子类型之间的继承关系(参与者或用例均可泛化)。箭头指向父元素

4.3 场景例图:高校图书馆管理系统

代码段

graph LR
    subgraph 高校图书馆管理系统
        UC1(查询图书)
        UC2(预约图书)
        UC3(借阅图书)
        UC4(登记登记)
        UC5(验证读者身份)
        UC6(图书入库)
    end

    Reader(普通读者) --- UC1
    VIPReader(VIP读者) --- UC3
    Admin(图书管理员) --- UC6

    %% 泛化关系
    VIPReader --> Reader
    UC2 --> UC1

    %% 包含与扩展
    UC3 -. "<<include>>" .-> UC5
    UC6 -. "<<include>>" .-> UC5
    UC4 -. "<<extend>>" .-> UC3

专题 5 — UML 类图 (Class Diagram)

5.1 概述与定位

  • 定义:类图是描述系统静态结构的核心模型,展示系统中的类、接口、内部组成及彼此间的静态结构关系。

  • 定位:贯穿分析阶段(概念类图)与设计阶段(设计类图),是代码生成与逆向工程的基石。

5.2 类关系强弱度与标准规范(由弱到强)

关系类型语义描述代码/静态特征Mermaid 画法规范
依赖 (Dependency)临时使用关系(“use a”)表现为方法参数、局部变量或返回值ClassA ..> ClassB (虚线单箭头)
关联 (Association)长期结构化连接(“know a”)类持有另一个类的实例作为成员变量ClassA --> ClassB (实线单箭头)
聚合 (Aggregation)弱拥有关系(“has-a”)部分可脱离整体独立存在(生命周期独立)ClassA o-- ClassB (空心菱形实线)
组合 (Composition)强拥有一体化(“contains-a”)部分不能脱离整体,生死与共ClassA *-- ClassB (实心菱形实线)
接口实现 (Realization)类实现接口的行为契约实现多态原则ClassA ..\|> InterfaceB (空心三角虚线)
泛化 (Generalization)类继承父类封装继承,子承父业ClassA --\|> ParentClassB (空心三角实线)

5.3 场景例图:外卖配送平台类结构设计

代码段

classDiagram
    class Traffic {
        <<interface>>
        +start() void
    }
    class Ebike {
        -brand: String
        #speed: double
        +start() void
        +drive(driver: Driver) void
    }
    class Battery {
        -capacity: int
    }
    class License {
        -code: String
    }
    class Driver {
        -id: String
        +route(bike: Ebike) void
    }
    class DeliveryPlayer {
        -onlineTime: int
    }
    class DeliveryPlatform {
        +name: String
    }

    Traffic <|.. Ebike : 实现关系
    Ebike *-- Battery : 1对1 组合关系
    Ebike --> "0..1" License : 单向关联
    Driver ..> Ebike : 依赖关系
    Driver <|-- DeliveryPlayer : 泛化关系
    DeliveryPlatform "1" o-- "1..*" DeliveryPlayer : 聚合关系

专题 5.6 — UML 对象图 (Object Diagram)

5.6.1 概述与定位

  • 定义:对象图是类图在某一特定时间点的运行实例快照,展示了具体的对象实体、当前属性值以及彼此间的链(Link)。

  • 定位:主要应用于系统设计与测试验证阶段,用于验证复杂类图结构、递归关系(如链表、树)或边界测试用例的合理性。

5.6.2 类图与对象图横向对比

维度类图 (Class Diagram)对象图 (Object Diagram)
时态特征静态的、通用的、永久的设计蓝图某一特定时刻的运行时“状态快照”
命名语法类名(如 Student对象名 : 类名带下划线
属性展现只展现属性类型(如 age: int必须展现具体静态取值(如 age = 21
内部组成拥有完整的属性栏和方法栏无方法栏,仅有属性快照栏
连线关系关联、聚合、组合(带多重度)链 (Link)(无箭头实线,无多重度)

5.6.3 场景例图:双向链表运行期内存快照

代码段

classDiagram
    class node1_LinkNode {
        <u>node1 : LinkNode</u>
        data = "Head"
        index = 1
    }
    class node2_LinkNode {
        <u>node2 : LinkNode</u>
        data = "ElementA"
        index = 2
    }

    node1_LinkNode -- node2_LinkNode : link

专题 5.7 — UML 包图 (Package Diagram)

5.7.1 概述与定位

  • 定义:包图是通过“包(Package)”容器元素对系统复杂的类、用例等逻辑组件进行高层分层分组、高维模块化管理的静态结构图。

  • 定位:应用于架构设计阶段,用于规划大型软件的宏观解耦分层(如三层架构、MVC 模型),控制元素可见性及团队边界开发划分。

5.7.2 包图依赖关系对照表

依赖构型语义解释传递性与作用域范围
<<use>>通用调用关系客户包内的元素调用或实例化了提供者包内的类。
<<import>>公共导入将目标包的公有元素并入自身包,且该可见性可向其上层继续传递。
<<access>>私有导入引入目标包元素,但引入后的元素在自身包内降格为私有,不可向外传递。
   

5.7.3 场景例图:典型三层架构分层包依赖关系

代码段

graph TB
    subgraph Controller_Package [Controller]
        direction TB     
    end
    subgraph Service_Package [Service]
        direction TB
    end
    subgraph DAO_Package [DAO]
        direction TB
    end
    subgraph DB_Package [Database]
        MySQLImpl[MySQLImpl]
    end

    Controller_Package -. "<<use>>" .-> Service_Package
    Service_Package -. "<<import>>" .-> DAO_Package
    DAO_Package --- DB_Package

专题 6 — UML 活动图 (Activity Diagram)

6.1 概述与定位

  • 定义:活动图是专注于建模一个业务流程、用例事件流或底层复杂算法逻辑中控制流与对象流转的动态行为图。

  • 定位:在分析阶段用于描绘跨角色多部门的业务泳道图;设计阶段用于刻画精细算法流。是传统软件“流程图”在面向对象领域的增强替代版。

6.2 核心控制元素表

元素名称标准图形核心规则约束
动作节点 (Action)圆角矩形表示原子级不可再分的单步操作,使用动宾短语命名。
判定与合并 (Decision)空心菱形判定为单入多出,每条出线必须有带方括号的 [守卫条件];合并为多入单出。
分叉与汇合 (Fork/Join)粗黑长实线条分叉(Fork)将单流拆分为多线程并发流;汇合(Join)充当所有并发流的同步屏障。
对象节点 (Object Node)标准矩形代表控制流中产生或消费的数据对象/数据状态(带对象流虚线箭头)。

6.3 场景例图:电商系统后台订单并发处理与风控流转

代码段

graph TD
    %% 统一使用标准流程图节点模拟,避免复杂语法的渲染异常
    startNode((开始)) --> A(提交订单)
    
    %% 并发分叉
    A --> forkBar{=== FORK 并发分叉 ===}
    forkBar --> B(扣减商品库存)
    forkBar --> C(生成流水账单)
    
    %% 并发汇合
    B --> joinBar{=== JOIN 并发汇合 ===}
    C --> joinBar
    
    %% 风控判定
    joinBar --> decision{风控安全判定}
    decision -->|风控通过| D(发起在线支付)
    decision -->|触发洗钱嫌疑| E(挂起订单审计)
    decision -->|黑名单拦截| F(流终止)
    
    D --> endNode((结束))
    E --> endNode
    F --> termNode((X))

专题 7 — UML 时序图 (Sequence Diagram)

7.1 概述与定位

  • 定义:时序图(序列图)是捕获一组业务对象在时间递进维度上进行高频消息通信、方法调用、生命线存续的动态交互图。

  • 定位:用于系统详细设计阶段。它是实现用例核心逻辑(Use Case Realization)最强有力的技术工具,是微服务接口设计的直接蓝图。

7.2 核心消息与组合片段规范

消息与片段类型视觉线条规范运行期阻塞行为及语义
同步消息实线 + 实心三角箭头调用方处于阻塞状态,必须等待承接方方法执行完毕返回。
异步消息实线 + 开口普通箭头调用方不等待返回,发出信号后直接继续执行自身后续逻辑。
返回消息虚线 + 开口普通箭头从承接方的方法栈中,将执行结果/返回值输送回调用方。
alt 片段框体 + 水平虚线分隔多重条件分支(等价于 if-else),根据守卫条件选择其一。
opt 片段单个独立控制框体单向可选分支(等价于单 if),满足条件则执行,不满足跳过。
loop 片段单个独立控制框体循环片段,在框体边缘标注循环的边界条件与终止阈值。

7.3 场景例图:用户下单及库存同步校验交互

代码段

sequenceDiagram
    autonumber
    actor User as :User
    participant OC as :OrderController
    participant SS as :StockService
    participant OE as :OrderEntity

    User->>OC: submitOrder()
    activate OC
    OC->>SS: checkStock()
    activate SS
    SS-->>OC: return true
    deactivate SS

    alt 库存充足
        OC->>+OE: <<create>>
        OE->>OE: doSave()
        OE-->>-OC: success
    else 库存不足
        OC-->>User: throw StockException
    end
    OC-->>User: HTTP 200 (OK)
    deactivate OC

专题 7.6 — UML 通信图 (Communication Diagram)

7.6.1 概述与定位

  • 定义:通信图(早期称协作图)与时序图语义完全等价且可无损互转,但它不依赖时间轴,而是以空间网络拓扑布局凸显对象间链接和消息调用关系。

  • 定位:当架构师需要在一个页面中总览系统类对象的调用拓扑关系(即显式看清“谁和谁存在直接通信连线”)时,提供比时序图更紧凑的架构概览。

7.6.2 时序图与通信图的横向对立性

维度特征时序图 (Sequence Diagram)通信图 (Communication Diagram)
核心一维横轴时间轴(自上而下递进演进)空间轴(纯粹的对象空间拓扑网络布局)
对象关系表现隐含(仅通过交互消息箭头横跨体现)显式绘制链接线(凸显结构依赖)
消息顺序读取物理位置高低决定先后,一目了然必须通过严格的嵌套小数值序号(如 1.1.1)进行阅读

7.6.3 场景例图:订单控制器与服务组件的空间拓扑协作

代码段

graph LR
    %% 使用双引号包裹带方括号的复杂文本,彻底修复了解析报错问题
    OC[<u>:OrderController</u>] -->|"1: checkStock()"| SS[<u>:StockService</u>]
    OC -->|"1.1 [库存足]: create"| OE[<u>:OrderEntity</u>]
    OC -->|"2: asyncNotify()"| NQ[<u>:NotifyQueue</u>]

专题 7.7 — UML 定时图 (Timing Diagram)

7.7.1 概述与定位

  • 定义:定时图将“物理时间轴”作为绝对的核心一维横轴,专门用于精确、定量地描述对象状态随时间轴流逝所产生的变迁,以及状态持续周期的硬性时间约束图。

  • 定位:主要应用于嵌入式开发、物联网硬件协议设计、工业控制系统及高并发网络协议的硬实时(Real-time)建模。

7.7.2 场景例图:工业加热清洗装置状态变迁与时序硬约束

代码段

gantt
    title 硬件抽吸与加热板定时状态变迁图 (单位: 秒)
    dateFormat X
    axisFormat %s

    section 抽吸装置状态
    关状态 :active, 0, 10
    开状态 :crit, 10, 35
    关状态 : 35, 50

    section 加热板状态
    关状态 : 0, 20
    开状态 :active, 20, 50

专题 7.8 — UML 交互纵览图 (Interaction Overview Diagram)

7.8.1 概述与定位

  • 定义:交互纵览图是高级行为编排模型,它将活动图的控制流网格框架与时序图(或其他交互图)无缝融合,用控制节点编排大流程,而每个动作节点直接内嵌一张微型时序图。

  • 定位:用于系统高级架构设计与宏观逻辑推演。当一个复杂业务流包含多个独立的大子场景切换时,用它进行整体工作流的高维可视化架构串联。

7.8.2 场景例图:多数据源(API/缓存)动态路由选择的高维编排

代码段

graph TD
    start(( )) --> decision{判定数据源}
    
    decision -->|外部API| SD1[时序图: sd 抓取外部数据]
    decision -->|本地缓存| SD2[时序图: sd 读取本地数据库]
    
    SD1 --> merge{ }
    SD2 --> merge
    merge --> Action[动作节点: 生成综合数据报表]
    Action --> stop((( )))

专题 8 — UML 状态图 (State Machine Diagram)

8.1 概述与定位

  • 定义:状态图专注于刻画和捕捉单个核心对象(如订单、账户、线程)在其完整生命周期内,由外部输入事件触发而引起的状态无缝流转与响应行为。

  • 定位:应用于系统详细设计与核心业务对象建模阶段(如电商订单、TCP 状态机)。其核心指标是穷尽对象生存周期内的所有合法与异常状态路径,防止死锁或孤立状态发生。

8.2 标准状态转换语法规范

\[\text{标准语法格式:} \quad \text{事件触发器} \ [ \text{守卫条件} ] \ / \ \text{执行动作}\]
转换核心三要素具体工程语义运行时行为特征
事件触发器 (Event)引起状态转移的信号或外部激发一旦对象接收到该信号(如点击支付、超时),转移被激活。
守卫条件 (Guard)布尔表达式 [ 条件 ]只有当表达式为真时,状态转移才能发生;否则事件被丢弃。
执行动作 (Action)状态变迁伴随产生的原子行为 /动作状态转移成功的一瞬间,系统顺带执行的操作(如发通知、记日志)。

8.3 场景例图:电商平台订单生命周期状态流转

代码段

stateDiagram-v2
    [*] --> 订单处理中 : submit() 提交订单

    state 订单处理中 {
        [*] --> 待支付
        待支付 --> 已支付 : pay() [余额充足] / 扣款
        待支付 --> 已取消 : cancel() [用户主动]
        已支付 --> 已发货 : ship() / 分配物流
    }

    订单处理中 --> 已完结 : sign() / 用户签收
    已完结 --> [*]

专题 9.1 — UML 构件图 (Component Diagram)

9.1.1 概述与定位

  • 定义:构件图是一种静态结构图,用于描述系统中物理构件的组织、构件对外提供的与所需要的接口,以及构件之间的连接依赖关系。

  • 定位:主要应用于软件架构设计与组件化开发阶段。构件图将实现细节封装在内部,对外通过显式接口体现契约,强调系统由哪些“可替换的软件模块单元”构成。

9.1.2 核心元素与关系规范

核心元素/关系标准图形语义核心规则与工程实践
构件 (Component)带有小构件图标或 «component» 的矩形物理上可独立替换、独立部署的软件单元(如一个 JAR 包、DLL 文件或独立微服务)。
提供接口 (Provided Interface)棒棒糖形状 (Lollipop / 实心圆 + 实线)构件对外暴露的、可供其他构件调用的服务或 API 契约。
需求接口 (Required Interface)插座形状 (Socket / 半圆弧 + 实线)构件内部实现逻辑中所必须依赖或调用的外部第三方服务契约。
组装连接器 (Dependency)棒棒糖插入插座的无缝对接,或虚线箭头表示一个构件的“需求接口”与另一个构件的“提供接口”相互匹配并建立连接。
端口 (Port)构件边界线上的小方块封装构件对外的通信访问点,用于对接口进行分流或隔离外部请求。

9.1.3 场景例图:典型电商订票系统的组件契约与接口装配

代码段

graph LR
    %% 构件定义与多级依赖装配
    subgraph TicketSystem [订票业务子系统]
        Order[«component»<br>OrderComponent]
        Ticket[«component»<br>TicketComponent]
    end

    Payment[«component»<br>PaymentGateway]
    DB[«component»<br>DatabaseComponent]

    %% 接口对接关系化表现 (使用引号包裹特殊符号防止解析冲突)
    Order -->|"需求: ITicket"| Ticket
    Order -->|"需求: IPayment"| Payment
    Ticket -->|"依赖"| DB

    style Order fill:#f9f,stroke:#333,stroke-width:2px
    style Ticket fill:#bbf,stroke:#333,stroke-width:2px
    style Payment fill:#fbb,stroke:#333,stroke-width:2px
    style DB fill:#bfb,stroke:#333,stroke-width:2px

专题 9.2 — UML 部署图 (Deployment Diagram)

9.2.1 概述与定位

  • 定义:部署图是整个 UML 规范中唯一描述软硬件物理拓扑映射关系的静态视图,展示运行软件制品(Artifacts)的物理节点(Nodes)以及各物理节点之间的网络通信连接。

  • 定位:应用于系统运维规划与物理架构设计阶段。它不仅是软件系统上云部署的拓扑蓝图,也是系统工程师规划物理网络服务器集群、计算资源分配以及安全域边界割接的技术底座。

9.2.2 类图、构件图与部署图的三维横向对比

维度特征类图 (Class Diagram)构件图 (Component Diagram)部署图 (Deployment Diagram)
核心描述对象逻辑实体(逻辑概念与代码类)软件制品单元(JAR包、服务模块)物理或虚拟硬件环境(服务器、网络)
系统生命周期分析与设计阶段的静态逻辑抽象实现与集成阶段的包/模块划分静态关系运行与维护阶段的底层物理物理布局
核心关联关系泛化、组合、聚合、关联接口提供 (Lollipop) 与接口需求 (Socket)物理连接通道(网线、无线、HTTP协议)
元素依赖特征强类型的面向对象语法连接强调用接口机制隐蔽具体的物理编码实现强调用软件制品在物理宿主机上的承载承载

9.2.3 部署图的核心元素语法对照

核心元素类型视觉标准画法核心工程定义说明
节点 (Node)三维立体长方体箱子拥有计算能力的物理硬件(如应用服务器、数据库主机、路由器)或软件宿主环境(如 Docker 容器、JVM)。
制品 (Artifact)带有 «artifact» 构造型的普通矩形系统物理打包的成果物(如 order-service.jarindex.html),必须部署存活于某个节点内部
连接 (Connection)连接立体箱子之间的无箭头实线物理节点的网络通路,线上通常标注通信协议类型(如 TCP/IPHTTPSJDBC)。

9.2.4 场景例图:企业级分布式Web系统的云物理拓扑部署方案

代码段

graph TB
    %% 使用网格与容器模拟三维节点及其内部制品托管关系
    
    subgraph ClientNode [物理客户端节点: 移动端/浏览器]
        Browser[«artifact»<br>SPA_App.html]
    end

    subgraph WebServerNode [应用服务器集群: Nginx/Tomcat]
        direction TB
        AppJar[«artifact»<br>api-gateway.jar]
        WIP{"WIP限制: 并发连接 <= 10000"}
    end

    subgraph DBServerNode [数据库服务器: 主从MySQL集群]
        MySQL_DB[(«artifact»<br>Relational_DB)]
    end

    %% 物理连接与网络通信协议标注
    ClientNode ===|"HTTPS / 443"| WebServerNode
    WebServerNode ===|"JDBC / 3306"| DBServerNode

    style ClientNode fill:#eee,stroke:#333,stroke-width:1px
    style WebServerNode fill:#ddd,stroke:#333,stroke-width:2px
    style DBServerNode fill:#ccc,stroke:#333,stroke-width:2px