收藏 分享(赏)

软件项目开发成本估算.doc

上传人:精品资料 文档编号:10225038 上传时间:2019-10-21 格式:DOC 页数:10 大小:487.50KB
下载 相关 举报
软件项目开发成本估算.doc_第1页
第1页 / 共10页
软件项目开发成本估算.doc_第2页
第2页 / 共10页
软件项目开发成本估算.doc_第3页
第3页 / 共10页
软件项目开发成本估算.doc_第4页
第4页 / 共10页
软件项目开发成本估算.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、硕 士 研 究 生 读 书 报 告题目浅谈软件项目开发成本估算作 者 姓 名 梁前能作 者 学 号 Z114325142指 导 教 师 季江民学 科 专 业 软件项目管理所在学院软件学院 提交日期二一二年三月Discussing of the cost estimation in the process of software project managementA Dissertation Submitted toZhejiang Universityin partial fulfillment of the requirements for the degree of Master of

2、EngineeringMajor Subject: Software Project ManagementAdvisor: Ji JiangminByLiang QiannengZhejiang University, P.R. China2012Comment U1: 项目编号摘要本文重点探讨了软件项目管理及开发过程中一个重要的问题软件项目开发成本估算方法。软件项目管理人员及用户不能成本的重要性,因为管理好成本才能避免造成人力、物力和资源的浪费,而软件项目开发成本的首要任务是先进行成本估算。所以在软件开发前期对软件开发成本的估算就显得十分重要,本文以软件项目开发工程的角度介绍成本估算在软件项

3、目管理过程中的如何进行成本估算及其估算过程,估算方法,估算等级等。关键词:软件项目管理,成本估算。AbstractThe paper discussed the important problem in software management and development, cost estimation in the process of software project management. Administrator of software project management and users cant ignore the communication. We must mana

4、ge the cost of software project to avoid of costing a lot of time and money. So, the cost estimation in the process of software project management is important in the early time of the development. This paper mainly discussed the processes and methods of cost estimation in the process of software pr

5、oject management.Keywords:Management of software project, Cost estimation1. 引言为了使开发项目能够在规定的时间内完成,而且不超过预算,成本估算的管理控制是关键。软件开发成本估算主要指软件开发过程中所花费的工作量及相应的代价。不同与传统的工业产品,软件的成本不包括原材料和能源的消耗,主要是人的劳动的消耗。另外,软件也没有一个明显的制造过程,它的开发成本是以一次性开发过程所花费的代价来计算的。因此,软件开发成本的估算,应是从软件计划、需求分析、设计、编码、单元测试、集成测试到认证测试,整个开发过程所花费的代价作为依据的。同

6、样,软件项目开发的成本估算的过程也不是一蹴而就的,这也许与传统的工业产品生产过程成本估算过程相似,但因为软件项目的开发成本主要在人力成本上,对人力成本的估算也是软件项目开发成本估算的主要内容,而人力成本主要以工作量或以时计费,所以先要对软件规模,工作量,开发进度等的估计,这些过程可以利用历史项目数据作为参考,完成上述步骤后再结合现有成本数据就可以进行成本估算,成本估算不仅仅是在项目开发工作之前进行,为了保证成本估算结果的准确性,在软件项目过程中也要进行成本估算过程,可以迭代进行估算过程。如下图:Comment U2: 边框准备被估主题规模估算工作量估算开发工期估算成本估算估计结论软件项目开发重

7、估算历史项目数据可用资源数据现有成本数据成本数据估算结束图 1-1 估算流程图成本估算的过程是在确定被估算主题之后,参照历史项目数据,先进行规模估算,工作量估算,开发工期估算,这些过程是后来进行成本估算的准备过程,在成本估算之后,再将实际软件项目开发成本与估算的进行比较,选择是否需要重新估算,并把实际软件项目开发结果数据做为下一次估算的历史数据。2. 规模估算衡量软件规模最常用的单位是源代码行数(LOC)和功能点数(FP) 。总体软件规模估算。LOC 是指所有的可执行的源代码行,包括可交付的工作控制语言(JCL:Job Control Language)语句、数据定义、数据类型声明、等价声明、

