当前位置: 首页 > news >正文

软件工程功能点估算法常用术语介绍

一、前言

在软件工程的功能点估算法(Function Point Analysis, FPA)中,**RETS、FTRS 和 DETs(即用户查询中的 DELs,可能为 DETs 的笔误)**是三个核心概念,主要用于衡量软件系统的复杂度与规模。以下是它们的详细解释与应用:


🔍 二、 RET(Record Element Type,记录元素类型)

  • 定义:RET 指一个内部逻辑文件(ILF)或外部接口文件(EIF)中包含的子表或子结构的数量。例如,数据库中的主-从表结构被视为一个 ILF,但包含多个 RET(主表为一个 RET,每个从表为独立的 RET)。
  • 作用
    • 影响 ILF/EIF 的复杂度:RET 数量越多,文件复杂度越高(低复杂度:1 RET;中:2–5 RET;高:>5 RET)。
    • 与 DET 共同决定功能点的计算。
  • 示例
    订单系统(ILF)包含订单主表和订单明细表 → 该 ILF 包含 2 个 RET

📂 三、 FTR(File Type Referenced,文件类型引用)

  • 定义:FTR 表示事务功能(如 EI、EO、EQ)引用的 ILF 或 EIF 的数量。例如,一个“生成订单报表”功能需读取订单表(ILF)和客户表(EIF),则其 FTR 数量为 2。
  • 作用
    • 决定事务功能(EI/EO/EQ)的复杂度:FTR 数量越多,事务复杂度越高(低:0–1 FTR;中:2 FTR;高:>2 FTR)。
    • 反映功能对数据交互的依赖程度。
  • 示例
    用户注册功能(EI)需更新用户表(ILF)并验证权限表(EIF) → FTR 数量为 2

🔢 四、 DET(Data Element Type,数据元素类型)

  • 定义:DET 指用户可识别的唯一数据字段。例如,表单中的“姓名”“邮箱”“电话”均为独立的 DET。主键/外键仅计为 1 个 DET
  • 作用
    • 影响文件(ILF/EIF)和事务(EI/EO/EQ)的复杂度。
    • 在事务中,仅计算用户直接输入的字段(自动生成字段不计入)。
  • 示例
    登录表单包含“用户名”“密码”“验证码” → DET 数量为 3

📊 五、三者的关系与功能点计算

概念归属对象影响对象复杂度判定依据
RETILF 或 EIF文件复杂度子表数量(主/从结构)
FTREI、EO、EQ事务复杂度引用的 ILF/EIF 数量
DET文件/事务文件与事务复杂度唯一字段数量(用户可识别)
  • 计算公式
    功能点总数 = ∑(文件复杂度权重 + 事务复杂度权重)
    其中权重由 RET、DET、FTR 的数量组合确定。

💻 六、实际应用场景

  1. 订单系统功能点估算

    • ILF(订单):含订单主表(1 RET)、明细表(1 RET)→ 共 2 RET;字段包括订单号、日期等(5 DET)。
    • EO(生成报表):引用订单 ILF 和产品 EIF(2 FTR),输出字段含总金额、产品数量(4 DET)。
    • 根据 RET/FTR/DET 数量查表得出复杂度权重,累加得功能点总数。
  2. 避免常见误区

    • DET 仅计数用户可见字段(如自动计算的“总价”不计入 EI 的 DET)。
    • FTR 需覆盖所有被读写的文件,包括 EIF(如权限验证需引用外部接口文件)。

💎 七、总结

RETS、FTRS、DETs 是功能点估算法的核心维度,用于量化软件规模:

  • RETS 定义数据结构的层次性(主/从表);
  • FTRS 衡量功能的协作范围(跨文件引用);
  • DETs 聚焦用户交互的数据粒度。
    掌握三者关系,可更精准评估项目工作量与成本,尤其适用于传统管理系统、数据库驱动型软件的规模测算。

八、拓展阅读

  • 《软件工程功能点估算基础》
http://www.lryc.cn/news/582152.html

相关文章:

  • jmm-内存屏障
  • MMaDA:多模态大型扩散语言模型
  • 边缘计算新底座:基于VPP+DPDK的开放智能网关
  • kafka总结
  • AI + 数据治理的趋势:让治理更智能、更敏捷
  • Web Worker:让前端飞起来的隐形引擎
  • 七牛云Java开发面试题及参考答案(60道面试题汇总)
  • 【C语言】指针与回调机制学习笔记
  • 1-Kafka介绍及常见应用场景
  • CAIDCP AI驱动安全专家认证将于8月正式上线,首期班开始报名
  • c++-引用(包括完美转发,移动构造,万能引用)
  • Qt中的坐标系
  • 算法————模拟算法
  • 机房运维篇(添加备份盘)加备份
  • mac中有多个java版本涉及到brew安装中,怎么切换不同版本
  • Playwright vs TestCafe 对象注入机制详解对比
  • Redis Tag 字段详解与最佳实践
  • 可扩展 Redis 查询引擎的最佳实践
  • 人工智能-基础篇-22-什么是智能体Agent?(具备主动执行和调优的人工智能产物)
  • DejaOS常见问题
  • (4)ROS2:moveit2的几个坑
  • 多通道采发仪VS系列 智能监测终端 工业级采发仪精准守护隧道边坡、水利大坝
  • 【Echarts】“折线+柱状”实现双图表-家庭用电量可视化【文章附完整代码】
  • 【SigNoz部署安装】Ubuntu环境部署SigNoz:Docker容器化监控的全流程指南
  • 御控网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换
  • HTTP 重定向
  • Camera相机人脸识别系列专题分析之十六:人脸特征检测FFD算法之libcvface_api.so数据结构详细注释解析
  • C++ -- string类的模拟实现
  • Day07- 管理并发和并行挑战:竞争条件和死锁
  • 【AI大模型入门指南】机器学习入门详解