项目管理_3-软件成本估算

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

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

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

资源描述

软件工程软件开发成本估算软件开发成本估算软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价。它不包括原材料和能源的消耗,主要是人的劳动的消耗。人的劳动消耗所需代价就是软件产品的开发成本。软件产品开发成本的计算方法不同于其它物理产品成本的计算。软件的开发成本是以一次性开发过程所花费的代价来计算的。软件开发成本的估算,应是从软件计划、需求分析、设计、编码、单元测试、组装测试到确认测试,整个软件开发全过程所花费的代价作为依据的。软件开发成本估算方法对于一个大型的软件项目,由于项目的复杂性,开发成本的估算不是一件简单的事,要进行一系列的估算处理。主要靠分解和类推。基本估算方法分为三类。自顶向下的估算方法自底向上的估计法差别估计法自顶向下的估算方法这种方法的主要思想是从项目的整体出发,进行类推。估算人员根据以前已完成项目所消耗的总成本(或总工作量),推算将要开发的软件的总成本(或总工作量),然后按比例将它分配到各开发任务单元中去,再来检验它是否能满足要求。软件库存情况更新开发者W.Ward日期2/8/82阶段项目任务工作量分布(1/53)小计(1/53)计划和需求软件需求定义5开发计划16产品设计6产品设计初步的用户手册3测试计划110详细PDL描述4详细设计数据定义4过程设计2正式的用户手册212编码与程序编码6单元测试单元测试结果1016组装与编写文档4联合测试组装与测试59总计53这种方法的优点是估算工作量小,速度快。缺点是对项目中的特殊困难估计不足,估算出来的成本盲目性大,有时会遗漏被开发软件的某些部分。自底向上的估计法这种方法的主要思想是把待开发的软件细分,直到每一个子任务都已经明确所需要的开发工作量,然后把它们加起来,得到软件开发的总工作量。它的优点是估算各个部分的准确性高。缺点是缺少各项子任务之间相互联系所需要的工作量,还缺少许多与软件开发有关的系统级工作量.差别估计法这种方法综合了上述两种方法的优点,其主要思想是把待开发的软件项目与过去已完成的软件项目进行类比,从其开发的各个子任务中区分出类似的部分和不同的部分。类似的部分按实际量进行计算,不同的部分则采用相应方法进行估算。这种的方法的优点是可以提高估算的准确程度,缺点是不容易明确“类似”的界限。专家判定技术由多位专家进行成本估算单独一位专家可能会有种种偏见,譬如有乐观的、悲观的、要求在竞争中取胜的、让大家都高兴的种种愿望及政治因素等。最好由多位专家进行估算,取得多个估算值。有多种方法把这些估算值合成一个估算值。一种方法是简单地求各估算值的中值或平均值。其优点是简便。缺点是可能会由于受一、二个极端估算值的影响而产生严重的偏差。一种方法是召开小组会,使各位专家们统一于或至少同意某一个估算值。优点是可以摈弃蒙昧无知的估算值,缺点是一些组员可能会受权威或政治因素的影响。Deiphi技术标准Deiphi技术①组织者发给每位专家一份软件系统规格说明书和一张记录估算值的表格,请他们进行估算。②专家详细研究软件规格说明书的内容,对该软件提出三个规模的估算值,即:ai(最小)mi(可能)bi(最大)无记名地填写表格在填表的过程中,专家互相不进行讨论但可以向组织者提问。③组织者对专家们填在表格中的答复进行整理:a.计算各位专家估算的期望值Ei;b.对专家的估算结果分类摘要。专家对此估算值另做一次估算。④在综合专家估算结果的基础上,组织专家再次无记名地填写表格。比较两次估算的结果。若差异很大,则要通过查询找出差异的原因。⑤上述过程可重复多次。最终可获得一个得到多数专家共识的软件规模(源代码行数)。在此过程中不得进行小组讨论。最后,通过与历史资料进行类比,根据过去完成软件项目的规模和成本等信息,推算出该软件每行源代码所需要的成本。然后再乘以该软件源代码行数的估算值,就可得到该软件的成本估算值。软件开发成本估算的经验模型软件开发成本估算是依据开发成本估算模型进行估算的。开发成本估算模型通常采用经验公式来预测软件项目计划所需要的成本、工作量和进度数据。用以支持大多数模型的经验数据都是从有限的一些项目样本中得到的。还没有一种估算模型能够适用于所有的软件类型和开发环境。IBM模型E=5.2×L0.91D=4.1×L0.36=14.47×E0.35S=0.54×E0.6DOC=49×L1.01L是源代码行数(KLOC),E是工作量(PM),D是项目持续时间(月),S是人员需要量(人),DOC是文档数量(页)。IBM模型是静态单变量模型。在此模型中,一般指一条机器指令为一行源代码。一个软件的源代码行数不包括程序注释、作业命令、调试程序在内。对于非机器指令编写的源程序,例如汇编语言或高级语言程序,应转换成机器指令源代码行数来考虑。定义:转换系数=机器指令条数/非机器语言执行步数。转换系数表语语言言转转换换系系数数简简单单汇汇编编11宏宏汇汇编编11..22~~11..55FFOORRTTRRAANN44~~66PPLL//II44~~1100Putnam模型Putnam模型是一种动态多变量模型。适用于大型项目,但也可以应用在一些较小的软件项目中。它是假定在软件开发的整个生存期中工作量有特定的分布。大型软件项目的开发工作量分布可以用Rayleigh-Norden曲线表示。这个曲线把已交付的源代码行数与工作量和开发时间联系起来。用Rayleigh-Norden曲线可以导出一个“软件方程”td是开发持续时间(年),K是软件开发与维护在内的整个生存期所花费的工作量(人年),L是源代码行数(LOC),Ck是技术状态常数,因开发环境而异。3431tdKCkL技术状态常数Ck的取值Ck的典型值开发环境开发环境举例2000差没有系统的开发方法,缺乏文档和复审,批处理方式。8000好有合适的系统开发方法,有充分的文档和复审,交互执行方式。11000优有自动开发工具和技术。COCOMO模型(COnstructiveCOstMOdel)结构型成本估算模型是一种精确、易于使用的成本估算方法。在该模型中使用的基本量有以下几个:DSI(源指令条数)定义为代码的源程序行数。若一行有两个语句,则算做一条指令。它包括作业控制语句和格式语句,但不包括注释语句。KDSI=1000DSI。MM(度量单位为人月)表示开发工作量。TDEV(度量单位为月)表示开发进度。它由工作量决定。软件开发项目的分类软件开发项目的总体类型:组织型嵌入型半独立型COCOMO模型的分类COCOMO模型按其详细程度分成三级:基本COCOMO模型中间COCOMO模型详细COCOMO模型基本COCOMO模型是一个静态单变量模型,它用源代码行数(LOC)为自变量的(经验)函数来计算软件开发工作量。中间COCOMO模型则在用LOC为自变量的函数计算软件开发工作量(此时称为名义工作量)的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。详细COCOMO模型包括中间COCOMO模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中每一步骤(分析、设计等)的影响。基本COCOMO模型基本COCOMO模型的工作量和进度公式总体类型工作量进度组织型MM==2.4(KDSI)1.05TDEV==2.5(MM)0.38半独立型MM==3.0(KDSI)1.12TDEV==2.5(MM)0.35嵌入型MM==3.6(KDSI)1.20TDEV==2.5(MM)0.32中间COCOMO模型进一步考虑15种影响软件工作量的因素,通过定下乘法因子,修正COCOMO工作量公式和进度公式,可以更合理地估算软件(各阶段)的工作量和进度。中间COCOMO模型的名义工作量与进度公式如下所示。总体类型工作量进度组织型MM==3.2(KDSI)1.05TDEV==2.5(MM)0.38半独立型MM==3.0(KDSI)1.12TDEV==2.5(MM)0.35嵌入型MM==2.8(KDSI)1.20TDEV==2.5(MM)0.32中间COCOMO模型的名义工作量与进度公式15种影响软件工作量的因素fi产品因素:软件可靠性、数据库规模、产品复杂性硬件因素:执行时间限制、存储限制、虚拟机易变性、环境周转时间人的因素:分析员能力、应用领域实际经验、程序员能力、虚拟机使用经验、程序语言使用经验项目因素:现代程序设计技术、软件工具的使用、开发进度限制此时,工作量计算公式改成例1.一个32KDSI的声音输入系统是一个输入原型,或是一个可行性表演模型。所需可靠性非常低。把此模型看做半独立型软件。则有MM=3.0(32)1.12=146又查表知f1=0.75,其它fi=1.00,则最终有MM=146×0.75=110.151icfi(KDEV)rMM例14.一个规模为10KDSI的商用微机远程通信的嵌入型软件,使用中间COCOMO模型进行成本估算。程序名义工作量MM=14.8(10)1.20=44.38(MM)程序实际工作量MM=44.38×=44.38×1.17=51.5(MM)151ifi影响工作量因素fi情况取值1软件可靠性只用于局部地区,恢复问题不严重1.00(正常)2数据库规模20000字节0.94(低)3产品复杂性用于远程通信处理1.30(很高)4时间限制使用70%的CPU时间1.10(高)5存储限制64K中使用45K1.06(高)6机器使用商用微处理机1.00(额定值)7周转时间平均2小时1.00(额定值)8分析员能力优秀人才0.86(高)9工作经验远程通信工作3年1.10(低)10程序员能力优秀人才0.86(高)11工作经验微型机工作6个月1.00(正常)12语言使用经验12个月1.00(正常)13使用现代程序设计技术1年以上0.91(高)14使用软件工具基本的微型机软件1.10(低)15工期9个月1.00(正常)开发所用时间TDEV=14.5(51.5)0.32=8.9(月)如果分析员与程序员的工资都按每月6,000美元计算,则该项目的开发人员的工资总额为51.5×6,000=309,000(美元)做为对比,现在用IBM模型计算:PM=5.2(10)0.91=414.27(人月)D=4.1(10)0.38=9.16(月)S=0.54(414.27)0.60=5.1(人)详细COCOMO模型详细COCOMO模型的名义工作量公式和进度公式与中间COCOMO模型相同。工作量因素分级表分层、分阶段给出。针对每一个影响因素,按模块层、子系统层、系统层,有三张工作量因素分级表,供不同层次的估算使用。每一张表中工作量因素又按开发各个不同阶段给出。例如,关于软件可靠性(RELY)要求的工作量因素分级表(子系统层),如表所示。使用这些表格,可以比中间COCOMO模型更方便、更准确地估算软件开发工作量。软件可靠性工作量因素分级表(子系统层)

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

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

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

×
保存成功