首先在认识FPA之前,应该先了解一下软件工作量评估的用途以及诸多方法

软件项目工作量是软件项目成本评估、软件项目工作量估算和合理策划项目进度的基础。可为后期报价、投标、项目管理、规划起到决定性作用。

软件项目工作量评估方法很多,如代码法、类比法、WBS、故事点、用例点、NESMA、FPA、cosmic、COCOMOⅡ等。现在我们主要对功能点估算方法(FPA)进行学习。

功能点方法(FPA):
      (Function Point Analysis) 功能点分析法,简称FPA,与代码行分析法是近年来最流行的两种基础软件规模估算和度量方法。是从用户角度出发度量软件规模的一种方法。它从用户的角度出发,将系统分为数据功能和事物功能两大类,分别根据具体的规则来计算功能点,最后结合系统的特征因子来调整功能点数, 从而得到最终的系统规模。

       功能点分析方法(FPA)作为一种理解和交流系统规模的手段,针对用户功能、性能的需求进行度量,具有可在 项目早期进行度量,不依赖于项目的语言和技术等特点

  FPA 较适用于商业数据处理、管理信息系统的估算,因为它能更好地反映系统需求上的复杂度和数量。从满足客户需求的角度讲,FPA 具有阶段性,对用户早期参与项目管理、项目经理制定项目计划更有意义。

为什么使用功能点分析法
       FPA可以应用于所有的软件项目和软件身,包括新开发项目,升级项目,应用程序,维护项目等。FPA的基本目的有两个:

  • l  度量用户要求和接收到的功能
  • l  为软件的开发和维护而度量其技术独立度。

一、 功能点分析法的定义

官方文档IFPUG CPM 4.2.1给出功能点分析法的定义是:Function point analysis is a standard method for measuring software development from the user’s point of view.
具体来说,FPA有这么几个特点:

  • l  它是一种适用于软件开发的度量方法。
  • l  它是一种标准的度量方法,由国际功能点用户组(IFPUG)维护和推动。
  • l  它从用户视角来度量产品规模。
  • l  它不注重产品的内部结构和技术复杂度。不过也并非完全无视这些因素。

FPA标准的维护组织是国际功能点用户组IFPUG (http://www.ifpug.org),它不定期的发布Counting Practices Manual,简称CPM来统一不同公司和产品的功能点计算模型。这套模型基于大量已完成项目的分析数据,非常全面和精确。对于同一个产品,不同的公司,不同的人,参照CPM计算出来的功能点数应当是一样的。目前最新版本是2005的CPM 4.2.1,现在三年未更新,计算模型已相当成熟。

二、功能点的定义

什么是功能点?就是客户提出的一条条的需求吗?答案是否定的。在FPA中,客户提出的需求,是功能,功能组和产品;但不是功能点。

  • l  功能点是一个的度量单位,用于度量工作产品的规模。就像公斤和千米一样,仅仅是一个抽象化的单位。
  • l  功能点不直接度量软件的内部架构和技术复杂度。
  • l  单个功能点对用户没有意义,但一个功能包含多少个功能点对用户有意义。
  • l  一个系统,一个功能包含多少个功能点,是由一系列可见的要素分析计算得来,而不是拍脑袋的经验数字。

功能点分为两种:未调整功能点调整功能点未调整功能点是只记用户可见功能的中间结果,调整功能点是最终结果,在未调整后功能点基础上加入了系统实现和内部架构方面的因素。一般说一个系统包含多少个功能点,是指调整功能点。

简而汇之,如下功能是用户可见的。

  • l  GUI,如页面和窗体。
  • l  报表。
  • l  主要文件。
  • l  参考文件,引用文件。
  • l  控制文件。
  • l  数据输入。

三、功能点分析法的用途

软件度量的用途非常广泛,从客户,老板,管理人员,到程序员,都需要软件度量数据。FPA作为一种软件度量方法,主要有三方面的用途:持续的过程改进,软件资产管理,项目管理

1、 持续的过程改进

       FPA支持用于软件质量分析生产力分析的量化指标,比如每功能点的平均bug数,每功能点的平均人天数,等等。
      分析这些量化指标,可以找到过程改进的机会;可以度量改进的效果。无论是组织还是个人,都需要持续的过程改进。具体来说,FPA可这个过程中发挥如下作用:

  • 为现状提供基线数据。
  • 为改进决策提指明方向。
  • 为具体行动提供指南。
  • 度量改进的结果。
  • 将改进的结果基线化,进入下一轮改进。

2、软件资产管理

FPA为组织的软件资产提供了量化的指标。

  • l  软件资产的总规模
  • l  软件资产的增长率
  • l  软件资产的维护成本
  • l  软件资产的代换成本

对于软件开发和服务组织,这些指标可为软件资产的维护策略提供决策依据:是重新开发,重构系统,重写代码但不改结构,还是继续维护。
对于使用软件的组织,这些指标可作为采购的参考:是自行开发,还是采购?采购的合理价格区间,目标采购包的功能符合度。
FPA为应用软件之间的功能比较提供了规范化指标

3、项目管理

  • (1)    估算开发或维护的成本,资源,为项目计划提供依据。
  • (2)    估算需求变更的成本和对项目的影响。
  • (3)    控制需求范围。

四、功能点分析法的优/缺点

优点:

  • l  基于定义良好的计算标准。
  • l  基于客户视角。容易理解和接受。
  • l  可应用于新项目,升级项目和维护项目。
  • l  与技术和计算机语言无关。
  • l  简单,易于计算,只需花费较少的工作量。
  • l  一致的规模度量尺度。可用来比较不同组织和技术之间的比较。

缺点:

  • l  只考虑可见部分的复杂度,对系统内部复杂性考虑太少。
  • l  功能复杂度三级划分比较武断。对一些比较复杂的功能,统计误差较大。
  • l  FPA知识简单假设全部是部分的和,没有考虑系统集成带来的额外开销。