8、输入/输出格式声明等。规模估计的方法有 Wideband Delphi方法、功能点估计方法、PERT 估计法、类比估算法等,由于篇幅有限本文只介绍 Wideband Delphi方法和类比估算法。2.1 Wideband Delphi方法Rand公司于 1948年提出 Wideband Delphi方法,它是一种预测未来的手段,故以古希腊神谕所在的地方(Delphi)来命名,该方法最初用于军事目的,很快就被推广到其他的领域,为保证该方法的成功实施,对传统 Wideband Delphi步骤进行了扩充和细化:(1 )协调员给每位专家一份规格说明书和一张记录估计值的表格。(2 )协调员召集小组会议

9、,专家与协调员以及专家之间对估计问题进行讨论(3 )专家无记名地填写表格。(4 )协调员对专家填写在表上的估计结果进行小结(5 )协调员召集小组会议,让专家对差异很大的估计项进行讨论。(6 )专家重新无记名地填写表格,该过程要适当地重复多轮。制作本轮的估算结果表:单元 专家 1 专家 2 专家 3 最大值 最小值 平均值 偏差率 接受 最终ABCDE估算日期 第 N 轮估算结果 可接受总数 合计表 2-1-1Wideband Delphi 方法估计结果表其中偏差率的计算方法为:MAX(最大值-平均值,平均值-最大值)/平均值)100%2.2 类比估算法类比估算法又称自顶向下估算法(Top do

10、wn estimates) 。适合评估一些与历史项目在应用领域、环境和复杂度的相似的项目,通过新项目与历史项目的比较得到规模估计。类比法估计结果的精确度取决于历史项目数据的完整性和准确度,因此,用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制,对历史项目的数据分析是可信赖的。其基本步骤是:(1 )整理出项目功能列表和实现每个功能的代码行。(2 )标识出每个功能列表与历史项目的相同点和不同点,特别要注意历史项目做得不够的地方。(3 )通过步骤 1 和 2 得出各个功能的估计值。(4 )产生规模估计。软件项目中用类比法,往往还要解决可重用代码的估算问题。估算可重用代码量的最好办法就是

11、由程序员或系统分析员详细地考查已存在的代码,估算出新项目可重用的代码中需重新设计的代码百分比、需重新编码或修改的代码百分比以及需重新测试的代码百分比。根据这三个百分比,可用下面的计算公式计算等价新代码行: 等价代 码 行 =(重新 设计 %+重新 编码 %+重新 测试 %)3已有代 码 行比如:有 10,000 行代码,假定 30%需要重新设计,50% 需要重新编码,70%需要重新测试,那么其等价的代码行可以计算为:等价代码行=( 30% + 50% + 70%)/3 10,000 = 5,000。即:重用这 10000 代码相当于编写 5000 代码行的规模。当然,这 5000 行代码,并不

12、都是旧项目的,还包括新项目的部分。比如,在项目开发过程中,1 期做了三个模块,2 期又要做三个模块,但其中 2 期与 1期有部分重用的代码,根据这个方法可以估算出实际的规模。3.工作量估算根据规模估计结果,并定义了项目开发周期和裁剪项目过程后,须估计项目过程中各阶段的工作量和总工作量。目前可以参考的历史数据包括:(1 )有历史项目的准确数据;(2 )至少有一个历史项目与现有项目规模类似;(3 )现有项目将和类似的历史项目采用类似的生命周期、开发过程、开发技术和工具,类似技能和经验的项目成员。同时可以参照业界公布的经验数据。工作量的估计可采用下面的公式进行:工作量(人月)= 规模(LOC)/ 生

13、产率(LOC/人天)/ 22(天/月)参考历史项目数据中项目各阶段工作量所占百分比,可估算出各阶段工作量:各阶段工作量(人月) = 总工作量(人月) * 各阶段工作量百分比。此外还有很多基于算法模型的方法,如:Putnam 算法模型,经验估算模型等,其基本思想是: 找到软件工作量的各种成本影响因子,并判定它对工作量所产生影响的程度是可加的、乘数的还是指数的,以期得到最佳的模型算法表达形式.当某个因子只影响系统的局部时,一般说它是可加性的.例如,如果我们给系统增加源指令、功能点实体、模块、接口等,大多只会对系统产生局部的可加性的影响.当某个因子对整个系统具有全局性的影响时,我们则说它是乘数的或指

