功能点估算法

目录

  • 1 什么是功能点估算法
  • 2 功能点估算法的运用
  • 3 参考文献

什么是功能点估算法

  面向功能的软件度量使用软件的功能作为测量的规范化值。因为“功能”不能直接测量,所以必须通过其他直接测量来导出,用得最多的是功能点技术。功能点(Function Point,FP)技术是Albrecht在1979年首先提出来的一种比较流行的估算方法,它将估算的关注点集中于程序的“功能性”和“实用性”上,而不是LOC的计数上。可以说,功能点估算法是指一种基于软件功能的度量方法。与代码行估算法不同的是,功能点估算法是对软件和软件开发过程的间接度量。

功能点估算法的运用

  功能点是基于软件信息领域的可计算的(直接的)测量及对其复杂性的评估而导出的。功能计算如图1所示。针对每个功能确定了外部输出数、外部输入数、文件数、用户查询数和外部接口数等五个信息域特征,每个信息域特征值按下列方式定义。

  1)用户输出数

  计算每个用户输出,外部输出是为用户提供的面向应用的输出信息,这些信息通常包括报告、屏幕信息、错误信息等方面的内容。每一个外部输出数据都要进行计数,获得外部输出数。

  2)用户输人数

  计算每个用户输入,它们向软件提供面向应用的数据。外部输入是每个用户输入的面向不同应用的输入数据,输入应该与查询区分开来,分别计算。

  3)文件数

  计算每个逻辑的主文件。逻辑文件是软件修改或保存的逻辑记录集合,它可以是一个大的数据库的一部分,也可以是一个独立的文件。

  4)用户查询数

  一个查询被定义为一次联机输入,它引发软件以联机方式产生某种即时响应,是软件以联机输出方式产生的独立查询信息。每一个不同的查询都要计算。

  5)外部接口数

  外部接口是所有用来将信息与其他系统进行交互或共享的端口(如磁带或磁盘上的数据文件),利用这些接口可以将信息从一个系统传送到另一个系统。

  收集到以上五个信息域特征值后,就将每个计数与一个复杂度值(加权因子)关联上。采用功能点的组织建立了一个标准,以确定某个特定条目是简单的、平均的还是复杂的。不过复杂的确定多少有些主观。

  每个功能的总计数值可以作为这个功能的功能点使用,以估算该功能的成本和工作量。整个项目的估算还应考虑一些全局性的因素,并不是所以功能总计数值的简单相加。整个项目的功能点计算采用下面的公式:

  总FP=∑每个功能的总计数值×(0.65+0.01×∑Fi)

  其中,Fi(i=1,2,…,14)是基于对图2中问题的回答而得到的“复杂度调整值(0~5)”。等式中的常数是根据经验确定的。

  Fi的取值在0~5之间:

  Fi:

  (1)系统需要可靠的备份和复原吗?

  (2)需要数据通信吗?

  (3)有分布处理功能吗?

  (4)性能很关键吗?

  (5)系统在一个已有的、很实用的操作环境中运行吗?

  (6)系统需要联机数据项吗?

  (7)联机数据项是否需要在多个屏幕或多个操作之间切换以完成输入?

  (8)需要联机更新主文件吗?

  (9)输入、输出、文件或查询很复杂吗?

  (10)内部处理复杂吗?

  (11)代码需要被设计成可复用的吗?

  (12)设计中需要包括转换及安装吗?

  (13)系统的设计支持不同组织的多次安装吗?

  (14)应用的设计方便用户修改和使用吗?

  一旦计箕出功能点,则可以使用它以规范软件生产率质量及其他属性的测量和估算,也可以类似于LOC的方法来对每个功能点的错误数、每个功能点的缺陷数、每个功能点的成本、每个功能点的文档页数、每人月完成的功能点数进行估算。

  功能点也可以按照一定的条件转换为代码行(LOC),如表1就是一个转换表,这个表是根据业界的经验研究得出针对各种语言的转换率。

  表1 功能点到代码行的转换表

语言代码行/FP
汇编语言320
C128
C++64
VB32
JAVA30
SQL12

参考文献

阅读数:159