ISO/IEC 26564 — 软件工程中的 IFPUG 功能点分析

功能点分析在软件项目估算、基准测试和管理中的实用指南

ISO/IEC 26564:IFPUG 功能点分析在软件工程中的应用

ISO/IEC 26564 定义了 IFPUG(国际功能点用户组)功能点度量(FSM)在软件工程中的应用。功能点分析从最终用户的角度量化软件应用交付的功能,独立于实现技术。这种技术中立的度量使功能点在基准比较、估算和跨不同开发方法和技术堆栈的生产率对比中具有不可替代的价值。

与衡量实现规模且在不同编程语言之间差异巨大的代码行数(LOC)不同,功能点衡量的是”什么”——交付给用户的功能价值。无论是使用汇编、C++、Python 还是低代码平台实现相同的功能,功能点计数保持稳定。

ISO/IEC 26564 将 IFPUG 计数实践手册(CPM)适配到软件工程组织的特定需求。它定义了五种功能类型:外部输入(EI)、外部输出(EO)、外部查询(EQ)、内部逻辑文件(ILF)和外部接口文件(EIF)。每种功能类型根据数据元素类型(DET)和引用文件类型(对于事务功能为 FTR,对于数据功能为 RET)的数量分配复杂度级别——低、平均或高。

功能类型 缩写 描述 示例
外部输入 EI 进入应用边界的数据(表单、导入、传感器读数) 用户注册表单提交
外部输出 EO 带有衍生或计算信息而离开应用边界的数据 含汇总的月度销售报告
外部查询 EQ 无衍生数据的检索;简单的只读访问 客户账户余额查询
内部逻辑文件 ILF 在应用边界内维护的数据 产品库存数据库表
外部接口文件 EIF 从其他应用的 ILF 引用的数据 来自 CRM 系统的客户参考数据
功能点计数在需求阶段早期执行时最为可靠,此时实现决策尚未影响计数。从结构良好的需求规范或用户故事地图进行计数能在不同计数人员之间产生最一致的结果。

计数过程与复杂度确定

ISO/IEC 26564 的计数过程遵循结构化序列:第一,确定计数范围和应用边界;第二,识别并编录所有数据功能(ILF 和 EIF);第三,识别并编录所有事务功能(EI、EO、EQ);第四,为每个功能分配复杂度评级;最后,计算未调整的功能点计数。可选地,可以应用价值调整因子(VAF)——基于 14 个通用系统特征——来得出调整后的功能点计数。

复杂度确定是最需要判断力的环节。对于事务功能,DET(用户可识别的唯一字段)和 FTR(维护或读取的文件)的数量决定复杂度。对于数据功能,DET 和 RET(记录元素类型,即文件内的逻辑子组)是决定因素。ISO/IEC 26564 提供了详细的决策表,以确保不同计数人员之间的复杂度分配一致。

计数不一致的最常见来源是”边界问题”——什么在应用内部、什么在外部。ISO/IEC 26564 强调边界必须从用户视角而非开发者视角定义。一个常见的启发式方法是:如果用户能将其感知为独立的系统,则它属于边界之外。

在软件项目中的实际应用

ISO/IEC 26564 下的功能点分析支持多种关键软件工程实践。对于项目估算,历史生产率数据(每人月功能点数)可以与功能点计数结合,产生具有已知置信区间的工作量估算。对于基准比较,功能点提供了标准化基础,用于比较不同项目、团队和组织之间的生产率。对于合同管理,功能点提供了明确的范围度量,能够抵抗镀金和范围蔓延。

该标准还涉及功能点在敏捷开发中的应用。虽然传统的功能点计数假设完整的前期需求,但 ISO/IEC 26564 提供了在需求演变的迭代环境中计数的指导。推荐的方法是计算每个迭代中交付的功能点,并在发布层面汇总,将功能点计数视为活的度量而非一次性估算。

功能点不是银弹。它们衡量功能规模而非质量、性能、安全性或可用性。一个高功能点计数但充满错误或未能满足性能要求的应用,其交付的业务价值可能低于一个更小但精心设计的应用。始终将功能点分析与质量度量结合使用以获得完整的视图。

常见问题解答

问:获得 ISO/IEC 26564 下的 IFPUG 计数认证需要多长时间?
答:IFPUG 认证项目通常需要 3-5 天的结构化培训,随后进行认证考试。大多数从业者在有经验的计数人员指导下完成 3-5 个真实项目的计数后达到基本熟练水平。
问:功能点可以从源代码自动计数吗?
答:从源代码完全自动计数功能点很困难,因为功能点衡量用户可见的功能而非实现工件。然而,工具可以通过从 UI 定义、API 规范或数据库模式中识别候选功能来辅助,然后由人工计数员验证。
问:功能点与 COCOMO 估算模型有何关系?
答:功能点可以转换为等效的源代码行数(使用国际软件基准测试标准组的语言特定转换表),然后作为 COCOMO 或其他参数化估算模型的输入。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注