资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,项目估计方法,质量控制中心,内容,提纲,一、项目估计的概述,二、估计策略,三、常用估计方法,四、如何估计进度,五、重复估计,一、项目估计的概述,项目估计的概念,估计的目的,对项目估计的预期,估计的准则,有效的估计有什么特点,项目估计的概念,软件项目估计是指以准确的调查资料和项目信息,(,如人员和设备信息,),为依据,从估计对象的历史、现状和及其规律性出发,运用科学的方法,对估计对象的规模、所需工作量和成本进行的测定。,估计的目的,做项目计划的基础,项目策划需要解决哪些问题:,这个项目有多大?,多长时间能把项目做完?,安排多少时间编码、多少时间测试?,向公司申请多少工作量的预算?,对项目估计的预期,首先力求估计结果是准确的,而后再进一步要求精确的,在软件项目估计活动过程中,一些从业人员往往会说,“软件项目估计有什么用,我们估计的时候可能有,456,个功能点,可到交付的时候却有,600,多个,根本就牛头不对马嘴”。但是,我们认为,软件项目估计首先要求结果是准确的,也就是正确的,而后再进一步要求精确的。错误的估计将影响项目管理人员决策,影响项目的开发。正是因为这样,力求估计值在一个大致正确的范围,做估计时的行为准则,估计时间越早,错误越大,任何一个估计都比没有估计好,估计文档化做得越好,获得估计经验的机会越大,用于估计的资料数据越多,估计的结果越好,有关估计的对象的信息越准确,估计就越准确,估计的对象最好是比较小且工作单元是独立的,虽然有各种估计方法和公式,没有,1:1,的转换公式,实事求是的估计人员越多,估计的结果越客观,估计的目的是用来做决策,而不是估计完了就完了。,一个有效的项目估计应满足以下特点,软件项目估计结果要能再现,有效估计是这样:后面进行的估计在相同条件下,即拥有项目资料的相等的情况,不同的估计人员应用相同的估计方法,两者的结果是一样的。这就是项目估计结果的可再现性。当然,随着项目不断深入,估计人员应该会获得更多,更详细的项目资料,那么估计的结果应该也更加准确和精确。,应用了多种估计方法,采用多种估计方法可以从不同的角度比较估计结果,减少估计的错误和保证,安全,估计过程是可管理和控制的,估计过程是文档化,二、估计策略,确定估计对象、估计方法,不同的估计策略,不同的切入点,需要估计的数据,软件产品有多大,-,软件产品的规模,-,(代码行或者功能点),多长时间,-,工期,-,天数,总工作量,-,人月,各种活动的工作量,-,拆分项目组的活动,-,各种活动之间的比例,项目估计,-,是一个整体,产品规模(千行),生产率,工期(天),总工作量(人月),测试工作量,编码工作量,管理工作量,设计工作量,需求分析工作量,成本,各工作量的比例,开发各模块的工作量,各模块的规模,插入两个系数的介绍,生产率,=,代码行除以工作量,不同的“分子”、“分母”,得出不同概念的生产率,比如全生命周期的生产率、编码阶段的生产率,不同开发语言之间的代码行数如何转换,注释行和空行,各种活动的工作量比例,需求分析,10%,编码及单元测试,30%,设计,15%,系统测试,20%,项目管理,12%,培训,3%,支持工作,(QA/CM)10%,系数来自于组织,每个项目也可以结合自己项目的情况单独估计,估计策略一,由产品规模入手,求和,各种活动,的工作量,(人月),总工作量,(人月),工期,成本,各模块,的规模(千行),产品拆分,产品规模,(千行),全生命周期,的生产率,各活动,工作量比例,设备等,非人力成本,任务拆分举例,估计策略二,由产品规模入手,求和,总工作量,(人月),工期,(天),成本,产品拆分,产品规模,(千行),编码阶段,的生产率,各活动,工作量比例,设备等,非人力成本,各模块,的规模,(千行),编码活动,的工作量,(人月),各种活动的,工作量(人月),估计策略三,由工作量入手,求和,各模块的,编码工作量(人月),总编码,工作量(人月),各活动,工作量比例,各种活动,的工作量(人月),总工作量(人月),工期(天),成本,任务拆分,设备等,非人力成本,生产率,各模块,的规模(千行),产品规模(千行),估计策略四,分别估计工作量和规模,然后验证生产率,求和,各模块的,编码工作量,(人月),总编码,工作量,(人月),各活动,工作量比例,各种活动,的工作量,(人月),任务拆分,总工作量,(人月),求和,各模块,的规模,(千行),产品拆分,产品规模,(千行),生产率,业界或公司历史,生产率,对比,估计策略综述,为合适的估计对象选择合适的估计方法,三、常用的估计方法,类比法,Delphi,法,专家判断法,代码重用法,类比法,-,步骤,从历史项目中找到类似模块,统计历史模块的规模,标识待估计模块和历史模块之间的差异,一般用比例系数表示,依据,2,、,3,步的结果进行计算,得出估计值,类比法,-,适用情况,历史数据完备、且准确程度较高,待估计项目与已历史项目在应用、环境和复杂度方面相类似,具有可比性,估计人员有相关领域开发的经验,类比法,-,特点,可估计规模、工作量等很多数据,准确性依赖于历史数据的准确性,要求有一个丰富、准确、可靠的组织度量库,类比法,-,例子,Delphi,法,-,步骤,确定估计的停止条件(收敛于某一范围(比如平均值上下,20%,以内),达到某一估计次数(比如估计次数达到,4,次),讨论有关软件规模或工作量的问题,参加估计的每个人填写估计表格,主持人收集表格,并计算,判断是否达到停止条件,如否,则继续下一轮估计,主持人召集所有参加估计的人员讨论,主要是讨论估计上差异,继续估计,直到符合结束条件,Delphi,法,-,适用情况,在历史数据不完全的情况下,开发新项目,相关人员对开发所涉及领域不够熟悉程等,对大,/,中,/,小项目都可使用。,Delphi,法,-,特点,对历史数据的依赖性不大,应用范围广泛:规模、工作量、工期、生产率等跟数字有关的估计,专家判断法,-,步骤,列出需要估计的规模,/,工作量,专家根据经验对每项进行估计,专家可根据每个任务实现难度和风险的大小,适当调整估计值,专家判断法,-,适用情况,没有准确的历史数据,估计者有类似项目的经验,一般只用于小项目或软件的升级版本情况,由熟知此项目的专家来进行估计。,代码重用法,-,适用情况,本方法仅适用于对可重用模块的规模估计,如软件的升级版本等情况。,代码重用法,-,步骤介绍,本方法涉及三个参数,分别是新设计的百分比(,%Redesign,)、重新编码的百分比(,%Recode,)和重新测试的百分比(,%Retest,),使用这三个参数可以计算使用重用模块的代码规模计算公式为:,(%Redesign+%Recode+%Retest/3)Existing Code=Equiv SLOCs,代码重用法,-,举例,如果想重用一个有,10000,行代码的模块,其中,40%,需要重新设计,,50%,需要重新编码,,60%,需要重新测试,那么等价的新开发的代码量是:,(,40%+50%+60%/3,),10000=5000 SLOC,如何估计进度,自上向下,自下向上,调整,自上向下,选择合适的生命周期模型,根据估计的“各阶段工作量”、“项目总工作量”,估计各阶段的进度,根据公司对项目时间的要求,在不同阶段适当增减人力资源,以保证时间目标,能保证对项目的宏观控制,自下向上,把项目拆分成若干工作包(,WBS,):横向到边,纵向粗细适中,估计每个工作包的工作量及进度,累加,估计出每个阶段的工作量及进度,累加,估计出项目整体的进度,调整,“自上而下”和“自下而上”会得出两个不同的结果,上下调整:增减资源、重新安排关键路径、或者重新估计工作量,得出一个充分权衡了各个因素的进度估计,重复估计,大胆假设之后的小心求证,对项目的估计贯穿项目的始终,随着项目的进行,对项目了解程度的加深,可以再次估计,依据新的估计结果,调整后期的计划,
展开阅读全文