1300 字
4 分钟
软考中级软件设计师 · 知识点速查表
软考中级软件设计师 · 知识点速查表
📌 面向对象
1. UML用例图关系
✅ 包含、扩展、泛化对比
| 维度 | 包含(Include) | 扩展(Extend) | 泛化(Generalization) |
|---|---|---|---|
| 本质 | 强制依赖(必须调用) | 条件增强(可选触发) | 继承关系(is-a) |
| 箭头方向 | 基础→被包含 | 扩展→基础 | 子→父 |
| 触发条件 | 无条件 | 特定条件 | 无(自动继承) |
| 独立性 | 基础用例依赖被包含用例 | 基础用例可独立存在 | 子类依赖父类,父类可独立 |
| 复用目的 | 提取公共功能 | 分离可变行为 | 抽象共性,特化个性 |
| 典型场景 | 日志记录、权限验证 | 优惠券使用、增值服务 | 多种支付方式、用户类型 |
记忆口诀:
Include 必须有(公共功能)Extend 可以有(可选增强)Generalization 是一种(继承关系)📌 操作系统
1. 索引结点管理模式
✅ 核心公式
| 项目 | 公式 |
|---|---|
| 索引块地址数 | 地址数 = 物理块大小 ÷ 地址项大小 |
| 直接地址容量 | 直接块数 × 块大小 |
| 一级间接容量 | 一级索引项数 × (块大小/地址项大小) × 块大小 |
| 二级间接容量 | 二级索引项数 × (块大小/地址项大小)² × 块大小 |
| 三级间接容量 | 三级索引项数 × (块大小/地址项大小)³ × 块大小 |
解题步骤:
- 计算每个索引块能存放的地址数
- 划分逻辑块号范围
- 定位逻辑块号位置
- 计算最大文件大小
注意陷阱:
- 逻辑块号从0开始
- 计算文件大小只算数据块,不算索引块
- 注意单位换算:1KB = 1024B
📌 数据结构
1. 图
✅ 有向完全图的边数
无向完全图:n(n-1)/2 条边有向完全图:n(n-1) 条边(有向 = 无向 × 2)记忆: 有向完全图每个顶点都能指向其他所有顶点,每个顶点出度 = n-1,所有顶点出度之和 = n(n-1)
✅ Prim vs Kruskal(最小生成树)
| 对比项 | Prim 算法 | Kruskal 算法 |
|---|---|---|
| 策略 | 选点,从已选点中选最短边 | 选边,从全局选最短边 |
| 适用 | 密图(边多,顶点少) | 疏图(边少,顶点密) |
| 时间复杂度 | O(n²) | O(eloge)(e为边数) |
| 判环 | 不需要 | 需要并查集判环 |
记忆口诀:
Prim 选点(就近扩展)→ 密图 O(n²)Kruskal 选边(最短优先)→ 疏图 O(eloge)✅ 邻接矩阵非零元素个数
有向图:非零元素 = E(边数)无向图:非零元素 = 2E(矩阵对称)2. 树
✅ 树中叶子结点个数计算
核心公式: n(总结点数)= 分支数 + 1 分支数 = Σ 各结点度数之和
度:结点的子树个数叶子结点:度为0的结点
解题步骤: 1. 已知总结点数 n 和各结点度数之和 → 求分支数 → 求叶子数 2. 分支数 = n - 1(树中除了根结点每个结点都有一条边进入)举例: 一棵树有 n1个度为1的结点,n2个度为2的结点,…,nm个度为m的结点,叶子数为 n0:
总度数 = 1×n1 + 2×n2 + ... + m×nm = 分支数 = n - 1总结点 n = n0 + n1 + n2 + ... + nm→ n0 = 1 + Σ(k-1)×nk3. 数组
✅ 二维数组地址计算
| 存储方式 | 公式 |
|---|---|
| 行优先(C语言) | LOC(i,j) = LOC(0,0) + (i×m + j) × L |
| 列优先(Fortran) | LOC(i,j) = LOC(0,0) + (j×n + i) × L |
m = 列数,n = 行数,L = 每个元素占用的存储单元数
注意: 下标从0开始还是从1开始:
- 从0开始:偏移量 = i×m + j
- 从1开始:偏移量 = (i-1)×m + (j-1)
4. 栈
✅ 表达式求值栈深度
方法: 中缀表达式 → 后缀表达式(逆波兰)→ 模拟栈求值
- 第一个运算符出现时,栈中操作数的个数 = 栈所需最小容量
- 关键: 求值过程中栈的最大深度就是所需容量
📌 算法设计
1. 查找
✅ 折半查找(二分查找)ASL
成功查找 ASL:
ASL成功 = (各层结点数 × 该层层数) / 元素总数
树高:⌊log₂n⌋ + 1第1层:1个结点,比较1次第2层:2个结点,比较2次第3层:4个结点,比较3次...失败查找 ASL:
ASL失败 = Σ(外部结点比较次数)/(n+1)
外部结点 = 叶子结点(查找失败的位置)= n + 1 个举例: 有序数组 10个元素,折半查找树:
- 成功 ASL = 29/10 ≈ 2.9
- 失败 ASL = 39/11 ≈ 3.5
✅ 分块查找 ASL
公式:
ASL = (m+1)/2 + (n/m+1)/2m = 块数,n = 总元素数 每块内用顺序查找
最优块数: m ≈ √n,此时 ASL ≈ √n
2. 算法策略
✅ 分治法三步骤
分:将问题划分为若干子问题治:递归求解各子问题合:将子问题的解合并为原问题的解关键理解:
- 合并时只需检查有限范围(不是全部枚举)
- 典型应用:二分搜索、归并排序、快速排序
📌 软件工程
1. 度量
✅ McCabe圈复杂度(程序复杂度)
三种算法,结果相同,可互相验证:
| 方法 | 公式 | 适用场景 |
|---|---|---|
| ① 边结点公式 | V(G) = E - N + 2 | 有流程图 |
| ② 判定结点法 | V(G) = P + 1 ⭐最快 | 有代码/伪代码 |
| ③ 封闭区域法 | V(G) = 封闭区域数 + 1 | 有流程图 |
E = 边数,N = 结点数,P = 判定结点数(if/while/for/switch等)
判定结点规则:
if → 1个判定结点while/for → 1个判定结点switch(n个case) → n-1 个判定结点A && B 复合条件 → 2个判定结点A || B 复合条件 → 2个判定结点举例:
if (A > 0) // 1个判定 while (B < 10) // 1个判定 if (C && D) // 2个判定
P = 4 → V(G) = 52. 分析
✅ 结构化分析建模方法
| 建模工具 | 建模对象 | 核心元素 |
|---|---|---|
| DFD(数据流图) | 功能建模 | 加工、数据流、数据存储、外部实体 |
| E-R图 | 数据建模 | 实体、属性、联系 |
| STD(状态转换图) | 行为建模 | 状态、事件、转换 |
记忆口诀:
DFD 管功能(数据怎么流)E-R 管数据(实体什么关系)STD 管行为(状态怎么变)📌 数据库
1. 事务
✅ 日志文件与故障恢复
日志文件记录内容:
- 事务开始(BEGIN TRANSACTION)- 事务结束(COMMIT / ROLLBACK)- 对数据库的每次操作(INSERT/DELETE/UPDATE)故障恢复三种策略:
| 故障类型 | 恢复策略 | 日志操作 |
|---|---|---|
| 事务故障 | UNDO(撤销) | 反向扫描日志,撤销该事务所有操作 |
| 系统故障 | UNDO + REDO | 撤销未完成事务,重做已提交事务 |
| 介质故障 | 备份 + 日志 | 先恢复数据库备份,再用日志REDO |
核心原则:
WAL(Write-Ahead Logging,先写日志原则):任何对数据库的修改,必须先写日志记录,再修改数据库
Checkpoint(检查点):定期将缓冲区内容写入数据文件,缩短恢复时需要扫描的日志范围记忆口诀:
日志先写后操作(WAL)事务故障只撤销(UNDO)系统故障撤加重(UNDO+REDO)介质故障备份+日志整理自软考中级软件设计师错题本 · 持续更新中
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
软考中级软件设计师 · 知识点速查表
https://www.rumin.top/posts/软考中级软件设计师知识点速查表/ 部分信息可能已经过时
相关文章 智能推荐
1
软考中级软件设计师 · 知识点速查表
考试备考 精选高频考点速查,涵盖图论、树、数组、栈、查找算法、排序算法等数据结构与算法核心知识点。
2
软考中级软件设计师 · 数据库知识点
学习笔记 软考数据库知识点整理,包含事务日志、故障恢复、UNDO/REDO等核心考点,适用于考前冲刺快速回忆。
3
软考中级软件设计师 · 错题本
考试备考 记录选择题备考中的高频错题,涵盖数据结构、算法设计等模块,包含详细考点分析和易错点总结。
4
UML知识点完整整理速查表
学习笔记 UML图分类、关系类型及记忆口诀完整整理速查表
5
结构化设计中包含、扩展、泛化的含义
学习笔记 在结构化设计(尤其 UML 建模)中,这三种关系用于描述用例或类之间的交互与层次,核心区别在于依赖性质与复用逻辑。






