目录

一、模型及估算方法

1、模型要素说明

2、FPA功能点计算方法

1)识别确定系统范围:包括识别计数范围和应用边界。

2)计算数据功能。

3)计算事务功能。

4)计算未调整功能点值。

5)确定值调整因子。

6)计算调整后功能点值。

3、专家判断模型

4、综合评估算法

二、案例应用

1、系统规模估算

2、系统工作量估算

3、系统成本估算

三、总结


功能点分析方法(Function Point Analysis,FPA)是一种可靠、有效的软件规模度量方法,功能点分析方法(FPA)作为一种理解和交流系统规模的手段,针对用户功能、性能的需求进行度量,具有可在项目早期进行度量,不依赖于项目的语言和技术等特点,在可用性和客观性方面都要优于传统的代码行方法(LOC)。

软件工程项目建设中作为第三方的监理机构经常需要面临一些问题,如项目建设初期在用户需求不是很完善时,业主方需要了解项目的整体规模及合理项目进度安排;或者立项阶段需要了解项目的总体投资额;项目开发期间,需要第三方评估机构能够客观地对其完成的工作量进行审核与评估,确保其应得利益。

本文给出一种基于FPA方法与专家估算法相结合为主的多算法融合的方法,实现对软件工作量的评估,并在多个项目中进行实践,结果论证该方法既有可操作性又深受用户的认可,下面就由新星咨询为大家深入的对FPA功能点分析法进行解读!

一、模型及估算方法

1、模型要素说明

FPA是一种用来度量软件系统规模的方法。在FPA中,任何一个软件系统都被看作是由外部输入处理、外部输出处理、外部查询处理、内部逻辑文件和外部参照文件五种要素组成。估算系统中这五种要素的个数,并乘以适当的权值(权值即为每个要素的功能点数)就可以计算出系统的功能点数,进而估算出系统的规模。下图是在FPA中用到的信息系统模型。

FPA信息系统模型图

在图中上述五种要素的含义如下:

1、外部输入处理EI(External Input),是获取数据的过程,对终端用户的输入进行相关的处理。

2、外部查询处理EQ(External Inquiry),针对终端用户的查询情况,输出相应的检索结果。

3、外部输出处理EO(External Output),是反馈数据的过程,完成对票据、报表等的输出。

4、内部逻辑文件ILF(Internal Logical File),在信息系统内部,为了完成相关功能使用的逻辑文件,包括顺序文件、数据库表、临时文件等。

5、外部文件EIF(External Interface File),该系统和外部其他信息系统为交换数据而用的接口文件。

其中前三种要素属于处理,他们涵盖了终端用户和信息系统对象之间存在的所可能的交互内容,只要明确了该系统和终端用户的接口就可以正确估算上述三种处理。后两种要素属于文件,系统功能确定后,使用文件个数也可以被估算出来。

2、FPA功能点计算方法

完整的功能点计算流程包括6个步骤,如下图计算功能点的流程图所示:

计算功能点的流程

1)识别确定系统范围:包括识别计数范围和应用边界。

计数范围定义了将被包含在一个特定功能点计数中的功能。它识别了哪些功能应该被包含在功能点计数中从而为其提供答案。它的划定是由执行功能点的目的决定的。比如,开发功能点计数包括项目活动所影响到的所有功能;升级功能点计数包括增加、修改和删除的所有功能。

应用边界定义了被计算系统和外部系统以及用户之间的界限。边界基于用户的角度确定。被度量软件与其他应用之间的边界位置是主观的,有时很难描绘一个应用从什么地方开始,另一个应用从什么地方结束。所以系统间的边界界定应尽量从业务功能的角度去理解而不应该基于技术或物理上的考虑来划定。应用边界一经界定,并不会因计数范围的改变而改变。

2)计算数据功能。

数据功能满足了对数据的存储或引用的功能性用户需求。计数范围内的所有数据功能应该被评估并求值。在计算数据功能时,首先会根据数据间的逻辑关系将数据划分为一个个的逻辑文件,接着根据是否被系统维护以及所在边界内外确定每个逻辑文件的类型,最后通过鉴定每个逻辑文件的记录元素类型(RET)和数据元素类型(DET)来确定其复杂度和功能点值(详见表1-1、表1-2)。