14、数性的,例如, 增加服务需求的等级或者不兼容的客户等。下面是对 Putnam 算法模型,经验估算模型的分析。3.1 Putnam 模型这是 1978 年 Putnam 提出的,一种动态多变量模型,通用的形式为: = 3(34)其中: L-源代码行数(以 LOC 计)。K-整个开发过程所花费的工作量(以人年计) 。TD-开发持续时间(以年计) 。Ck-技术状态常数,它反映 “妨碍开发进展的限制” ,取值因开发环境而异,见下表:Ck 的典型值 开发环境 开发环境举例2000 差 没有系统的开发方法,缺乏文档和复审8000 好 有合适的系统的开发方法,有充分的文档和复审11000 优 有自动的开发工

15、具和技术表 3-1-1 Ck 的典型值及开发对应环境还可以估算开发时间:TD = 3(3)143.2 经验估算模型又叫 COCOMO 模型(constructive cost model)这是由 TRW 公司开发,Boehm 提出的结构化成本估算模型。是一种精确的、易于使用的成本估算方法.COCOMO 模型主要从两个方面来构建:以源代码行(SLOC)统计的软件规模,成本驱动因子(Cost Driver) ,这些因素可以被归入产品,平台,人员和项目四个方面。在 COCOMO 模型中按项目开发的不同环境,软件开发项目的总体类型可分为三类:(1 )组织型(organic): 相对较小、较简单的软件项

16、目。开发人员对开发目标理解比较充分,与软件系统相关的工作经验丰富,对软件的使用环境很熟悉,受硬件的约束较小,程序的规模不是很大(50000 行) 。(2 )嵌入型(embedded): 要求在紧密联系的硬件、软件和操作的限制条件下运行,通常与某种复杂的硬件设备紧密结合在一起。对接口,数据结构,算法的要求高。软件规模任意。如大而复杂的事务处理系统,大型/超大型操作系统,航天用控制系统,大型指挥系统等。(3 )半独立型(semidetached):介于上述两种软件之间。规模和复杂度都属于中等或更高。最大可达 30 万行。按照项目开发的详细程度也可分为三级:基本型,中间型和详细型。所采用的计算通式为

17、:PM=aSizeEM, E=b+0.01其中:PM-以人月为单位的工作量。a-固定常数或称为 Calibration Factor 校准因子,A2.94 。Size-每一千代码行(KSLOC)计算的规模。-Effort Multiplier,工作量因子。B-常数,为 0 或 1 或其他固定值。-Scale Factor,比例因子,具体的值取决于建模等级(即基本、中等或详细)以及项目的模式(即组织型、半独立型或嵌入型) 。以下是 的参考取值范围:很低 低 正常 高 很高 极高0.70 0.85 1.00 1.15 1.30 1.65表 3-1-2 EMi 的参考取值范围4. 开发工期估算项目估

18、计的第三步是根据工作量制定项目计划,包括人员安排、工作量分解、开始和完成时间等等。可以根据自己的历史数据或行业模型决定所需的人力资源并落实到项目计划。如果没有以上信息,可以使用估计模板中的方法来进行计算:完成工作量估计后,根据现在的资源情况,确定在每个阶段投入的资源,根据相关的计算方法,计算出进度。Comment U3: 公式编辑器工期(天)=工作量(人天)(1-并行工作比例) + 工作量并行工作比例 / 投入资源(人)另外考虑开发时间时可以把学习曲线考虑进去:学习率:产量以倍数增加时工作效率以固定比率提高,这一比率成为学习率。例如:一个员工在进行一项工作第一次需要 10个工作日,第二次需要

