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

下载本文档

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

文档简介

1、.PAGE :.;PAGE 11软件开发本钱估算软件开发本钱估算主要指软件开发过程中所破费的任务量及相应的代价。 不同与传统的工业产品,软件的本钱不包括原资料和能源的耗费,主要是人的劳动的耗费。另外,软件也没有一个明显的制造过程,它的开发本钱是以一次性开发过程所破费的代价来计算的。因此,软件开发本钱的估算,应是从软件方案、需求分析、设计、编码、单元测试、集成测试到认证测试,整个开发过程所破费的代价作为根据的。软件开发本钱估算的阅历模型Putnam 模型 1978年Putnam提出的,一种动态多变量模型。L = Ck * K1/3 * td4/3其中: L源代码行数(以LOC计)K整个开发过程所

2、破费的任务量以人年计td开发继续时间以年计Ck技术形状常数,它反映“妨碍开发进展的限制,取值因开发环境而异,见下表Ck的典型值开发环境开发环境举例2000差没有系统的开发方法,缺乏文档和复审8000好有适宜的系统的开发方法,有充分的文档和复审11000优有自动的开发工具和技术从上述方程加以变换,可以得到估算任务量的公式: K = L3/(Ck3*td4)还可以估算开发时间: td = L3/(Ck3*K)1/4COCOMO模型(constructive cost model) 这是由TRW公司开发,Boehm提出的构造化本钱估算模型。是一种准确的、易于运用的本钱估算方法。COCOMO模型中用到

3、以下变量:DSI源指令条数。不包括注释。1KDSI = 1000DSI。MM开发任务量以人月计 1MM = 19 人日 = 152 人时 =1/12 人年TDEV开发进度。(以月计)COCOMO模型中,思索开发环境,软件开发工程的类型可以分为3种:组织型(organic): 相对较小、较简单的软件工程。开发人员对开发目的了解比较充分,与软件系统相关的任务阅历丰富,对软件的运用环境很熟习,受硬件的约束较小,程序的规模不是很大50000行 嵌入型(embedded): 要求在严密联络的硬件、软件和操作的限制条件下运转,通常与某种复杂的硬件设备严密结合在一同。对接口,数据构造,算法的要求高。软件规模

4、恣意。如大而复杂的事务处置系统,大型/超大型操作系统,航天用控制系统,大型指挥系统等。 半独立型semidetached: 介于上述两种软件之间。规模和复杂度都属于中等或更高。最大可达30万行。 估算公式:根本COCOMO模型估算任务量和进度的公式如下任务量: MM = r*(KDSI)c 进度: TDKV = a(MM)b其中阅历常数 r, c, a, b 取决于工程的总体类型。COCOMO模型按其详细程度可以分为三级:根本COCOMO模型,中间COCOMO模型,详细COCOMO模型。其中根本COCOMO模型是是一个静态单变量模型,它用一个以已估算出来的原代码行数(LOC)为自变量的阅历函数

5、计算软件开发任务量。 中级COCOMO模型在根本COCOMO模型的根底上,再用涉及产品、硬件、人员、工程等方面的影响要素调整任务量的估算。详细COCOMO模型包括中间COCOMO模型的一切特性,但更进一步思索了软件工程中每一步骤如分析、设计的影响。根本COCOMO模型经过统计63个历史工程的历史数据,得到如下计算公式。总体类型任务量进度组织型MM = 10.4*(KDSI)1.05TDKV = 10.5(MM)0.38半独立型MM = 3.0*(KDSI)1.12TDKV = 10.5(MM)0.35嵌入型MM = 3.0*(KDSI)1.20TDKV = 10.5(MM)0.32 最近在复习

6、软件工程的课程,对软件工程本钱估算模型有了些认识,以下是我的一些心得,希望与大家分享. 首先我们需求明确的是为什么要做软件工程预算.首先软件工程是不同于普通工程工程的工程类型.受用户需求,开发方式的影响很大.没有明确的预算,会导致软件开支的不可控制,随着工程的进展,开发放要承当的风险也会添加.另外假设没有预算,更不能够与客户达成开发协议.没有人会傻到委托他人做一个本人都不知道要花多少钱才干完成的工程.最后也就是我个人对工程预算的看法,好的工程预算应该包括团体预算与小组或个人预算两部分,好的工程经理应该了解本人的团队,对突发事件等的思索应该放在工程预算之中,然后将工程的开支细化到小组乃至个人,这

