设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

软件开发评估知多少?

2014-9-11 10:35| 发布者: joejoe0332| 查看: 2926| 评论: 0|原作者: InfoQ|来自: CSDN

摘要: 评估误差没有改观并不意味着我们对软件开发的评估水平相对二十世纪八十年代没有进步,本文将对软件评估中我们所获得一些经验进行综述。

  总体来说,这个预计误差的平均水平约为30%。另外还有大量证据表明,从二十世纪八十年代开始就保持着这个误差水平一直没有太大的改观(注:仅有Standish Group 得出的结论是估计精度得到了大大的改善,即估计误差变小了,但是他们的结论并不具有普片性),评估方法也没有很好的改进。尽管现在评估模型五花八门,占主导地位的仍然是专家评估。



  评估误差没有改观并不意味着我们对软件开发的评估水平相对二十世纪八十年代没有进步,本文将对软件评估中我们所获得一些经验进行综述。


那些我们所知道的:

  为了支持我的论点,我选择了以下了七个研究结果作为论据。


1、永远没有最好

  目前有大量的研究总是试图在众多的评估模型和方法中评选出误差最小的那一个。但这样做的问题是,一些诸如项目大小与开发投入之间的核心关系的不确定性将会导致这种研究结果不具备稳定性。此外,影响投入的最大要素也是可变的,因此,评估模型和方法应该根据具体的项目来量身打造。

  核心关系的不稳定性也可以说明为什么误差水平长时间以来没有改观。换句话说,如果有稳定的核心关系就可以使用更加简单的模型了。当核心要素发生变化时,先进的统计模型就会对历史数据产生过拟合现象(过拟合是机器学习中常用的一个术语,反映的是在学习训练过程中,NN对训练集达到非常高的逼近精度,但对测试集的逼近误差随着NN的训练次数而呈现先下降,后反而上升的异常现象,即过拟合现象会导致更大的估计误差)。所以,具体的评估方法就根据你的项目来定制吧。


2、评估超支的主要原因:用户想要最低的成本

  项目夺标的竞争压力迫使开发人员尽量减少预算,如果在没有价格竞争压力的环境下就不会出现这种趋势,反而会朝着相反的方向发展。显而易见,来自客户的压力是导致预算过低的主要原因,因为客户比较乐意选择成本更低的开发商。


3、“峰峰值”过小

  “峰峰值”指评估方案中的最大值和最小值之间的距离。这种方法是有缺陷的,例如置信区间是90%也不能全部囊括实际情况的不确定性。尽管事实证明我们没有办法确定精确的最大最小值,但是目前仍然使用这种办法,最常见的是基于PERT(三点评估)的方法,投入的期望值很可能就出现在最大最小值之间。

  对最大最小值的估计就是专家发挥的地方,优秀的软件开发者通常有如何评估最大最小值的历史经验,并且能根据经验做出合适的评估。


4、误导效应(评估很容易被误导并且难于从误导中恢复过来)

  所有对软件开发的评估都需要专家的指导,即使使用正式模型评估也不例外。专家的评估很精确,却也容易造成误导。最易被误导的是投入估计的负责人,当他们考虑到预算,客户要求,日程等因素时,专家的评估指标就成了参考指标。如果不注意到这点,你很可能就会把专家的评估当成了标准,并且在项目进行的过程中不断地去接近这些指标。


  尽管对如何从误导中恢复过来做了大量的研究,目前仍然没有找行之有效的方法。所以项目负责人需要对这个这些指标有个清晰地认识,并且自己能量化这些指标。


5、历史记录有助于提高精确度

  使用历史数据和清单撰写的文档有助于提高估计的精确度。当有可参照的历史记录时,一些注意事项就不会被遗忘,以前的经验能重新利用,还能避开以前走过的弯路。特别是在进行相似的项目时,就可以使用类比来进行估计,历史文档的好处就显而易见。

  尽管历史记录有着诸多的好处,很遗憾好多公司还没有把他们当做一个工具用起来。


6、结合独立估计,提高估计精度

  不同渠道评估的均值一般要比单独个体评估的结果精确。其中有一个重要的假设就是评估是相互独立的,评估者来自不同的企业,具有不同的背景,使用不同的方法。即这是一个类似Delphi的评估方法(Delphi,一种在专家个人判断法和专家会议法的基础上发展起来的专家调查法,它广泛应用在市场预测、技术预测、方案比选、社会评价等众多领域),比如Planning Poker(计划扑克(Planning Poker)的目的是确保开发团队中的每个人都积极地参与到评估过程并贡献他或她的知识。该活动在可能有很多未知变量且为了得到精确的估计,需要很多领域的专业知识。扑克会话通常是开发团队、项目负责人和引导人参与。在计划扑克(Planning Poker)开始前,引导人将开发团队聚在一桌并给每个成员分发一副专用牌,这也是扑克这个名字的来由。引导人和负责人没有牌。)就是基于这种方法的。

  一个基于组的结构化的方法因为知识和经验的共享比机械的合并会产生更好的效果。当然这种方法也存在风险性,比如组内的某种思想会滋生消极因素。

  总体看来,评估模型的精度并没有专家评估的精度高。但是能将这两种方法结合起来就可以相互取长补短。


7、评估也会带来弊端  

  评估不仅仅是预测未来,更多的是约束未来。估计得太低会产生豆腐渣工程,根据帕金森定律,估计得太高又会降低生产力。


  这就是为什么你要考虑到底需不需要进行评估的原因。如果你压根不需要评估或者后期才需要评估,不进行评估和后期来评估才是妥当的做法。敏捷开发就是避免早期评估潜在危害的一种好办法,它是根据前期的反馈来制定后期计划的一种方法。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部