功能点估算法(一)_软件质量管理、项目管理、过程改进、软件自动化测试咨询与培训。-CSDN博客_功能点估算法

标签: | 发表时间:2020-12-12 14:49 | 作者:
出处:https://blog.csdn.net


功能点估算法是软件项目管理众多知识中比较有技术含量的一个。在软件项目管理中项目计划制定的优劣直接关系到项目的成败,项目计划中对项目范围的估算又尤为重要,如果项目负责人对项目的规模没有一个比较客观的认识,没有对工作量、所需资源、完工时间等因素进行估算,那么项目计划也就没有存在的意义。

项目范围的估算在CMMI的“MA”度量分析管理和“PP”项目计划中均有涉及,对软件项目范围的估算有很多种方法,常见的就是LOC代码行和FP功能点法,它们之间的区别和关系如下:

1、 FP功能点估算法常用在项目开始或项目需求基本明确时使用,这时进行估算其结果的准确性比较高,假如这个时候使用LOC代码行估算法,则误差会比较大。

2、 使用FP功能点估算法无需懂得软件使用何种开发技术。LOC代码行估算法与软件开发技术密切相关。

3、 FP功能点法是以用户为角度进行估算,LOC代码行估算法则是以技术为角度进行估算的。

4、 通过一些行业标准

或企业自身度量的分析,FP功能点估算法是可以转换为LOC代码行的。在项目刚开始的时候进行功能点估算可以对项目的范围进行预测,在项目开发的过程中由于需求的变更和细化可能会导致项目范围的蔓延,计算出来的结果会与当初估计的不同,因此在项目结束时还需要对项目的范围情况进行估算,这个时候估算的结果才能最准确反映项目的规模。

功能点分析的步骤

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

 

图 功能点估算的步骤 

1、 识别功能点的类型。

2、 识别待估算应用程序的边界和范围。

3、 计算数据类型功能点所提供的未调整的功能点数量。

4、 计算人机交互功能所提供的未调整的功能点数量。

5、 确定调整因子。

6、 计算调整后的功能点数量。

识别项目的类型

国际的IFPUG组织将软件项目分为三类,功能点估算法适用于任何一类项目

l 新开发项目

l 二次开发的项目

l 功能增强的项目

识别项目的范围和边界    

使用UML的“UseCase”用例图是以用户角度进行识别项目范围和边界的最好方法,因为在画用例图时就必须明确系统的边界。通过系统的边界我们可以知道哪些功能要计算功能点,哪些功能点是外部系统负责计算的。以下图为例:一个外贸订单系统只包含录入、修改、删除、查询和统计订单的功能,而汇率查询转换服务是不属于该系统的。

    应用程序边界的识别规则大家一定要牢记,不能从技术角度去思考,必须从用户角度来定义;如果项目牵扯到多个系统,那么必须将这多个系统的边界全部描述清楚。

 

图 外贸订单系统用例图 

F P 功能点估算分类    

FP功能点估算法将功能点分为以下5类:

1、 ILF:Internal Logical File内部逻辑文件

2、 EIF: External Interface File外部接口文件

3、 EI: External Input外部输入

4、 EO: External Output外部输出

5、 EQ: External Inquiry外部查询其中ILF和EIF属于数据类型的功能点,EI、EO、EQ属于人机交互类型的功能点。     

以外贸订单系统项目为例:

l  录入订单、修改订单、删除订单是EI;

l  查询订单是EO

l  统计订单是EQ

l  汇率查询转换系统为EIF

l  订单和客户是ILF

识别功能点的重要原则

ILF、EIF要与EI、EO、EQ分开计算。对ILF和EIF复杂度的计算可以简单理解为对数据库复杂度的计算。对EI、EO、EQ复杂度的计算可以理解为对程序开发复杂度的计算。一般软件项目都是由数据和程序构成的,因此计算ILF、EIF和计算EI、EO、EQ之间没有任何关系。  

  第二部分:内部逻辑文件与外部接口文件 ILF 内部逻辑文件

内部逻辑文件是指一组以用户角度识别的,在应用程序边界内且被维护的逻辑相关数据或控制信息。ILF的主要目的是通过应用程序的一个或多个基本处理过程来维护数据。

