敏捷开发绩效管理之七:敏捷开发生产率(下)(简化功能点分析,NESMA,两级简化)

敏捷开发绩效管理之七 敏捷开发生产率(下)(简化功能点分析,NESMA,两级简化) 阅读详情

这是敏捷开发绩效管理的第七篇。(之一,之二,之三,之四,之五,之六,之七)

续前文……

 

功能点估算


第一级简化

上次说到只用数据+操作就能准确计算规模,听起来够简单了,但其实还不够。

谁能在刚拿出2页纸的需求文档时(假设昨天老板在酒桌上刚从客户那记下来的),就猜出有多少个操作?而且还不遗漏?增删改查好猜,“加入角色”就不好猜了。

NESMA早就遇到过这个问题了,他们这么解决:通过统计发现每个数据差不多有7个操作,所以刚才咱们找出了3个数据,那么:

3个 × (数据7 + 操作4×7个操作) = 3 × 35 = 105,嘿,把角色和权限的操作问题也给解决了,不用猜了。

如果有几个数据要管理也不知道怎么办?那也太粗糙了吧,再去细化一下吧(别细化报表上有几个按钮,按了按钮后的逻辑是什么……那个和规模无关;只确认是不是数据)。

这样准吗?来自课后的10个数据表明,基于这种功能点作出的工作量估算与实际项目数据相比,最大误差在正负50%左右(本人手里没有详细数据所以没分析,应该取P50就是中值的误差比较好,可能在30%左右)。虽然听起来误差大得乍舌,但是在手里只有2张纸的时候,已经很准确了。某政府部门的要求是到400%以内都可以接受,因为他们在一个项目的招标中,4个供应商报价最大差别是12倍。

总结一下这一级别的简化方法就是:每个内部数据35点。另外如果是外部接口数据(比如要取LDAP),那么每个外部接口数据15点。

第一级简化适合项目合同期/项目初始计划的早期估算。

第二级简化

如果项目已经完成了,不用猜了,就可以数到底有几个操作,就不用猜每个数据有7个了。

不过,到软件界面上面数显的很不专业,如果我们的史诗故事是基于数据写的,用户故事是基于操作写的,数史诗故事+用户故事不就得了?比如图中这个:

图中就是刚才提到的用户/角色/权限的局部,一共3个数据(小课本是史诗故事),外加19个操作(蓝色的是用户故事,其中两个“新建+查看”分别代表两个,要×2),加起来是 3 × 7 + 19 * 4 = 21 + 76 = 97,已经很接近105个了……如果考虑到这个软件还没有编完,我们第一级简化还是蛮准的嘛(归功于NESMA的长期努力)。

完成这些功能需要 105 × 9 = 945 小时 = 118人天。如果我们有一个迭代,正好要完成这些功能并将其部署上线,那么就按118天计算吧(如果只编写出来不测试,大约是70%的工作量)。当然这不是说任何一个人都花相同的时间,而是基于现在业界收集上来的数据,团队人均花费这么多。个体的生产率差异可达5倍,但团队却都差不了太多。

另外单个故事的精度也很差,比如如果某人正好编过某功能,可能一小会就完成了。但是如果很多人编写很多故事,大数定理会起作用。

总结一下这级别的简化方法就是:每个内部文件按7点(每个外部接口按5点),每个操作按4点,加起来就是功能点。

这个级别的简化适合每个迭代确定工作量;还可以在项目完成后,总体计算开发效率作为绩效管理的依据(算是回到绩效管理了)。

 

遗留问题

正如前言,很多敏捷世界的新鲜事,在别的世界早就不是新鲜事了(当然别的世界也有他们的新鲜事),提出和解决下面这些问题的很多前辈都已经去世了。

本文只是指出有这么一种方法,并非这种方法的操作手册,这种方法还是需要培训的(有现成的)。

1. 就这么简单?

不是,简化的功能点大约需要一整天的培训,后续估算(推导工作量/工期/成本)还需要一整天。里边有很多细节。

复杂的功能点大约需要2~3天培训,另外一般5天左右的指导,如果要CFPS证书还有一个3天左右的考前指导。

2. “每个用户操作 = 一个用户故事?那修Bug怎么办?做小的改动怎么办?提升性能怎么办?”

可以记录成不同类型的故事,但是就别计算功能点了。图中三个绿色箭头,就是三个对原有故事的“增强”,其特点就是无法描述为完整的用户操作。

他们不计数,但是在统计时已经被平摊到计数的故事里边了。

