软题库 培训课程
当前位置:信管网 >> 其它资料 >> 文章内容
全面学习项目估算、计划、计划跟踪知识[3]
来源:信管网 2012年08月30日 【所有评论 分享到微信

最终产物是指最终会交付给客户的东西,一般有:组件、安装程序、数据库、用户手册、管理员手册等。

针对不同的工作产品应采取不同的针对性管理办法,很多公司会制定单独的配置管理计划。

11.质量保证方面的工作。

严格来说,质量保证是靠项目组全体来保证的,这里所说的质量保证是“狭义”的质量保证,是指:要确保项目组按照既定的规定、过程、标准来工作,需按照既定的格式要求产出相应工作产品。

对于以上十一点,实际项目估算中往往出现这样的问题:

1.忘记包含项目前期工作的工作量。

2.没有考虑商务、维护、配置管理、质量保证方面的工作。

3.需求调研、软件设计、编码、测试、实施方面的工作估计过少。

4.项目管理方面的工作量估计不足。

估算如何做出来?

这里开始所说的估算,全部都是指项目组对项目的估算,这个估算的目的是用来指导项目的具体工作。

有很多种估算办法,大致可以分为两类:

1.先得到软件规模,然后根据公司实际的生产率由软件规模导出工作量。

2.直接得到工作量。

第一类的常见方法有:功能点法、代码行法,第二类的常见方法有Delphi估算法、微软的由底而上估算法。

什么是软件规模?我们先看看一个搬砖头的估算。

假设有1000块砖头,它们的大小和重量一样,每名工人每天能搬100块砖头,于是我们可以估算到需要10人日来搬完。10人日的意思是1名工人需要10天完成,而10名工人只需要1天就搞定了。

这个1000块代表了工作的规模,而生产率就是100块/日,这样就可以推算出工作量为10人日。建筑工程可以得到土石方量、混凝土量、钢筋量等代表工作规模的数据,这样就比较容易推算出完成这些工作需要的工作量。

而软件工程估算也希望能做到类似的效果,但用什么来代表软件项目的工作规模呢?功能点和代码行是常见的两种软件规模表示方式。

软件规模是与软件具体生产技术、项目管理办法、项目组人员水平等无关的东西,软件规模只和软件项目本身的性质相关,如果我们能找到合适的统一的标准来度量每个项目的规模,这样每个软件项目之间就可以进行横向比较了。功能点法和代码行法都希望能达致这样的效果。

功能点法的基本思路是将复杂的软件分解为一个一个独立的粒度一致的功能点,附加一些调整系数,得到软件规模。

我们的项目大部分是数据库四轮马车的操作(查询、增加、修改、删除),功能点法从比较高的层次对这些工作进行抽象,有一套严密的规则可以让你将需求分解成一个一个的功能点。代码行法思路也类似,不过分解的结果是代码行而已。但一般来说代码行与软件的实现技术相关度太大,大家会更加偏爱功能点法。

功能点法和代码行法有比较长的历史,也有很多详细资料,大家可以去查阅一下。这方法理论上很理想,但实践效果很差,我还没有见到一家能成熟应用并且取得比较好效果的公司。功能点法和代码行法有这样的一些难以解决的问题:

1.只适用于数据库四轮马车的操作的项目,高技术含量、创造性高的软件不适用,如游戏软件、计算机负责计算与决策软件等。

2.我们绝大部分项目是需求不明确、设计不明确,并且工期很赶的,这两个方法都无法适应这样的现实条件。需求不明确基本上无法得到软件规模,建筑工程为什么能做到,是因为需求和设计都十分明确了。

3.两个方法的规则都很详细,要花大量时间学习和实战才能掌握。

4.由工作规模导出工作量这样的思考方式,难以适用于软件项目。项目组还是习惯列出具体的任务,逐条任务估计时间,而且只有这样的工作方式才能让项目组感觉更加踏实。

Dephi估算法是比较符合大家实际工作习惯,也是比较容易掌握的估算办法。

Delphi法的大致方法如下:

1.找几名资深专家,一起对项目进行WBS,把项目的工作分解为十几条最多二三十条的工作项。

2.全部专家各自估计每条工作项的工作量,并向其他专家阐述自己的理由。

3.第一次各专家估出来的结果可能差异比较大,每位专家听取别人的意见后,重新估算。

4.按照上述办法,各专家反复估算几次,一般次数就是2-4次,各专家估计的工作量会越来越趋近,这个时候取全部专家的平均值。

普遍认为各专家的经验与知识水平会严重影响结果的准确性,而我的实践经验是:应该让项目组每个人自己来估算,也就是让大家来当专家,在这个基础上可以再增加一两名来自项目组外部的专家。

有时候觉得估算这个问题搞得太复杂了,各式各样的方法是不是太夸张了?其实最简单的方法就是让负责该项工作的人自己来估计工作量,微软的由底而上的估算方法就是这样做的,可谓返璞归真啊!