EIF 外部接口文件外部接口文件是指一组在应用程序边界内被查询,但它是在其他应用程序中被维护的,以用户角度来识别的,逻辑上相关的数据。因此一个应用程序中的EIF必然是其他应用程序中的ILF。EIF的主要目的是为边界内的应用程序提供一个或多个通过基础操作过程来引用的一组数据或信息。EIF所遵循的规则:

n  从用户角度出发识别的一组逻辑数据。

n  这组数据是在应用程序外部,并被应用程序引用的。

n  计算功能点的这个应用程序并不维护该EIF

n  这组数据是作为另一个应用程序中的ILF被维护的。

ILF 和EIF 复杂性计算  

ILF和EIF的复杂性是取决于RET(Record element type)和DET(Data element type)的数量。DET是一个以用户角度识别的,非重复的有业务逻辑意义的字段。

DET 计算的规则

●  通过一个基本处理过程的执行,对ILF进行维护或从ILF/EIF中返回一个特定的、用户可识别的、非重复的字段,那么每个这样的字段算一个DET。

ü  例如:添加一个外贸订单时需要保存“订单号码、订单日期、地址、邮编”,那么对于ILF订单来说它的DET就是4个。

ü  例如:保存订单时还会保存订单的明细,订单的明细往往作为一个子表进行保存,那么“订单号码”在主表和子表中都同时存在(主外键),但以用户角度来识别时,存盘操作是一个最小的单位,那么订单号码只能算做一个DET。 

●  当两个应用程序维护和/或引用相同的ILF/EIF,但是每个应用程序分别维护/引用它们相应的DET时,这些DET在这两个应用程序的维护或引用中将单独计算。

ü  例如一个应用程序的两个“Elementary Process”基本处理过程都需要使用到“地址”的信息,地址的信息又可以细分为“国家、城市、街道、邮编”。那么对于其中一个基本处理过程来说,他将整个地址信息作为一个整体进行处理,那就只算一个DET,另外一个基本处理过程使用每个地址的详细信息,那么DET就是4个。

Ø  RET 计算的规则如下:

RET是指一个EIF/ILF中用户可以识别的DET的集合。如果把DET简单理解为字段的话,那RET就可以简单理解为数据库中的表。RET在ILF/EIF中分为两种类型:可选的(Optional)和必选的(Mandatory)。计算RET的规则为以下两点:

●  在一个ILF/EIF中每一个可选或必选的集合都被计算为一个RET。或者

●  如果一个ILF/EIF没有子集合,则ILF/EIF被计算为一个RET。

ü  例如:在外贸订单系统中添加一个订单时会保存“订单信息、客户的ID、部门的ID”。

那么订单系统ILF中RET为:

1、 订单信息(必选的)

2、 客户信息(必选的)

3、 部门信息(可选的)因此ILF中RET的个数为3个。

Ø  ILF/EIF 复杂度的矩阵如下

  1~19 个DET 20~50 个DET 超过51个DET
1 个RET 中等
2~5 个RET 中等
6 个以上RET 中等
 

 

 

 

  FP 功能点估算法的特点    

相关 [功能 算法 软件质量] 推荐:

功能点估算法(一)_软件质量管理、项目管理、过程改进、软件自动化测试咨询与培训。-CSDN博客_功能点估算法

- -
功能点估算法是软件项目管理众多知识中比较有技术含量的一个. 在软件项目管理中项目计划制定的优劣直接关系到项目的成败,项目计划中对项目范围的估算又尤为重要,如果项目负责人对项目的规模没有一个比较客观的认识,没有对工作量、所需资源、完工时间等因素进行估算,那么项目计划也就没有存在的意义. 项目范围的估算在CMMI的“MA”度量分析管理和“PP”项目计划中均有涉及,对软件项目范围的估算有很多种方法,常见的就是LOC代码行和FP功能点法,它们之间的区别和关系如下:.

软件质量之道