19、8个工作日,则其学习率为 80%,当次数继续增加时,即重复 4次,可以期望第 4次工作时间为 6.4天,第八次只需要 4天。那么得到第 n次完成产出需要的时间公式为: n=1其中:Tn=第 n次完成产出所需要的时间。T1=第 1次完成产出所需要的时间。n =所完成产出的次数。r =lg(学习率) lg2=log2(学习率) 。开发 n个类似软件项目所需要的总时间 T总:总 = = = 1dx = 11n1平均开发时间为:T平均 = 11n1那么学习曲线如图:图 3-2-2 学习曲线图由于新项目与历史项目的由于在应用领域、环境和复杂度具有相似性,所有可以把学习曲线考虑进去,结合学习曲线法进行估算

20、。5. 成本估算方法成本估算是指对完成项目各项活动所必须的各种资源的成本做出的估算。估算计划活动的成本涉及估算完成每项计划活动所需的资源,包括人力资源,设备,材料,服务,设施和特殊条目,如通货膨胀准备金和应急准备金等的近似费用。在估算时需考虑估算偏差可能的原因如风险等。计划活动成本估算是针对完成计划活动所需资源的可能费用进行的量化评估。将软件项目开发过程与有形的产品进行类比,软件项目开发总成本可以分为可确定成本与变动成本,单位总成本可分为单位可确定成本与单位变动成本等,其关系如下所示:总成本=总可确定成本 +总变动成本单位总成本=单位可确定成本+ 单位变动成本Comment U4: 不对其中:

21、固定成本表示能够确定的成本,如:软件开发工具平均费用分摊,硬件资源平均费用分摊,数据库费用,团队建设费等等。软件项目开发过程成本主要为变动成本,变动成本是指不可确定的其他成本如培训费用,管理费用,差旅费等等。这与软件项目开发过程工作量与进度或开发工期有关,如: 人力成本 =工作量(以人年或人月计) 员工平均工资培训费用=开发工期 培训单价培训频率管理费用=开发工期 管理费用单价差旅费用=开发工期 平均差旅次数平均差旅单价那么可以得到总的成本为:总成本=单位总成本 =单位可确定成本 +单位变动成本=单位软件开发工具平均费用分摊+ 单位硬件资源平均费用分摊+单位人力成本 +单位培训费用 +单位管理

22、费用+单位差旅费用 +6. 总结本文主要列举了两种规模估算方法:Wideband Delphi方法和类比估算法,但是这两种方法都具有局限性,本文介绍这两种方法的目的也希望在做软件项目成本估算的时候可以结合这两种方法综合进行估算,即先用类比估算的方法划分每个功能单元,组织 Wideband Delphi估算方法小组,对每个功能单元进行估算,同时要标识出每个功能列表与历史项目的相同点和不同点,特别要注意历史项目做得不够的地方,还要解决可重用代码的估算问题。介绍了两种工作量估算模型:Putnam 模型和经验估算模型,当然 Putnam模型也可以用于软件工期估算,实际上 Putnam模型也是必须有软件

23、工期估算为前提的,经验估算模型或称为 COCOMO模型,这种模型有比较成熟的理论系统,从很多使用过 COCOMO模型的人员评价来看,这种模型也能比较准确的对工作量进行估算,但是需要考虑的因素较多。本人比较建议的做法是使用 COCOMO估算或是其他有效的估算方法,在重估算的时候可以考虑使用 Putnam模型。对于开发工期估算,除了介绍传统的估算公式外还介绍了考虑使用学习曲线的方法进行估算,由于软件项目的特殊性,对人员和技术的依赖比较大,使用学习曲线方法进行估算可以增加估算结果的准确性。当然我们最终还是要进行软件项目开发成本的估算。由于有软件规模估算,工作量估算,软件开发工期估算为前提在进行成本估算的时候还要考虑能产生成本的各个因素。同时适时的进行重估算的步骤也是有价值的。参考文献1信息系统项目管理师教程柳纯录,刘明亮等主编北京:清华大学出版社,2008.2软件成本估算方法及应用.李明树何梅等北京:中国科学院,2006 。3项目管理知识体系指南.赵菁北京:中国电子出版社,2005

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报