思步网
标题: 怎样估算更加精准【总结】 [打印本页]
作者: 思步学堂 时间: 2013-9-29 13:20
标题: 怎样估算更加精准【总结】
2013年9月16日下午14:30-17:00,思步网邀请思步科技资深咨询顾问james做了题为“怎样估算更加精准”的微讲坛,微讲坛地址:http://www.step365.com/wb/wjt 。现将现场讲座及互动部分的内容总结如下。
******************************************************************************
******************************************************************************
第一节 为什么要做估算
首先谈一下为什么要估计?为什么要更加准确的估计?大家想到没有,我们投标,我们签订一个项目,肯定是有前提的,就是项目能赚钱,能盈利。所以,一般都会计算盈利的空间有多少。
怎么计算盈利的空间?就是合同额减去成本。成本怎么能得到,就要通过估算的方法,事先进行测定。我们说一个项目如果毛利有 60%,甚至更多,这时候,估算可以粗一些,偏差大一些。
可是目前,软件行业的毛利率在逐年下降,利润空间越来越窄。所以,如果能更加准确的估计,就能提高项目的成功率。
因此,估算的准确性和估算的精度就显得越发重要了。
比如,一个项目,预估的毛利率空间是30%,如果你估算的误差在+/- 50%,那么这个项目是否要投标,是否要做,就出现疑问了。因为,不赚钱的概率出现了
那么怎么能更加准确的估计?用什么样的估算方法能提高估算的精度?有没有快速的方法和有效的方法进行估算?
今天讲的几个方法,是最常用的一些估算的方法。方法没有最好的,最好的形式是用一种方法,坚持不断的进行估算,并结合历史数据,坚持下来,即使最简单的方法,其精度也可以逐步提高。
有一些企业,有一些公司,今天用这个方法,明天用另外的估算方法,方法使用了不少,但都是浅尝辄止,然后说估算不行。导致精度一直不能提高。所以,方法一旦确定下来,就要坚持下去,持续改进,而不是更换方法。
第二节 如何进行估计
良好估算的前提,是确定项目的范围。项目范围明确了,估算就更加便利一些。项目范围可以以顶层WBS形式进行描述
估算前,要明确假设和约束,比如客户可能的变更,比如我们自己的开发能力
在估算中,容易出现的问题是,直接给出工作量。比如某个功能,有经验的工程师往往会给出,这个功能大概几天能做完。这个就是直接估算工作量。这种形式在企业里很常见。这类估算,是否可以呢?结论是肯定的,当然可以。
但是,它还有一个问题需要注意。问题是,这些数据没办法作为历史数据为以后采用。因为,估算的依据没有,没办法横向比较。所以,以后要用这些数据就比较麻烦。因此,不建议直接估算工期、工作量,建议先引入一些中间的量作为替代。
中间的量可以是代码行,可以是功能点。中间量在CMMI中称之为规模。PP.sp1.2有详细的描述。
有了规模,可以做不同项目之间的横向比较,历史数据就要价值了。当然规模的种类可以是代码行KLOC,也可以是功能点,用例点,故事点。总之,要找到研发软件的规律,然后制定规模识别的标准
所以,直接估算工期、工作量,不是不可以,而是不好。历史数据会不好用。原因就在这里。
第三节 各种估计方法之一:Pert Sizing
好了,有了上面的一些原则,就可以开始估计了。估计的方法很多,简单的估计方法,精度比较差,但估算快速;复杂的估算方法,精度高,但需要学习,需要训练。简单的估算方法:有Pert sizing,Delphi,类比法
复杂一些的有IFPUG(标准功能点),NESMA(快速估计),COCOMO II
Pert Sizing是一种加权平均法,可以用于估计软件项目的规模、工作量和成本等。这个是最简单的估算方法。
Pert Sizing是一种加权平均法,可以用于估计软件项目的规模、工作量和成本等。在估计每一项任务时,首先按最佳的、可能的、悲观的三种情况给出估计值,记作:a、m、b。6
然后用以下公式计算期望值,期望值就是最终的估计值:期望值 =(a + 4 * m + b)/ 6
这种方法运用了一些心理学和统计学的观点,主要利用的是人们的心理。一些人为了表现自己的能力,往往会少报一些规模,而另外一些人为了争取某些利益,想多报一些
这种方法,就是减少估算人员这些波动的心理。
没有经过训练的估计,一般其精度在 -50%(少估计)~150(多估计)%之间,使用Pert sizing方法,可以把精度提高到 +/- 50%之间。
应该说精度提高了,但相对于项目的毛利,这样的精度是远远不够的。需要靠历史数据的帮助,靠其他方法的配合,比如类比的方法,也可以继续提高精度。
第四节 各种估计方法之二:Wideband Delphi
接下来讲Delphi,Delphi也被称为专家法。Delphi的工作原理是这样的:首先选择一些对系统比较熟悉的专家(比如系统的需求分析员,开发人员,上下游接口人员,做过类似系统的人员)
一般专家选择3~7名。让这些专家对系统的各个模块进行估计。估计完成后,由主持人匿名找到每个模块的最大值,最小值,让他们把估算的理由写下来。写完后,有主持人向大家宣布,为什么每个模块的最大最小的原因。
大家了解到模块的最大最小值后,如果最大最小偏差大于20%,再进行第二轮估计。如此类推,最多进行三轮。
当到第三轮时,有两种情况,1.最大最小偏差小于20%,这时候可以结束估算;2.最大最小值仍大于20%,这时候为了节约估算成本,也停止进行估算。最后的估计结果,可以取所有估算数据的算数平均,也可以去掉最大值,最小值,再进行算术平均
这种方法就是专家法。这种方法,经过长期的积累和训练,可以提升到比较高的精度,特别是做产品的项目。一个版本一个版本提升和发布的,精度会提升的很高。
比如华为,就是用的这种方法,没有使用更加复杂的方法,用了7,8年,精度最终可以达到+/-10%
所以说不是越复杂的方法,约难理解的方法越有效,而是用一种方法,积累的越多,经验越丰富,准确度就越高。
建议大家做估计到时候,用自己最熟悉的方法,找项目的规律,定义项目的各种估算属性,这样积累的越多,估算就月精确。而不是去找各种千奇百怪的方法,把自己绕晕了。重要的还是积累,也就是经验。
这种方法对于项目型的企业就不太适合了,因为项目型的企业,项目类型,种类,客户情况偏差大,不容易做积累。因此精度提高的速度就相对比较慢。
这里没办法做练习,能做个练习就好了。之前给客户做咨询的时候,让他们做个估算,大家都不熟悉的例子,结果三轮过后,他们的估算精度是-8%
第五节 各种估计方法之三:类比法
接下来谈一下类比法。类比法就更是利用历史数据和经验了。比如估算一个页面要花多少工作量,这时候用类比或者叫代理估算,就更加容易和准确一些。
页面有复杂的有简单的,怎么进行类比或者做代理呢?我们那页面的构造做类比,一个复杂的页面,可能有几个输入框,几个选择框,几个按钮,数这些控件,就业估算一个页面的复杂度。
简单的界面,只有一个输入框,一个确定,一个取消,如登陆框,复杂的页面,有多个按钮,多个输入,多个选择,因此,可以用多个页面与简单的页面进行比较,简单的页面用一天时间,复杂的页面,按照线性的估算,也可以估算大致复杂需要做几天。
类比法或者代理法,是用一个大家都知道的规模,推算一个不太了解的规模。找到可以对比或者可以代理的,就比较容易推算新功能的规模了。
这个方法的难点在于怎么样更好的对比。常见的有刚才说的用数界面的控件的方法。也有数表的方法,比如某公司做BI的项目,就是用数每个检索需要调用多少个表结构,多少个存储过程。找到了能比较的要素,类比的意义就更大了。
pert sizing(三点法),wide bandDelphi(专家法),类比法,这三种方法是可以交叉起来使用的。不局限一种方法,可以互相穿插在一起。以进一步提高精度。
我个人的建议是,如果大家觉得其他估算方法麻烦,只要用这三种方法,也可以达到很高的精度。因此,不想用特别复杂方法的公司,就要在这三种方法上下功夫,积累数据,我相信5年之后,你们也能达到华为的高度,至少偏差控制在15%之内是可能的。
第六节 各种估计方法之四:Function Point (IFPUG)
接下来讲功能点法,这个有点抽象。功能点法在国际标准上叫做 IFPUG,或者funciton point,现在ifpug已经是国际标准了,最新的标准是5.2版本的,大家感兴趣可以下载来看看。里面介绍的是识别功能点的各种规则。
IFPUG是IBM的一个项目经理发明的。他在上世纪80年代做项目经理的时候,也经常遇到估算不准确的情况,越是,他开始找规律,找项目、需求、实现的规律,于是发明了这种估算法。后来他离开IBM,专门成立了一个咨询公司,讲如何进行估算
再后来,这个就被ISO纳入了国际标准。所以估算就是实践出来的。
国际标准号是ISO/IEC 20926:2003 ,大家感兴趣可以检索一下。我这里也有电子档的,如果大家需要,可以留下您的邮箱地址,我发给你。
现在讲IFPUG,就是FUNCTION POIT怎么做。只能简单的讲一些,很多规则建议大家翻看手册和标准。要了解IFPUG,先讲几个术语,这些术语记不住的话,容易听晕了。
1.ILF (Internal Logic File)内部逻辑文件,类似于系统里面的各种表,各种记录(如数据文件,或配置文件);2.EIF(External interface file),外部接口文件,可以是数据接口,可以是消息接口,可以是逻辑接口,可以是文件接口。
内部逻辑文件(ILF)是一组用户能够识别、存在内在逻辑关联、在系统边界之内被控制的数据或控制信息。可理解为一个实体联系模型或一组关联的数据表。外部接口文件(EIF)是另外一个系统的ILF。在本系统中被引用、在系统边界之外被控制。
这两个称之为静态的,因为都是数据,不牵扯逻辑,只不过一个在系统内部,一个在系统外部。
举个例子:比如做一个 京东的交易系统,ILF,就是京东里面各种商品的数据。EIF,就是支付时,需要支付数据接口。
各种商品数据保存在一个表里,所以ILF是一个。支付时,有多个接口,比如有支付宝,有腾讯的支付,这样,EIF就是2.
刚才的ILF,EIF叫做数据功能元素,光有数据功能元素,系统是不完整的,还需要统计事务功能元素。
数据功能元素包括三类:EI(外部输入),EO(外部输出),EQ(外部查询)。外部输入(EI),一个接受来自系统边界之外的数据或控制信息的基本处理。其目的是维护一个内部逻辑文件,或改变系统的行为。
外部输出(EO) -个向系统边界之外发送数据或控制信息的基本处理。其目的是向用户展示一组经过了(除提取之外的)逻辑处理的数据或控制信息,也可能包括对内部逻辑文件的维护或改变系统的行为。
外部查询(EQ) -个向系统边界之外发送数据或控制信息的基本处理。其目的足向用户展示一组经过提取处理的数据或控制信息,不会引起对内部逻辑文件的维护或系统行为的改变。
ILF,EIF,EI,EO,EQ要熟记,不然理解起来就会搞乱了。
理解了ILF,EIF,EI,EO,EQ,就可以开始计数了。首先,按照刚才京东的例子,数ILF,EIF。例如,刚才数的是一个货品的数据 1个ILF,2个支付接口,2个EIF,这样够不够?这样还不够。原因是没有考虑到这些数据的复杂度。
那么ILF,EIF的复杂度怎么算?这里又出现了两个术语:数据元素类型(DET),记录类型元素(RET)
千万别搞混了,这块有点绕。没图形,不容易理解。
例如京东的货物表,是一个内部逻辑文件 1ILF,怎么算这个逻辑文件的复杂度?通过DET和RET来计算。 DET相当于表有几个字段,RET相当于货物表有几个关联表。
比如货物表有10个字段,那么DET=10;又比如货物表还要关联:仓库表,厂家、,那么这个货物表的RET = 2 这时候就可以计算货物表(1ILF)的复杂度了。计算的方法是通过查表得到的,表的内容是标准里规定的。
通过查表,我们发现 10个字段,2个关联表的ILF复杂度是LOW,LOW对应的功能点是7,因此我们现在可以知道,做一个京东货物的1个ILF =7个功能点。
7个功能点是什么含义?
国际上有个组织叫ISBSG,在澳大利亚,专门收集全世界跟功能点相关的项目数据,到目前已经收集了几十万个项目的数据,根据他们的数据统计,一个CMMI 5级的公司,每个功能点,要花1.5人天来完成。所以1天的生产率大概是0.7个功能点
于是,我们知道 7个功能点需要10.5人天做完。这样估算有含义了。
EIF跟ILF类似,如法炮制,但查询的表格是另外的,也可得到类似的结论。
以上是ILF和EIF的估计,也就是数据的估计;
下面开始事务的估计
我们知道事务类型有三种:EI,EO,EQ,这个怎么估计呢。这里要用到事务的复杂度(不要搞混,刚才是数据的复杂度)
事务的复杂度怎么统计?又用到两个复杂度计算的术语:DET (数据处理类型)FTR(引用文件类型)
DET (相当于表格中的字段)如,进入或者输出该应用的边界的不重复的数据项数.(通常为字段数,只计算被事务处理参照和维护的字段,包括用户从GUI输入的字段、命令键、提示信息)。输入的字段:命令键,提示信息
引用文件类型( File Type Referenced )为关联文件数(即某项功能处理过程中涉及到的引用和维护的文件数)
比如在京东网站购物,我首先输入一个查询条件,找到购买的商品,输入银行账号,然后购买,这个怎么识别
首先一个查询是一个 EQ(多个查询条件,也是一个EQ),输入银行账号,是一个EI,购买完成后,系统提示我一个购买成功,那么是一个EO
这时候怎么计算EI,EO,EQ的复杂度呢。就通过RET和FTR进行计算。
类似于ILF和EIF,通过数对应的数据字段,关联的外部文件,检索到EI,EO,EQ的复杂度对应的功能点数。
好了,现在 ILF,EIF,EI,EO,EQ都数完了,现在可以统计功能点。
低平均 高 合计 外部输入 __×3 __×4 __×6 外部输出 __×4__×5 __×7 外部查询 __×3 __×4 __×6 内部逻辑文件 __×7 __×10 __×15 外部接口文件 __×5 __×7 __×10
用这个公式计算功能点即可。这个功能点叫未调整的功能点UAFP。
有了未调整的功能点,还要考虑系统的复杂度,所以还需要调整。系统的复杂度有14类,分别按照1~5来打分。这个叫调整因子
数据通信联机更新 分布式处理 复杂处理 性能 可重用性 配置负载 易安装 事务率 易操作 联机数据登录 多个场所 最终用户效率 设施变更
这些是常见的调整因子。
调整后的功能点(AFP)由以下公式计算: AFP = UAFP * [0.65 + 0.01 * VAF]
最后得到了最终的功能点。
这个就是IFPUG,最简单的介绍。因为如何数ILF,EIF,EI,EO,EQ还有一系列的规则和要求,不能随意数。具体的要求可以参加我推荐的IFPUG5.2标准
IFPUG可以实现很高的估算精度。因此,印度,韩国,澳大利亚,已经把这种方法形成了国家标准,为国家做项目,必须要按照这种方法估计,才能有投标的机会。
第七节 各种估计方法之五:NASMA(快速功能点估计)
可是,这个方法太麻烦了,我相信我讲的大多数不知道这个方法的人还是云里雾里的。不知道怎么操作。是的,这个方法确实比较复杂,而且只适用于交易,数据库等这类型的系统,对于电信的系统不适用。
于是,有人对这个方法做了简化,为了快速估计,简化估计,于是有了,快速功能点估算,叫NASMA。
NASMA怎么估计?NASMA对IFPUG做了简化,保留ILF,EIF,去掉EI,EO,EQ。ILF和EIF的计数方法跟IFPUG一样。最后得到功能点是FP=ILF×35+EIF×15。至于为什么这样,留个小尾巴,以后再讲。
好的,讲座时间到了,现在请大家提问问题。
******************************************************************************
******************************************************************************
1.
@清清水草2012:
公司目前在组织的估算,感觉是做样子的,拍脑袋定的。怎么样委婉一点给领导提建议呢?答: 可以把我一开始的例子举给他,就说项目如果估算不准确,项目是不是应该做就成问题了,可能不盈利。
答: 专家法和类比法,可以把类比的内容和专家估计进行整合,形成一张估算表。如何选择专家是个问题。最好不要选择领导,因为领导会左右估算的结果,类似于同行评审,选择同行将进行估算,包括上下游接口,包括熟悉系统的工程师
3.
@西北偏北I:个人觉得估算这个事情呢,需要循序渐进,而且需要高层的支持。慢慢累积才能做的好,估算才能越来越准确,否则到了后期,大家又都是在拍脑袋决定了。答: 是的一定要高层支持,因为估算不是一个人的事情。
4.
@大懒虫子丫头:代码行估算现在是不是应该被淘汰了,适用度不大啊。答: 怎么能淘汰呢,代码行是一个很客观的方法。当然最好用功能点。华为用的就是代码行。微软、IBM,MOTO都是用的代码行
5.
@有个性的个性:我们一直在用功能点,一开始用代码行,实在太累,后面就用专家估算,结果沟通协调起来太麻烦。现在用功能点,项目组自己就弄出来了,这样合理吗?答: 功能点有一些是不标准的,类似于类比法的功能点,这样也可以,但这个不是标准的功能点
再问:我们跟考核结合起来就乱了,现在头疼呢。
再答:怎么个结合法?估算精度跟考核结合?一开始不要这么做。
6.
@淡淡淡淡蓝色:我们一直用代码行,估算比较准确,就是费时。有什么简易的方法不?答: 坚持下去,想办法简化,通过工具进行简化。不知道你们用代码行估算使用的是什么方法。
再问:纯人肉。