- - CSDN博客系统运维推荐文章
        我曾与一些资历非常高但毫无实际经验的人共事过,也曾与一些只有很少或根本没有资历但才华横溢的工程师一起工作过,我也曾经不得已跟一些并不想用心做事、也对学习新东西丝毫不感兴趣的人共事过. 如果说我们这个职业是一张纸,那么这些人就好比纸上的污点. 软件开发业的低劣性不能完全怪罪于那些无知的经理、狡猾的市场营销人员以及总是急不可耐的用户,实际上很大程度上要归咎于这个行业的某些从业人员,他们应该去从事一些即使玩忽职守也不会造成像软件业里这样大的危害的行当,而不应该混迹于这个聚集着人类想象力的最复杂的创造性的行业.

提高软件质量实践―― Facebook 篇

- - 博客 - 伯乐在线
来源: Bill Liu 的博客. Facebook从04年的哈佛校园的学生项目在短短的7-8年的时间中快速增长为拥有10亿用户的世界上最大的社交网络,又一次见证了互联网创业成功的奇迹. 同时它的产品研发流程也成为了众多互联网产品公司的追逐对象. 今天我们来看一下facebook在产品质量控制方面的实践.

提高软件质量实践――Amazon篇

- - 博客 - 伯乐在线
来源: Bill Liu 的博客( @billliu_seattle). 前几天回国转了一圈,做了两家企业质量管理培训,一次上海测试沙龙,和chinatest两次演讲. 回来后发现我的软件质量实践系列文章距离上一次发表已经有很长一段时间了. 我想还是先把它写完,再写别的文章吧. 那么今天我们看看互联网公司的另外一个大哥大是如何做质量控制的――Amazon..

推荐功能的两种算法

- - CSDN博客推荐文章
    最近做了一个类似淘宝的根据用户的操作,判断出用户对哪些产品感兴趣,并按照一定关系推荐给用户其它产品. 查询了一些资料,结果发现时下,很多地方都用到了推荐,淘宝,优酷,迅雷等等,有时候确实让人称心如意,推荐的产品非常和你的胃口,不过也有时推荐的让你莫名其妙. 其实推荐的算法有很多种,而且不一定有固定的模式,它会根据产品的特性,推荐的目的,以及其它方面的要求而不同.

如何提高你的软件质量?去找一个旧电脑吧.

- 疯癫二楞子 - 译言-电脑/网络/数码科技
来源How to Improve the quality of your software: find an old computer.   你的用户将会很高兴因为你的东西在他们的烂机器上表现得很好(而那些潮用户也会很高兴.).   你的老板也会很高兴因为他收到了很少来自用户的抱怨.比如必修升级他们的硬件或者软件才能使用你的程序..

开源软件质量报告:连续两年高于行业平均值

- - 开源中国社区最新新闻
开发测试服务提供商Coverity近日发布了一份开源软件质量报告——《 2012 Coverity Scan Open Source Report》. 该项研究始于2006年,最初由Coverity公司和美国国土安全部合作进行, 旨在研究开源软件的完整性,现在由Coverity公司负责进行. Coverity的扫描报告已经成为了一个衡量开源软件质量状态的被广泛接受的标准,在过去的7年时间,Coverity已经分析了300多个开源项目的超过8.5亿行代码,这些项目包括Linux、PHP、Apache等.

缓存算法

- lostsnow - 小彰
没有人能说清哪种缓存算法由于其他的缓存算法. (以下的几种缓存算法,有的我也理解不好,如果感兴趣,你可以Google一下  ). 大家好,我是 LFU,我会计算为每个缓存对象计算他们被使用的频率. 我是LRU缓存算法,我把最近最少使用的缓存对象给踢走. 我总是需要去了解在什么时候,用了哪个缓存对象.

BFPRT算法

- zii - 小彰
BFPRT算法的作者是5位真正的大牛(Blum 、 Floyd 、 Pratt 、 Rivest 、 Tarjan),该算法入选了在StackExchange上进行的当今世界十大经典算法,而算法的简单和巧妙颇有我们需要借鉴学习之处. BFPRT解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分析,BFPRT可以保证在最坏情况下仍为线性时间复杂度.

贪心算法

- Shan - 博客园-首页原创精华区
顾名思义,贪心算法总是作出在当前看来最好的选择. 也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 当然,希望贪心算法得到的最终结果也是整体最优的. 虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解. 如单源最短路经问题,最小生成树问题等.