我自己实践的时候发现,有些故事为了开发方便,极有可能包含两个操作(如上面的“角色首页”包含新建和查询两个操作),建议可以当作一个故事,怎么舒服怎么来不要太生硬,但是加个记号知道是2个操作,防止数错。

3. 每个数据都是/才能是史诗故事吗?

不一定,我有一个史诗故事叫做“性能优化”,它就不是,也不计算它。

4. 每个动词都是操作?

不一定。简单而言就是只有”主语是用户“的动词才是操作。”。

暂时还没有遇到有些Backlog Item不是用户操作但是很想当成用户故事的情况,如果有,可以在史诗故事/用户故事上设置一个字段,如果是才计数。

5. 非功能性需求怎么办?

最早提出来也最早被解决的问题,标准功能点的非功能性调整因子是1970左右(天啊……)提出的有点老了多数都不适用了;个人最喜欢的是韩国标准中的调整因子,大致可以理解为普通的乘1,科学计算之类的乘1.3左右,运营计费乘1.5左右,生死攸关的乘2左右。

非功能性调整因子一般包括规模因子、领域因子(韩国标准包括8大类约50小类)、质量因子(韩国标准包括4个质量因子,每个三个等级)、开发语言因子这几个。有时候不会觉得他们考虑不周,反而是多虑了……

6. 准吗?

不准。因为这种方法虽然很准,但是那个”9小时/功能点”是业界数据,最好用自己的数据重新回归一下。

本人正在回归自己的,可惜只有一个项目在做,所以不得不每个迭代都当作项目来看待。一般稍微大点的企业有一年时间积累20个(子)项目数据就可以了。

7. 有前途吗?

有。芬兰,澳大利亚,韩国,日本……的政府采购均采用这种方法计算价格。中国的国标预计在明年出台,即政府采购项目均将使用这种方法报价(或指导报价)。

8. 有的项目好坏可不是光看开发的功能多少,还要看创意和……

是的,用这种方法度量绩效的目的,是为了提升开发绩效,加快开发速度,而不是计算工资奖金或评价项目好坏。在之四里边已经提到,必须在赚来钱的时候才能发奖金,它是由外部目标驱动的。

在产品开发中,往往收入与功能多少的关系不很直接甚至完全没有关系,但在一些直接由功能点报价的政府项目、外包项目里边,这个可以直接作为外部目标考核。


 

本人正在参加优快云博客之星评选,如果读完并喜欢这篇文章,欢迎投票: http://vote.blog.youkuaiyun.com/item/blogstar/cheny_com



点击下载免费的敏捷开发教材:《火星人敏捷开发手册》



NESMA三种场景的功能点估算方法详解及分析 例如,某项目识别出8个ILF、4个EIF、15个EI、10个EO和12个EQ,可快速计算得266功能点(7×8+5×4+4×15+5×10+4×12)。例如,某高复杂度ILF(RET≥6,DET≥51)权重为15,而低复杂度EQ(FTR=0-1,DET=1-5)权重为3。: 此方法通过简化数据功能与事务功能的映射关系,牺牲精度换取效率,适合需求模糊的项目初期。NESMA方法定义了三种功能点估算场景,分别适用于软件项目不同阶段的需求完善程度,通过逐步细化的方式实现规模估算的灵活性和精准性。 阅读详情

相关推荐

使用功能点法管理敏捷活动

在已建立的敏捷开发的团队中引入标准功能点法应谨慎处理。就团队而言,可以将故事点用于评估下一次迭代的工作量,但是故事点的“规模”并不适合个体团队以外的绩效评价和任务评估,也就是说,不适合管理“大规模敏捷”。在评估系统、发布或迭代级別的工作量时,首先需要在该级別上评估要交付的软件产品规模,并结合同一级别的以前交付的相似软件的“实际”生产率(而不是“速度”)数据。为了更准确的管理开发任务,一个组织需要一种客观的、标准化的方法进行评估和度量,这种方法对所有类型项目都应该是有效的并且独立于开发技术和开发人员的效率。

csbmk_com中基数联的博客 847

NESMA功能点估算法(一)

NESMA方法是1989年由荷兰软件度量协会提出的,最新版本为2018年发布的2.3版本。该版本中,使用高级别功能点分析(High Level Function Point Analysis)代替估算功能点计数(Estimated Function Point Count);使用外部逻辑文件(External Logic File,ELF)代替外部接口文件(External Interface File,EIF)。NESMA估算法由IFPUG而来。