表1-1:内部逻辑文件和外部接口文件复杂度分级表

表1-2:内部逻辑文件和外部逻辑文件的功能点值

3)计算事务功能。

事务功能表示应用提供给用户的处理数据的功能,他的计算包括三个步骤:

(1)识别基本过程:对用户有定义,本身有意义并且能够保持业务持续性的最小活动单元都会被识别为基本过程。并且,基本过程必须保证唯一性,防止重复计算。

(2)识别出基本过程类型:根据其主要目的区分为外部输入、外部输出或者外部查询。

(3)确定事务功能的复杂度:通过计数引用文件类型(FTR:是指被事务功能读取并/或者维护的数据功能)数和数据元素类型数确定事务功能的复杂度等级和功能点。(详见表1-3、表1-4、表1-5)

表1-3:外部输入复杂度分级表

表1-4:外部输出和外部查询复杂度分级表

表1-5:三种事务功能在不同复杂度评级下的功能点值

4)计算未调整功能点值。

除了数据功能和事务功能五种组件之外,功能点分析方法还定义了值调整因子(Value Adjustment Factor,V AF)。前面介绍的数据功能和事务功能是从用户的角度对系统做的划分,它考虑的是系统的功能需求。但是,一个系统开发除了满足客户的功能需求之外,必须同时满足客户对系统的非功能需求,如质量需求和技术需求。值调整因子正是基于这一考虑而引入的。它的基础是14项通用系统特性,其中每一项通用系统特性都与系统开发中某一方向的用户非功能性需求相联系。表2-6列出了14项通用系统特性以及特性描述。

表1-6:十四项通用系统特性及其调整系数

5)确定值调整因子。

值调整因子的计算公式:

TDI =∑DI i (i=1 to 14) VAF = (TDI× 0.01) + 0.65

其中VAF代表值调整因子:TDI代表总影响程度,由14个通用系统特征的影响程度(DI)累加得到。

6)计算调整后功能点值。

开发项目功能点计数:DFP = UFP × VAF

其中DFP是开发项目功能点,UFP是安装后可用功能的未调整功能点,VAF是指调整因子。

3、专家判断模型

这一模型中,专家依据他们的知识、经验、以及对项目的理解来给出工作量估算值。在历史数据不存在的情况,这一方法是非常有价值的。但是专家判断法往往受到专家的经验以及主观性所限制,如个人偏见或对项目的不熟悉等。为避免以上现象采用专家组讨论的形式进行工作量评估。这里,给出的工作量评估模型描述如下:

1)协调人为每个估算专家提供一份系统需求说明和估算单;

2)协调人召开小组会议,就当前项目有关估算的问题进行讨论;

3)估算专家匿名提交单独得到估算值;

4)协调人在一张迭代表单上总结所有专家得到的估算结果并召开小组会议,讨论估算值中的差异。

5)小组投票表决是否接受这个估算值的均值,如果不接受则回到步骤三。

6)重复步骤三步骤五的过程直到得出一个足够收敛的估算结果。

4、综合评估算法

1)软件规模综合评估的计算。结合软件系统的需求文档、技术实施方案,分别采用功能点法、专家判断法等多种估算方法计算软件系统的规模即功能点数,单位:个。

2)平均生产定额:根据项目的实施特点、技术复杂程度、承建单位所属地区等因素,通过类比和专家评估,综合确定工作人员每人每天承担的基准功能点数。单位:个/人日。3)工作量:根据项目总体的范围定义,完成某项工作(软件系统、模块等)所需要的总人日数。工作量的单位:人日。

4)人日单价:这里,根据辽宁省软件行业报价惯例,人日单价为800元/人日。(包含差旅费、交通费、人员管理费、餐补。)

5)工作量分配比例:按软件系统生命周期的不同阶段对应的基准工作量比例参考值:项目管理:需求调研:设计:开发:测试:实施支持= 0.5:1:1:2:1:0.5。

