软件工程领域中,甲乙双方因软件开发成本是多少和为什么的问题已纠缠多年,过程中使用过代码行、故事点、用例点、对象点、功能点等一系列软件规模度量方法。
而有着40多年发展历史的功能点法,凭借以用户角度进行估算、与实现技术/计算机语言无关、无需历史数据的支持、适用于软件项目全生命周期、估算准确性高等优势,成为国际最流行的软件规模度量方法。
那么,功能点法在软件工程中该如何应用?下面由
01 什么是功能点
功能点是度量软件规模的一种单位。是从用户视角(业务价值)度量软件大小的单位。

现行的国际标准功能点分析实操方法有5种:IFPUG、NESMA、Mark Ⅱ-FPA、COSMIC-FFP、FiSMA-FFP。其中IFPUG(标准功能点法)和NESMA(快速功能点法)是国际上应用比较广泛的2种方法。
(下文中的功能点法均特指NESMA功能点法)
02 功能点应用场景
功能点法主要通过系统维护的信息以及信息处理的复杂程度来衡量规模,那么软件工程中能够通过这种方式来具体衡量的项目,都可以使用功能点法。
适合场景
以数据和交互处理为中心的软件研发项目;
以功能多少为主要造价制约因素的软件开发项目。
例如:银行业、电信等用户/业务管理系统;电子政务系统;办公自动化、ERP、信息管理系统等。
不适合场景包含大量复杂算法、创意型软件、以非功能性需求为主的软件研发项目。
例如:视频和图像处理软件;网络游戏;性能、安全优化任务等。
03 功能点估算时机
功能点法在软件工程整个生命周期都可以应用。功能点法可以根据项目渐进明细的特征细分为预估功能点、估算功能点、详细功能点,各功能点分析方法在各个环节应用如下:
战略制定:预估功能点预算评估:预估功能点招投标:预估功能点、估算功能点项目计划:估算功能点变更管理:详细功能点项目结算:详细功能点04 功能点估算步骤使用功能点法估算软件规模6大步骤:
第一步.确定应用类型
新建开发类:识别所有的新增功能增强开发类:识别变化的功能(增、删、改)已有系统计数:识别最终交付的功能第二步.识别系统边界
一般情况,产品型研发会按照产品架构划分系统边界,而项目型研发会按照项目划分系统边界。
第三步.识别功能点计数项
在这个步骤中,需要明确两个概念:
a:功能点计数项的分类(ILF、EIF、EQ、EO、EI);
b:不同阶段功能点法应用规则。
a:功能点计数项的分类
识别过程中其他注意点:
◎多个模块重复操作1个ILF/EIF只识别一次
◎优先计算ILF
◎EI/EO/EQ主要目的区别:
b:不同阶段功能点法应用规则
在功能点估算时机的章节中,已经提到功能点法根据项目渐进明细的特征分为三类,这三类功能点法在识别功能点计数项时存在以下注意事项:
第四步.调整计数项复杂度
各计数项标准功能点统计规则如下:
在标准功能点的基础上,我们再考虑计数项复杂度。计数项复杂度主要通过元素类型的个数来确定。
(以下参数运用于详细功能点方法)
在逻辑文件中,包含DET和RET两种元素类型:
DET:数据元素类型。用户可知的,不重复的数据域。取值大致对应逻辑文件的用户可见数据项个数。
RET:记录元素类型。用户可以理解的数据元素子集。取值大致对应逻辑文件的实体个数。
在基本过程中,包含FTR和DET两种元素类型:
FTR:文件引用类型。维护/引用的逻辑文件。取值大致对应基本过程访问的逻辑文件数。
DET:数据元素类型。用户可知的,不重复的数据域。取值大致对应基本过程访问的用户可见字段数。
逻辑文件中元素计数复杂度矩阵:
基本过程中元素计数复杂度矩阵:
复杂度基础功能点数调整:
第五步.确定GSC因子(VAF)
常见的14个通用系统特征:数据通讯、分布式处理、性能、高使用强度的配置、事务频度、在线数据输入、终端用户效率、在线更新、复杂处理、可重用性、易安装性、易操作性、多点运行、易变更。
第六步.计算调整后功能点
通过1-4步骤可以计算出调整前功能点数,即UFP。
通过5步骤调整后功能点公式:AFP = UFP VAF
05 出具评估报告
《长沙市财政评审中心 政府投资建设信息化项目评审指南(试行)》中明确指出——按功能点法提供的造价评估报告需由具备软件造价师资质人员出具,并在造价评估报告编列资质证书和盖章、签名。