7、一点看似多余,但是却很有必要.比如在实践的开发过程中,由于为了缩短工期而招收新的程序员,这就需求对新程序员进展培训.新程序员耗费的团队本钱是要思索在内的.这也就是传统意义上的peron-monthes所不能完全表达的部分. 新增人员的开支是不能被忽略的.这需求在实践开发过程中统计得到数据,来准确计算. 工程谋划义务集: 1.明确工程范围 2.确定可行性 3.分析风险 4.确定需求的资源a.确定需求的人力资源 b.确定可复用的软件资源 c.标识环境资源 5.估算本钱和任务量 a.分解问题 b.运用规模,功能点,过程义务或用例等方法进展两种以上的估算 c.调和不同的估算 6.制定工程进度方案 a.

8、建立一组有意义的义务集合 b.定义义务网络 c.运用进度方案工具制定时间表d.定义进度跟踪机制在工程谋划义务集中,每一步都涉及到软件开发本钱.对人员,环境,可复用软件的资源的一致调度,将直接影响本钱.其中受软件开发的特殊行,人力资源本钱是最不好控制的.相对来说环境资源就容易控制得多. 环境资源包括软件工具,硬件,网络资源等,当然还要包括公司的日常费用(刨除开发团队佣金与开支,由于这部分属于人力资源本钱).这些无非是买来或者维持,本钱是很容易计算的. 可复用软件资源就要思索到软件的详细设计,功能模块的关系以及系统架构等详细信息.专家建议是将软件资源分为如下四部分:1.废品构件:指可以从第三方直接

9、购买的商品构件.或者以前工程中完全一样的构件. 2.具有完全阅历的构件:以前工程开发过的,与当前需求类似的功能构件. 3.具有部分阅历的构件:为以前工程开发,与当前工程要构造的软件有关的已有规格,设计,代码或测试数据.但是需求重新架构. 4.新构件 开发的本钱可像而知,是升序陈列的.所以在软件开发的一开场就应该思索的运用以后技术,对可复用软件资源进展整理,不能在开发过程中才思索,要知道一个关键构件的重用会为软件开发带来多大的效益.不过凡事也不是必然,不已有构件的扩展要思索到原构件设计,开发文档的完好性等要素. 还是就人力资源进展分析,由于跟人才干与技术方向的不同,programmer不能够像普

10、通意义上的工人或者机器一样有效地预期本钱.我们可以开发一个原型,利用原型数据来对应分析每个人的价值与本钱.但是应该思索的是,随着程序员的个人要素的变卦(年龄,职务,时间,身体情况等),原型数据只能作为一个普通参考.例如SARS期间,或流行性感冒的传播,人力本钱就会变得不好控制.(极限情况下,这将使一个工程面临流产) 目前流行的估算方式大致可分为如下几类: 分解估算: 1.软件规模估算. 2.基于问题的估算. 3.基于loc估算.(loc:代码行数) 4.基于fp估算.(fp:functionpoint 功能点) 5.基于过程估算. 6.基于用例估算. 阅历估算:典型的阅历估算模型是经过回归分析

11、从以往的软件工程中搜集的数据得来的.这种模型的总体构造表现为下面的方式: E=A+B*(e)C 其中A,B,C都是阅历常量.E是任务量(单位:人*月),e是估算变量(loc或者fp).除了公式表达的方式以外,还有一些方式的工程调整成分,如问题的复杂程度,开发人员阅历,开发环境等,一以下出些常用的调整系数:Personnel Attributes Analyst capability(ACAP) Programmer capability(PCAP) Applications experience (AEXP) Virtual machine Experience(VEXP) Programmi

12、ng language experience(LEXP)Project Attributes Modern programming practices(MODP) Software Tools (TOOL) Required Development schedule(SCED)这些系数都应该应该根据详细的工程进展调整和设计.cocomo:(constructive cost model)这种模型是Barry Boehm在其论述软件工程经济学中引见的一种层次构造的软件估算模型.如今曾经被广泛运用.主要运用于运用组装模型,早期设计阶段模型,体系构造后阶段模型.将在以后的日志中对大家进展更深化的引见

