软件开发成本估算_第1页
软件开发成本估算_第2页
软件开发成本估算_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件成本估算近年来, 由于软件的价格越来越高, 在计算机系统中软件所占的比重越来越大, 软 件价格估计的差错对于一个计算机公司的盈亏起到举足轻重的作用。因此, 软件成本的估计受到普遍的重视。软件价格的计算不是一门精确的学科, 因此我们称为成本估算。 它受到许多因素的 影响, 包括人的技术和环境的影响。 在开发工作尚未开始之前作软件成本估价就要冒险。 有 的公司采用 “三段估价” 的办法,在开发初期的计划阶段订出初步估算价, 在要求分析阶段 后给出一个修正估算价格, 在设计完成之后给出最终估算价格。 在软件成本估算方面的工作 大多数都从分析与软件成本相关的因素入手。一、影响软件成本的因素1. 软

2、件人员的业务水平软件人员的素质、 经验、 掌握知识的不同在工作中的表现有很大的差别。有人作过试验,组织一些不同程度的软件人员开发同一课题, 对开发的程序进行统计分析, 结果发现, 完成得好的和差的, 生产率相差五倍, 甚至十几倍。 可见软件人员的业务水平对软件产品的 生产率影响是很大的。2. 软件产品按开发的复杂性可分为三类: 一类是应用程序,如用高级语言写的科学计算、数据处理、企业管理等用户程序。二类是实用程序,如用系统程序设计语言或汇编语言写出的编译程序、汇编程序、联 接编辑程序、输入加载程序。三类是系统程序, 如用汇编语言或系统程序语言写的操作系统、 实时处理控制系统等。 这三类程序,以

3、系统程序的生产率为 1, 以应用程序开发的复杂为 1,可以画出三类程序的 生产率和复杂性的比例关系图表。见表 2.3表2.3 生产率和复杂性比例关系表项目 系统程序生产率1复杂性9实用程序5103应用程序25 1001B.Bo?hm 教授进一步给出了这三种软件产品的程序规模和工作量的相互关系的公式。程序 的规模是以源程序每千行语句(或指令)为单位。程序的工作量以一人一月为单位,记为 PM 这三类程序,每个人每月生产程序的千行数为:应用程序是:PM=2.4*(KDSI)*1.05 (其中 KDSI 为千行源代码数) 实用程序是PM=3.0*(KDSI)*1.12系统程序是PM=3.6*(KDSI

4、)*1.20 例如,三类程序所选取的开发项目都是 60000 行的程序,所需投入的人数三类不 同程序大体比例为了: 1:1.7:28,工作量估计曲线大约如图 21 所示。估计工作量600050004000300020001000 -100300500700900软件产品规模图2.1工作量估计曲线3.I开发软件所花费的时间估算: Boehm给出了各类程序所花费的时间如下: 应用程序所花的时间TDEV(AP)=2.5*(PM)*0.38实用程序所花的时间TDEV(UP)=2.5*(PM)*0.36系统程序所花的时间TDEV(SP)=2.5*(PM)*0.32上述三类程序都针对同样规模的程序,设以上

5、三类程序所要开发的时间基本相同。例如60KDSI的程序都需18个月,同时如果把开发时间;拉长或者缩短,则都需要更多的工作量,把这个时间称为最佳开发时间。在研究了 63个开发项目之后,Boehm得出结论,每个软件项目所用的时间有一 个极限值,在此极限值之外,如果想用增加人员和设备的办法来缩短开发时间是不可能达到 目的的,这个极限值即为上述开发时间的75%。我们应该记住Boehm提出的这条程序开发规律,即每个程序项目有一个最佳时间,以这个时间来计划开发过程,就可达到较好的经济效益。4、软件开发的技术水平:软件开发水平,主要是指所用程序开发技术(包括系统分析和系统设计的方法,结构化设计方法,程序设计

6、语言,遍查和评审、结构程序设计,系统测试和程序库)。软件开发CASE工具和支撑环境水平的高低也关系重大。软件开发技术水平高则开发效率高。例如,使用高级语言要比用汇编语言提高3至10倍,各种高级语言的效率也有很大差别。例如ADA语言有很强的类型检设施、数据抽象、单独编译、中断处理、并行结构等。 它使软件的生产率和可靠性均有提高。在开发中使用工具可以提高生产率,工具也有基本工具和先进工具的区别,我们把它对软件开发工具量的关系列表如表7.5所示。表2.5 现代软件设计技术和工具的使用对软件开发工作量的影响系统使用情况开发工程系数未米用1.24充分使用0.82仅用基本工具1.24使用先进开发工具0.8

