⌨️ 第五章 从设计到测试
📄 本篇摘要

进度管理两把尺:WBS(工作分解结构)把大目标拆到【可估计、可分配、可验收】的小块——拆不动=还没想清;EVM(挣值管理)用三个数回答【到底快了还是慢了、省了还是超了】——进度预算一起看,不靠感觉。

📝 关系

上一节:构造与析构 | 本章收官:⌨️ 编程原理 · 索引

一、WBS:把大象拆成积木

WBS(Work Breakdown Structure)=把项目逐层分解成工作包:

【图书管理系统】(项目)
 ├─ 借阅模块
 │   ├─ 借书接口        (2 人日)
 │   ├─ 还书接口        (2 人日)
 │   └─ 逾期计算        (3 人日)
 ├─ 查询模块
 └─ 报表模块

合格的分解标准:工作包粒度可估计(人日)、可分配(有负责人)、可验收(有完成标准)。教材提醒两个拆法陷阱:

WBS 的隐藏价值:拆不动的地方就是风险——【数据同步那块还没想清】在 WBS 上直接暴露。

二、EVM:三个数看清进度

EVM(Earned Value Management,挣值管理)三个基础值:

四个衍生指标(心算即可):

指标 公式 读法
进度偏差 SV EV − PV 负=落后
成本偏差 CV EV − AC 负=超支
进度效率 SPI EV ÷ PV <1=进度慢
成本效率 CPI EV ÷ AC <1=花钱快于产出

EVM 的精髓:进度和成本交叉验证——【按时】但 CPI 0.7=花钱太快,【省钱】但 SPI 0.6=进度严重落后。单一维度都会骗人。

三、动手 Demo:给一个小项目算 EVM 账

def evm_report(pv, ev, ac):
    sv, cv = ev - pv, ev - ac
    spi, cpi = ev / pv, ev / ac
    print(f"PV={pv} EV={ev} AC={ac}")
    print(f"SV={sv:+} CV={cv:+} SPI={spi:.2f} CPI={cpi:.2f}")
    verdict = []
    if spi < 1: verdict.append("进度落后")
    else: verdict.append("进度达标")
    if cpi < 1: verdict.append("成本超支")
    else: verdict.append("成本可控")
    return ";".join(verdict)

# 项目 A:干了 80 计划 100 的活,花了 90
print("项目 A:", evm_report(pv=100, ev=80, ac=90))
print()
# 项目 B:干了 120 计划 100 的活,花了 150
print("项目 B:", evm_report(pv=100, ev=120, ac=150))

沙箱实跑输出:

PV=100 EV=80 AC=90
SV=-20 CV=-10 SPI=0.80 CPI=0.89
项目 A: 进度落后;成本超支
PV=100 EV=120 AC=150
进度达标
SV=+20 CV=-30 SPI=1.20 CPI=0.80
项目 B: 进度达标;成本超支

看到什么算成功:两个项目的四指标各就各位,结论自动生成。

读结果:项目 A 双红(落后且超支);项目 B 进度超前 20%(SPI 1.2)但每花 1 元只挣 0.80 元(CPI 0.80)——靠加班猛冲、成本失控的典型画像。EVM 让这种状态在第 2 周就被看见,而不是交付日。

四、30 秒实验

预测:项目 B 若保持 CPI 不变,做完价值 200 的全部工作要花多少?200 / 0.80 = 250——超支四分之一。CPI 是整项目最有预测力的指标(历史数据里它最稳定)。

五、常见误区

误区 真相
WBS 就是任务清单 工作包必须有估计、负责人、验收标准;无验收标准不算分解
进度百分比拍脑袋报 挣值按【完成工作的价值】计;【感觉写了七成】不是 EV
EVM 只管大项目 迷你版(三个数)个人项目也能用;小成本见大真章
自测三问(点击展开) 1. **合格工作包的三可?** 答:可估计(人日)、可分配(负责人)、可验收(完成标准)。 2. **SPI 和 CPI 各怎么算、怎么读?** 答:SPI=EV/PV(进度效率)、CPI=EV/AC(成本效率);小于 1 即落后/超支。 3. **EVM 为什么比单看进度百分比强?** 答:进度与成本交叉验证——超前也可能超支,省钱也可能滞后。

相关笔记