`
魔力猫咪
  • 浏览: 107470 次
  • 来自: 北京
社区版块
存档分类
最新评论

猫读《软件估算》一

阅读更多
  最近猫咪在学习Grails。但是从网上找到的《Grails入门指南》看着太累。特别是做测试的时候,要一边看书一边干活,来回切换桌面实在麻烦。就去卓越网(现在已经是亚马逊中国了)订购《Grails权威指南》。在买书的时候,发现了《软件估算-“黑匣子”揭秘》一书。是讲如何成功进行软件估算的。感觉比较新鲜,而且自己以往在开发中对应该如何估算工作量也一直没有头绪(基本上是想当然一个可能的大概值,但是基本上没有任何数据去支持这个大概值),看了一下价格,标价49,打折后36.7。觉得价格不贵,就一同买下打算闲着没事的时候看看。28号下单,卓越网给出的是《软件估算》约31日送达,《Grails权威指南》倒要2月4日送到。昏死。结果今天早上《软件估算》就来了。得了,反正《Grails权威指南》还要好几天,猫咪就先看《软件估算》好了。
  估算,定义是:对项目将持续多长时间或者将花费多少成本的预测。
  我们一般做项目的都是某某领导给出一个时间点,然后大家针对这个时间点开始干活。无论遇到什么问题,都要在这个点之前完成。如果不能在正常工作时间完成,那么就要不断加班加点。结果就是对老板的怨气,因为这代表每天要回去得更晚,星期六、日不能在家好好打游戏、甚至节假日也要干活。同时国内很多公司对加班费不能按时按量给付和加班时间超过正常承受能力,更是让大家的怨气冲天。消极怠工者有之、边骂边干者有之,还有到劳动部门举报的。呵呵,猫咪也是深受这种荼毒。
  猫咪以前基本上没有写过读书心得笔记之类的东西,这里也就是一些感想,可能很混乱,大家多多包涵。
  一般情况下,我们开发一个项目的时候,客户提出一些已知的需求。然后我们根据这些需求得到一个大概的时间。然后我们会和客户就这个时间进度进行扯皮。我说需要3个月,然后客户告诉我只能2个月。然后两边开始扯皮,互相要求对方答应自己的条件。不过国内多是买方市场。唉,谁叫中国人多呢。客户经常用“你不做有人做”的理由压缩工期、压缩报价。你呢,多半在压力下屈服,先答应下来,以拿到合同。开工后再和客户沟通,以图把压缩的时间要回来。如果要不回来,就用加班压榨程序员的办法赶时间。什么软件工程、结构分层、领域建模、足够的测试等等都尽可能不要,只要到时候能跑起来就可以。
  客户觉得项目到时候不能用,就告诉他以这个时间就能做到这个程度,而且有证据。看,项目组的程序员已经因不堪重负而病倒若干、住院若干、辞职若干。甚至于殉职若干。而且客户到了这个地步,也不可能停下来。已经投入了这么多了,不做下去就全费了,所以只能先凑合着用,然后再改进。但是项目组又有了新项目,去加班加点干新项目去了。继续完善维护这个项目的人员大幅度缩水,而且因为开发时赶工期,没分析、没设计,代码混乱,结构乱七八糟,几乎无法继续,最后下一版只能重新开发。唯一获得的就是第二次的需求比第一次要明确得多(毕竟用过了一个半成品)。但是,如果第一次积累了大量的数据,而这些数据的结构因为当初赶工设计得不合理,结果新项目因为要保留旧数据,不得不继承原来的不合理结构。
  说得有点跑题。但是这就是猫咪对现在国内开发的现状的看法。猫咪希望能通过读《软件估算》,学到如何计算有大量不确定因素的情况下能够合理估算需要花费的时间和资源。以免自己给出一个自己无法完成的承诺。猫咪希望能够在上面给出一个目标的时候,能够估算出一个合理的工作量。如果两者偏离太大,那么可以和对方讨价还价。就好像买办公用品,桌子、椅子、电脑、笔、纸张或者打印机什么的,需要很多。但是预算就那么多,大家就坐下来,把那些不太重要的先去掉。以在一个可以接受的预算买到最需要的东西。如果你能拿出一个有足够科学支持的理由,就很可能说服客户,修改目标。比如在时间点不能变更的时候,是否去掉一些不太重要的功能。猫咪觉得只要你能提出足够的,有依据的理由,客户还是很容易说服的。客户希望的是应用能够给他带来效益,赶工出来的半成品除了让双方承受损失之外,没有任何价值。当然,不排除遇到蛮不讲理的家伙,猫咪觉得与其到时候完不成被开掉,不如现在就另谋高就。毕竟身体是自己的,如果答应了对方的要求就是做出了承诺,多累也得去完成。结果到时候仍然完不成,钱当然也没有(没有人会为废品买单),身体也完了。
  软件估算,首先就要把估算与目标、承诺区分开。不要随便用自己直觉估算出来的东西作为承诺。同时也要明白对方要的是对目标的估算还是对目标的承诺。还有就是估算、目标和承诺的沟通,也就是明确对方要的到底是完成这个目标的估算还是完成目标的计划。比如上面要求为3个月后的展示会完成一个软件,问你大概需要多少时间。但是你却估出了5个月的工作量。不好的沟通就是双方都没有明确对方要什么,在什么时候完成上面扯皮。其实展会并不等于软件上市,拿出一个测试版本,能够把需要展示的部分完成就可以了。但是你却总说需要5个月。其实是没搞明白对方要的是什么,对方要的是3个月的时候能拿出一个能让大家看的应用的计划,当然能够全完成就此上市更好。
  所有估算出来的单点值不是100%的。如果说需要10个人月,那么这个值到底有多少可能性呢?100%是不存在的。书上给出的是一个理论上是钟型的曲线。如果你要告诉对方一个估算结果,最好是带有可信度的单点值,或一个多点范围。比如“70%可信度在20人月完成”或需要“15-30人月”之类的。承诺应该在估算区间内,并根据承诺指定计划。
  一个“良好的估算”,大师提出一个好的估算可以做到正负10%。但是,这是和CMM成熟度相关的。没有良好控制的项目是无法做到的。考虑到国内的情况,能到CMM2都是烧高香了(真正达到,那些为评级而搞出来的作秀品不算)。
  估算对项目控制会产生很大影响。只要你做出了估算,那么你就会根据估算做出承诺并制定完成这个承诺的计划。一般只要最后完成时的花费在“估算”之内,大家就会说估算是成功的。但是实际上开发过程中不确定的事情太多,而且因为需求的不断更改,可能最后完成的东西和最初定义的东西完全不是一个东西。所以估算的真正目标是确定项目目标是否足够现实,而不是预测项目的结果。
  书中第一章的最后给出了一个“什么是良好的估算”的定义:良好的估算是对项目实际情况有足够清晰看法的估算,它让项目负责人可以做出控制项目达到目标的好的决策。

 

2
0
分享到:
评论
2 楼 魔力猫咪 2008-01-30  
谢谢,如果你对这方面感兴趣,猫咪推荐你也买一般《软件估算-“黑匣子”揭秘》。绝对值。
1 楼 wangcheng 2008-01-30  
好文,期待继续

相关推荐

    软件估算——“黑匣子”揭秘

    资源名称:软件估算——“黑匣子”揭内容简介:在《软件估算——“黑匣子”揭秘》一书中,著名的软件开发书籍的作者Steve McConnell揭开了围绕在软件估算周围的层层迷雾。作者在深入浅出地介绍了与软件估算有关的...

    软件估算,很好的一篇文档

    软件估算是软件工程项目管理中的一个重要环节,它主要是指根据软件项目的特性(如开发内容、使用的开发工具、开发团队的能力等),对整个软件开发过程(包括需求调研、程序设计、编码、测试等阶段)所需时间和工作量...

    软件估算及功能点估算方法

    在软件开发过程中,准确的估算是一项至关重要的任务。软件估算涉及预测项目的工作量、时间以及资源需求,这对于项目管理、预算制定以及客户沟通都具有决定性的影响。功能点估算是一种广泛应用的非定量估算方法,它...

    软件开发项目工作量估算软件开发项目工作量估算软件开发项目工作量估算软件开发项目工作量估算软件开发项目工作量估算软件开发项目工作量

    软件开发项目工作量估算软件开发项目工作量估算软件开发项目工作量估算软件开发项目工作量估算软件开发项目工作量估算软件开发项目工作量估算软件开发项目工作量估算软件开发项目工作量估算软件开发项目工作量估算...

    软件估算软件估算软件估算

    1. **需求分析**:在进行软件估算之前,首先需要对项目的需求有深入的理解。这包括功能需求、非功能需求以及用户期望,这些都将直接影响到项目的工作量和复杂性。 2. **工作分解结构(WBS)**:将大型项目分解为更...

    软件估算中的成本估算

    在软件开发领域,准确的成本估算是一项至关重要的任务,它不仅是成本控制的基础,更是判断项目可行性的关键因素。项目成本估算不仅关乎投资获取和现金流管理,还涉及到人力资源的有效分配和工期的估算。因此,理解并...

    项目开发软件估算

    "项目开发软件估算"涉及到一系列技术和方法,确保项目预算的合理分配与控制。这不仅关乎到项目的成功执行,还直接影响公司的盈利状况和客户关系。 首先,我们需要理解"估算"这个标签所涵盖的内容。在软件工程领域,...

    软件估算技术

    在IT行业中,软件估算技术是项目管理的关键环节,它涉及到软件开发的各个阶段,包括需求分析、设计、编码、测试以及维护。以下是对这个主题的详细阐述: 首先,软件成本估算的目标是为项目的预算制定提供依据,确保...

    项目软件开发价格估算

    总之,软件开发价格估算是一项涉及多方面因素的复杂任务。通过细致的需求分析、合理的团队配置和科学的估价工具,我们可以更准确地预测项目成本,从而为项目的成功奠定坚实基础。在实际操作中,还需要不断积累经验,...

    软件成本估算方法及应用

    软件成本估算从20 世纪60 年代发展至今,在软件开发过程中一直扮演着重要角色.按照基于算法模 型的方法非基于算法模型的方法以及组合方法的分类方式,全面回顾分析了软件成本估算的各种代表性方 法,也归纳讨论了与成本...

    软件开发价格估算方法

    软件开发价格估算是软件项目管理中的一项重要任务,它对项目的成本控制和利润的影响非常大。软件开发价格估算方法是根据软件开发的工作量、商务成本、国家税收和企业利润等项来计算的。 软件开发工作量是软件开发...

    软件工程之软件开发成本估算

    软件开发成本估算在软件工程中是一项至关重要的任务,因为它直接影响项目的预算制定、资源分配和进度规划。软件开发成本主要包括在开发过程中投入的人力资源,而不涉及物质资源的消耗。由于软件开发是一个智力密集型...

    软件开发成本估算.pdf

    软件开发成本估算 软件开发成本估算是软件开发过程中估算所需工作量和相应代价的过程。它不同于传统工业产品的成本估算,不包括原材料和能源消耗,主要是人劳动消耗。软件开发成本估算应从软件计划、需求分析、设计...

    软件FPA估算.part1.rar

    软件FPA估算.part1.rar 软件FPA估算.part1.rar

    软件系统规模估算方法论介绍-功能点分析法

    软件系统规模的估算是一项至关重要的任务,它关乎软件开发的成本、资源分配、项目时间和费用预测。本文主要探讨一种基于业务视角的估算方法——功能点分析法,这种方法适用于软件公司、企业以及管理层在不同场景下的...

    软件估算:黑匣子揭秘(高清带完整标签)

    在《软件估算:黑匣子揭秘》一书中,著名的软件开发书籍的作者Steve McConnell揭开了围绕在软件估算周围的层层迷雾。作者在深入浅出地介绍了与软件估算有关的主要概念之后,深入、全面地介绍了与软件估算有关的多种...

    软件项目成本估算实验4.pdf

    软件项目成本估算实验4.pdf

Global site tag (gtag.js) - Google Analytics