7、35、软件开发的可靠性要求软件的可靠性是在计划阶段, 考虑到软件可能失效的代价而确定下来的, 要根据开发 和维护的价格,提出不同的可靠性要求,对软件开发的工作量综合地作出估计。表 2.6 给出 与五类软件可靠性相应的开发工作量系数。表 2.6 可靠性对软件开发量的影响系数可靠性失效的影响开发工作数很低不便使用075低其损失易于挽回0.88一般挽回损失有一定困难100高很大的经济损失110很高涉及到人的生命安全140为了保证软件可靠性所花费的工作量要进行估计和综合平衡。例如, 软件复查的形式和次数,次数越多,成本越高,但可靠性就越高;次数越越少成本越低,而可靠性就越差。我 们必须取得一个最合适的

8、次数,使成本和可靠性都合理。二、软件成本的估计方法估计一个软件的成本是一个难题, 目前的估算方法主要是根据实践经验和有关成本的历 史档案来推算出当前软件项目的近似价格和开发成本。 通常有两种估算方法, 一种是自顶向 下估计,首先对系统提出总要求,限制时间和总金额,然后再考虑各子系统。要对整个系统 进行估价, 还要涉及开发的软件系统所需要的资源、 人力、 配置管理、 质量保证、 系统安装、 用户培训和文档资料方面的成本。 另一种方法是自底向上的估算, 首先系统中每一个模块 (或 每一个阶段)的子系统的成本, 然后综合出总成本。在实际应用的时候,往往把两种估算的 结果进行比较。在比较中消除不合理的

9、因素,求得一个理想的估算结果。在讨论估算方法的细节之前先讲生产率的含义。实际上, 软件的许多特性都是可以度量的,生产率的最简单的度量是每一个人一个月所生产的有效的源代码行数。 对这个度量的定 义是有争议的, 因为它不能代表开发每一个阶段的准确的度量, 但大多数成本估算都采用这 个度量, 而这个度量只有在软件开发项目完成之后才能进行准确的估算。我们应该广义的理解它,可以这样定义:在计划和开发期间为了生产一行有效源代码所花费的人力的工作量。 它不是单指编码的工作量,而是开发期间各阶段工作量的一个平均数。为了理解生产率的定义,我们举一个例来说明。考查某一个项目的软件开发工作量如 下所示:任务工作量要

10、求分析1. 5 人月设计3.0 人月编码1.0 人月测试3.5 人月2900 行源代码,设此项目九个月共开发了约 是用于模拟和测试而不是该软件的工作程序),因而, 生产率 =每人一月交付的有效源代码行数 =2400 代码行 9 个人月 =267LOC/PM =267LOC/PM(并且交付了共 2400 行代码 (剩下的 500 行 这个项目的生产率是:即代码行 / 人月) 即代码行 / 人月 )面我们介绍两种成本估算技术。1。代码行价格估算技术首先介绍这种方法的计算步骤。根据软件计划提出的软件范围和主要功能描述,代码行估价技术的第一步拟定了源代码实现的所有功能。对这些功能进行分解,一直到为实现

11、该功能所要求的代码行数可以作出可靠的估算为止。设功能总数为n个。第二步求出代码估算表前五列的值。对每个分解后的功能, 利用历史数据或者直观知觉估算一个最有利的值a,一个最可能的值 m和最不利的值 b。我们又设Le为它的期望值,它是用a、m、b带权平均计算的,公式为a 4m b Le6这是一种最可能的估算,这种算法的平均差数为Ld例如,一个计算机辅助设计项目的软件包,在项目的范围一章中, 简述了一些计算机图形外围设备(如显示终端、数字仪、绘图仪等)相接口的使用微型机的开发项目,以下这些数据是根据历史写出的,如表 2.7所示。根据这些值,按照公式分别算出期望值数,放在该表的第四和第五列中,并且统计

