术语

基本概念

  • 功能点 FP function point
  • 应用边界 application boundary
  • 控制信息 Control Information
  • 基本处理过程 elementary process
  • Processing Logic
  • 功能 function
  • 元素类型 element type

估算方法

  • IFPUG估算流程概览 【ISO规范】
  • NESMA估算流程
  • 估算流程概览【国内行业规范-NESMA】
  • 规模估算
  • 估算流程概览【国内行业规范-IFPUG】

调整因素

  • 国内ifpug标准
  • 国内NESMA方法

应用

  • 工作量估算
  • 工期计算
  • 软件开发成本估算

国标/行业标准所描述的功能点估算规范,既有IFPUG ,也有 NESMA,二者在流程和规则上,大部分是相同的,主要差异是:

  • NESMA具有2个简易化模式,可以用于快速估算;
  • IFPUG的处理过程比较复杂,没有简化模式;
  • IFPUG和NESMA在调整因数的计算方法是不同的。IFPUG是14项基本特征的影响值TDI, NESMA是5项调整因子;
  • 对于延续项目,NESMA可以在 FP计数时,就按复用程度和修改类型进行估算FP; 而 IFPUG 则需要按新增、转换、变更分别进行初估,分别计算调整因子。

功能 function

功能分为 2 大类, 5种类型:

  • 数据功能
  • 交易功能

数据功能:即满足内部或者外部数据需求的功能 :

ILF内部逻辑文件【容纳一组在本应用中由一个或者一组基本处理来维护的数据】
EIF外部接口文件【容纳一组在本应用中由一个或者一组基本处理引用到的数据】

交易功能: 即处理数据的功能:

EI 外部输入
EO 外部输出
EQ 外部查询

元素类型 element type

用来估计功能的复杂度,从而为功能估算出合适的FP数:

  • DET data element type / 数据元素类型:为唯一、用户可识别、不重复的属性,即字段;

Data Element Type (DET) is the data subgroup within an FTR. They are unique and user identifiable.

  • RET record element type / 记录元素类型:为用户可识别的 DET 的子集【部分】, 例如, 主从类型的数据模式, 订单,订单行, 要识别为 2个 RET, 订单自身是1个RET,订单行是1个RET;

A Record Element Type (RET) is the largest user identifiable subgroup of elements within an ILF or an EIF. It is best to look at logical groupings of data to help identify them.

  • FTR file type referenced / 引用文件类型,被交易功能读取或者维护的数据功能, 是被交易功能 读取或者维护的 ILF,或者是被交易功能 读取的 EIF, 例如, 订单业务中,创建确认订单并建立交货单,要识别为2个FTR,订单自身是1个FTR,还需要将 交货单识别为1个FTR;

File Type Referenced (FTR) is the largest user identifiable subgroup within the EI, EO, or EQ that is referenced to.

估算方法

一、IFPUG估算流程概览 【ISO规范】

  • 收集可用的文档;
  • 确定计数类型【开发?、增强?、应用系统?】;
  • 确定计数范围,边界,以及用户的功能性需求;
  • 度量数据功能;

识别数据功能 识别 ILF和EIF 分别识别 ILF、EIF 的数据元素DET数量,记录元素RET数量,使用《功能元素复杂度计算表》确定复杂度,基于复杂度确定功能点数

  • 度量交易功能

识别每一个基本处理 确定唯一的基本处理 将交易功能分类为 EI、EO、EQ识别 EI、EO、EQ的数据元素DET数量,引用文件类型RFT数量,使用《功能元素复杂度计算表》确定复杂度,基于复杂度确定 功能点数

  • 度量转换功能
  • 度量增强功能
  • 计算功能规模

开发类型公式: DFP = ADD + CFP // ADD 开发项目要交付给用户的功能规模, CFP = conversion function point 转换功能的规模 【 在开发完成后的应用系统的生命周期内,应用系统的 规模 计算为 AFP = ADD 】

增强类型公式: EFP = ADD + CHGA + CFP + DEL // CHGA 变更后的功能规模, DEL =deleted function point 删除的功能的规模【 在项目增强后,应用系统的 规模 计算为: AFPA = (AFPB +ADD + CHGA) - (CHGB +DEL) // CHGA 变更后的功能规模, CHGB 变更前的功能规模, AFPA 增强项目后的功能规模,AFPB 增强项目前的功能规模 】

  • 将功能点计数记录在案
  • 报告功能点计数结果, 至此 IFPUG 流程结束
  • 【依据SNAP】进行非功能性需求 的规模调整