anderolujun的专栏 1万+

(高清版)SJT 11619-2016 软件工程 NESMA 功能规模测量方法版本2.1 使用功能点分析的定义和统计准则.pdf

功能点规模测量方法,适用于所有类型的软件开发。

软件工程造价实战:从入门到实战——功能点分析、成本估算与项目管理

 依据NESMA和国家标准《软件工程 软件开发成本度量规范》研发,系统阐述:1. 如何基于行业成本估算模型对项目的功能点规模、工作量、成本进行合理的估算;2. 所学的成本估算方法可用于信息化规划、预算立项、招投标、项目计划等各个阶段,在项目早期合理制订预算,科学地估算成本和预测利润,为项目的成功实施奠定基础。3. 方法易学易用,0基础培训后可直接用于实际工作。4.软件造价得到业界广泛认可。截至2024年,2万余人学习了造价知识。

ComfyUI Impact Pack实战:如何用三大检测器打造高效人脸修复工作流(附2025最新模板)

本文详细解析了如何利用ComfyUI Impact Pack中的BBOX、Segm和SAM三大检测器构建高效人脸修复工作流。通过技术选型、参数优化和实战案例,帮助用户掌握从精准定位到细节修复的全流程技巧,特别适用于商业摄影和影视制作场景。文章还提供了2025年最新模板和性能优化方案,显著提升人脸精修效率。

weixin_29040367的博客 244

Android System Slice应用加载分析,及启用Slice后,锁屏日期第一次开机正常显示,但后面锁屏不显示问题分析

最近发现Android P上锁屏界面,日期不显示,发现从P开始后,出现了Slice来允许应用以模块化,可交互的方式,插入多个使用场景。Android P的system UI 也使用到了这一特性,表现为锁屏时间,日期,勿扰图标,闹钟等。 如何使用Slice 以System UI中KeyguardSliceView.java来说明它的使用方法 首先,我们打开System UI 的mk 文件,可以看到以...

qq_33595823的博客 3035

Nesma软件功能点估算

Nesma功能点分析(FPA)是一种测量信息系统功能大小的方法。FPA通过查看与业务中用户相关的(功能性的)事务和(逻辑的)数据文件来测量功能大小。衡量单位是“功能点”;信息系统的功能大小由一定数量的功能点表示。功能点是衡量信息系统功能大小的良好方法;衡量单位“功能点”可以以各种方式利用。FPA通常用于预算系统开发项目。信息系统的开发成本与其大小有关:系统越大,开发成本就越高。根据过去项目的经验,组织知道实现一个功能点需要多少小时(平均值):生产率。

wywbli的专栏 5354

全志V3S开发板实战:从零构建嵌入式Linux系统

本文提供了一份针对全志V3S开发板(如LicheePi Zero)的零基础教程,详细指导如何从零开始构建嵌入式Linux系统。内容涵盖编译环境搭建、交叉工具链配置、U-Boot引导程序编译与烧录、Linux内核定制与编译,以及使用Buildroot构建根文件系统,最终实现系统成功启动,帮助开发者深入理解嵌入式系统构建全流程。

tensor9flow的博客 575

敏捷开发绩效管理之七:敏捷开发生产率(下)(简化功能点分析,NESMA,两级简化)...

这是敏捷开发绩效管理的第七篇。(之一,之二,之三,之四,之五,之六,之七) 续前文……功能点估算第一级简化上次说到只用数据+操作就能准确计算规模,听起来够简单了,但其实还不够。谁能在刚拿出2页纸的需求文档时(假设昨天老板在酒桌上刚从客户那记下来的),就猜出有多少个操作?而且还不遗漏?增删改查好猜,“加入角色”就不好猜了。NESMA早就遇到过这个问题了,他们这么解决:通过统计发现每个数据...

weixin_30736301的博客 219

transformer中QKV的通俗理解(剩女与备胎的故事)

用vit的时候读了一下transformer的思想,前几天面试结束之后发现对QKV又有点忘记了, 写一篇文章来记录一下 参考链接: 哔哩哔哩:在线激情讲解transformer&Attention注意力机制(上)在线激情讲解transformer&Attention注意力机制(上)_哔哩哔哩_bilibiliAttention is all you need介绍 更具体的介绍可以去阅读论文在Attention is all you need这篇文章中提出了著名的Transformer模型Transforme

Peter的博客 1万+

公交车调度排班优化算法研究与实现