12、出估算的总期望值及总差数。第三步是估算每一代码行的价格,它以美元数/代码行为单位,即表中的第五行数据也就是根据历史资料和市场行情得出的数据,单位可写为$/行。第四步数估算每一月完成多少行,对每个不同的功能都应该使用不同的值。也可以使用平均值或修正的平均值。还可以由历史资料获得。表2.7计算机辅助设计软件项目成本价格表功能最有利的值a最可能的值m最不利的值b期望值Le差数Ld$/行行/月价格$月数功能接口控制180024002650234014014315327607.4二维几何图形分析4100520074005380550202201076004.4三维几何图形分析46006900860068

13、006702022013600030.9数据结构管理2950340036003350110182406030013.9计算机图形显示40504900620049503602220010890024.7外围设备控制200021002450214075281405992015.2设计分析66008500980084005401830015120028估算差数估算总价 总月数估算 LOC=333601100$656680144.6第五步求每一个分项目估算的价格。它由每一代码行价格乘上期望值来得出。即第4列乘上第6列得第8列。然后再求每一个项目所花费的月数,使用的方法是用每月的代 码行生产量除以期望值

14、来得出,即用第 7列的数据去除第 4列的数据得出的。最后由第8列的各分项目的价格相加得出估算的整个项目的价格为$656630美元。再由各分项目估算的工作量,即第9项的数据求和得出估算的总工作量为114.6个人月。最后,我们来求一个日程表时间的粗略估计,主要是依据Putnam 估算模型公式:L Ck K1 2td4 3其中L为期望值(代码总行数),K为估计的人年数(114.6人月?12人年)。Ck为技术水平常 数,它反映了“妨碍程序员前进的生产能力约束”,在较差的软件开发环境下Ck = 6500 ,好的开发环境下 Ck = 10000,而佳开发环境下(例如采用自动工具情况下)Ck = 12500

15、。这里应该注意,对 Ck的选择必须十分慎重,E.W.E oechm 给出了一个考虑生6产率变化的度量表格,表格如表7.8,其中生产率范围=(DSI1/MM1)/(DSI2/MM2)例如,当这个开发环境用较好的软件工具(公式中的分子)和使用较差的工具时的生产率(公式 中的分母)之比率为1.49倍。又如一个较好的开发小组,它的生产效率是一个较差的软件开 发小组效率的4.18倍等等。也就是说在实际使用的时候要根据CK还要乘上生产率变化比率才能代入公式计算。例如,在1973年IBM公司的联邦系统局的水平 CK=4984,如果工作在联机交互式系统内,需求比较明确,采用结构化编码技术, 上机时间不受限制等

16、条件下,则可以把C k的值增至1 0 0 4 0。这个值适用于十万行以上代码的软件项目。表2.8软件生成率的范围比较语言经验 1.2进度约束1.23与 软 件 有 关 的 因 素数据库 1.23移交时间1.32虚拟机经验H 1.341.491.491.511.56虚拟机可靠性软件工具近代程序设计规程实时约束1.86可靠性要求1.87产品的复杂度2.36开发工作人员/开发小组的经验应用经验1.574.18存储约束软件生产率范围将CK=10000代入计算机辅助设计项目,按照Putnam 公式,由L=C kK1/2 td 4/3改写为L31/4td使用表 中的数据 L 330000 、E 145 人

17、月 =12 人年T=td 1.3 年 (开发时间 )前面估计式中,估计差数为1100LOC ,我们也就可以估计由于偏离期望值的LOC 值带来的冒险,从而估计出时间差数,结果如表2.9 所示。这里注意应把最不利的值和最有利的值作 为LOC的上下限进行计算。表 2.9 价格和时间的估差LOC 价 格 ($)最有利的值 26000$512200开发时间估计1.1 年期 望 值 33000 $6501001.3 年最不利的值 41000$8077001.5 年表2.9 中假设每个代码行的价格为 $19.70 ,通过最有利和最不利的情况估计, 这个项 目的完成时间估计在 1.1 年到1.5年之间。2.

