2. 历史项目数据采集:数据来源分类、采集流程与质量初筛

历史项目数据是参数化估算的基石。数据采集的质量直接决定估算模型的可靠性与泛化能力。本节从数据来源分类、采集流程设计、数据质量初筛三个维度,系统讲解如何构建高质量的历史项目数据集。

2.1 数据来源分类

历史项目数据通常来源于三类渠道:内部项目库、行业基准数据库、公开数据集。三类来源在数据粒度、覆盖范围、获取成本上存在显著差异,需根据估算目标组合使用。

来源类型 典型示例 数据粒度 覆盖范围 获取成本 适用场景
内部项目库 企业PMIS、工时系统、财务系统 高(任务级/人天级) 本企业/本部门 低(已有系统) 企业级参数化模型训练
行业基准 ISBSG、中国软件行业基准数据 中(项目级/模块级) 行业/区域 中(需购买或会员) 对标分析、缺失数据补全
公开数据集 GitHub API、COCOMO 81/NASA 低(项目级/粗粒度) 全球/特定领域 低(免费) 模型验证、学术研究
关键原则:内部项目库应作为主数据源(占比 ≥ 70%),行业基准用于校准与补缺,公开数据集仅用于交叉验证或冷启动场景。

2.2 采集流程设计

标准化的采集流程可降低人为偏差,确保数据可追溯、可复现。推荐采用五阶段流程:

  1. 需求定义:明确估算目标(如功能点/人天/缺陷率),确定所需字段清单与采集范围。
  2. 源系统对接:通过API、ETL工具或手动导出,从PMIS、Jira、SVN、财务系统等抽取原始数据。
  3. 字段映射与标准化:将不同系统的字段统一为内部标准(如“开发工时”统一为“人天”)。
  4. 数据清洗与转换:处理缺失值、异常值、重复记录,转换单位与货币汇率。
  5. 版本化入库:将清洗后的数据存入历史项目库,记录采集时间戳与版本号。
实践建议:每次采集后生成一份《数据采集日志》,记录源系统、采集时间、字段映射规则、异常处理方式,便于后续审计与模型迭代。
数据采集五阶段流程 需求定义 字段清单 源系统对接 API/ETL 字段映射 标准化 清洗转换 缺失/异常 版本化 入库 每个阶段结束后生成阶段报告,记录处理记录与异常事件 确保数据采集过程可追溯、可复现

2.3 数据质量初筛

原始数据通常包含缺失、异常、重复、不一致等问题。初筛阶段需建立自动化规则与人工复核相结合的质量检查机制。以下为关键检查项:

检查维度 检查规则 阈值/标准 处理方式
完整性 必填字段(如项目ID、工时、功能点)是否为空 缺失率 < 5% 缺失 > 5% 则整条标记待补录
唯一性 项目ID或记录ID是否重复 重复率 = 0% 保留最新版本,删除旧版本
一致性 单位、货币、日期格式是否统一 100% 标准化 自动转换至内部标准格式
合理性 工时、成本、规模是否在合理区间 Z-score < 3 或 IQR 法 异常值标记,人工复核
时效性 项目完成日期是否在合理时间窗口内 距今不超过 5 年 超期数据降权或剔除
常见陷阱:不要直接删除所有异常值。部分异常值(如极高复杂度项目)可能包含重要信息,应单独标记并纳入专家评审流程。
数据质量初筛决策树 原始数据记录 完整性检查 唯一性检查 合理性检查 标记待补录 保留最新版本 人工复核异常值 三项检查全部通过的数据方可进入历史项目库

2.4 数据质量初筛工具链推荐

为提高初筛效率,建议采用以下工具组合:

  • Python + Pandas:编写自动化检查脚本,支持缺失值统计、重复检测、Z-score 异常检测。
  • Great Expectations:定义数据质量期望(Expectation),生成可视化质量报告。
  • Apache Griffin:企业级数据质量平台,支持定时任务与告警。
  • 自定义规则引擎:将企业特有的业务规则(如“某类项目工时上限”)编码为可复用规则。
效率指标:自动化初筛应覆盖 80% 以上的检查项,剩余 20% 需人工复核的异常数据应控制在总数据量的 5% 以内,否则需回溯采集流程或调整规则阈值。