二、NESMA估算流程

  • 识别功能点,确定复用程度和修改类型;
  • 根据所处的估算时机,进行规模调整,得出未调整的功能点;
  • 基于调整因子进行调整,得出调整后的 功能点;

在进行计数实践的时候,按照估算的时机,或者文档的完备性,可以分为 3 种估算方法

1.Indicative方法, 预估功能点【用于项目早期】

只用识别出数据功能,即 ILF 和 EIF 的数量然后 按 公式 35*ILF + 15* EIF 计算出 未调整的功能点数Indicative方法基于如下假设:平均情况下,每个ILF对应3个EI(对应添加、修改、删除这三个操作)、2个EO(对应两种统计报表操作)和1个EQ(对应查询操作);平均情况下,每个EIF对应1个EO和1个EQ;公式中的35和15这两个权重,则是全部ILF、EIF的复杂度默认为"低",EI、EO、EQ的复杂度默认为"中",再考虑系统整体的功能性得出的。

2.Estimated方法, 估算功能点【用于项目中期】

识别出数据功能,以及交易功能, 即 ILF 和 EIF 的数量 以及 EI、EO、EQ的数量然后按公式 10*ILF + 7* EIF + 4*EI + 5*EO + 4*EQ 计算出未调整的功能点数。

3.详细功能点【用于项目后期】

识别5类功能的功能个数识别各功能的功能要素,基于功能要素的数量,使用《功能元素复杂度计算表》确定各个功能的复杂程度,根据《功能点数与复杂度之间的对应关系》 查出相应功能的 功能点数汇总所有的功能点数为 未调整的功能点数

Indicative方法 和 Estimated方法,均是是详细功能点估算方法的简化。

Estimated方法就是按中等复杂度进行估算

使用NESMA Estimated方法 估算未调整的功能点数时,可以基于复用程度、修改类型进行对各功能的功能点数进行调整, 调整系数为复用程度系数* 修改类型系数

功能点数与复杂度之间的对应关系

调整因素

按功能点计算出工作量后,再 根据下面的14项系统基本特征 评分得出调整系数,然后进行调整:

  • 数据通讯
  • 分布式数据处理
  • 性能
  • 大业务量配置
  • 交易处理率
  • 在线数据输入
  • 最终用户效率(用户界面友好程度)
  • 在线更新
  • 复杂处理(算法)
  • 可复用性
  • 易安装性
  • 易操作性
  • 多场地(多点运行)
  • 支持变更(客户化程度)

上面每个项目的分值 从0 到 5分

计算公式是: ∑14项因子*0.01 + 0.65, 即14项目 加总后 * 0.01 + 0.65

估算流程概览【国内行业规范-NESMA】

1.规模估算

  • 收集可得文档
  • 确定计数范围和边界识别功能用户需求
  • 度量数据功能
  • 度量事务功能
  • 计算功能规模

2.功能规模调整

  • 依据行业数据,确定CF【规模变更调整因子】,使用公式 S = UFP * CF

3.工作量计算

AE = (PDR *S)*SWF * RDF

其中:PDR 为生产率,取行业数据, SWF软件因素调整因子【完整性级别调整因子* 应用类型调整因子 *质量及特性调整因子】,RDF 开发因素调整因子【开发语言,开发团队背景】

4.工期计算

D = 1.227 *( AE/176)^0.404

在规模估算时, 根据 项目阶段,使用不同的NESMA方法

  • 项目匡算,使用预估功能点,计算公式为UFP = 35 * ILF + 15* EIF
  • 项目概算,使用估算功能点,计算公式为UFP=10* ILF + 7 * EIF + 4 *EI + 5*EO + 4*EQ

在估算功能点时,要考虑复用程度,按低/中/高分类,各自取值为1 、2/3 、1/3各预设功能点值

  • 项目阶段,使用详细功能点,计算公式为 UFP = ∑ ILF + ∑ EIF + ∑EI + ∑EO + ∑EQ

详细功能点估算时,要计算数据功能和交易功能的复杂度,基于复杂度计算 功能点,即得出各项功能的功能点数

估算流程概览【国内行业规范-IFPUG】

  • 确定估算的类型
  • 开发项目、升级项目、应用系统
  • 识别分析范围和应用边界
  • 识别分析范围和应用边界中的定义
  • 定义应用边界
  • 计数数据功能

识别数据功能 识别ILF,EIF 确定复杂度,基于复杂度确定功能点

  • 计数交易功能

识别基本处理 识别EI、EO、EQ 确定复杂度,基于复杂度确定功能点

  • 确定调整系数

