首先在认识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知识简单假设全部是部分的和,没有考虑系统集成带来的额外开销。

软件项目工作量评估法——功能点估算(FPA)(一)初识相关推荐

  1. 软件项目工作量评估方法简述之COSMIC功能点方法

    (一) 简介 COSMIC 是通用软件度量国际联盟的简写(Common Software Measurement International Consortium,COSMIC),它成立于1998 年 ...

  2. 软件项目成本评估中,关于接口开发的工作量评估有什么标准方法吗?

    问:软件项目成本评估中,关于接口开发的工作量评估有什么标准方法吗? 答:如果是外部接口,就正常识别功能点即可,接口通常对应事务功能,但有可能有变化的数据功能.(来源:中基数联)

  3. 软件项目工作量估算中使用的功能点方法是什么?

    简单的说,功能点方法是一种估算软件项目大小的方法,它是从用户视角出发,通过量化系统功能来度量软件的规模,这种度量主要基于系统的逻辑设计.功能点规模度量方法在国际上的应用已经比较广泛,并且已经取代代码行 ...

  4. 关于软件项目工作量估算的若干问题

    作者:张克强 软件项目工作量估算从估算依据上看可以分成如下两类: 1,基于规模估算 2,基于工作量估算 基于规模估算的情况下,需要估算软件项目的规模.本文首先来看规模方面的问题. 问题1:如何表达规模 ...

  5. 软件项目工作量估算之软件复用程度分析

    软件工作量估算是我们在对一个软件项目成本估算过程中,在完成软件规模估算后需要进行的第2项估算工作.在软件项目工作量估算过程中,我们除了要进行风险分析外,还要考虑软件复用的程度. 软件复用就是将已有的软 ...

  6. 浅析软件研发成本估算过程之估算软件项目工作量

    在完成规模估算后,应当开展工作量估算工作,若当前项目未开展规模估算,也可直接启动工作量估算工作.工作量估算时,可采用方程法.类比法和类推法. 方程法:即基于基准数据建立参数模型,通过输入各项参数,确定 ...

  7. 校验功能算eo还是ilf_CMMI之功能点估算法---内部逻辑文件和外部接口文件

    功能点分析的步骤 在本文中将以国际标准IFPUG(International Function Point Users Group)组织提供的功能点估算法V4.1.1为基础与大家进行讲解.如下图所示, ...

  8. 如何对一个软件项目的成本进行评估或估算?

    在对一个软件项目进行成本估算或评估时,应该包括从项目立项直至项目研发活动结束所花费的资源总和,并且可以按阶段进行估算或测量. 软件成本估算的基本过程是什么呢? 软件成本估算的过程可分为:估算规模.估算 ...

  9. PMP软件开发规模估算——代码行估算、功能点估算、PERT加权估算

    在进行软件开发之前,需要进行软件成本估算,计算项目的经济可行性.成本估算是立项的依据,是项目计划的基础. 软件估算方法包括:规模估算.工作量估算.进度估算和成本估算. 本节主要介绍规模估算.软件成本. ...

  10. 软件开发过程与项目管理(6.软件项目成本计划)

    软件开发过程与项目管理(6.软件项目成本计划) 软件项目规模 软件项目规模即工作量包括 软件规模单位包括 软件项目成本 成本估算 估算基本方法 代码行估算法(简略) 功能点估算法- Albrecht ...

最新文章

  1. 滴滴出行首次进军非洲市场,网络推广外包后的滴滴想去的国家还有很多
  2. c语言数组在栈上的分配,彻底弄懂为什么不能把栈上分配的数组(字符串)作为返回值...
  3. 在.NET 2.0正式版中开发无刷新页面
  4. diff和patch工具使用(转)
  5. 三家快递公司涨派费:9月1日起每票上调0.1元
  6. 性能测试用例、策略和方法
  7. Atitit 网络存储协议 远程存储协议 目录 1. Email类 1 1.1. Eas Exchange Activesync介绍 1 1.2. Imap pop3 1 2. 网盘类远程存储web
  8. 超级外链SEO工具源码 可发9600条优质外链
  9. ubuntu 18.04下解决网易云音乐不能打开的问题
  10. 模电_第八章_功率放大电路
  11. 抖音私域运营的新玩法
  12. python百度ai文字识别、不精确、进行处理,python利用百度AI实现文字识别功能
  13. SMA(简单移动平均线)
  14. MIT 6.828 Lab1(从引导扇区开始)
  15. 2021年电工(初级)考试资料及电工(初级)考试总结
  16. 21 个令程序员泪流满面的瞬间
  17. 基于云虚拟机的代码覆盖率
  18. 迭代瀑布不是Scrum
  19. 解决2016版OneNote做代码笔记全流程
  20. pwm原理及arduino使用pwm教程详解(超详细超基础)

热门文章

  1. 【PHP基础学习】—PHP异步非阻塞的实现方法
  2. 关于Android的方向传感器
  3. Oracle AutoVue 21.0.2.4 支持的文件格式
  4. 计算机知识学习——window10台式电脑显示未插入扬声器或耳机解决方案
  5. IDEA 反编译失败 提示/*compiled code*/的解决方法
  6. 脑电情绪识别资源整理
  7. Cordys BOP 4.3平台使用小经验—数据库连接管理、导出流程模型为XPDL
  8. 每日英语:China Bridge Collapse Raises Infrastructure Concerns
  9. 013:Django商城项目规划与环境搭建
  10. 4133:垃圾炸弹 百练noi Java枚举