微软由底而上的估算方法大致是这样的:对项目各项工作进行分解后(即俗称的wbs:work breakdown structure,工作分解结构),每个任务落实负责人,由负责人对自己的任务进行估计。这个办法有以下好处:

1.  最终该任务是由这个人来完成的,他估计多少时间才能做完,这个时间才是最接近实际的。

2.  负责该任务的人进行估算的时候,肯定需要认真思考这个任务的风险,需要做哪些具体的工作,这样更容易在未开始工作之前就发现更多的潜在问题。相反如果由项目经理来分配时间,这个人就可能不会去思考这个任务了。

3.  做这个任务的人会有被重视和尊重的感觉,他会很重视自己承诺的完成时间,并且想法设法按时间完成。这样会减少很多项目管理时间,因为每个任务负责人都会主动地跟踪好自己的工作。

其实微软这个方法根本就没有什么特别,所有正常人都可以想到这个方法,但仍然有很多人去追求那些不太靠谱的估算方法。

这个方法还是有这样的一些问题的:

1.有人会估算偏小,比方他说需要5天,但往往10天还完不成。

2.有人估算过于保守。

3.项目的进度要求就是很紧,基本上你必须在指定时间内完成,估算显得毫无价值。

第一个问题是比较常见的,但我们要这样想:估不准也比不估算好,估算偏差哪怕超过100%,也比不估算好,至少有个谱。

大家是会进步的,估不准往往是对任务和自己能力认识不到位,要让大家不害怕估算,只要敢于估算,问题才会暴露出来,才能持续进步。

第二个问题分两种情况,有些人是确实是过分保守的对自己信心不太足,项目经理可以多多来指导他的工作,看看他具体的进展,让他更加充分地了解任务,更加充分了解自己的能力,增强他的信心,这样他就能持续进步了。而另外一种情况就比较恶劣,少数人会故意增大时间,这样他平时工作不必全力以赴,可以比较悠闲,甚至可以利用工作时间干私事。如果发现这样的情况,就应该严肃处理了,不要做烂好人,这样的人在团队中存在是对团队的极大伤害。

第三个问题往往是各项目经理心中的痛楚,他们会觉得:实在无奈啊!做项目就是在有限时间有限资源内做不可能完成的任务,在这样的情况下,你就不要跟我扯估算了!

我们的项目大部分情况都是非常大压力的,应对这样大的压力越需要冷静。实际上大部分项目尽管是有压力,但只要发挥团队的聪明才智,还是可以高效地做好工作的,不需要加班或者少加班。本文稍后会介绍这个问题的应对办法。

介绍了这么多种估算方法,每种都有很多问题,那到底怎样才能做好项目估算呢?

软件项目的特点就是项目签订时,价钱是死的,工期是死的,而需求和设计是不明确的。

我的经验告诉我,功能点法、代码行法这些方法基本上是不靠谱的,我在实际项目中会综合使用Dephi法和由底而上的估算方法,并予以改良,下面介绍一下我的一些心得体会。

1.项目估算与其说是估出来,还不如说是做出来的。

假设某项目是这样的情况:

1)合同签署的金额是100万,工期是3个月。

2)需求只是大致写了,并不明确。

3)老板要赚50万,给你的预算只有50万。

我们很多项目都是这样的情况,不是等你估算出比较靠谱的数字,然后才去报价签合同的,我们经常要在老板指定的预算下完成项目。

你现在要负责这个项目,你会如何做估算呢?

你需要做好两个事情,才能保证项目实际成本控制在预算内。

第一个事情,控制好需求。需求不明确,这既是不利因素也是有利因素,应尽量往有利的方向控制。不明确的好处就是你有控制需求的空间,抓住客户的关键需求,简化不必要的花销的需求,能极大地降低项目工作量。

第二个事情:想尽办法降低开发工作量。不要因为进度紧就不认真思考软件的设计,应尽量采用简单的成熟的设计方案,简化工作。

 

[1]   [2]   [3]   [4]   [5]   [6]   
扫码关注公众号

温馨提示:因考试政策、内容不断变化与调整,信管网网站提供的以上信息仅供参考,如有异议,请以权威部门公布的内容为准!

信管网致力于为广大信管从业人员、爱好者、大学生提供专业、高质量的课程和服务,解决其考试证书、技能提升和就业的需求。

信管网软考课程由信管网依托10年专业软考教研倾力打造,官方教材参编作者和资深讲师坐镇,通过深研历年考试出题规律与考试大纲,深挖核心知识与高频考点,为学员考试保驾护航。面授、直播&录播,多种班型灵活学习,满足不同学员考证需求,降低课程学习难度,使学习效果事半功倍。

相关内容

发表评论  查看完整评论  

推荐文章