13、.目前,有三种根本的软件工程本钱估算方法:自顶向下、自底向上和差别估算法。自顶向下的方法是对整个工程的总开发时间和总任务量做出估算,然后把它们按阶段、步骤和任务单元进展分配;自底向上的方法是分别估算个任务单元所需的开发时间,然后汇总得出总的任务量和开发时间;差别估算是将开发工程与一个或多个已完成的类似工程进展比较,找出与某个类似工程的假设干不同之处,并估算每个不同之处对本钱的影响,导出开发工程的总本钱。专家估算法专家估算法是依托一个或多个专家对工程做出估计,它要求专家具有专门知识和丰富的阅历,是一种近似的猜测。Delphi法是最流行的专家评价技术,在没有历史数据的情况下,这种方式适用于评定过去

14、与未来,新技术与特定程序之间的差别,但专家专的程度及对工程的了解程度是任务中的难点,虽然Delphi技术可以减轻这种偏向,专家评价技术在评定一个新软件实践本钱时通常用得不多,但是,这种方式对决议其它模型的输入时特别有用。Delphi法鼓励参与者就问题相互讨论,要求有多种软件相关阅历人的参与,相互压服对方。类推估算法类推估算法是比较科学的一种传统估算方法,它适宜评价一些与历史工程在运用领域、环境和复杂度的类似的工程,经过新工程与历史工程的比较得到规模估计。类推估算法估计结果的准确度取决于历史工程数据的完好性和准确度,因此,用好类推估算法的前提条件之一是组织建立起较好的工程后评价与分析机制,对历史

15、工程的数据分析是可信任的。这种方法的根本步骤是:1整理出工程功能列表和实现每个功能的代码行;2标识出每个功能列表与历史工程的一样点和不同点,特别要留意历史工程做得不够的地方;3经过步骤1和2得出各个功能的估计值;4产生规模估计。算式估算法算式估算法利用阅历模型进展本钱估算,它通常采用阅历公式来预测软件工程方案所需求的本钱、任务量和进度数据。目前还没有一种估算模型可以适用于一切的软件类型和开发环境,从这些模型中得到的结果必需慎重运用。1Putnam模型Putnam模型是一种动态多变量模型,它是假定软件开发的整个生存期中任务量的分布,如一个30人年以上的工程,其人力运用分布如图7.3所示。然后根据

16、曲线导出一个估算公式:2COCOMO模型构造性本钱模型COCOMOCOnstructiveCOstMOdel是一种准确的、易于运用的本钱估算方法,它分为根本COCOMO模型和中级COCOMO模型两种类型。根本COCOMO模型是一个静态单变量模型,它用一个以已估算出来的源代码行数LOC为自变量的阅历函数来计算软件开发任务量。中间COCOMO模型那么在用LOC为自变量的函数计算软件开发任务量的根底上,再用涉及产品、硬件、人员、工程等方面属性的影响要素来调整任务量的估算。更详细的COCOMO模型除了包括中间COCOMO模型的一切特性外,还思索了在需求分析、软件设计等每一步的影响。*根本COCOMO模

17、型估算公式EabKLOCexpbbDcbEexpdb其中,E为开发所需的人力人月,D为所需的开发时间月,KLOC为估计提交的代码行,ab、bb、cb和db为不同软件开发方式的值,见下表。方式abbbcbdb组织型2.41.052.50.38半独立型3.01.122.50.35嵌入型3.61.22.50.32由以上公式可以导出消费率和所需人数的公式:消费率KLOCE代码行/人月人数ED*中级COCOMO模型估算公式中级COCOMO模型先产生一个根本COCOMO模型一样方式的估算公式,然后对15个本钱驱动属性打分,定出乘法因子,对公式进展修正。15个影响软件任务量的要素见下表:任务量要素fi非常低

18、低正常高非常高超高产品要素软件可靠性数据库规模产品复杂性0.750.881.001.151.400.941.001.081.160.700.851.001.151.301.65计算机要素执行时间限制存储限制虚拟机易变性环境周转时间0.870.871.001.001.001.001.111.061.151.071.301.211.301.151.661.56人的要素分析员才干运用论域实践阅历程序员才干虚拟机运用阅历程序文语运用阅历1.291.421.211.411.461.131.171.101.071.001.001.001.001.000.860.910.860.900.950.710.820.70工程要素现代程序设计技术软件工具的运用开发进度限制1.241.241.

温馨提示

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

评论

0/150

提交评论