软考专题 · 计算题专项(计算机系统 + 网络 + 项目管理 + 软件度量|公式速查 + 例题)
计算题是系统架构设计师综合知识里的”白给分专区“——每年加起来约 8~12 道(计算机系统 5
6 道、计算机网络 23 道、项目管理 23 道、软件度量/可靠性 12 道),全是套公式的题,会公式就是送分,不会就是一道都拿不到。这篇把五大类高频计算题的公式、解题步骤、典型例题打包在一起,外加一张考前速记公式卡。内容来自开源仓库PeterGuy326/senior-software-architect-review。回到 软考导览页 看完整专题清单。
一、计算机系统计算(每年 5~6 道,重灾区)
1. Cache 命中率与平均访问时间
- 平均访问时间
T = h · Tc + (1 − h) · Tm,其中 h = 命中率,Tc = Cache 访问时间,Tm = 主存访问时间。 - 若题目说”未命中要先访问主存再装入 Cache”,则
T = h · Tc + (1 − h) · (Tm + Tc)(注意题干口径)。 - 命中率 = 命中次数 / 总访问次数。
- 映射方式:直接映射(块号 mod Cache 行数)/ 全相联 / 组相联(块号 mod 组数);替换算法:LRU / FIFO / OPT / 随机。
例:命中率 95%,Cache 周期 10ns,主存周期 100ns → T = 0.95×10 + 0.05×100 = 9.5 + 5 = 14.5 ns。
2. 流水线(指令执行时间 / 吞吐率 / 加速比)
设流水线分 k 段、每段时间 Δt(取最长一段为节拍)、执行 n 条指令:
| 指标 | 公式 |
|---|---|
| 执行总时间 | T = (k + n − 1) · Δt |
| 吞吐率 | TP = n / T = n / [(k + n − 1)·Δt],最大吞吐率 TP_max = 1/Δt |
| 加速比 | S = 顺序执行时间 / 流水线时间 = (n·k·Δt) / [(k + n − 1)·Δt] = nk / (k + n − 1) |
| 效率 | E = (n·k) / [k·(k + n − 1)] = S / k |
注意:各段时间不等时,节拍 Δt 取最慢的那一段;如果题目给的是”取指 2ns、分析 2ns、执行 3ns”,则 Δt = 3ns,且严格说 T = 第一条完整走完(2+2+3) + (n−1)×3。考试中按
(k + n − 1)·Δt套即可,Δt 用最大段时间。
3. 海明码(校验位数)
- 设数据位 m 位、校验位 k 位,需满足
2^k ≥ m + k + 1,求最小的 k。 - 海明码可检测多位错、纠正 1 位错;CRC 检多位错但不纠错;奇偶校验只能检 1 位错、不能纠错。
例:m = 8 → 试 k=4:2^4=16 ≥ 8+4+1=13 ✓;k=3:2^3=8 ≥ 8+3+1=12 ✗。所以最少需要 4 位校验位。
4. 数的表示范围(定点 / 浮点)
- n 位补码整数范围:
−2^(n−1) ~ 2^(n−1) − 1(如 8 位补码:−128 ~ +127)。 - n 位原码 / 反码:
−(2^(n−1) − 1) ~ +(2^(n−1) − 1)(有 +0/−0)。 - 浮点数:精度由尾数位数决定,表示范围由阶码位数决定;规格化是为了提高精度(尾数最高位为有效位)。
5. 磁盘存取时间
存取时间 = 寻道时间 + 旋转延迟 + 数据传输时间
- 平均旋转延迟 = 旋转一周时间 / 2(如 7200 rpm → 一周 ≈ 8.33 ms → 平均延迟 ≈ 4.17 ms)。
- 读取一个扇区/磁道的传输时间 = 数据量 / 传输速率,或 = 旋转一周时间 ×(扇区占整道的比例)。
- 磁盘调度算法:FCFS / SSTF(最短寻道)/ SCAN(电梯)/ C-SCAN,比较平均寻道距离。
6. 可靠性计算(串联 / 并联 / N 取 K)
| 结构 | 系统可靠性 R |
|---|---|
| 串联(任一失效则系统失效) | R = R₁ · R₂ · … · Rn(越串越低) |
| 并联(冗余备份) | R = 1 − (1−R₁)(1−R₂)…(1−Rn)(越并越高) |
| 混联 | 先算并联子系统,再当作串联的一环 |
| N 取 K 表决 | R = Σ_{i=K}^{N} C(N,i) · R^i · (1−R)^(N−i) |
例:3 个可靠度均为 0.9 的部件并联 → R = 1 − (1−0.9)^3 = 1 − 0.001 = 0.999;若串联 → R = 0.9^3 = 0.729。
7. 性能指标 & Amdahl 定律
- MIPS = 每秒百万条指令 = 指令数 /(执行时间 ×10⁶)= 主频 / CPI ×10⁻⁶;MFLOPS = 每秒百万次浮点运算。
- 响应时间(从请求到收到首字节)、吞吐量(单位时间完成的事务数)。
- Amdahl 定律(系统某部分加速对整体的影响):
总加速比 S = 1 / [(1 − f) + f / k],f = 可优化部分占比,k = 该部分的加速倍数。当 k→∞,S_max = 1 / (1 − f)。
例:某程序 60% 的部分可并行、加速 4 倍 → S = 1 / [0.4 + 0.6/4] = 1 / 0.55 ≈ 1.82 倍。
二、计算机网络计算(每年 2~3 道)
1. 子网划分(IPv4)
- 主机位 n 位 → 每个子网可用主机数 =
2ⁿ − 2(去掉网络号和广播地址)。 - 借 m 位主机位做子网 → 可划分
2ᵐ个子网;新掩码 = 原掩码 + m 位。 - CIDR 聚合:把多个连续网段合并,取它们二进制的公共前缀长度。
例:
192.168.1.0/24要划 4 个子网 → 借 2 位 → /26(255.255.255.192)→ 子网.0~.63、.64~.127、.128~.191、.192~.255,每个子网可用主机 = 2⁶ − 2 = 62 个。
2. 数据传输时间 / 带宽
传输时间 ≈ 数据量 / 带宽 + 传播时延(远距离/卫星链路要算传播时延,近距离常可忽略)。- 注意单位换算:1 Byte = 8 bit;带宽常以 bps(bit/s)给出,文件大小常以 Byte 给出。
- 停止-等待协议信道利用率
U = T_发送 / (T_发送 + 2×T_传播 + T_处理);连续 ARQ 用窗口提高利用率。
例:传 10 MB(= 10 × 8 = 80 Mbit)文件,带宽 100 Mbps,传播时延忽略 → 时间 ≈ 80 / 100 = 0.8 秒。
3. 香农 / 奈奎斯特(偶尔考)
- 奈奎斯特(无噪声):极限速率 =
2 × W × log₂N(W 带宽,N 码元状态数)。 - 香农(有噪声):极限速率 =
W × log₂(1 + S/N)(S/N 为信噪比,注意 dB 与功率比的换算:(S/N)dB = 10·log₁₀(S/N))。
三、项目管理计算(每年 2~3 道,必拿)
1. 关键路径法(CPM)
| 参数 | 含义 / 公式 |
|---|---|
| ES(最早开始) | = max(所有前置活动的 EF);起点活动 ES = 0 |
| EF(最早完成) | = ES + 工期 |
| LF(最晚完成) | = min(所有后续活动的 LS);终点活动 LF = 项目工期 |
| LS(最晚开始) | = LF − 工期 |
| 总时差 TF | = LS − ES = LF − EF(活动可拖延而不影响总工期的时间) |
| 自由时差 FF | = (后继活动的最早 ES) − 本活动 EF |
- 关键路径 = 从开始到结束耗时最长的路径,也就是总时差 = 0 的活动串成的路径;可能不止一条。
- 关键路径上任一活动延误,项目工期就延误(除非用赶工/快速跟进)。
解题套路:① 正向算 ES/EF(取 max)→ ② 反向算 LF/LS(取 min)→ ③ TF = LS − ES,TF = 0 的就是关键活动 → ④ 关键路径长度 = 项目最短工期。
2. PERT 三点估算
- 期望工期
TE = (O + 4M + P) / 6(O 乐观、M 最可能、P 悲观)。 - 标准差
σ = (P − O) / 6,方差σ² = [(P − O) / 6]²。 - 项目总工期期望 = 各关键活动 TE 之和;总方差 = 各关键活动方差之和(标准差 = 总方差开方)。
例:O=4、M=6、P=8 → TE = (4 + 24 + 8)/6 = 6;σ = (8−4)/6 ≈ 0.67。
3. 挣值管理(EVM)
三个基础值:PV(计划值,到当前应完成工作的预算)、EV(挣值,已完成工作的预算 = BAC × 实际完成百分比)、AC(实际成本)。
| 公式 | 含义(口诀:偏差用减、指数用除;EV 永远在前) |
|---|---|
| SV = EV − PV | 进度偏差:> 0 进度超前,< 0 落后 |
| CV = EV − AC | 成本偏差:> 0 成本节约,< 0 超支 |
| SPI = EV / PV | 进度绩效指数:> 1 超前 |
| CPI = EV / AC | 成本绩效指数:> 1 节约 |
| EAC = BAC / CPI | 完工估算(按当前成本绩效推算总成本) |
| ETC = EAC − AC | 完工尚需成本 |
| VAC = BAC − EAC | 完工偏差 |
例:BAC = 10 万;某检查点计划完成 50%(PV = 5 万),实际完成 40%(EV = 10×40% = 4 万),实际花了 5.5 万(AC = 5.5 万)→ SV = 4 − 5 = −1 万(落后);CV = 4 − 5.5 = −1.5 万(超支);SPI = 4/5 = 0.8;CPI = 4/5.5 ≈ 0.73;EAC = 10/0.73 ≈ 13.7 万;ETC ≈ 13.7 − 5.5 = 8.2 万。
4. 成本估算方法(概念题,常和上面一起考)
类比估算(靠历史相似项目)/ 参数估算(靠规模 × 单位成本等公式)/ 自下而上估算(按 WBS 逐项汇总)/ 三点估算(PERT)。
四、软件度量计算(每年约 1~2 道)
1. 功能点(FP)
- 识别 5 类成分并计数:内部逻辑文件 ILF、外部接口文件 EIF、外部输入 EI、外部输出 EO、外部查询 EQ。
- 未调整功能点
UFP = Σ(每类成分项数 × 该类权重)(权重按复杂度低/中/高查表)。 - 调整功能点
AFP = UFP × (0.65 + 0.01 × ∑F),∑F 是 14 个一般系统特征的影响度之和(05 各,∑F 范围 070,所以调整因子 0.65~1.35)。
2. McCabe 圈复杂度 V(G)
三种等价算法(任选其一,结果相同):
V(G) = 边数 E − 节点数 N + 2V(G) = 判定节点数 P + 1(二元判定)V(G) = 控制流图中封闭区域数 + 1
判定:110 简单易测;1120 中等;21~50 复杂;> 50 不可测、必须重构。圈复杂度也等于独立路径数(基本路径测试用例下限)。
例:某模块控制流图有 11 条边、9 个节点 → V(G) = 11 − 9 + 2 = 4,即至少需要 4 条独立路径的测试用例。
3. 其他常考小公式
- 缺陷密度 = 缺陷数 / KLOC(千行代码)。
- COCOMO 基本模型
工作量 PM = a × (KLOC)^b(a、b 按项目类型:组织型/半嵌入型/嵌入型查表);进度TDEV = c × PM^d。 - 测试覆盖强度由弱到强:语句覆盖 < 判定覆盖 < 条件覆盖 < 判定/条件覆盖 < 条件组合覆盖 < 路径覆盖。
五、典型例题(限时自测)
例 1(流水线):某 5 段流水线,每段耗时 2ns,连续执行 100 条指令,求执行时间与加速比。
T =(5 + 100 − 1)×2 = 104×2 = 208 ns;顺序执行 = 100×5×2 = 1000 ns;加速比 S = 1000 / 208 ≈ 4.8。
例 2(Cache):访问 1000 次内存,命中 970 次,Cache 周期 5ns、主存周期 60ns(未命中只算访问主存),求命中率和平均访问时间。
命中率 = 970/1000 = 97%;T = 0.97×5 + 0.03×60 = 4.85 + 1.8 = 6.65 ns。
例 3(可靠性):系统由 A、B 两个子系统串联,A 是两个可靠度 0.9 的部件并联,B 可靠度 0.95,求系统可靠度。
R_A = 1 − (1−0.9)² = 0.99;R_系统 = R_A × R_B = 0.99 × 0.95 = 0.9405。
例 4(关键路径):活动 A(3)→C(2),B(4)→C;C→D(5)。求项目最短工期。
路径 A-C-D = 3+2+5 = 10;路径 B-C-D = 4+2+5 = 11 → 关键路径 B-C-D,最短工期 11;A 的总时差 = 11−10 = 1。
例 5(挣值):BAC = 80 万,进度过半时 PV = 40 万、EV = 32 万、AC = 36 万。判断进度/成本状态并估算 EAC。
SV = 32 − 40 = −8 万(落后);CV = 32 − 36 = −4 万(超支);CPI = 32/36 ≈ 0.89;EAC = 80 / 0.89 ≈ 89.9 万(预计超支约 10 万)。
例 6(海明码):要校验 16 位数据,至少需要多少校验位?
2^5 = 32 ≥ 16 + 5 + 1 = 22 ✓;2^4 = 16 ≥ 16 + 4 + 1 = 21 ✗ → 最少 5 位。
六、考前速记公式卡
1 | Cache:T = h·Tc + (1−h)·Tm 命中率 = 命中/总 |
配套速查表:
cheatsheets/computer-systems-formulas.md·project-management-calculations.md·software-metrics.md·networking.md。
软考专题系列第 7 篇。计算题是综合知识里最稳的一块——把上面那张公式卡背熟,这 8~12 分基本是囊中之物。同系列:架构评估 ATAM · 架构风格对比 · 微服务与云原生 · 数据库设计 · 消息中间件与缓存 · 法律法规与标准化。完整清单见 软考导览页。发现公式/例题错误欢迎到 仓库 开 issue。









