mcpField
P
project-sizing-guide

project-sizing-guide

github.com/zebbern开发4.7k51 次安装1 天前更新
代码仓库

关于 project-sizing-guide

project-sizing-guide 是面向软件团队的项目工作量估算技能,提供 PERT、T 恤尺码和功能点分析方法,并通过风险区间与置信区间呈现估算结果。

主要功能

  1. 01PERT 三点估算与置信区间
  2. 02T 恤尺码评估与转换
  3. 03功能点分析与工作量换算
  4. 04按需求拆分工作分解结构
  5. 05Python 估算计算脚本

适用场景

  1. 01早期项目可行性与粗略预算
  2. 02迭代计划中的任务估算
  3. 03大型项目投标工作量评估

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zebbern/claude-code-guide --skill project-sizing-guide

安装后在 Claude Code 中输入/project-sizing-guide确认已加载。

附带文件LICENSEscripts/estimate_calculator.py

详细介绍

项目规模评估指南 — 软件项目工作量估算

帮助团队基于三种主要方法——三点估算法(PERT)、T 恤尺码估算法和功能点分析法(FPA)——科学地估算软件项目工作量。输出乐观、最可能和悲观值,以及风险区间。

快速开始

  1. 用户提供需求描述 → Agent 识别功能模块,并将其分解为工作分解结构(WBS)
  2. 选择估算方法 → 根据项目阶段和可用信息选择最合适的方法
  3. 估算每个条目 → 为每个工作包指定 O/M/P(乐观/最可能/悲观)值
  4. 汇总并报告 → 生成包含风险分析和置信区间的估算报告

可使用计算辅助工具:

python3 scripts/estimate_calculator.py --method pert --tasks '[{"name":"User Login","O":2,"M":3,"P":8}]'

方法选择指南

场景推荐方法理由
早期可行性研究、粗略预算T 恤尺码估算法可用信息较少;快速对齐工作量级
Sprint 规划、迭代估算三点估算法(PERT)粒度适中,并提供置信区间
合同投标、大型项目 RFP功能点分析法(FPA)最严谨,便于与行业数据比较
团队有历史数据PERT + 历史数据校准将经验修正与数据相结合

方法 1:三点估算法(PERT)

核心公式
指标公式含义
期望值 E(O + 4M + P) / 6加权平均工作量
标准差 σ(P − O) / 6估算不确定性
方差 Vσ²用于汇总各项任务
项目总期望值ΣE各项期望值之和
项目总标准差√(ΣV)方差之和的平方根

其中:

  • O(乐观):假设一切顺利时的最短工期
  • M(最可能):正常情况下的工期
  • P(悲观):出现重大困难时的最长工期
置信区间
置信水平区间使用场景
68.3%E ± 1σ内部粗略估算
90%E ± 1.645σ项目规划
95%E ± 2σ对外报价
99.7%E ± 3σ合同承诺
步骤
  1. 构建 WBS:将需求分解为可独立估算的最小单元(建议每项 ≤ 5 人天)
  2. 进行三点估算:为每个工作包提供 O / M / P 值(使用统一单位:人时或人天)
  3. 计算每项任务的期望值和标准差
  4. 汇总项目级指标:总期望值 = ΣE,总标准差 = √(Σσ²)
  5. 输出置信区间:根据风险偏好选择置信水平
O/M/P 估算经验法则
  • O 不应低于 M 的 30%(过于乐观可能意味着忽略了必要步骤)
  • P 不应超过 M 的 5 倍(过于悲观可能意味着需求不明确,应先澄清)
  • 如果 O ≈ M ≈ P,说明任务要么极其明确,要么估算者没有认真考虑风险
  • P/O 比率(离散比率)反映不确定性:< 2 = 低风险,2–4 = 中风险,> 4 = 高风险

方法 2:T 恤尺码估算法

规模参考表
规模典型范围(人天)典型故事点适用于
XS0.25 – 0.51配置更改、文案编辑、简单的错误修复
S0.5 – 22 – 3单组件开发、简单的 API、细微的 UI 调整
M2 – 55 – 8完整的功能模块、中等复杂度的 API
L5 – 1513 – 21需要集成的跨模块功能
XL15 – 4034 – 55需要架构设计的子系统级开发
XXL40+89+应拆分到多个迭代中;不建议作为单个估算单位
将 T 恤尺码转换为三点估算

需要更精确的数字时,可以将 T 恤尺码转换为三点估算:

规模O(人天)M(人天)P(人天)
XS0.250.51
S0.512.5
M23.57
L51020
XL152550
XXL4070150
步骤
  1. 团队对齐:确认每种尺码的含义(上表仅供参考;团队可自行调整)
  2. 独立评估:每个人独立分配尺码,以避免锚定偏差
  3. 讨论差异:估算结果相差超过 2 个尺码时,必须进行讨论
  4. 达成共识:采用团队共识值
  5. 转换为数字(可选):使用上表推算 O/M/P 值

方法 3:功能点分析(FPA)

五种功能组件类型
组件类型缩写定义示例
内部逻辑文件ILF由应用维护的逻辑数据组用户表、订单表
外部接口文件EIF应用引用但不维护的数据组第三方汇率数据
外部输入EI从外部进入系统的数据处理表单提交、API POST
外部输出EO生成并发送到系统外部的数据报告生成、导出
外部查询EQ简单的数据检索 + 显示列表查询、详情页
复杂度权重矩阵
组件类型低中高
ILF71015
EIF5710
EI346
EO457
EQ346
复杂度评估规则

