☰
软考中级软件设计师高频考点:UML状态图与活动图建模语义及真题详解(附历年真题·百度网盘)
2026/11/4 2:35:43 网站建设 项目流程

软考中级软件设计师高频考点:UML状态图与活动图建模语义及真题详解(附历年真题·百度网盘)

🎯所属考纲模块:专题五 面向对象技术与 UML 建模(考点 04:交互与行为图)
🏷️考查题型:上午综合知识单选题(1 分,年均 1~2 题)
📌核心知识点:状态图的建模对象(反应型对象)、状态/事件/监护条件/动作四要素、活动图的流程语义与判断/分叉、状态图与活动图的边界
💻实操验证环境:Python 3.10.12(Ubuntu 24.04 / Windows 11 通用,仅标准库)
🔁系列序号:series_28

本文核心知识点目录

  • 软考中级软件设计师高频考点:UML状态图与活动图建模语义及真题详解(附历年真题·百度网盘)
    • 一、 状态图 vs 活动图:一张表分清职责
    • 二、 状态图怎么读:状态 + 事件 + 监护条件 + 动作
    • 三、 活动图怎么读:判断与分叉别混
    • 四、 可运行验证:把"事件驱动"和"流程驱动"跑出来
    • 五、 真题切片
      • 5.1 真题 1(2021 年上半年 软件设计师 上午试卷 第 41 题,官方答案 B)
      • 5.2 真题 2(2022 年下半年 软件设计师 上午试卷 第 41 题,官方答案 C)
    • 六、 易错点与相邻考点辨析
    • 七、 机考与复习建议
      • 附:相关真题与复习资料

UML 有十几种图,软设上午卷反复考的是四张:用例图、类图、状态图、活动图。前两张偏结构,后两张偏行为——而状态图与活动图最容易被互换,因为都画流程。

但它们的建模对象完全不同:状态图盯"一个对象处于什么状态",活动图盯"事情按什么顺序做"。本文用三张图把这两件事分开,再用一段可运行代码把两种语义跑出来对比,最后用两道真题验证判定标准。


一、 状态图 vs 活动图:一张表分清职责

维度状态图 Statechart活动图 Activity
建模对象一个对象在生命周期中的状态变迁系统内从一个活动到另一个活动的控制流
关注点状态、事件、监护条件、动作活动、判断、分叉/汇合、并发
触发方式事件驱动(事件来了才迁移)流程驱动(上一步完成就走下一步)
典型适用订单、设备、协议连接等反应型对象业务流程、用例内部逻辑、算法流程
图形特征圆角矩形表示状态、实心圆初态、牛眼终态圆角矩形表示活动、菱形表示判断、粗线表示分叉/汇合

判定口诀:"对象处于什么状态"→ 状态图;"事情按什么顺序做"→ 活动图。


二、 状态图怎么读:状态 + 事件 + 监护条件 + 动作

迁移 = 源状态 + 触发事件 [监护条件] / 动作 → 目标状态
  • 状态 State:对象在生命周期中满足某条件、执行某活动或等待某事件的阶段;
  • 事件 Event:引起迁移的触发条件(信号、调用、时间、条件变化);
  • 监护条件 Guard:事件发生但还需满足的条件,写在中括号里;
  • 动作 Action:迁移上或状态内执行的计算(entry / do / exit)。

三条判读规则:

  1. 初态唯一(实心圆只有一个),终态可以多个(牛眼可重复);
  2. 事件在当前状态不合法时不会改变状态——这是状态图相对活动图多出的语义;
  3. 一个状态可以有 entry / do / exit 三类内部动作,动作可以挂在状态内,也可以挂在迁移上。

三、 活动图怎么读:判断与分叉别混

结构图形语义出边数量
判断(decision)菱形二选一或多选一,出边条件互斥一入多出,只走一条
分叉(fork)粗黑线并发,多条出边同时进行一入多出,全部执行
汇合(join)粗黑线同步,所有入边完成后才继续多入一出
泳道(swimlane)竖向分区标明活动由谁执行—

判据:出边是"选一条走"还是"都走"。菱形是选择,粗线是并发——这是活动图里最容易画错的两种符号。


四、 可运行验证:把"事件驱动"和"流程驱动"跑出来