调整系数 VAF 基于 14个通用系统特性计算得出, 每个特性取值范围0~5 14 个值相加,然后加上 0.65

  • 计算调整功能点

开发项目: DFP = (UFP + CFP ) * VAF

UFP 为应用在安装以后向用户提的 未经调整的功能点 CFP 为额外的转换功能的未经调解的功能点

  • 升级项目: EFP = (ADD+CHGA+CFP)* VAFA +DEL*VAFB

ADD = 升级项目中增加的未经调整的功能点 CHGA = 升级项目中改变的功能在改变后所具有的未经调整的功能点 CFP = 额外的转换功能的未经调整的功能点 VAFA = 升级后的应用的调整系数DEL = 被删除的功能的未经调整的功能点 VAFB = 升级前的应用的调整系数

  • 应用系统

基线 AFP = ADD * VAF //

ADD = 安装的功能的

UFPC VAF = 调整系数

应用升级后 AFP = [(UFPB+ADD+CHGA) – (CHGB+DEL)]*VAFA //

UFPB = 应用升级前的未经调整功能点

ADD = 新增功能的 UFPC

CHGA = 升级后的修改功能的 UFPC

CHGB = 升级前的修改功能的 UFPC

VAFA = 升级后的调整系数 【注意该公式中不包含转换功能, 因为转换功能与应用直接提供的功能无关 】

国内NESMA方法调整因子及案例分享

1.评估阶段

在估算功能点后,根据计数时机,按规模调整系数进行规模调整,从而确定未调整的功能点

2.软件因素

估算出未调整的 功能点后,再根据软件因素,和开发因素,一共5项调整因素计算得出的调整系数,然后进行调整

计算公式是: ∏ 5项因子, 5 项得分相乘

【 质量特性有4个维度,总体上应该是 8 个调整因素】

  • 应用类型

  • 质量特性

质量因子 计算公式

质量系数 = 1 + 0.025* 以上调整因子之和

  • 完整性级别

  • 开发语言

  • 开发团队背景

3.NESMA计算案例

  • 工作量估算

例如,使用NESMA 估算功能点法,估算出功能点为345.87 ,经规模调整后为480.75 ,基准生产率为7.10人时/功能点,那么工作量 = 480.75功能点 * 7.10 人时/功能点=3,413.325人时【480.75*7.10=3,413.325 人时 】=3,413.325/8=426.6656人天

【规模调整因子是根据估算时机确定的,上例是以早期 1.39取值的】

例如,调整因子得分如下:

调整系数 为 1*1.08 * 1.3 *.6 * 1 = 0.8424 所以调整后的 工作量 = 426.6656 人天 * 0.8424 = 359.4231 人天 【基准生产率可以查行业数据,一般取中位数】

  • 工期计算

工期=1.277 * ( 工作量 /176 ) ^ 0.404

【 此公式中工作量的单位是人时,工期的单位是月】

例如,工作量为359.4231人天 , 转换为人时为 3,413.325 人时, 计算得出工期为1.227*( 3,413.325/176)^0.404=4.065 即 工期为 4.065 月

进一步估算团队规模:

359.4231人天=359.4231/22=16.3374 人月,

16.3374人月/4.065 月 = 【16.3374/4.065】4.019 人

  • 软件开发价格计算

软件开发价格=开发工作量 * 开发费用/人月

其中:

开发工作量 = 估算工作量 * 风险系数 * 复用系数

开发费用/人月=【工资 + 国家规定的福利 + 奖金以及奖励 + 办公成本 + 人力资源成本 + 设备/基础设施 + 税金和利润 】 * 管理系数 * 优质系数

国家规定的福利 = 工资 * 0.476

奖金以及奖励 = 工资 * 1/5

办公成本 = 工资 * 1/3

人力资源成本 = 工资 * 1/5

设备/基础设施 = 工资 * 0.15

税金和利润 = 工资 * 1/3

管理系数取值于1~ 1.2

优质系数按 ISO9000 质量 或者 CMMI 认证确定,分别取值1.05,1.1,1.2,1.3

一般综合下来, 按平均月薪 * 3.23 作为开发费用/人月

人月开发费用,也可以采取行业基准数据,例如 2019年软件开发行业基准人月单价2.8767 万元 /人月, 不包含直接非人力成本

继续上例359.4231人天换算为人月,为359.4231/21.75=16.5252 人月,软件开发价格为 47.538 万【16.5252*2.8767=47.538】

注意,FPA 方法是按瀑布模式运作项目的,如果是采用敏捷模式,工作量上应该会少很多

  • 对于系统集成项目

