一、四号文基本信息

四号文全称《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新增物资信息,维护 ILF4
物资出库EI修改物资数量(减少),维护 ILF4
物资信息修改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%

计算过程

  1. 调整后功能点 = 44 × 1.0 × 0.6 = 26.4
  2. 软件开发成本 = 26.4 × 2000 = 52,800 元
  3. 最终报价 = 52,800 × (1+10%) × (1+6%) = 61,852.8 元

六、功能点拆分关键技巧

  1. 命名规范:功能点名称应包含 "名词 + 动词"(如 "订单录入"、"客户查询")
  2. 避免重复计数:同一操作只能归为一类(EI/EO/EQ),不能重复计算
  3. 粒度适中:太细会导致功能点过多(如将 "订单录入" 拆分为 "填写订单" 和 "提交订单"),太粗则无法准确反映工作量
  4. 区分 EO 与 EQ:关键在于是否包含计算逻辑(报表、统计通常是 EO,查询、浏览通常是 EQ)
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