项目管理第05章--项目估算

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

SoftwareProjectManagement2009估算项目时间和成本刘强清华大学软件学院2案例:WinWord1.0提交报告预期交付预期到交付所需时间(天)实际到交付所用时间(天)估算偏差率84.985.9365188781%86.186.11304140078%86.687.6334124573%87.187.12334103568%87.688.224588472%88.188.615267077%88.688.1012251876%88.889.115345767%88.1089.212339669%89.189.512030461%89.689.99215340%89.789.109212325%89.889.1192920%85.686.7395161476%89.1189.11000%3案例:WinWord1.0†项目初期制定的目标是不可实现的„BillGates给项目组下达的指示是用昀快的速度开发迄今为止昀好的字处理软件,争取在12个月内完成。†过紧的进度计划降低了计划的精确度„在多次调整中,只有一次的预期周期多于1年,而事实有10次的开发周期超出1年。前4年中,预期进度估算误差率达到了60%至80%†开发过程中频繁换人„五年中更换了4个组长(2个因进度压力、1个因健康离职)„迫于进度压力,开发人员匆匆写出一些低质量和不完整的代码,然后宣称已实现某些功能,造成用于提高稳定性的时间由预计的3个月增加到26个月。4内容提纲†项目估算„项目估算的概念„影响估算质量的因素†项目估算方法„宏观估算方法„微观估算方法†项目成本预算„项目成本„时间分段的预算„应急基金(应急储备金)†项目估算的建议5项目估算†项目估算是对完成项目交付物的时间和成本进行预算和估计的过程。„估算既是科学也是艺术„软件估算不可能是一门精确的科学†项目估算方法:以往的经验是项目估算的根本出发点。„自上而下(宏观)估算•源自类比或数学方法,通常是一种大致推测•一般发生在项目的概念阶段„自下而上(微观)估算•通常是基于对工作分解结构中工作单元的估算•在项目详细定义后进行6影响估算质量的因素†项目周期„近期事件的估算比较准确,远期事件的估算具有不确定性†人员因素„曾经共事与否影响团队成员的磨合时间„人员调换将增加交流所需的时间†项目结构„矩阵结构中人员在不同项目中分享,降低成本但增加时间†组织文化„一些组织允许填充估算;一些组织强调准确;一些组织不重视†其他因素„设备运行瘫痪、假期、法律限制等7内容提纲†项目估算„项目估算的概念„影响估算质量的因素†项目估算方法„宏观估算方法„微观估算方法†项目成本预算„项目成本„时间分段的预算„应急基金(应急储备金)†项目估算的建议8项目估算方法†项目估算过程„首先做出粗略的宏观估算,建立WBS和OBS„做出微观估计,建立进度计划和成本预算„协调宏观预算与微观预算之间的差别条件宏观估算微观估算制定战略决策×时间与成本很重要×不确定性高×内部小项目×固定价格的合同×客户需要细节×范围不稳定×9宏观估算方法†比例法„使用比例或其他替代品,对项目时间和成本进行估算„举例:网络布线工程•同一幢大楼每个节点的成本是500元•100个节点的成本是5万元†分配法„一种比例法的扩展„当所估算项目与过去的项目在特性和成本上很类似时,经常使用此方法„采用类似方法,对WBS中的交付物进行成本分配10宏观估算方法11宏观估算方法†学习曲线„当产品扩大产量时,单位劳动时间将以恒定的速度降低010203040506070809010011012013014090080070060050040030020010075%学习曲线12宏观估算方法†举例:假设第一次编写某一段程序需要20个小时,第二次编写同一段程序需要18个小时,前后两次的时间差别说明学习率是0.90,那么应用这个数据估算下一个任务的时间是18×0.90=16.2小时。†学习曲线的估算公式Yx=aXb其中Yx是生产第x单位产品所需的时间;a是生产第一单位产品所需的时间;X是被生产的产品数量;b是学习曲线的斜率,表示为log(十进制学习率)/log213宏观估算方法†举例:假设程序员的编程学习率是0.90,编写某一段程序经过4次达到稳定,昀终稳定时间是40小时。那么,第一次编码的时间估算如下:b=log0.9/log2=-0.152140=a×4-0.1521a=49.39小时4次编程任务的总时间:49.39(1+2-0.1521+3-0.1521)+40=175.62小时†如果使用4×40=160估算,显然有15.62小时的偏差。14宏观估算方法†学习曲线的思想„当一个人重复多次做一件事情之后,在下一次做这件事情时,他必然能够把它做得更好。•当一项任务被重复时,完成它所需的时间将缩短;•随着更多的产品生产出来,提高量将减少;•提高率有充分的连续性,可以用于预测。†学习曲线的局限性„学习曲线不会永远延续„一种产品的学习曲线不能应用到另一个产品„建立有意义的学习曲线,可能没有现成的成本数据可用„学习曲线适用于长期项目,短期项目可能不起作用15宏观估算方法†软件项目估算方法„功能点方法:估算软件规模„COCOMO模型:估算软件开发成本†软件项目估算的步骤„估算软件规模:一般通过计算LOC(源代码行数)或功能点(FP)等方法完成„估算软件项目所需的工作量(以人月或人小时为单位)„估算项目的进度(以自然月为单位)„估算项目成本16宏观估算方法†功能点方法„功能点技术是依据软件信息域的基本特征和对软件复杂性的估计,估算出软件规模。这种方法适合于在软件开发初期进行估算,并以功能点为单位度量软件规模。†计算公式:FP=UFC×[0.65+0.01×∑Fi]未调整的功能点计数17宏观估算方法†功能点方法(续)„复杂度调整值Fi:取值0..5(0:没有影响,1:偶然,2:适中,3:普通,4:重要,5:极重要)F1可靠的备份和恢复F8在线升级F2数据通信F9复杂的界面F3分布式处理F10复杂的数据处理F4性能F11代码复用性F5大量使用的配置F12安装简易性F6联机数据输入F13多重站点F7操作简单性F14易于修改18宏观估算方法†COCOMO模型„结构性成本模型COCOMO(COnstructiveCOstMOdel)是一种利用经验模型进行成本估算的方法†基本COCOMO模型„这是一个静态单变量模型,用一个以源代码行数为自变量的经验函数来计算软件开发工作量。„计算公式:E=aLbD=cEd类型abcd说明组织型2.41.052.50.38各类应用软件半独立型3.01.122.50.35各类实用程序、编译程序等嵌入型3.61.22.50.32实时处理程序、控制程序、操作系统等19宏观估算方法†中间COCOMO模型„中间COCOMO模型以基本COCOMO模型为基础,通过对影响工作量的若干因素进行估计,确定出调节因子,再对工作量估算公式进行修正。„计算公式E=aLbFF=Fi17∏i=1类型ab说明组织型3.21.05各类应用软件半独立型3.01.12各类实用程序、编译程序等嵌入型2.81.2实时处理程序、控制程序、操作系统等20宏观估算方法工作量因素Fi非常低低正常高非常高超高软件可靠性0.750.881.001.151.39数据库规模0.941.001.091.19产品复杂性0.750.881.001.151.301.66可重用性0.911.001.141.291.49要求文档量0.890.951.001.061.13执行时间限制1.001.111.311.67存储限制1.001.061.211.57平台变动0.871.001.151.30分析员能力1.501.221.000.830.67程序员能力1.371.161.000.870.74应用领域经验1.221.101.000.890.81平台经验1.241.101.000.920.84语言和工具经验1.251.121.000.880.81人员连续性1.241.101.000.920.84软件工具的使用1.241.121.000.860.72多地点开发1.251.101.000.920.840.78开发进度限制1.291.101.001.001.00项目因素人的因素计算机因素产品因素21举例:软件项目估算†某公司大约有3000名员工,准备开发一个简单的工资系统„系统生成员工的工资单,列出工资的所有收入项和纳税扣除额,并在屏幕上显示工资单,工资单的功能复杂度是“复杂”;另外,系统产生7个报表,每个报表的复杂度是“简单”。„系统要求用户从屏幕上输入员工的基本信息(包括员工编号、基本工资、所在等级、所属部门等)和每月的考勤情况,这两个屏幕输入的复杂度为“复杂”;另外,还有一个所得税信息的输入,其复杂度为“中等”。„系统提供20个查询,每个查询的复杂度是“简单”。„系统内部维护一个员工信息文件,该文件的复杂度是“复杂”。„系统引用了3个数据表,包括员工基本信息、部门信息和所在等级,其中员工基本信息的复杂度是“中等”,其他两个的复杂度是“简单”。22举例:软件项目估算†外部输入„员工定期信息和考勤情况(复杂度均为“高”)„所得税信息(复杂度为“中等”)†外部输出„工资单(复杂度为“高”)和7个报表(复杂度为“低”)†外部查询„总共20个(复杂度均为“低”)†内部逻辑文件„系统内维护EmployeeMasterFile(复杂度为“高”)†外部接口文件„3个表:员工信息(复杂度“平均”)、部门和级别(“低”)23举例:软件项目估算†计算未调整功能点24举例:软件项目估算†计算调整因子†调整后的功能点FP=150×[0.65+0.01×∑Fi]=13825举例:软件项目估算†部分开发语言的功能点转换†假设用VB开发,则源程序行数SLOC=24×138=3312开发语言LOC/FP开发语言LOC/FP汇编语言320C128COBOL106C++64FORTRAN77106VB624PASCAL90PB16Ada53Delphi518LISP64JAVA4826举例:软件项目估算†采用中间COCOMO估算开发成本„名义工作量E=3.0×3.3121.12=11.47„实际工作量E=11.47×=11.47(为简化计算Fi均取1)„开发时间D=2.5×MM0.35=5.9„假设每个开发人员平均每月的人工成本为6000元,那么总人工成本=11.47×0.6=6.88(万元)†问题:如何考虑开发人员的数量?17∏Fii=127微观估算方法†模板法„如果项目类似过去的项目,则以过去项目的成本作为新项目的一个出发点†WBS工作包的详细估算„使用WBS,并向相关责任人询问„在时间不确定时,用PERT方法给出高、中、低的均衡估算数†分段估算„从宏观估算开始,在项目执行中对各阶段的估算进行细化„适用于昀终产品不可知或不确定性很大的项目28微观估算方法†分段估算(续)29内容提纲†项目估算„项目估算的概念„影响估算质量的因素†项目估算方法„宏观估算方法„微观估算方法†项目成本预算„项目成本„时间分段的预算„应急基金(应急储备金)†项目估算的建议30案例:项目成本†案例描述„假设你是一个项目经理,负责为某小型企业实施ERP系统。„该项目需要采购相应的系统硬件和软件。„整个项目持续3个月时间,项目团队由1个项目经理、1个系统分析员、2个开发实施人员、1个QA人员组成。†问题„下面估算正确吗?为什么?项目成本=硬件成本+软件成本+人员工资„如果你是项目经理,你认为项目成本应该包括哪些部分?31项目成本†直接成本„人工成本•全时为项目工作人员的成本•只有部分时间为项目工作人员的成本•人工成本=工时数×工时工资„材料成本•包括直接用于制造和交付项目产品所消费的材料成本。•在系统集成项目中,材料主要是给用户的系统硬件和软件。•问题:软件项目的材料是什么?„设备成本•用于交付项目产品但并没有消耗掉的物资,它们可以在接下来的项目中再次使用,这些设备可以是买来的或租来的。32项目成本†直接成本

1 / 42
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功