第一章 Effort估算参数概述
Effort估算是软件工程中资源规划的核心活动,其准确性高度依赖对输入参数的理解与控制。本章聚焦三种主流估算模型(COCOMO、功能点、用例点)的公共参数层,并为后续章节的参数调试实验提供概念基础。
1.1 核心参数定义
任何参数化估算模型均由四类参数构成:规模因子、调整因子、环境因子、约束因子。下表列出最常用参数及其在调试实验中的测试条件。
| 参数名称 | 符号/别名 | 含义 | 测试条件(数据来源) | 调参策略(预置) |
|---|---|---|---|---|
| 未调整用例点 | UUCP | 从用例模型直接统计的Actor与Use Case权重和 | 项目用例规格文档 | 调整Actor/Use Case复杂度权重 |
| 技术复杂度因子 | TCF | 13项技术因素对各项目影响的总和(0.6~1.3) | 14项评分问卷(0~5分制) | 修改特定因素评分(如“分布式系统”权重) |
| 环境复杂度因子 | EF | 8项环境因素对团队效率的调节 | 团队成熟度评估表 | 调高/调低“分析师能力”项数值 |
| 调整后工作乘数 | EAF | COCOMOⅡ中17个成本驱动因子乘积 | 项目历史相似度匹配 | 对单个驱动因子(如RELY、CPLX)做±1级偏移 |
| 千行代码数 | KSLOC | 以千行为单位的源代码规模 | 功能点反推或类比估算 | 使用不同语言折算表 |
📌 测试条件提示:参数测试时,应确保除目标参数外其他参数固定,每次只修改一个变量。例如测试“技术复杂度因子”时,固定UUCP和EF,仅调整TCF的14项评分。
1.2 估算模型类别
当前工业界常用的参数化估算模型有三种,各自对参数的敏感度分布差异显著。
- COCOMOⅡ:基于KSLOC + 17个成本驱动因子,适用于大型传统项目。参数以乘法方式组合,单个因子波动10%可能导致总体估算偏移5%~20%。
- 功能点分析(FPA):基于5种功能元素(输入、输出、查询、文件、接口)的加权和,再乘以值调整因子(VAF)。参数敏感度集中于“复杂度等级界定”,同一功能在低/平均/高之间切换可产生±30%差值。
- 用例点分析(UCP):基于UUCP × TCF × EF。由于TCF和EF均为0.5~1.5量级,UUCP的权重分配直接影响最终结果60%以上。
🔬 参数敏感度基础: 对三种模型的局部敏感度分析表明,以下参数变动对最终Effort影响最大(按影响力降序):
- UUCP中的Actor权重(用例点模型)
- COPROMO中的RELY(所需可靠性)驱动因子
- 功能点中的内部逻辑文件(ILF)复杂度级
- TCF中的“分布式处理”因素(当项目架构为分布式时)
- EF中的“分析师能力”因素(当团队经验极低或极高时)
1.3 参数敏感度与调试链路
参数调试实验的核心任务是通过单因子扰动量测建立参数‑Effort的传递函数。下图展示一套完整的参数敏感度闭环链路。
1.4 参数测试的仪器与数据判断
在实验环境中,参数调试通常借助以下工具/脚本:
- 测度平台:COCOMOⅡ Calculator(可使用CMU官方电子表格)、功能点计数工具(如NESMA Checker)、UCP计算器(开源Python版)。
- 数据判据:每个参数取值应至少满足
95%置信区间(来自历史项目分布)或±20%专家经验范围。若某参数超出常见区间(比如EF>1.5),需标记为异常值并重新核查输入。 - 误差分析步骤:
1. 固定其他参数,取待测参数的最小值/中值/最大值 2. 分别计算Effort_output 3. 计算局部敏感度 = (Effort_max - Effort_min) / (Param_max - Param_min) 4. 若敏感度 > 2.0 (单位Effort/参数单位),则标记为“高敏感参数”
⚠️ 调参前注意事项:切勿同时修改超过两个参数,否则无法分辨Effort变化来源。建议使用单因子扰动 + 析因设计方法,每组实验至少重复3次以排除偶然误差。
1.5 验收阈值(本章预设)
作为参数调试的起点,本章定义以下临时验收阈值,用于后续实验筛选可调参数:
- 任何参数的局部敏感度 ≥ 1.5(Effort/参数量纲)
- 参数取值必须在模型定义的法定范围内(如TCF区间0.6~1.3,不可外推)
- 参数的历史数据变异系数 ≤ 0.3(超过此值表示参数本身不稳定,需先降噪)