# Python 3.10.12(3.8+ 均可) 仅标准库# ---------- 状态图语义:事件驱动 ----------TRANSITIONS={("待支付","支付成功"):"已支付",("已支付","发货"):"已发货",("已发货","签收"):"已完成",("待支付","取消"):"已取消",}deffire(state:str,event:str)->str:"""事件在当前状态不合法时,状态不变"""returnTRANSITIONS.get((state,event),state)state,trace="待支付",["待支付"]forevin["支付成功","发货","签收"]:state=fire(state,ev)trace.append(state)print("状态迁移:"," -> ".join(trace))# ---------- 活动图语义:流程驱动 ----------ACTIVITY={"下单":"支付","支付":"发货","发货":"签收"}cur,flow="下单",["下单"]whilecurinACTIVITY:cur=ACTIVITY[cur]flow.append(cur)print("活动流程:"," -> ".join(flow))asserttrace==["待支付","已支付","已发货","已完成"]assertflow==["下单","支付","发货","签收"]# 关键差异:非法事件对状态图无效,而活动图没有"非法输入"这个概念assertfire("已完成","取消")=="已完成"assertfire("已取消","支付成功")=="已取消"print("OK: 状态图(事件驱动) 与 活动图(流程驱动) 的语义差异已验证")

实际运行输出(Ubuntu 24.04 + Python 3.10.12):

状态迁移: 待支付 -> 已支付 -> 已发货 -> 已完成 活动流程: 下单 -> 支付 -> 发货 -> 签收 OK: 状态图(事件驱动) 与 活动图(流程驱动) 的语义差异已验证

最后两行断言是关键:fire("已完成", "取消")返回"已完成",说明状态图拒绝非法事件;而活动图只是"下一步查表",没有这种防护。如果哪天你需要给自己的状态机加"非法事件必须报错",把fire改成在查不到转移时抛ValueError即可——这就是状态图建模在代码里的直接价值。


五、 真题切片

5.1 真题 1(2021 年上半年 软件设计师 上午试卷 第 41 题,官方答案 B)

当 UML 状态用于对系统、类或用例的动态方面建模时,通常是对(41)建模。
A. 系统的词汇 B. 反应型对象 C. 活动流程 D. 对象快照

答案:B

排除逻辑:

  • 状态图刻画的是对象在事件驱动下的状态变迁,建模对象是反应型对象(reactive object);
  • A "系统的词汇"是类图的职责(类、接口、关系构成系统词汇);
  • C "活动流程"是活动图的职责;
  • D "对象快照"是对象图的职责(某一时刻的对象及其关系)。

5.2 真题 2(2022 年下半年 软件设计师 上午试卷 第 41 题,官方答案 C)

UML 活动图用于建模(41)。
A. 系统在它的周边环境的语境中所提供的外部可见服务
B. 某一时刻一组对象以及它们之间的关系
C. 系统内从一个活动到另一个活动的流程
D. 对象的生命周期中某个条件或者状态

答案:C

排除逻辑:

  • C 是活动图的教材定义:系统内从一个活动到另一个活动的流程;
  • A 描述用例图(系统对外提供的服务);
  • B 描述对象图/类图(某时刻的对象及关系);
  • D 描述状态图(对象生命周期中的状态)。

这道题把四张图的职责摆在同一个题干里,是"图—职责"配对题的模板:先认出另外三个选项是谁,剩下的就是答案。


六、 易错点与相邻考点辨析

易错点错误做法正确做法
用活动图描述对象状态订单状态变迁画成活动图状态变迁用状态图;活动顺序用活动图
认为状态图就是流程图把菱形判断当状态图特征状态图核心是"状态+事件+动作";菱形是活动图特征
混淆初态与终态数量认为终态只能有一个初态唯一,终态可有多个
把用例图职责安给状态图见"外部可见服务"选状态图“外部可见服务”= 用例图;“反应型对象”= 状态图
把分叉当判断粗黑线当成"多选一"粗线=并发全走;菱形=条件选一条

相邻考点提醒:交互图(顺序图/通信图)考"对象之间按时间顺序的消息交互",与状态图(单个对象状态)、活动图(活动流程)构成行为建模三件套;类图六种关系的符号与强弱在 series_22 已展开;用例图中的 include/extend 辨析在 series_22 的相邻考点里也有交叉。


七、 机考与复习建议

  1. 先判"建模对象是一个人还是一件事":一个对象的状态 → 状态图;一件事的流程 → 活动图;
  2. 看到"反应型"三个字直接选状态图,这是软考的原话标签;
  3. 活动图数清出边:菱形只走一条,粗线全走,这是画图题与选择题的共同判据;
  4. 机考画图时,状态图用圆角矩形 + 实心圆初态,别把初态画成小方块。

附:相关真题与复习资料

本文涉及的 UML 状态图与活动图专项历年真题解析已归档,需要可自取:

百度网盘: https://pan.baidu.com/s/1SwVEmITKHveCupjP_VH7pA 提取码: rk02 备用通道: https://pan.quark.cn/s/bd0eb7dd5673

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询