6)系统成本:经过评估后该项目建设最终的整体投资额。单位:万元。

具体计算模型:

工作量= 软件系统规模÷生产定额 系统成本=工作量×人日单价

二、案例应用

新星咨询就以东北电网有限公司做的“财务集约化系统”工作量评估项目为实例,简单阐述应用基于FPA的软件工作量综合评估法对该系统软件的如何进行工作量评估。(以一个小模块为实例)

1、系统规模估算

1)采用FPA的方法估算“调度子系统”的工作量,整体工作量为2572;

2)组织5名信息化建设方面的专家(其中包括从事过类似项目建设的专家)组成专家评估小组,对该子系统需求文档及技术建设方案进行研究,最终评估出结果为2588;

3)本次FPA和专家判断法重要程度相同,因此权重分别为1,则最后的评估结果为2580。

具体详见表3-1系统规模评估结果明细表;

4)在专家不清楚FPA方法评估结果的前提下得出的功能点数与FPA得到的功能点数很接近,从而相互验证了评估结果的有效性。

表2-1系统规模评估结果明细表

2、系统工作量估算

软件项目建设主要包括需求阶段、设计阶段、开发阶段、测试阶段、实施培训及试运行阶段,项目管理贯穿整个项目建设阶段,根据相关资料描述这些阶段工作量占总工作量的比例分配为“项目管理:需求调研:设计:开发:测试:实施支持= 0.5:1:1:2:1:0.5”,基于该比例关系确定比例系数((1/12):(1/6):(1/6):(1/3):(1/6):(1/12))。平均生产定额根据项目不同阶段参与人员的技术水平、工作能力的不同其具体定额值也略有差异,平均生产定额值通过专家评估而确定。通过模型公式项目总体评估工作量为492人日,具体各阶段人日分布情况详见表3-2工作量评估明细表。

表2-2工作量评估明细表

3、系统成本估算

根据辽宁省内软件行业惯例及相关行业文件确定辽宁省内人日单价费为800元/人日,其中包括差旅费、交通费、通讯费、餐费。根据公式:系统成本= 工作量×人日单价。

三、总结

基于FPA的软件工作量综合评估方法的应用,已经得到用户的认可,实践表明了综合评估方法的有效性和可操作性。随着方法的研究与应用将完善软件监理项目中对系统软件工作量的评估,并且推动监理平台对IT咨询业务的开展。该方法还需继续完善,为了更加准确的对软件项目工作量的评估,还需要不断完善软件项目历史经验库,相关数据越丰富,得到的评估结果就越客观。

