已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件成本估算 近年来,由于软件的价格越来越高,在计算机系统中软件所占的比重越来越大,软件价格估计的差错对于一个计算机公司的盈亏起到举足轻重的作用。因此,软件成本的估计受到普遍的重视。 软件价格的计算不是一门精确的学科,因此我们称为成本估算。它受到许多因素的影响,包括人的技术和环境的影响。在开发工作尚未开始之前作软件成本估价就要冒险。有的公司采用“三段估价”的办法,在开发初期的计划阶段订出初步估算价,在要求分析阶段后给出一个修正估算价格,在设计完成之后给出最终估算价格。在软件成本估算方面的工作大多数都从分析与软件成本相关的因素入手。一、影响软件成本的因素 1. 软件人员的业务水平 软件人员的素质、经验、掌握知识的不同在工作中的表现有很大的差别。有人作过试验,组织一些不同程度的软件人员开发同一课题,对开发的程序进行统计分析,结果发现,完成得好的和差的,生产率相差五倍,甚至十几倍。可见软件人员的业务水平对软件产品的生产率影响是很大的。 2. 软件产品按开发的复杂性可分为三类: 一类是应用程序,如用高级语言写的科学计算、数据处理、企业管理等用户程序。 二类是实用程序,如用系统程序设计语言或汇编语言写出的编译程序、汇编程序、联接编辑程序、输入加载程序。 三类是系统程序,如用汇编语言或系统程序语言写的操作系统、实时处理控制系统等。这三类程序,以系统程序的生产率为1,以应用程序开发的复杂为1,可以画出三类程序的生产率和复杂性的比例关系图表。见表2.3 表2.3 生产率和复杂性比例关系表 项目 系统程序 实用程序 应用程序 生产率 1 510 25100 复杂性 9 3 1B.Bohm教授进一步给出了这三种软件产品的程序规模和工作量的相互关系的公式。程序的规模是以源程序每千行语句(或指令)为单位。程序的工作量以一人一月为单位,记为PM这三类程序,每个人每月生产程序的千行数为:应用程序是: PM=2.4*(KDSI)*1.05 (其中KDSI为千行源代码数)实用程序是 PM=3.0*(KDSI)*1.12系统程序是 PM=3.6*(KDSI)*1.20 例如,三类程序所选取的开发项目都是60000行的程序,所需投入的人数三类不同程序大体比例为了:1:1.7:28,工作量估计曲线大约如图21所示。 估计工作量 6000 5000 4000 3000 2000 1000 100 300 500 700 900 软件产品规模 图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 上述三类程序都针对同样规模的程序,设以上三类程序所要开发的时间基本相同。例如60KDSI的程序都需18个月,同时如果把开发时间;拉长或者缩短,则都需要更多的工作量,把这个时间称为最佳开发时间。 在研究了63 个开发项目之后,Boehm得出结论,每个软件项目所用的时间有一个极限值,在此极限值之外,如果想用增加人员和设备的办法来缩短开发时间是不可能达到目的的,这个极限值即为上述开发时间的75%。 我们应该记住Boehm提出的这条程序开发规律,即每个程序项目有一个最佳时间,以这个时间来计划开发过程,就可达到较好的经济效益。 4、软件开发的技术水平: 软件开发水平,主要是指所用程序开发技术(包括系统分析和系统设计的方法,结构化设计方法,程序设计语言,遍查和评审、结构程序设计,系统测试和程序库)。软件开发CASE工具 和支撑环境水平的高低也关系重大。 软件开发技术水平高则开发效率高。例如,使用高级语言要比用汇编语言提高3至10倍,各种高级语言的效率也有很大差别。例如ADA语言有很强的类型检设施、数据抽象、单独编译、中断处理、并行结构等。它使软件的生产率和可靠性均有提高。在开发中使用工具可以提高生产率,工具也有基本工具和先进工具 的区别,我们把它对软件开发工具量的关系列表如表7.5 所示。 表2.5 现代软件设计技术和工具的使用 对软件开发工作量的影响系统使用情况开发工程系数未采用 1.24充分使用 0.82仅用基本工具 1.24使用先进开发工具 0.83 5、软件开发的可靠性要求 软件的可靠性是在计划阶段,考虑到软件可能失效的代价而确定下来的,要根据开发和维护的价格,提出不同的可靠性要求,对软件开发的工作量综合地作出估计。表2.6给出与五类软件可靠性相应的开发工作量系数。 表2.6 可靠性对软件开发量的影响系数可靠性失效的影响 开发工作数很低不便使用 075低其损失易于挽回 0. 88一般挽回损失有一定困难 100高很大的经济损失 110很高涉及到人的生命安全 140为了保证软件可靠性所花费的工作量要进行估计和综合平衡。例如,软件复查的形式和次数,次数越多,成本越高,但可靠性就越高;次数越越少成本越低,而可靠性就越差。我们必须取得一个最合适的次数,使成本和可靠性都合理。二、软件成本的估计方法估计一个软件的成本是一个难题,目前的估算方法主要是根据实践经验和有关成本的历史档案来推算出当前软件项目的近似价格和开发成本。通常有两种估算方法,一种是自顶向下估计,首先对系统提出总要求,限制时间和总金额,然后再考虑各子系统。要对整个系统进行估价,还要涉及开发的软件系统所需要的资源、人力、配置管理、质量保证、系统安装、用户培训和文档资料方面的成本。另一种方法是自底向上的估算,首先系统中每一个模块(或每一个阶段)的子系统的成本,然后综合出总成本。在实际应用的时候,往往把两种估算的结果进行比较。在比较中消除不合理的因素,求得一个理想的估算结果。在讨论估算方法的细节之前先讲生产率的含义。实际上,软件的许多特性都是可以度量的,生产率的最简单的度量是每一个人一个月所生产的有效的源代码行数。对这个度量的定义是有争议的,因为它不能代表开发每一个阶段的准确的度量,但大多数成本估算都采用这个度量,而这个度量只有在软件开发项目完成之后才能进行准确的估算。我们应该广义的理解它,可以这样定义:在计划和开发期间为了生产一行有效源代码所花费的人力的工作量。它不是单指编码的工作量,而是开发期间各阶段工作量的一个平均数。 为了理解生产率的定义,我们举一个例来说明。考查某一个项目的软件开发工作量如下所示:任务工作量要求分析1. 5 人月设计3.0 人月编码1.0 人月测试3.5 人月设此项目九个月共开发了约2900行源代码,并且交付了共2400行代码(剩下的500行是用于模拟和测试而不是该软件的工作程序),因而,这个项目的生产率是:生产率=每人一月交付的有效源代码行数=2400代码行9个人月 =267LOC/PM(即代码行/人月) =267LOC/PM(即代码行/人月)下面我们介绍两种成本估算技术。 1。代码行价格估算技术 首先介绍这种方法的计算步骤。根据软件计划提出的软件范围和主要功能描述,代码行估价技术的第一步拟定了源代码实现的所有功能。对这些功能进行分解,一直到为实现该功能所要求的代码行数可以作出可靠的估算为止。设功能总数为 n个。 第二步求出代码估算表前五列的值。对每个分解后的功能,利用历史数据或者直观知觉估算一个最有利的值 a,一个最可能的值 m和最不利的值 b。我们又设Le为它的期望值,它是用a、m、b带权平均计算的,公式为 这是一种最可能的估算,这种算法的平均差数为 例如,一个计算机辅助设计项目的软件包,在项目的范围一章中,简述了一些计算机图形外围设备(如显示终端、数字仪、绘图仪等)相接口的使用微型机的开发项目,以下这些数据是根据历史写出的,如表2.7 所示。 根据这些值,按照公式分别算出期望值数,放在该表的第四和第五列中,并且统计出估算的总期望值及总差数。 第三步是估算每一代码行的价格,它以美元数/代码行为单位,即表中的第五行数据也就是根据历史资料和市场行情得出的数据,单位可写为$/行。 第四步数估算每一月完成多少行,对每个不同的功能都应该使用不同的值。也可以使用平均值或修正的平均值。还可以由历史资料获得。 表2.7 计算机辅助设计软件项目成本价格表功能最有利的值a最可能的值m最不利的值b期望值 Le差数Ld$/行行/月价格$月数功能接口控制180024002650234014014315327607.4二维几何图形分析4100520074005380550202204.4三维几何图形分析46006900860068006702022030.9数据结构管理2950340036003350110182406030013.9计算机图形显示40504900620049503602220024.7外围设备控制200021002450214075281405992015.2设计分析66008500980084005401830028 估算差数 估算总价 总月数 估算LOC=33360 1100 $ 144.6 第五步求每一个分项目估算的价格。它由每一代码行价格乘上期望值来得出。即第4列乘上第6列得第8列。然后再求每一个项目所花费的月数,使用的方法是用每月的代码行生产量除以期望值来得出,即用第7列的数据去除第4列的数据得出的。最后由第8列的各分项目的价格相加得出估算的整个项目的价格为$美元。再由各分项目估算的工作量,即第9项的数据求和得出估算的总工作量为114.6个人月。 最后,我们来求一个日程表时间的粗略估计,主要是依据Putnam估算模型公式 其中L为期望值(代码总行数),K为估计的人年数(114.6人月12人年)。为技术水平常数,它反映了“妨碍程序员前进的生产能力约束”,在较差的软件开发环境下6500,好的开发环境下10000,而佳开发环境下(例如采用自动工具情况下)12500。 这里应该注意,对的选择必须十分慎重,oechm给出了一个考虑生产率变化的度量表格,表格如表7.8,其中 生产率范围=(DSI1/MM1)/(DSI2/MM2)例如,当这个开发环境用较好的软件工具(公式中的分子)和使用较差的工具时的生产率(公式中的分母)之比率为1.49倍。又如一个较好的开发小组,它的生产效率是一个较差的软件开发小组效率的4.18倍等等。也就是说在实际使用的时候要根据CK还要乘上生产率变化比率才能代入公式计算。 例如,在1973年IBM公司的联邦系统局的水平CK=4984,如果工作在联机交互式系统内,需求比较明确,采用结构化编码技术,上机时间不受限制等条件下,则可以把的值增至。这个值适用于十万行以上代码的软件项目。表2.8软件生成率的范围比较 语言经验1.2进度约束1.23与数据库1.23软移交时间1.32件虚拟机经验1.34有虚拟机可靠性1.49关软件工具1.49的近代程序设计规程1.51因存储约束1.56素应用经验1.57实时约束1.86可靠性要求1.87产品的复杂度2.36开发工作人员/开发小组的经验4.18 软件生产率范围 将CK=10000代入计算机辅助设计项目,按照Putnam公式,由 L=CkK1/2td4/3改写为 使用表 中的数据L、E145人月=12人年 T=td1.3年(开发时间)前面估计式中,估计差数为1100LOC,我们也就可以估计由于偏离期望值的LOC值带来的冒险,从而估计出时间差数,结果如表2.9所示。这里注意应把最不利的值和最有利的值作为LOC的上下限进行计算。 表2.9 价格和时间的估差 LOC 价 格($) 开发时间估计 最有利的值 26000 $ 1.1年 期 望 值 33000 $ 1.3年 最不利的值 41000 $ 1.5年 表2.9中假设每个代码行的价格为$19.70,通过最有利和最不利的情况估计,这个项目的完成时间估计在1.1年到1.5年之间。 2. COCOMO成本推断模型。它是一种自底向上的成本估算模型,它考虑了多种工作量系数,包括人的属性、产品属性、项目属性和计算机属性,各种相关的系数由表7.10给出。这个表中所列的系数是他在研究了六十三个软件开发项目之后,使用了迪菲的成本估计法而取得的数据。迪菲的主要思想是让多个专家分别研究系统定义文件,然后各自单独进行成本估计,在综合各位专家意见的基础上,得出初步估计值,把这个值让专家们重新审查,进行新的一轮估计,这种估计可能多次进行,直到意见相近甚至意见一致。这种方法在各轮估计中不能互相交换意见,最后由协调人综合意见,得出最后结果。中级COCOMO模型还作了一些假定,它所考虑的项目属于中小型问题(大约二千到三万二千DSI)对软件人员要求熟悉所开发的应用领域,而且只考虑从设计到验收的成本,还包括文档资料和评审的成本但不包括注释语句和未经修改的实用子程序。这里的一个人月是指一个程序员工作152个小时。此外,还有一些有关软件项目的性质和假定。 表2.10 COCOMO工作量系数表 工作量系数 取值范围 产品属性 要求的可靠性 0.751.40 数据库规模 0.941.16 产品复杂性 0.701.65 计算机属性 执行时间限制 1.001.66 主存限制 1.001.56 虚拟机易失性 0.871.30 计算机解题周期 0.871.15 人员属性 分析员的能力 1.460.71 程序员的能力 1.420.70 实践经验 1.290.82 使用程序语言经验 1.140.95 项目属性 使用现代程序设计方法 1.240.82 使用工具 1.240.83 要求的开发速度 1.23110 Boehm给出的成本估算例子是一个商用微型机远程通讯的嵌入式软件,规模为10KSDI我们下面给出嵌入式远程通讯项目的工作量系数取值的情况,见表7.11。然后,代入公式中计算,表后即为计算的情况。 表2.10 COCOMO工作量系数表 工作量系数 取值范围 产品属性 要求的可靠性 0.751.40 数据库规模 0.941.16 产品复杂性 0.701.65 计算机属性 执行时间限制 1.001.66 主存限制 1.001.56 虚拟机易失性 0.871.30 计算机解题周期 0.871.15 人员属性 分析员的能力 1.460.71 程序员的能力 1.420.70 实践经验 1.290.82 使用程序语言经验 1.140.95 项目属性 使用现代程序设计方法 1.240.82 使用工具 1.240.83 要求的开发速度 1.23110 Boehm给出的成本估算例子是一个商用微型机远程通讯的嵌入式软件,规模为10KSDI我们下面给出嵌入式远程通讯项目的工作量系数取值的情况,见表2.11。然后,代入公式中计算,表后即为计算的情况。 表2.11 嵌入式远程通讯项目的工作量系数取值 工作量系数 系数取值的依据 实际取值 可靠性 只用于局部地区 (额定值)1.00 恢复问题不严重 数据库 20000字节 (低)0.94 复杂性 远程通讯处理 (很高)1.30 定 时 使用70%处理时间 (高)1.10 存 储 64K中使用45K (高)1.06 机 器 商用微处理机 (额定值)1.00 周转时间 平均二小时 (额定值)1.00 分析员 优秀人员 (高)0.86 程序员 优秀人员 (高)0.86 经 验 远程通讯工作三年 (低)1.00 经 验 微型机工作六个月 (额定值)1.00 经 验 使用语言十二个月 (额定值)1.00 经 验 使用现代技术一年以上 (高)0.91 工 具 基本的微型机软件 (低)1.10 工 期 九个月(估计8.4个月) (额定值)1.00 调整因子=1.17=1.000.941.301.101.061.001.000.001.101.000.911.101.00 1.17代入前面的计算公式,程序的工作量 PM=28(10)2=4. 4 4(人月) 开发软件所用时间 TDEV=2.5(44。4)0。32=8. 4(月)把调整因子乘上去后,调整后的程序工作量为51. 9(人月)而调整后的开发时间为8. 8个月。 如果程序员和分析员的工资都按每月6千美元算,那么该项目的开发人员工资的总成本费为 (51。9人月)(6000元/人月)=311,400元 软件成本估计是一个复杂的问题,所以很难找到一种既准确又简便的方法,不同的估算方法所得的结果不相同,有时可能差别很大,这就促使我们
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 患者血液透析治疗前准备
- F长安马自达进口Mazda3两厢上市执行方案
- BoseEinstein凝聚热力学统计物理汪志诚
- C624二次空气系统故障
- erp工作原理培训教程
- 公司文员转正工作总结
- 2026北师大二下最喜欢的水果新课标课件
- FL0902发酵液预处理
- 1.1 奏响中学序曲(课件) 2026-2027学年统编版道德与法治 七年级上册
- 2026苏教二上9乘法口诀公开课教案
- 逆向退货管理办法
- 农村儿童手机依赖问题小组干预策略研究
- 防灾避难场所设计规范
- 口服给药操作技能
- 江苏省房屋建筑工程施工图联合审查技术要点
- DL∕T 5097-2014 火力发电厂贮灰场岩土工程勘测技术规程
- 照明与健康人因工程学研究
- 山东会展业发展研究
- 房屋装修简单合同
- 医院陪护感染知识培训课件
- 龙虎山正一日诵早晚课
评论
0/150
提交评论