JY软件计价规范(4号文)详解
·
一、四号文基本信息
四号文全称《JY软件计价规范 (试行)》JZG〔2020〕4 号),是中央JW装备发展部发JY软件计价标准,用于规范军队软件采购的定价行为,保障软件项目的科学评估与合理定价。
二、ILF、EIF、EI、EO、EQ 详细定义与功能点数
四号文采用功能点分析法 (FPA) 评估软件规模,将功能点分为数据功能和事务功能两大类:
类型 缩写 全称 定义 基本功能点数 数据功能 ILF 内部逻辑文件 在软件内部维护的、用户可识别的逻辑相关数据组(如数据库表) 7 EIF 外部接口文件 在其他系统维护但被本软件调用的数据组(如第三方 API 数据) 5 事务功能 EI 外部输入 向软件输入数据或指令(如增删改操作),用于维护 ILF 或改变系统行为 4 EO 外部输出 向系统外部发送经过处理的数据(含计算逻辑或派生数据) 5 EQ 外部查询 向系统外部发送未经处理的原始数据(仅简单筛选 / 排序,无计算) 4
三、功能点拆分方法
1. 基本拆分步骤
功能点拆分遵循 "两步走" 策略:
第一步:找名词(识别 ILF 和 EIF)
- 确定系统边界,区分内部维护数据 (ILF) 和外部引用数据 (EIF)
- 每个逻辑上独立的数据组(如数据库中的表、视图)计为一个 ILF/EIF
- 注意:同一数据组无论被访问多少次,只计 1 次
第二步:找动词(识别 EI、EO、EQ)
- 针对每个 ILF/EIF,识别对其进行的操作
- EI:增、删、改、导入等写操作(改变系统状态)
- EO:报表生成、统计分析等含计算的输出
- EQ:简单查询、浏览等无计算的输出
- 注意:操作必须是用户可感知的 "基本过程"(原子操作)
2. 功能点识别规则详解
ILF 识别规则:
- 在系统边界内维护的数据组
- 用户可识别的逻辑相关数据集合
- 例如:订单管理系统中的 "订单信息表"、"客户信息表"
EIF 识别规则:
- 在系统边界外维护,但被本系统引用的数据组
- 一个系统的 EIF 必然是另一系统的 ILF
- 例如:订单系统调用的 "税率表"(由财务系统维护)
EI 识别规则:
- 来自系统外部的输入(数据或控制信息)
- 必须维护至少一个 ILF 或改变系统行为
- 排除仅查询的操作(归为 EQ)
- 例如:订单录入、客户信息修改、删除订单
EO 识别规则:
- 向系统外部输出数据
- 处理逻辑必须包含:数学公式 / 计算、派生数据、维护 ILF 或改变系统行为
- 例如:订单统计报表、发票生成(含计算逻辑)
EQ 识别规则:
- 向系统外部输出数据
- 不能包含:计算公式、派生数据、修改 ILF 或改变系统行为
- 只能包含简单筛选、排序、分组
- 例如:订单查询、客户信息浏览
四、功能点拆分示例
以JY物资管理系统为例:
1. 识别数据功能 (ILF/EIF)
数据组名称 类型 说明 物资信息表 ILF 系统内部维护的物资基本信息(编号、名称、规格、数量) 供应商信息表 ILF 系统内部维护的供应商信息(名称、联系方式、资质) JBZ编码表 EIF 由JD标准系统维护,本系统引用的JBZ代码 2. 识别事务功能 (EI/EO/EQ)
针对 "物资信息表" 的操作:
操作名称 类型 说明 功能点数 物资入库 EI 新增物资信息,维护 ILF 4 物资出库 EI 修改物资数量(减少),维护 ILF 4 物资信息修改 EI 更新物资规格、单价等信息 4 物资报废 EI 删除物资信息 4 物资统计报表 EO 生成物资库存报表(含计算:总数量、总价值) 5 物资查询 EQ 按条件查询物资信息(无计算) 4 3. 计算原始功能点 (UPF)
UPF = (ILF 数 ×7) + (EIF 数 ×5) + (EI 数 ×4) + (EO 数 ×5) + (EQ 数 ×4)
示例计算:
- ILF: 2 个(物资信息表、供应商信息表)→ 2×7=14
- EIF: 1 个(军兵种编码表)→ 1×5=5
- EI: 4 个(入库、出库、修改、报废)→ 4×4=16
- EO: 1 个(统计报表)→ 1×5=5
- EQ: 1 个(物资查询)→ 1×4=4
- 总计 UPF = 14+5+16+5+4 = 44
五、报价计算方法
1. 计算调整后功能点
调整后功能点 = UPF × VAF × RE
- VAF(价值调整因子):考虑 14 个技术复杂度因素(如分布式处理、性能要求等),范围 0.65~1.35
- RE(复用系数):考虑代码复用度,范围 0.25~0.75
2. 计算软件开发成本
软件开发成本 = 调整后功能点 × 单价
- 单价:根据项目复杂度、团队能力、市场行情确定,单位为人月 / 功能点
- 军用软件通常采用 "人月费率 × 工作量" 计算,人月费率包括工资、社保、管理费、利润等
3. 最终报价
最终报价 = 软件开发成本 × (1 + 利润率) × (1 + 税率)
- 利润率:根据项目类型和风险确定(军品通常在 5%~15%)
- 税率:按国家规定(通常为 6% 增值税)
4. 完整报价示例
假设:
- UPF = 44
- VAF = 1.0(中等复杂度)
- RE = 0.6(部分复用)
- 单价 = 2000 元 / 功能点
- 利润率 = 10%
- 税率 = 6%
计算过程:
- 调整后功能点 = 44 × 1.0 × 0.6 = 26.4
- 软件开发成本 = 26.4 × 2000 = 52,800 元
- 最终报价 = 52,800 × (1+10%) × (1+6%) = 61,852.8 元
六、功能点拆分关键技巧
- 命名规范:功能点名称应包含 "名词 + 动词"(如 "订单录入"、"客户查询")
- 避免重复计数:同一操作只能归为一类(EI/EO/EQ),不能重复计算
- 粒度适中:太细会导致功能点过多(如将 "订单录入" 拆分为 "填写订单" 和 "提交订单"),太粗则无法准确反映工作量
- 区分 EO 与 EQ:关键在于是否包含计算逻辑(报表、统计通常是 EO,查询、浏览通常是 EQ)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)