软件功能点分析法

在软件项目管理中,第一个遇到的问题就是如何预估项目大小和工作量。目前国内大部分软件公司是凭经验来估算的。这里介绍一种更为科学的项目估算方法:功能点分析法(Function Point Analysis)

FPA 的结构和原理

功能点分析法中认为整个项目的规模由三部份构成:信息处理规模,技术复杂度,环境因素
IFPUG功能点估算方法使用指南

以图形化界面事务处理项目为例:

##信息处理规模
指系统包含的所有于外部交流的界面(输入,输出,查询界面,控制信息等),处理的文件(数据文件,数据库表)及于外部的接口等。这些内容细分为:输入(External Inputs),输出(External Outputs),查询(External Inquiries),文件(Internal Logical Files)和接口(External Interface Files)。
依据标准可以计算出系统(或模块)中所含每一种元素的数目,乘以加权值(Weight)其合计数即为信息处理的规模,称为 UAF(Unadjusted Function Points)

技术复杂度

指系统实现的复杂度,按照系统特徵分为 14 个方面:
数据通讯,分布式数据处理,性能,硬件负荷,事务频度,联机数据输入,界面复杂度,联机更新,内部处理复杂度,代码复用考虑,转换和安装,备份和恢复,多平台考虑,易用性。依据每个方面的打分,推导出调整系数 VAF(Value Adjustment Factor)。
推导公式为 VAF= 0.65 + 0.01*(F1 + F2 +...+ F14),Fi 为每个问题的分数

环境因素

指外部因素决定的系统开发效率。这个数据和开发采用的工具,是否有过类似开发经验,项目大小等有关。
该值的作用是将功能点转换为时间。对于一个有经验的 Team,对于中小型项目(<3000FPs),开发效率一般为 50 - 100 FPs/人月。
所以 FPs = UAF * VAF 为总的系统内在规模,考虑到环境因素后,可以得到整个项目所需的时间,即整体项目规模。

以上是针对图形化界面事务处理项目的 FPA 应用方法,对于不同的项目,信息处理规模,技术复杂度的计算会有所不同。而开发效率也会随 Team 不同而不同。
各公司可以基于 FPA 标准,根据自身实际情况,经过 1-2 个 Project 的调整,可以对之后的项目工作量做出比较正确的估计。
由 IFPUG 组织公布的技术标准可以在网上查到,有关 FPA 的发展情况和细节问题可以在 www.ifpug.org 上找到。