资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,kangyimei北航“软件工程与项目管理”讲义6XX,*,PPT,文档演模板,Office,PPT,kangyimei北航“软件工程与项目管理”讲义-6-XX,2024/11/14,kangyimei北航“软件工程与项目管理”讲义6XX,第六讲,软件估算,kangyimei北航“软件工程与项目管理”讲义6XX,软件估算,Software Estimation,Input:,需求说明书,系统设计,对象设计,变更请求,Output:,软件规模,工作量,进度,kangyimei北航“软件工程与项目管理”讲义6XX,The Software-Estimation Story,Estimation-Process Overview,Size Estimation,Effort Estimation,Schedule Estimation,Estimate Refinement,Software Estimation,软件估算,kangyimei北航“软件工程与项目管理”讲义6XX,定义,估算的通常定义:对未来事实非零可能性的最乐观的预测。,软件项目估算是指以准确的调查资料和项目信息(如人员和设备信息)为依据,从估算对象的历史,现状及其规律性出发,运用科学的方法,对估算对象的规模,所需工作量和成本进行的测定。,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,介绍,有些估算做的很仔细,而有些却只是凭直觉的猜测。大多数项目超过估算进度25%到100%,但也有少数一些组织的进度估算准确到10%以内,能控制在5%之内的还没有听说(Jones,1994)。,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,介绍,软件项目估算是项目计划的依据,但是大多数软件开发组织没有意识到软件估算的重要性。调查结果表明:,35%的组织没有对软件开发的成本和时间作估算。,50%的组织没有记录任何正在进行的项目的相关数据。,57%的组织没有使用成本会计。,80%的项目在成本或时间上超出预算。,超出成本和时间的项目里仅有50%的是有意义的超出。,进行了成本估算的组织里,62%的组织是基于感觉和经验,仅仅16%的组织使用了正式的估算方法,如成本估算模型。,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,Case Study,案例,Carl负责Gaga-safe公司库存控制系统1.0版本的开发(ICS),在参加项目监督委员会第一次会议的时候,他对期望的功能已经有了总体设想。Bill是监督委员会的领导,他问:“Carl,ICS1.0需要多长时间?”,Carl回答:“大概要,9个月,,不过这只是粗略的估算。”,“不行,”Bill说,“我真希望你说3或4个月,我们一定要在,6个月,内拿出系统,能完成吗?”,“我不能肯定,”Carl坦白地说,“我还得仔细研究一下,不过我相信可以找到办法在6个月内完成。”,“那么把6个月当成项目完成的目标,”Bill说,“无论如何我们都必须这样做。”委员会的其他人一致同意了这个决定。,到第五周的时候,又增加了一些产品概要设计工作,这使Carl更确信项目的时间更接近9个月而非6个月,然而他还是认为运气好的话有可能在6个月内完成项目。他不想被看作惹麻烦的人,所以决定等等再说。,凭直觉的项目估算,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,Case Study,案例(续),Carl的团队努力地工作着,进展稳定,但需求分析的时间比期望的要长。预定6个月要完成的项目已经过去4个月了。“2个月无论如何也做不完剩下的工作。”他只好告诉Bill,项目需要延长2个月,总共需要,8个月,时间。,几个星期后Carl意识到设计进度也不像期望的那么快。“先做容易的部分,”他告诉项目组成员,“其余的部分遇到时再考虑。”,Carl再次向监督委员会汇报:“8个月的项目已经过去7个月,详细设计基本完成,工作卓有成效,但是8个月内还是无法完成。”Carl通报了第2次进度拖延,并将完成时间定为,10个月,。Bill对拖延产生了抱怨,并要求Carl想办法仍将进度安排在8个月左右。,第9个月,项目组完成了详细设计,但部分模块的编码还没有开始。Carl第3次要求要求延期,12个月,。Bill?,编码进行顺利,但一些地方需要重新设计和重新实现,而这些地方项目组没有把详细设计调整好,一些实现过程相互冲突。在第11个月的项目监督委员会上,Carl宣布了第4次项目延期,13个月,。Bill?,结果?,凭直觉的项目估算,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,The Software-Estimation Story,软件估算与建筑预算,一年的时间建这样一幢房子?没问题!,太好了,那我们赶快开工吧!,软件与建筑,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,The Software-Estimation Story,软件估算,软件开发是一个改进的过程,盖一幢房子要花多少钱呢?这取决于房子本身。一个新的计费系统要花多少钱呢?这也取决于计费系统本身!,一些组织希望在需求定义投入前就把成本估算的误差控制在10%以内,尽管项目估算的精确程度越早达到越好,但理论上是不可能实现的。如果真能那么早实现,精确度可以控制在2%以内。,软件开发是一个逐步细化的过程,在每个阶段,都可能做出影响最终项目成本与进度的决策。,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,The Software-Estimation Story,软件估算,可能细化的数量,估,算,收,敛,图,初始的,产品定义,批准的,产品定义,需求,说明书,产品设计,说明书,详细设计,说明书,产品,完工,项目成本,(工作量和成本),项目进度,1.0 x,1.0 x,4.0 x,2.0 x,1.5x,1.25x,0.8x,0.67x,0.5x,0.25x,1.6x,1.25x,1.15x,1.1x,0.9x,0.85x,0.8x,0.6x,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,The Software-Estimation Story,软件估算,可能细化的数量,基于项目阶段的估算误差系数,工作量和规模,进度,阶段,乐观,悲观,乐观,悲观,初始产品定义,0.25,4.0,0.60,1.60,批准的产品定义,0.50,2.0,0.80,1.25,需求说明书,0.67,1.50,0.85,1.15,产品设计说明书,0.80,1.25,0.90,1.10,详细设计说明书,0.90,1.10,0.95,1.05,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,The Software-Estimation Story,软件估算,估算与控制,功能,资源,功能,资源,项目的演变,项目的演变,产品,规模,产品,规模,功能趋于与可用的资源相匹配,资源趋于与想得到的功能相匹配,期望的功能与可用的资源,大多数软件项目在开始时,期望的功能与可用的资源之间不匹配,但随着项目的进展,功能或资源(或两者)必定要互相匹配,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,The Software-Estimation Story,软件估算,合作,表达你合作的意愿,估算既不要过高也不要过低,应该正好与费用相符。估算的目标是寻找估算与实际情况的交汇点。,精确与准确:航班时刻通常精确到分,但不准确。可能的最短软件开发进度是通过建立最可能的准确估算而不是最精确的估算达到的。如果想获得最快的开发速度,就要避免错误的精确。,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,软件估算步骤,确定软件范围,确定工作所需资源,确定估算内容,估算改进,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,确定软件范围,确定软件估算范围,就是确定目标软件的数据和控制,功能,性能,约束,接口以及可靠性。,软件估算步骤,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,确定工作所需资源,功能,资源,功能,资源,项目的演变,项目的演变,产品,规模,产品,规模,功能趋于与可用的资源相匹配,资源趋于与想得到的功能相匹配,期望的功能与可用的资源,大多数软件项目在开始时,期望的功能与可用的资源之间不匹配,但随着项目的进展,功能或资源(或两者)必定要互相匹配,软件估算步骤,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,确定工作所需资源,可重用软件资源可分为以下几种:,可直接复用的构件,具有完全经验的构件,具有部分经验的构件,能够从第三方厂商获得或已经在以前的项目中使用过的软件,这些构件已经经过验证及确认,且可以直接用在当前的项目中。,、以前在类似项目中建立的规约,设计,代码或测试数据,在本项目中需做修改。,、以前在类似项目中建立的规约,设计,代码或测试数据,在本项目中需做实质上的修改。,软件估算步骤,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,确定估算内容,规模估算,工作量估算,进度估算,成本估算,缺陷数估算,软件估算步骤,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,规模估算,软件规模指的是非常普通意义上的软件总的范围。它包括功能集的深度和广度以及软件的难度和复杂性。,规模估算方法有以下几种:,用估算算法,如功能点方法,特征点,对象点,模糊逻辑,标准构件法,Delphi方法,PERT方法等。,用规模估算软件。,如果参与过类似的项目,并知道它的规模,那么按百分比形式估算新系统每个主要部分与旧系统相似部分的规模。每部分的规模加起来是总规模。,软件估算步骤,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,工作量估算,对软件所需的工作时间的估算,通常以人时,人天,人月,人年等单位来衡量。,工作量估算可以采用以下方法进行:,使用估算软件直接从规模估算得出,使用组织中的历史数据确定具有已估算规模的先前的项目花了多少工作量。,使用COCOMO模型或其他模型将代码行估算转换成工作量估算。,采用Delphi方法,PERT方法等直接进行工作量估算。,软件估算步骤,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,进度估算,进度估算是针对以阶段为单位的估算,进度以不同阶段的里程碑作为标志,而不是对每一个细小任务都加以估算,对任务的适当分解很重要,分解的越细反而会不准确。,进度估算可以采用以下方法进行:,采用经验法,或Delphi方法,PERT方法等直接进行工作量估算。,使用组织中的历史数据。,使用COCOMO算法或其他算法的进度估算步骤,提供一种更好的估算。,基于承诺的进度表。即将任务分解后,由承担任务的项目组成员给出进度承诺,这种方法许多时候非常有效。,软件估算步骤,Software Estimation,kangyimei北航“软件工程与项目管理”讲义6XX,进度估算方法,经验,估算方法,月进度=,3.0,*人月(1/3),例:65人月的工作量,进度=3.0*65(1/3),12个月,5-6人(65/12),3.0,4.0,2.5,Software Estimation,kangy
展开阅读全文