项目估算合同管理启动需求管理任务分解项目进度项目估算质量计划配置计划风险计划团队管理项目度量集成项目跟踪控制项目结束软件项目估算•软件项目估算是指预测构造软件项目所需要的工作量以及任务经历时间的过程软件项目估算•软件项目估算是有效的软件项目管理必不可少的,没有比较精确的估算,软件项目将不可避免地造成项目的超支和软件开发工作处于失控状态等问题为什么需要软件项目估算•软件项目的规模估计历来是比较复杂的事,估计错误已被列入软件项目失败的四大原因之一•项目组织原因•需求缺乏管理•缺乏计划和控制软件项目估算关于估算估算不是很准确的,是有误差的经验(历史)数据非常重要不要太迷信数学模型项目估算的挑战项目的复杂性、不确定性是项目估算的挑战对于一个陌生的领域,这种复杂性和不确定性会被放大。软件规模越大,复杂性越高、不确定性就越大对当前项目的理解程度,缺乏理解,估算甚至无从下手是否有足够历史数据,没有历史数据,就缺乏参照物软件项目估算•软件项目估算主要包括三个方面:1.规模和工作量的估算•确定每个软件功能所执行的一系列软件工程任务,以及每项任务花费的时间2.进度的估算•估计任务的持续时间,即历时估计3.资源和成本的估算•确定完成软件项目规模相应付出的代价软件项目估算规模估算工作量估算成本估算进度估算资源估算人力成本生产力数据项目规模的估算(Size)估计软件项目的规模,能为后面的工作量估算、人员估算/计划、进度估算/计划提供依据,是能直接决定和影响到其它三个估算的决策项目规模的估算(Size)规模的估算方法代码行估算法•估算单位:LOC/KLOC(源代码程序长度的测量)功能点(FP)估算法•估算单位:FP(系统的功能点数目)项目规模的估算(Size)代码行估算法(LOC/KLOC)可以用到以下的方法来估计代码行•专家判定•类比法(参考以往类似实现)•Pert法项目规模的估算(Size)功能点估算法(FP)在需求分析阶段基于系统功能的一种规模估算方法FP=UFC×TCF未调整的功能点数(UFC,UnadjustedFunctionPointCount)技术复杂度因子(TCF,TechnicalComplexityFactor)功能点也可以转换成代码行项目规模的估算(Size)代码行和功能点估算的输入:------WBS项目工作量的估算(Effort)工作量的估算单位:人月人天人年项目工作量的估算(Effort)代码行(KLOC)----工作量(人月)方法1:工作量=代码行/生产率生产率=KLOC/PM(人月)质量=错误数/KLOC成本=元/LOC(不同技术平台和语言的生产率需要分别计算)项目工作量的估算(Effort)代码行(KLOC)----工作量(人月)方法2:COCOMA,一种基于代码行的工作量估算法E——工作量(人月)S——千源代码行(KLOC)EAF——EffortAdjustmentFactor,工作量调整因子a,b——随开发模式而变化的因子项目工作量的估算(Effort)COCOMA基本COCOMA模型中级COCOMA模型详细COCOMA模型项目工作量的估算(Effort)基本COCOMA模型E=a(KLOC)bE——工作量(人月)KLOC——千代码行a,b——随开发模式而变化的因子开发模式abcd有机式2.41.052.50.38半分离式3.01.122.50.35嵌入式3.61.202.50.32项目工作量的估算(Effort)中级COCOMA模型E=a(KLOC)b×EAFEAF----工作量调整因子EAF根据15个成本驱动量计算开发模式ab有机式3.21.05半分离式3.01.12嵌入式2.81.20项目工作量的估算(Effort)EAF成本驱动量描述取值很低低一般高很高非常高产品RELY必要的软件可靠性要求0.750.881.001.151.40DATA数据库规模0.941.001.081.16CPLX产品复杂性0.700.851.001.151.301.65计算机TIME执行时间限制1.001.111.30STOR主存限制1.001.061.211.66VIRT虚拟计算机可变性0.871.001.151.301.56TURN计算机响应时间0.871.001.071.15人员ACAP分析员能力1.461.191.000.860.71AEXP应用经验1.291.131.000.910.82PCAP程序员能力1.421.171.000.860.70VEXP虚拟机经验*1.211.101.000.90LEXP编程语言经验1.141.071.000.95项目MODP现代编程经验1.241.101.000.910.82TOOL软件工具使用1.241.101.000.910.83SCED规定的开发进度表1.231.081.001.041.10项目工作量的估算(Effort)详细COCOMA模型E=a(KLOC)b×EAF包括中级COCOMO模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中每一步骤(分析、设计等)的影响项目工作量的估算(Effort)代码行(KLOC)----工作量(人月)要求功能分解足够详细的有一定的经验数据,比如生产率LOC/PM生产率与具体的编程语言和平台有关在开发初期估算代码行较困难,适用于过程式程序设计语言项目工作量的估算(Effort)WBS----工作量(人月)由WBS直接估算工作量有以下方法:•WidebandDelphi(专家评估法)•Pert法•类比法(参考以往类似项目的数据)•相对值估计法项目工作量的估算(Effort)WidebandDelphi(专家评估法)由多位专家进行成本估算,取得多个估算值,最后得出综合的估算值在没有历史数据的情况下,这种方式适用于估算工作量项目工作量的估算(Effort)WidebandDelphi(专家评估法)德尔菲法鼓励参加者就问题进行相互的、充分的讨论项目工作量的估算(Effort)WidebandDelphi(专家评估法)Delphi法的估计结果计算方法:取平均值,偏差率=MAX{(最大值-平均值),(平均值-最小值)}/平均值如果偏差率小于15%,则认为达成一致,大于这个百分比就重新估计,最多四轮。项目工作量的估算(Effort)WidebandDelphi(专家评估法)有大概两种方法把多个专家的估算值合成一个估算值:一种方法是简单地求各估算值的中值或平均值。一种方法是召开小组会,使各位专家们统一于或至少同意某一个估算值项目工作量的估算(Effort)WidebandDelphi(专家评估法)特点1.有比较标准的过程规范估计的实施2.更依赖于各个估计专家的经验;3.适用于任何估计;4.简单实用易操作。项目工作量的估算(Effort)WidebandDelphi(专家评估法)优点:不需要历史数据,非常适合新的较为特别的项目估计缺点:主观:专家的判断有时并不准确;专家自身的技术水平如果不高,会带来误判;比较费时:如果估计的结果没有在一个可接受的范围内,则需要进行多轮估计。项目工作量的估算(Effort)Pert(三点估算)PERT方法可以在软件开发过程的全流程中应用PERT对各个项目活动的完成时间按三种不同情况估计:1、乐观时间--任何事情都顺利的情况,完成某项工作的时间。2、最可能时间--正常情况下,完成某项工作的时间。3、悲观时间--最不利的情况,完成某项工作的时间。项目工作量的估算(Effort)Pert(三点估算)估算步骤:对某个任务估算出三个值:最好情况的值,最坏情况的值,最可能的值根据给出的三个估算值,推算出来最有可能接近实际值的估算•估算值=(最好值+4×最可能的值+最坏值)/6项目工作量的估算(Effort)例子:某任务的估算专家一:10,15,18专家二:8,10,13专家三:15,22,30专家一:(10+15*4+18)/6=14.6专家二:(8+10*4+13)/6=10.2专家三:(15+22*4+30)/6=22.2平均值:47/3=15.7偏差率=6.5/15.7=41%项目工作量的估算(Effort)相对值估计法见单独的Slides项目工作量的估算(Effort)得到WBS最下面一层每个任务的工作量估算后,相加就可以整个项目的工作量估算了(自下而上)估算准确度类型准确度说明量级估算:合同前Orderofmagnitude-25~~+75%概念和启动阶段决策预算估算:合同期Budget-10~~+25%编制计划确定性估算:WBS后Definitive-5~~+10%工作分解后的详细计划避免低劣估算1.避免无准备的估算2.留出估算的时间,并做好计划3.参考以前的项目数据4.邀请合适的专家进行估算5.使用以开发人员为基础的估算6.详细的较低层次上的估算7.选择合适的估算技术8.使用几种不同估算技术,并比较它们的结果练习•对你之前得到的迎新晚会WBS图最下面一层的所有任务进行工作量估算(人日),并最终得到总的估算工作量•方法一:PERT法•方法二:相对值估计法软件项目估算规模估算工作量估算成本估算进度估算资源估算人力成本生产力数据项目资源估算-要多少人资源包括人力资源和其他软硬件资源每一类资源都由四个特征来说明:资源描述、可用性说明、需要该资源的时间、及该资源被使用的持续时间项目资源估算人力资源的估算方法:根据WBS进行估算由工作量和开发周期来估算项目资源估算人力资源的估算方法:根据WBS进行估算主要是一些独立的工作应该由独立的人员去完成,而减少人员沟通成本,减少人员之间的依赖性项目资源估算人力资源的估算方法:由工作量和开发周期来估算人员数量=工作量估算(人日)/工期估算(日)项目成本估算-要多少钱成本估算过程中,要紧密结合项目进度计划避免过于乐观或者过于保守的估算。在费时较长的大型项目中,还应考虑到今后的职工工资结构、设备费用以及管理费用是否发生较大变化等在有新员工的项目中,还应考虑其培训成本人力资源成本是随着团队开发效率的变化而变化的