软件开发工作量评估:基于FPA功能点分析法的深入解读相关推荐

  1. 软件系统工作量估算方法论介绍——功能点分析法

    背景 众所周知,软件系统的复杂性是相当高的,以下几个场景是比较常见的: 1.作为软件公司,要研发一个新的产品,功能需求大概明确了,需要确定下研发成本.资源需求等. 2.作为企业,实施软件系统,需要与软 ...

  2. 软件开发工作量及费用量化评估方法在金融行业的应用

    面临的问题 随着国内金融行业市场化进程持续加快以及互联网金融的兴起,信息技术尤其是软件技术的应用对于金融科技创新至关重要.各大金融机构在持续加大科技创新力度的同时,如何科学.高效地管控应用开发的投入并 ...

  3. ATSAMD21-XPRO开发板 评估基于 ATSAM D21 CortexM0+ 的微控制器

    Atmel ATSAMD21 XPRO 评估套件旨在原型开发和评估基于 ATSAM D21 ARM? Cortex?M0+ 的微控制器. SAM D21 Xplained Pro 微控制器套件硬件平台 ...

  4. 关于开发的一些个人理解思路(5W1H分析法)

    关于开发的一些个人理解思路(5W1H分析法) (以下理论知识来源 百度百科) 何为5W1H分析法,5W1H(WWWWWH)分析法也叫六何分析法,是一种思考方法,也可以说是一种创造技法.在企业管理.日常 ...

  5. 基于matlab的频率特性测试仪,基于Matlab控制系统频率特性分析法

    基于Matlab控制系统频率特性分析法 基于Matlab控制系统频率特性分析法 本文主要介绍了基于Matlab控制系统的频率特性分析方法.频域稳定性判据以及开环频域性能分析,并获得频率响应曲线等.通过 ...

  6. 本科毕业论文-软件开发类-《基于Android端开关控制系统的设计与实现》-论文模板

    目  录 前言 一.任务书 二.目录 三.论文正文 摘要 ABSTRACT 1.引言 2.系统开发环境 2.1可行性分析 2.2 开发工具介绍 3.需求分析 3.1 功能需求分析 3.2 数据流程图 ...

  7. matlab层次分析法代码_基于主成分分析法和层次分析法的工程项目经理胜任力评价研究...

    摘 要:根据工程项目经理胜任力评价指标,运用主成分分析法和层次分析法相结合的数学方法对工程项目经理的胜任力进行合理公正的评价.首先运用主成分分析法筛选重要指标,再运用层次分析法对工程项目经理进行定量与 ...

  8. yes or no?基于词典的情感分析法

    自更博以来第一次断更,现在先把文本分析的坑补上,这篇文章着重介绍情感分析的两种基本方法之一:基于词典的情感分析(下篇讲基于监督的情感分析),建模环境为R. 目录 1 背景与目的 1.1 情感分析的应用 ...

  9. 语聊陪玩软件开发都有哪些核心功能

    近两年因为疫情的影响,实体店铺各行各业也都受到很大影响经济低迷,取而代之的是线上经济的繁荣,TT开黑语音.泡泡陪玩.声趣语音这些语音社交平台显得尤为火热,而且很多运营做的比较好的软件都得到了融资在快速 ...

  10. 蜂云软件开发微信crm系统的功能点

    CRM主要就是通过对客户详细资料的深入分析,来提高客户满意程度,从而提高企业的竞争力的一种手段.客户关系管理的核心是客户价值管理,通过"一对一"营销原则,满足不同价值客户的个性化需 ...

最新文章

  1. 编写可调模板并使用自动调谐器
  2. AngularJS 学习笔记 - $http.post 跟后台交互
  3. 【集合论】二元关系 ( 二元关系运算示例 | 逆运算示例 | 合成运算示例 | 限制运算示例 | 像运算示例 )
  4. ios之UIImageView
  5. synchronized 与 ReentrantLock
  6. python中_str_使用方法
  7. tomcat修改端口号与eclipse中的tomcat保持一致
  8. hilbert谱 matlab,怎么在matlab中做信号hilbert边际谱分析
  9. Mac电脑显示器颜色不正该如何调整?
  10. 华为NP课程笔记12-组播
  11. 机器学习算法(一) K-Means算法简述以及在MNIST上的聚类实现
  12. 盘点关于程序员的那些经典案例
  13. 【模型导出与部署】项目接口与百度机器人对接
  14. Go:实现Abs绝对值函数 (附完整源码)
  15. 谷歌地图上不去了,用LSV就可以
  16. 三阶魔方背后的神奇数学
  17. Some Questions about MapReduce
  18. pgsql-修改默认密码
  19. 她让我把电脑带回家。 -您是如何开始计算机和编程的?
  20. 我的理想计算机作文300字,我的理想作文300字(通用5篇)

热门文章

  1. 归并排序算法图解分析
  2. Java进阶--Java垃圾回收机制全面解析
  3. 中国环境统计年鉴(2000到2018年)
  4. 科比职业生涯数据集分析
  5. 前端-微信浏览器无法下载附件解决方法?
  6. 2019年终总结——工作第二年
  7. 第三方支付接口游戏商户池轮巡、支付宝商户池、微信商户池、游戏商户池怎么申请?
  8. php把字符串日期转成时间戳,php怎样把日期转成时间戳
  9. 用DOSBox运行老游戏
  10. 天翼网关-无线光纤猫的设置和有WIFI信号无网络问题排查与解决