从天气预报来看软件开发的估算
来源:互联网 发布:vb 网页源代码 编辑:程序博客网 时间:2024/04/30 13:06
作者:张克强
在敏捷软件开发估算相关材料、培训和交流中,常常见到听到“昨日天气”这个说法。我一直不是特别理解 敏捷里提出“昨日天气”是出于什么目的。
可能的目的有:
1,昨日天气情况很容易观测,拿来推断今日天气,很是方便。
2,根据昨日天气来推测今日天气,对于普通人来说,错误率极高,所以这个方法效果不好,所以记录昨日天气的效果不好。
这两个目的是矛盾的。
长期的困扰在敏捷中国大会被听众提问时,我貌似有所悟。当时的问题的大意是“有领导担心 如果从CMMI转向敏捷,估算会不准确,怎么办”?
首先这个问题的表面是有歧义的。他所说的“从CMMI转向敏捷”是指原来在CMMI推进下建立的相应方法转变到敏捷软件开发下推荐的相应方法。
当时我回答的大意是基于CMMI4开展的估算的精确度是高于一般的敏捷开发的估算,而达到CMMI3所开展估算的精确度恐怕还比不上采用燃尽图。
第2天,我继续思考了这个问题,将昨日天气的疑惑代入,得到了如下的文字。
天气预报的7重境界1,像我一样的普通人,能够在夏天看到乌云盖天时预报雷阵雨。
2,经验丰富的老农,多年经验让他能够通过观察云朵、风向、太阳、月亮、星星来判断第2天的天气。
3,气象爱好者团体,比如多位在一起交流的气象爱好者或者经验丰富的老农
4,县级气象台 开展本地气象记录,预报本县天气,气象台技术人员数量不超过10个。
5,省级气象台
6,国家级气象台,拥有卫星、超级计算机
7,全球顶尖气象台,拥有覆盖全球的天气观测和15天预报能力
关于软件工程中规模和工作量的估算
规模是指软件工作的大小,一般有两类表示法:1类是诸如代码行数、功能点数等等,另1类是直接采用工作量。
工作量一般也分两类:1类是全部工作量,另1类是理想工作量, 理想工作量与全部工作量存在数学关系, capacity = 理想工作量/全部工作量 。
常见的估算方法有如下,说明:以下方法并不是孤立使用的,不少地方是组合使用的,为了方便叙述,就罗列在下面了。
1,个人凭经验估计,俗称拍脑袋,据说此方法的误差范围是1/4~4。
2,群体凭经验,比如delphi方法,比如扑克游戏,当然扑克游戏一般也基于story point。
3,按照一定的方法,比如IFPUG,UCP(use case point),User Story Point, Cocomo, CocomoII, NESMA,MKII等等
4,CMMI2 上个项目的数据可以拿来作参考, 采用一些方便获得的数据。
5,CMMI3 项目数据被组织采集,组织经分析后提供一些估算的参数,估算的结果一般带有中值和上下限。规模表达的方法要求得到定义。
6,CMMI4 收集大量数据,通过统计学分析得到过程绩效模型和能力基线,里面几乎必然用到了数学建模方法,典型的给出带有概率判断的预测。
7,Scrum中利用理想人天或理想工时估计
8,Scrum中利用Story Point的估计
9,CMMI5 在CMMI4的基础上,能够对主动变化进行可控制、可预期的估算,类比到气象的话,就是通过计算分析进行人工降雨或驱雨,选择合适的气象条件,在适当的位置释放适量的、适当的材料,让雨能如预期的来或者不来。
根据大量数据、进行数学建模得到的估算的偏差比例一般来说是小于简单方法的。但如果估算的对象本身是很大的话,那么小偏差比例会被放大,所谓“差之毫厘,谬以千里”。
敏捷对估算是拥有天然优势的,就是在于短迭代和小团队,在小团队短迭代的情况下,估算对象本身不大,误差会及时发现,在下个迭代中有机会去调整。
换句话说,在敏捷小团队短迭代下,偏差比例就算大一些,绝对的偏差并不大。也就意味着,在敏捷环境下,不必使用高精度偏差比例很小的估算方法。
对照到天气预报的7重境界,我把真正满足CMMI4类比到国家级气象台,CMMI2也就在县级,CMMI3在县级到省级之间,一般的敏捷估算放在气象爱好者团体级别到县级到省级之间。
通过分析天气预报的七重境界,发现“昨日天气”很不简单,复杂度不必软件估算低。敏捷估算中拿“昨日天气”来做隐喻,如果是整体全面考虑,真的是很恰当。
但如果是把昨日天气对比为“把上几个迭代完成的故事点数的平均值作为当前迭代的估算”,那么也许就是用错了,这带给我长达3年的困惑。
------
本文欢迎全文转载,转载请注明作者和链接
- 从天气预报来看软件开发的估算
- 软件开发成本估算
- 软件开发成本估算
- 学习摘录---[从系统架构师的观点来看软件开发流程]
- 通过哲学的视角来看软件开发
- 《软件估算》——估算的含义
- 软件开发价格估算方法
- 软件开发成本工作量估算
- 软件开发工作量/费用估算
- 从中间件的历史来看移动App开发的未来
- 软件规模的估算方法
- 从服务器端开发来看进程与线程的优缺点
- 从服务器端开发来看进程与线程的优缺点
- 软件开发周期估算及探讨
- 产品随唠:软件开发时间估算
- 【转】浅谈软件开发工作量估算方法
- 影响软件开发时间估算有哪些方面
- 团队开发管理-软件项目估算
- 2012年华为校园招聘上机试题(重庆地区)及答案解析
- DevExpress TreeList数据便利
- 第五讲:用户界面 View(一)
- 调试dll,断点不进入的解决方法
- 关于汇编跳转指令的说明
- 从天气预报来看软件开发的估算
- 获取Android手机中所有的短信
- 关于 tomcat与apache集成后 中文乱码的问题
- Flex3 eclipse3.5结合
- 设计数据库的步骤
- MyEclipse 8.5+Flex3Plugin+Flex4Plugin
- java语法——集合类总结
- 远程连接oracle数据库
- 高次幂取模 (快速幂取模)