第二章 前置条件与数据准备:项目范围定义、历史数据收集、团队角色清单

任何基于模型的成本估算(如COCOMO、功能点分析或参数化类比)的准确性,都高度依赖“前置条件与数据准备”阶段的质量。本章将详细拆解在正式执行Effort估算之前,必须完成的三个核心准备工作:项目范围定义、历史数据收集与团队角色清单。这是确保估算结果可信、可复现的基石。

前置条件与数据准备流程 前置条件与数据准备:关键路径图 批准的需求 产品待办列表 1. 项目范围定义 WBS / 功能模块 2. 历史数据收集 速率 / 缺陷率 3. 团队角色清单 能力层级 / 在岗 估算基线就绪 输入输出物对齐 数据清洗与归一化在此阶段完成

2.1 适用场景

强大的估算基础准备工作,并非所有估算场景都必须严格执行全部步骤,但在以下场景中,前置条件与数据准备的完善程度直接影响估算置信度:

  • 项目启动估算: 需要从零到一建立预算基线,必须有明确的范围定义和团队假设。
  • 里程碑/迭代计划: 依赖历史Sprint速率和团队当前产能进行短期排期。
  • 变更请求评估: 需要对比“当前范围”与“变更后范围”对成本的影响。
  • 外部投标/甲方报价: 必须依据清晰的功能列表和历史生产率进行竞标。

2.2 前置条件

在执行本章节操作前,组织与项目需要具备以下基本要素:

  1. 项目章程(Project Charter): 已获正式批准,包含高层级目标、预算约束和关键里程碑。
  2. 初始产品待办列表(Product Backlog): 至少包含已排序的Epic级别功能描述。
  3. 组织过程资产授权: 获得访问历史项目数据仓库、工时管理系统的权限。
  4. 核心估算团队确认: 已指定技术负责人、估算协调员和业务方代表。

2.3 操作步骤

本章节的核心操作步骤分为三个并行推进的子活动,最终汇聚为估算基线。具体步骤如下:

步骤 1:项目范围定义(Scope Definition)

将高层级需求分解为可估算的工作单元(Work Items)。对于AI项目,切忌使用标准化的功能点,而应采用AI加权功能点或故事点。

模块名称功能描述估算复杂度关联历史参考
数据管道多源数据接入、清洗、特征工程高 (L3)Project Alpha - 数据层
模型训练基准模型选型、超参调优高 (L3)Project Beta - NLP模型
推理接口RESTful API 封装、并发优化中 (L2)Gamma 微服务骨架

步骤 2:历史数据收集(Historical Data collection)

从组织过程资产中提取与待估算项目类似的历史项目数据。重点关注单位产出工时和缺陷返工率。如果缺乏历史数据,需要参考行业基准(如IDC或Gartner AI开发指标)进行校准。

历史项目总工作量(人月)功能点数速率(人时/FP)缺陷率(%)
Alpha 推荐系统2415007.812
Beta 客服NLP4528008.215
Gamma 视觉检测1890010.18

数据收集完成后建议使用YAML结构化存储,便于工具读取与动态调整,示例如下:

historical_effort:
  - project_code: "PRJ-ALPHA"
    system_type: "recommendation"
    total_function_points: 1500
    total_person_hours: 2800
    defect_rate: 0.12
    team_experience_level: "intermediate"

步骤 3:团队角色清单(Team Role Inventory)

明确可用的人力资源及其技能等级(Junior / Intermediate / Senior)。AI项目的关键角色通常包括:AI架构师、数据工程师、ML工程师、MLOps工程师、测试工程师(AI)及业务分析师。

角色拟投入人员技能级别可用率(FTE)小时费率($)
AI架构师张三Senior (L5)0.5120
数据工程师李四Intermediate (L3)1.080
ML工程师王五Junior (L2)1.055
MLOps工程师赵六Intermediate (L4)0.2595

2.4 输入输出物

类型名称说明/来源
输入项目章程 / 产品路线图来源于项目发起人或产品经理。
输入组织过程资产(OPA)来源于项目管理信息系统(PMIS)或问题追踪系统。
输出分解后的范围说明书(WBS)包含已估算复杂度的功能模块树。
输出历史数据基准记录清洗和归一化后的速率/缺陷率数据库。
输出团队能力矩阵表明确角色、技能级别、可用率和费率。

2.5 责任边界

  • 估算协调员(Estimator/SME): 负责主持分解会议,引导历史数据调取,编制角色清单初稿,对数据质量和一致性负责。
  • 技术负责人(Tech Lead/Architect): 负责范围定义中的技术拆解,确认功能复杂度的技术合理性,纠正历史数据偏差。
  • 项目经理/PO: 负责提供范围输入,确认业务优先级,协调资源清单中的角色确认,对最终的输入基线和假设负责。
  • 职能经理(Line Manager): 负责确认团队角色清单中人员的技能等级和实际可用率。

2.6 记录材料

在完成数据准备后,需归档以下过程记录材料:

  • 范围定义会议纪要: 记录范围边界、假设条件和排除的功能需求。
  • 历史数据采集日志: 记录数据的来源项目、时间戳、清洗方法和异常标记。
  • 团队技能确认函(邮件或系统签核): 由对应职能经理或负责人签字确认的技能水平和可用率。
  • 输入数据包版本记录: 确保所有输入材料都有唯一版本号和变更记录。

2.7 异常处理

异常 1:范围边界模糊,无法有效分解。 处理策略:与PO协商中止估算,或采用快速三点估算(最乐观/最可能/最悲观),并记录为预算缓冲储备。
异常 2:无历史数据可用。 处理策略:启动为期1-2周的Sprint 0进行技术原型验证,收集初始速率;或采用市场公开数据库(如Software Improvement Group benchmark)。
异常 3:关键AI角色(如架构师)产能冲突。 处理策略:假设基准估算基于“标准团队配置”。若实际人员不匹配,通过技能折扣因子调整总工作量(如缺失高级人员需增加20%工时)。
异常 4:历史数据口径不一致(如工时统计口径差异)。 处理策略:进行数据清洗与归一化,将粗估工时调整为详细级工时。若清洗后仍偏差超过15%,则标记为低置信度数据,并在基线中增加额外风险储备。

2.8 验收标准

前置条件与数据准备阶段完成的标志,必须满足以下全部检查项:

  1. 范围已冻结: 范围说明书已完成,并经过技术负责人和PO的签字确认。
  2. 数据已验证: 历史数据至少包含1-2个相似项目的完整工时记录,且已通过三方核验(估算员、技术负责人、PM)。
  3. 资源已确认: 团队角色清单中的每一个人力资源的状态为“已分配”或“可用待命”,费率已确认。
  4. 假设完全暴露: 所有在数据准备过程中的假设(如“假设GPU资源充足”、“假设预训练模型可用”)均已记录在估算假设日志中。