2. 历史项目数据采集:数据来源分类、采集流程与质量初筛
历史项目数据是参数化估算的基石。数据采集的质量直接决定估算模型的可靠性与泛化能力。本节从数据来源分类、采集流程设计、数据质量初筛三个维度,系统讲解如何构建高质量的历史项目数据集。
2.1 数据来源分类
历史项目数据通常来源于三类渠道:内部项目库、行业基准数据库、公开数据集。三类来源在数据粒度、覆盖范围、获取成本上存在显著差异,需根据估算目标组合使用。
| 来源类型 | 典型示例 | 数据粒度 | 覆盖范围 | 获取成本 | 适用场景 |
|---|---|---|---|---|---|
| 内部项目库 | 企业PMIS、工时系统、财务系统 | 高(任务级/人天级) | 本企业/本部门 | 低(已有系统) | 企业级参数化模型训练 |
| 行业基准 | ISBSG、中国软件行业基准数据 | 中(项目级/模块级) | 行业/区域 | 中(需购买或会员) | 对标分析、缺失数据补全 |
| 公开数据集 | GitHub API、COCOMO 81/NASA | 低(项目级/粗粒度) | 全球/特定领域 | 低(免费) | 模型验证、学术研究 |
关键原则:内部项目库应作为主数据源(占比 ≥ 70%),行业基准用于校准与补缺,公开数据集仅用于交叉验证或冷启动场景。
2.2 采集流程设计
标准化的采集流程可降低人为偏差,确保数据可追溯、可复现。推荐采用五阶段流程:
- 需求定义:明确估算目标(如功能点/人天/缺陷率),确定所需字段清单与采集范围。
- 源系统对接:通过API、ETL工具或手动导出,从PMIS、Jira、SVN、财务系统等抽取原始数据。
- 字段映射与标准化:将不同系统的字段统一为内部标准(如“开发工时”统一为“人天”)。
- 数据清洗与转换:处理缺失值、异常值、重复记录,转换单位与货币汇率。
- 版本化入库:将清洗后的数据存入历史项目库,记录采集时间戳与版本号。
实践建议:每次采集后生成一份《数据采集日志》,记录源系统、采集时间、字段映射规则、异常处理方式,便于后续审计与模型迭代。
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% 以内,否则需回溯采集流程或调整规则阈值。