再答:可以进行分类,如配置,如通信
作者: ljaabb44 时间: 2013-9-29 13:30
学习学习
作者: lanj 时间: 2013-9-29 14:08
好好学习学习~!
作者: 匿名 时间: 2013-9-29 14:15
#思步专题#微讲坛:#怎样估算更加精准#【总结】,7000多字精品奉献,详见:<a href="" target="_blank"></a>。【该微讲坛内容涵盖:为什么要做软件估算?为什么要先估算规模而不直接估算进度?三点估算、delphi估算、功能点估算、快速功能点估算、故事点估计(敏捷)是怎样操作的?如何提升估算的准确性?…】[tthread=www_step365_com, 思步网]http://app.qlogo.cn/mbloghead/bc01d8a1391b4ec8fab6[/tthread]
作者: sunny 时间: 2013-9-29 14:15
内容很丰富,收藏、学习。
作者: 森林 时间: 2013-11-11 10:18
好活动,下次一定要参加。
作者: 菜菜子-521 时间: 2014-2-7 10:33
好活动,下次一定要参加。
作者: 健康之友 时间: 2014-2-12 17:27
好活动,下次一定要参加。
作者: 西门庆 时间: 2014-4-23 12:08
顶,这样的活动真心好啊~
作者: 岛屿失梦 时间: 2014-6-6 21:31
下次有相关活动时再说一下哦~
作者: 雪ジ吖头 时间: 2014-6-10 08:12
好活动,下次一定要参加。
作者: 美人痣iii 时间: 2014-6-11 19:51
想参加,不知道什么时候还有。
作者: 習慣成型 时间: 2014-7-14 15:59
好活动,下次一定要参加。
作者: 幸福是被你需要 时间: 2014-7-14 18:18
顶,这样的活动真心好啊~
作者: 染指旳沵唇。 时间: 2014-7-24 20:44
不能到现场真是遗憾。
作者: 棱镜 时间: 2014-8-6 18:26
向楼主学习
作者: 妗画 时间: 2014-8-22 12:33
路过的帮顶
作者: 楚峡云归 时间: 2014-8-28 14:54
看起来不错
作者: 绣花男神 时间: 2014-9-13 18:44
下次有相关活动时再说一下哦~
作者: 夜舞灬倾城 时间: 2014-9-23 11:28
不能到现场真是遗憾。
作者: 进宫做宠妃 时间: 2014-10-18 15:18
支持,赞一个
作者: 折动云阙 时间: 2014-10-18 19:58
路过的帮顶
作者: 梦念人. 时间: 2014-10-20 09:01
这么强,支持楼主,佩服
作者: 李霖 时间: 2015-1-18 16:58
确实不错,顶先
作者: 流绪微梦 时间: 2015-2-8 20:23
看起来不错
作者: 待君归 时间: 2015-3-4 19:47
想参加,不知道什么时候还有。
作者: 绘梦 时间: 2015-9-28 19:37
看帖看完了至少要顶一下哦~
作者: 离的小偏执 时间: 2015-10-29 22:25
不能到现场真是遗憾。
作者: 古董” 时间: 2015-11-25 19:24
路过的帮顶
作者: 柠染° 时间: 2015-12-2 20:59
路过的帮顶
作者: 染蒹葭 时间: 2016-2-18 13:34
路过的帮顶
作者: 浅陌 时间: 2016-2-28 21:18
顶不错 支持下
作者: 熏的埖 时间: 2016-7-25 15:53
very good.
作者: 梦千年之恋 时间: 2016-9-28 07:13
想参加,不知道什么时候还有。
作者: 梦如 时间: 2016-11-17 22:13
好帖是需要鼓励的~
作者: 沫鹿安然 时间: 2016-11-18 11:06
顶不错 支持下
作者: 梦中的蝴蝶 时间: 2016-11-22 22:10
不能到现场真是遗憾。
作者: 深沉。 时间: 2017-2-21 15:08
向楼主学习
作者: 巴乔 时间: 2017-4-4 19:03
看起来好像不错的样子
作者: 教主大人你最棒@ 时间: 2017-5-5 16:25
支持,赞一个
作者: 哈哈苹果 时间: 2017-10-11 16:32
想参加,不知道什么时候还有。
作者: 与君绝 时间: 2017-12-30 16:42
very good.
作者: 海内比邻 时间: 2018-1-20 16:14
这么强,支持楼主,佩服
作者: 被雨淋湿 时间: 2018-2-1 15:35
这个一定得回复!
作者: 奈何桥。 时间: 2018-5-1 21:39
鼎力支持!!
作者: 洛阳烟雨空心柳 时间: 2018-5-6 16:08
前排支持下了哦~
作者: 云丢了天哭了。 时间: 2018-6-16 17:30
看起来好像不错的样子
作者: 嘿呦i 时间: 2019-2-2 18:25
看帖看完了至少要顶一下哦~
作者: 尕儚︶ ̄ 时间: 2019-2-12 08:37
顶不错 支持下
作者: 旧梦荧光笔 时间: 2019-7-12 10:45
very good.
作者: 贤情女人 时间: 2019-7-14 11:11
顶不错 支持下
作者: 我没什么不同 时间: 2019-7-15 10:01
路过的帮顶
作者: 手插口袋 时间: 2019-8-5 14:32
想参加,不知道什么时候还有。
作者: 我的世界 时间: 2019-8-15 18:43
路过的帮顶
作者: 醉醉醉,花阴 时间: 2019-9-2 14:11
不能到现场真是遗憾。
作者: 。彩色世界/ 时间: 2019-10-26 12:39
看起来好像不错的样子
作者: 腐伤 时间: 2019-12-8 17:02
想参加,不知道什么时候还有。
作者: 东方百年不败~ 时间: 2020-1-1 15:27
确实不错,顶先
作者: 快活i 时间: 2020-2-25 16:03
下次有相关活动时再说一下哦~
作者: 我惧黑! 时间: 2020-7-25 10:41
very good.
作者: 匿名回复 时间: 2020-8-2 22:07
顶不错 支持下
作者: 青春永不言弃 时间: 2021-1-13 15:46
这个一定得回复!
作者: 宿命 时间: 2021-1-31 13:27
果断MARK,前十有我必火!
作者: 妸嗳のㄝ亾 时间: 2021-5-6 11:19
不能到现场真是遗憾。
作者: 甮心i 时间: 2021-6-6 18:00
路过的帮顶
欢迎光临 思步网 (http://www.step365.com/) |
Powered by Discuz! X3.2 |