本文提出的公交车调度排班优化算法基于遗传算法,能够较好地处理公交车调度排班问题,使得车辆数量和运营时间得到平衡,公交车的使用效率得到了优化。在模拟的公交车路线中,使用本文所提出的算法,得到了一组较优的公交车调度排班方案。其中,车辆数量的多少会影响到公交车的行驶速度和等候时间,而运营时间的长短则会直接影响到公交车的使用效率和成本。本文基于遗传算法,通过随机生成种群、选择、交叉、变异等操作,逐步优化种群中个体的适应度,最终得到较优的公交车调度排班方案。以下是本文中所使用的Matlab代码实现,供参考。

PixelLoom的博客 872

敏捷开发绩效管理之六:敏捷开发生产率(中)(功能点分析,FPA,简化的功能点)...

这是敏捷开发绩效管理的第六篇。(之一,之二,之三,之四,之五,之六,之七) 直接估天数或用故事点估天数,都很“程序员”。如果在项目的甚早期,面临与客户相关的报价问题,或高层领导要统计公司绩效并想进行项目乃至行业间的比较,这两种方法都很难使用。敏捷开发内部之所以没有进化出来能做项目间比较、行业间比较、用于早期报价的估算方法,是因为敏捷的发明者和后来的实践者多数都不管这些事情。而这三样事情,...

diaogan4202的博客 504

企业如何开展BI建设--指标体系建设

很多企业的数字化转型工作都是从做BI项目开始的,很多企业认为,BI就是做指标大屏,所以做了很多的驾驶舱,也做了很多指标,有从系统取的,有手工填报的,甚至手工填报的比例占到了70%,最终BI沦为了填报系统,业务认为BI就是把从线下的微信沟通转到了线上录入展示,并没有给业务代来任何提升,久而久之,BI大屏就没人关心,公司高层也认为数据都是填报的,都经过了加工处理,这种数据不可信,不能反映业务开展的实际。其实在BI系统建设之前,我们首先要做的就是要梳理企业的指标,到底我们要展示哪些指标?

263

敏捷开发绩效管理之六:敏捷开发生产率(中)(功能点分析,FPA,简化的功能点)

这是敏捷开发绩效管理的第六篇。(之一,之二,之三,之四,之五,之六,之七) 直接估天数或用故事点估天数,都很“程序员”。如果在项目的甚早期,面临与客户相关的报价问题,或高层领导要统计公司绩效并想进行项目乃至行业间的比较,这两种方法都很难使用。敏捷开发内部之所以没有进化出来能做项目间比较、行业间比较、用于早期报价的估算方法,是因为敏捷的发明者和后来的实践者多数都不管这些事情。而这三样事情,比天数、故

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 1万+

SecOC专题之新鲜值TripCnt

本系列为一步步拆解新鲜值的分发及管理而撰写文章属于原创,根据自身开发经验及理解撰写,若有错误请指出Trip Counter是新鲜值中变化最慢的一个part,并且自增到最大值时,会从头开始翻转计数。Trip Counter需要收发双方都保存,由于其变化较慢,所以不会经常进行同步该值。这就要求开发过程中保证每次对该值的读写必须要正确。

qq_22969363的博客 1154

YOLOv11改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型

一、本文介绍 本文记录的是基于 GhostNetV3 的 YOLOv11 轻量化改进方法研究。GhostNetV3的轻量模块采用重参数化方法,训练时为深度可分离卷积和1×1卷积添加线性并行分支,推理时通过逆重参数化移除分支、折叠操作,能够在不增加推理成本的同时提高性能,从而实现YOLOv11的轻量化改进。 专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进 专栏地址:YOLOv11改进专栏——以发表论文的角度,快速

Limiiiing的博客 1845

本博客中关于功能点分析FPA的文章索引

本博客中有不少篇幅是关于功能点分析的(也称功能点度量),不过都是分散在各自的系列中,因整个开发过程的需要而存在。最近不少人问到哪里有功能点度量的内容,所以做一个索引,来总体说一下本博客的相关内容。基本介绍类文章敏捷开发绩效管理之五:敏捷开发生产率(上)(故事点估算) 及同系列的之六、之七(在文章的第一行有链接).之五主要提到故事点(一种尝试使用功能、历史数据进行绝对规模度量的敏捷方法)及其局限性,

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 8949

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 敏捷开发绩效管理之六:敏捷开发生产率(中)(功能点分析,FPA,简化的功能点)
下一篇: Marty Cagan:怎样寻找出色的产品经理
火星人陈勇
博客等级 码龄18年 4899粉丝 381原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值