18、COCOMO 成本推断模型。它是一种自底向上的成本估算模型,它考虑了多种工作 量系数,包括人的属性、产品属性、项目属性和计算机属性,各种相关的系数由表7.10 给出。这个表中所列的系数是他在研究了六十三个软件开发项目之后, 使用了迪菲的成本估计 法而取得的数据。迪菲的主要思想是:让多个专家分别研究系统定义文件,然后各自单独进行成本估计, 在综合各位专家意见的基础上, 得出初步估计值, 把这个值让专家们重新审查, 进行新的一轮估计, 这种估计可能多次进行, 直到意见相近甚至意见一致。 这种方法在各轮 估计中不能互相交换意见,最后由协调人综合意见,得出最后结果。中级COCOMO 模型还作了一些假定

19、,它所考虑的项目属于中小型问题(大约二千到三万二千 DSI) 对软件人员要求熟悉所开发的应用领域,而且只考虑 从设计到验收的成本,还包括文档资料和评审的成本 但不包括注释语句和未经修改的实用子程序。 这里的一个人月是指一个程序员工作 152 个小 时。此外,还有一些有关软件项目的性质和假定。表2.10 COCOMO 工作量系数表工作量系数 ? 产品属性 要求的可靠性 数据库规模 产品复杂性 ? 计算机属性 执行时间限制 主存限制 虚拟机易失性 计算机解题周期 ? 人员属性 分析员的能力 程序员的能力 实践经验 使用程序语言经验取值范围0.751.400.941.160.701.651.001.

20、661.001.560.871.300.871.151.460.711.420.701.290.821.140.95? 项目属性使用现代程序设计方法1.240.82使用工具 1.240.83 要求的开发速度 1.23110Boehm 给出的成本估算例子是一个商用微型机远程通讯的嵌入式软件,规模为10KSDI 我们下面给出嵌入式远程通讯项目的工作量系数取值的情况, 见表 7.11 。然后, 代 入公式中计算,表后即为计算的情况。表2.10 COCOMO 工作量系数 ? 产品属性 要求的可靠性 数据库规模 产品复杂性 ? 计算机属性 执行时间限制 主存限制 虚拟机易失性 计算机解题周期 ? 人员属

21、性 分析员的能力 程序员的能力 实践经验 使用程序语言经验? 项目属性 使用现代程序设计方法 使用工具 要求的开发速度工作量系数表取值范围0.751.400.941.160.701.651.001.661.001.560.871.300.871.151.460.711.420.701.290.821.140.951.240.821.240.831.23110Boehm 给出的成本估算例子是一个商用微型机远程通讯的嵌入式软件,规模为见表 2.11 。然后, 代10KSDI 我们下面给出嵌入式远程通讯项目的工作量系数取值的情况,入公式中计算,表后即为计算的情况。值)1.00平均二小时周转时间(额定

22、值 )1.00表 2.11嵌入式远程通讯项目的工作量系数取值工作量系数系数取值的依据实际取值可靠性只用于局部地区(额定值 )1.00恢复问题不严重数据库20000 字节(低)0.94复杂性远程通讯处理(很高 )1.30定时使用 70% 处理时间(高)1.10存储64K 中使用 45K(高)1.06机器商用微处理机(额定分析员优秀人员(高)0.86程序员优秀人员(高)0.86经验远程通讯工作三年(低)1.00经验微型机工作六个月( 额定值)1.00经验使用语言十二个月( 额定值)1.00经验使用现代技术一年以上(高)0.91工具基本的微型机软件(低)1.10工期九个月 (估计 8.4个月 )(额

23、定值 )1.00调整因子=1.17=1.000.941.301.101.06 1.00 1.00 0.86 0861.00 1.10 1000.911.101.00? 1.17代入前面的计算公式,程序的工作量开发软件所用时间把调整因子乘上去后,调整后的程序工作量为 月。如果程序员和分析员的工资都按每月 成本费为51.9(人月)而调整后的开发时间为8.8 个6千美元算,那么该项目的开发人员工资的总(51 9 人月)X( 6000 元/ 人月)=311 400 元软件成本估计是一个复杂的问题, 所以很难找到一种既准确又简便的方法, 不同的 估算方法所得的结果不相同, 有时可能差别很大, 这就促使我们更加重视软件成本估算和计 价方法的研究。有兴趣的读者可以参考 Boe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论