ILF / EIF 复杂度(基于 DET – 数据元素类型和 RET – 记录元素类型):

DET 1-19DET 20-50DET 51+
RET 1低低中
RET 2-5低中高
RET 6+中高高

EI 复杂度(基于 DET 和 FTR – 引用的文件类型):

DET 1-4DET 5-15DET 16+
FTR 0-1低低中
FTR 2低中高
FTR 3+中高高

EO / EQ 复杂度(基于 DET 和 FTR):

DET 1-5DET 6-19DET 20+
FTR 0-1低低中
FTR 2-3低中高
FTR 4+中高高
将功能点转换为工作量

计算未调整功能点(UFP)后:

  1. 计算价值调整因子(VAF)(可选;自 IFPUG 4.3+ 起已弃用,但部分团队仍在使用)

    • 14 项通用系统特征(GSC),每项评分为 0–5
    • VAF = 0.65 + 0.01 × Σ(GSC)
    • 调整后功能点 AFP = UFP × VAF
  2. 将功能点转换为人时

    • 行业基准:每个功能点 8–15 人时(因语言和团队成熟度而异)
    技术栈人时 / FP备注
    低代码 / 成熟框架4 – 8有许多可复用组件
    Python / JS / 现代 Web8 – 12主流开发生产力
    Java / C# 企业级10 – 15包含架构和标准方面的开销
    嵌入式 / C / C++15 – 25调试和测试成本较高
    遗留系统维护20 – 30理解代码和回归测试的成本
步骤
  1. 识别功能组件:列出所有 ILF、EIF、EI、EO 和 EQ
  2. 评估复杂度:将每个组件评为低 / 中 / 高
  3. 计算 UFP:对所有组件求和(数量 × 权重)
  4. 选择转换系数:根据技术栈选择每个 FP 对应的人时
  5. 计算总工作量:UFP × 转换系数
  6. 增加缓冲:建议预留 15–30% 的管理和风险缓冲

估算调整因素检查清单

完成估算后,请确认已考虑以下因素:

技术因素
  • 对技术栈的熟悉程度(团队是否有经验?如果不熟悉,增加 30–50%)
  • 技术债务(遗留代码质量差?增加 20–40%)
  • 第三方依赖(API 不稳定?缺少文档?增加 10–30%)
  • 性能 / 安全要求(是否有特殊的非功能性要求?增加 15–25%)
团队因素
  • 团队规模(超过 5 人后,沟通开销会显著增加;每增加 1 人,增加约 5%)
  • 人员流失风险(关键成员可能离职?增加 15–25%)
  • 并行项目(团队需要在多个项目之间切换上下文?增加 20–30%)
  • 新成员入职(有新员工?预计前 2 周效率降低约 50%)
流程因素
  • 需求稳定性(需求可能变更?增加 20–50%)
  • 审批流程(需要多层审批?增加 10–20%)
  • 部署复杂度(需要部署到多个环境或区域?增加 10–15%)
  • 合规要求(是否涉及审计或合规流程?增加 15–30%)
常被低估的工作
  • 代码评审:+10–15%
  • 编写单元测试:+15–25%
  • 集成 / E2E 测试:+10–20%
  • 文档:+5–15%
  • 修复 Bug 和回归测试:+10–20%
  • 环境搭建和 DevOps:+5–10%
  • 会议和沟通:+10–15%

估算输出模板

Agent 完成估算后,应按以下格式输出:

## Estimation Report: [Project / Feature Name]

### Estimation Method: [PERT / T-shirt / FPA]

### Work Package Breakdown

| # | Work Package | O (person-days) | M (person-days) | P (person-days) | E (person-days) | σ |
|---|-------------|-----------------|-----------------|-----------------|-----------------|---|
| 1 | xxx         | x               | x               | x               | x.x             | x.x |
| 2 | xxx         | x               | x               | x               | x.x             | x.x |

### Summary

- Total expected effort: X person-days
- Total standard deviation: X person-days
- 68% confidence interval: X – X person-days
- 90% confidence interval: X – X person-days
- 95% confidence interval: X – X person-days

### Adjustment Factors
- [Factors considered and adjustments applied]

### Final Recommendation
- For internal planning: X person-days (90% confidence)
- For external quotes: X person-days (95% confidence)

### Risk Alerts
- [Key risk items and mitigation suggestions]

计算工具

scripts/estimate_calculator.py 脚本支持对全部三种估算方法进行数值计算:

# Three-Point Estimation (PERT)
python3 scripts/estimate_calculator.py --method pert \
  --tasks '[{"name":"Login Module","O":2,"M":3,"P":8},{"name":"Payment Module","O":5,"M":10,"P":20}]'

# T-shirt Size Conversion
python3 scripts/estimate_calculator.py --method tshirt \
  --tasks '[{"name":"Login Module","size":"M"},{"name":"Payment Module","size":"L"}]'

# Function Point Analysis
python3 scripts/estimate_calculator.py --method fpa \
  --components '[{"type":"ILF","complexity":"medium","count":3},{"type":"EI","complexity":"low","count":5}]' \
  --hours-per-fp 10

参考资料

  • IFPUG(国际功能点用户组)CPM 4.3.1
  • PMI《PMBOK 指南》第 6 版,第 6.4 节:估算活动持续时间
  • Steve McConnell,《软件估算:揭开黑箱》
  • Mike Cohn,《敏捷估算与规划》

评论

支持 Markdown