软件成本估算流程详解及案例分享【国内行业规范-NESMA】相关推荐

  1. 软件的成本与定价如何决策?PMP软件开发规模估算和成本估算方法详解

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

  2. 杂志订阅管理系统c++_电池管理系统BMS功能安全开发流程详解

    点击上面 "电动知家"可以订阅哦! BMS功能安全开发流程详解 BMS和ISO26262 - BMS & ISO26262简介 BMS即Battery Management ...

  3. 无人机航测流程详解:航线规划、像控点布设、CC刺点建模及CASS成图

    无人机航测是传统航空摄影测量手段的有力补充,具有机动灵活.高效快速.精细准确.作业成本低.适用范围广.生产周期短等特点,在小区域和飞行困难地区高分辨率影像快速获取方面具有明显优势,随着无人机与数码相机 ...

  4. MySQL系列---架构与SQL执行流程详解

    文章目录 1. 背景 2. 架构体系 2.1 架构图 2.2 模块详解 2.3 架构分层 3. 查询SQL语句执行流程 3.1 连接 3.1.1 MySQL支持的通信协议 3.1.2 通信方式 3.2 ...

  5. 《猿族崛起》动作捕捉技术及制作流程详解

    前言: 其实最近两个月发布的原创文章,最初动机都是来自于<猿族崛起>,之前并没有太关注这部片子,后来偶然在火星时代上看到Weta发布的特效制作花絮,然后简介说是启用了<阿凡达> ...

  6. COCOMOII模型--软件成本估算

    1.COCOMOII模型介绍 1981年,Barry Boehm在其经典著作<软件工程经济学>中,介绍了一种软件成本估算模型的层次体系,称为COCOMO(Constructive Cost ...

  7. Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔 ...

  8. Android事件流程详解

    Android事件流程详解 网络上有不少博客讲述了android的事件分发机制和处理流程机制,但是看过千遍,总还是觉得有些迷迷糊糊,因此特地抽出一天事件来亲测下,向像我一样的广大入门程序员详细讲述an ...

  9. 基于spark mllib_Spark高级分析指南 | 机器学习和分析流程详解(下)

    - 点击上方"中国统计网"订阅我吧!- 我们在Spark高级分析指南 | 机器学习和分析流程详解(上)快速介绍了一下不同的高级分析应用和用力,从推荐到回归.但这只是实际高级分析过程 ...

最新文章

  1. 实现接口与显示实现接口的区别
  2. 多个会话对表加表级读锁和表级写锁后的操作权限分析(表级读锁+表级写锁)
  3. python中数据类型不同运算不同_Python的基本数据类型与运算
  4. keep老是显示服务器开小差,nginx+keepalived高可用服务器宕机解决方案
  5. 在Linux Ubuntu 18.04.x上安装和配置ActiveMQ-Artemis
  6. java strlen,跟妹妹聊到 Java 16 新特征,真香!
  7. 汇编语言程序设计 实验7 循环程序设计
  8. andorid 查看 Activity任务栈
  9. python import math什么意思_python中math.ceil什么意思
  10. C语言16进制乘法怎么算,16进制数之间的加法怎么算
  11. 重拾C语言-摄氏度与华氏度相互转换
  12. sre和devops_什么是SRE,它与DevOps有什么关系?
  13. wincc远程服务器配置,wincc连接远程opc服务器
  14. TPshop登录接口测试
  15. PNP NPN 三线制接近开关接线
  16. QChart动态生成图表(曲线)
  17. Google advertiser 开发
  18. 深度剖析apachepdf下载_软件定义汽车趋势下的供应链趋势(17页可下载)
  19. 2022QS世界大学排名:全球全日制MBA、商科硕士榜单公布
  20. 利用Python来制作一个中英互译器,并实现语音播报

热门文章

  1. pythonmsgbox怎么使用_python学习——EasyGui msgbox()
  2. 【调剂】航天二院硕士招收控制/电子/计算机相关专业研究生调剂
  3. 特斯拉Model 3提前交付:争夺新能源市场挑战不小
  4. Linux 快速定位文件要修改的位置
  5. 玩转Android10源码开发定制(二)刷机操作之fastboot刷机演示
  6. kdb内核调试 - 5
  7. 为什么安监控需要公网ip_三种方法告诉你项目超过255个摄像机怎么设置IP?
  8. python3.8安装包下载,适用于win7,win10
  9. 【CH559L单片机】PWM功能和示例介绍
  10. 计算机软件合同审查要点有,关于技术合同的审核要点清单