1、第3章软件项目成本e 3.1项目估算的挑战 3.2项目估算的基本内容e 3.3规模估算O 3.3.1 德尔菲方法o 3.3.2 类比估算法 3.4工作量估算O 3.4.1 普特纳姆模型o 3.4.2 经验估算模型o 3.4.3 功能点分析的要素o 3.4.4 功能点计算o 3.4.5 开发阶段工作量估算o 3.4.6 实施阶段工作量估算o 3.4.7 维护阶段工作量估算2 3.5开发工期估算您3.6成本估算方法O 3.6.1 咨询费o 3.6.2 建设费O 3.6.3 服务费 3.7本章小结3什么是成本估算?Table 1-AACE Cost Estimate Classification S
2、ystemPrimary CharacteristicSecondary CharacteristicESTIMATECLASSMATURITY LEVEL OF PROJECT DEFINITION DELIVERABLESExpressed as%of complete defin(t)onEND USAGETypical purpose ofMETHODOLOGYTypical estimating methodEXPECTED ACCURACY RANGETypical venation m low and highClass 50%to 2%Concept screeningCapa
3、city factored,parametric models,judgment,or analogyI:-20%to-50%H:+30%to+100%Class 41%to 15%Study or feasibilityEquipment factored or parametric modelsL:-15%to-30%H:+20%to+50%Class 310%to 40%Budget authorization or controlSemi-detailed unit costs with assembly level line itemsL:40%to-20%H:*10%to+30%C
4、lass 230%to 75%Control or bid/tenderDetailed unit cost with forced detailed take-offL:-S%to-15%H:+5%to+20%Class 165%to 100%Check estimate or bid/tenderDetailed unit cost with detailed take-offL:-3%to-10%H:+3%to+15%5软件项目开发成本估算对于一个大型的软件项目,由于项目的复杂 性及软件项目的独特性,开发成本的估算不 是一件容易的事情,需要进行一系列的估算 处理,因此,主要依靠分析和类比
5、推理的手 段进行。软件项目开发成本估算方法是一个很重要的 问题,因为管理好成本才能避免造成人力、物力和资源的浪费,而软件项目开发成本的 首要任务是先进行成本估算。O所以在软件开发前期对软件开发成本的估算就显得十分 重要。6软件项目开发成本估算Design 5%Coding 7%Unit test 8%X /System test 7%_ 二Requirements 3%:Specification 3%/X/V Maintenance67%/73.1项目估算的挑战项目成本估算(Project Cost Estimate)指根据项目的资源 需求和计划,以及各种项目资源的价格信息,估算、确定 项目
6、各种活动的成本和整个项目总成本的一项项目成本管 理工作。项目成本管理为使项目在批准的预算内,完成而对成本进 行规划、估算、预算、融资、筹资、管理、控制的各个过 程,从而确保项目在批准的预算内完工。项目成本管理过 程包括:O(1)规划成本管理:确定如何估算、预算、管理、监督、控制项目成本 的过程。O(2)估算成本:对完成项目活动所需货币资源,进行近似估算的过程。O(3)制定预算:汇总所有单个活动或工作包的估算成本,建立批准的成 本基准过程。O(4)控制成本:监督项目状态,以更新项目成本和管理成本基准变更的 过程。8Estimating;methodsHighAccuracy&Detailt CC
7、omparative EstimateEstimatexpert JudgeQuick&mentDirty、VBottom-up/Parametric EstimateEstimatePerceptionFact9估算不但对于项目计划和管理是非常有用的,而且在其他方面,也至关重要。厂家与客户之间的合同,取决于成本和时间 表的估算值。O如果没有这些估算值,那么客户也就丧失了对建议书进 行评判的基础。O合同的条款一般都会包括成本和时间表的估算值,而这 些条款一般都被认为是固定的。q_,一1t件项目?3 Key Factors Affecting Cost of Software Developme
8、ntTypes of SoftwareThe Complexity of Software ProjectsLocation of a Software Development TeamHOWTO ESTIMATE COSTS OF DEVELOPING SOFTWARE?Follow this simple equationTypesof x.Software I bsource:mangosofttechThe Complexity of Software Projects+Location of a Software Development TeamDesign 5%Coding 7%U
9、nit test 8%Xy 4 System test 7%_-I IIRequirements 3%11 Specification 3%1/f/w 1/Maintenance67%12软件成本管理工作量的估算,是任何项目的管理中最困难 和最重要的活动之一。3.1项目估算的挑战虽然说工作量和时间表的估算值都是制定计 划所必不可少的,但是,如果我们能够知道 工作量的估算值,那么时间表的估算就会变 得更加容易。所以,软件项目中的重点主要在于工作量的估算。O如果我们不能估算出执行一个项目到底需要付出多少工 作量和时间,那么我们也就不可能进行有效的项目计划 和管理。143.1项目估算的挑战估算的基本
10、活动是,以数值的形式获知正在开发 的软件的。某些特性的输入信息,然后,再利用 这些输入信息数值,来估算出项目的工作量。O 一个软件估算模型,可以精确地定义项目需要哪些数值以及应该如 何利用这些数值来计算出工作量。从一定意义上说,工作量估算模型也就是一个获 得某些输入信息(如软件特性的数值等),而后 再输出工作量估算值的函数。O软件生命周期各个阶段所做的估算和详细程度是不同的,在每次估 算中如规模、工作量等估算的先后顺序是有规律的项目估算工作的 改进,是软件过程改进的重要内容。15Software cost factors4 App Type and Complexity%PlatformsM
11、Complexity of UX/UI Design/Back-End Infrastructure and Connected APIs区 Geographic LocationN Hiring Modelupstech1617Product CostProduct Cost FormulasDirect Labor+Direct Material+Factory Overheads18PRODUCT COSTINGA product cost can be simply defined as the total amount of costs assigned to a particula
12、r product based on a specific PURPOSE of the management of the organization.DIFFERENT PURPOSE DIFFERENT PRODUCT COSTINGJ Pricing for Open Market Selling/Product Mix Decisions and Rating of Customers/Selling Products through Government Contracts/Reporting in Financial Statements/Market Penetration Pr
13、icing/Inter I nit transfers/aluing Stocks/Inventory for Insurance/Buy vs.Make Decision澹19Building an App From the Ground Up9%DevelopmentProject ManagementUIUX DesignQuality AssuranceBusiness AnalyticsFRESHCODE20软件开发成本估算主要指软件开发过程中所 花费的工作量及相应的代价。O不同与传统的工业产品,软件的成本不包括原材料和能 源的消耗,主要是人的劳动的消耗。另外,软件也没有一个明显的制
14、造过程,它 的开发成本是以一次性开发过程所花费的代 价来计算的。,因此,软件开发成本的估算Z应是从软件计 戈人需求分析、设计、编码、单元测试、集 成测试到认证测试,整个开发过程所花费的 代价作为依据的。2122涌;二 H中军空军沱茂学空空皆竺hcHcir5AJSs4、丁 HO J_ 1TAFTTFlTiTKi i TAr.23同样,软件项目开发的成本估算的过程也不是一 蹴而就的,这也许与传统的工业产品生产过程成 本估算过程相似,O但因为软件项目的开发成本主要在人力成本上,对人力成本的估算也是软 件项目开发成本估算的主要内容,而人力成本主要以工作量或以时计费所以先要对软件规模,工作量,开发进度等
15、的估 计,这些过程可以利用历史项目数据作为参考,完成上述步骤后再结合现有成本数据就可以进行 成本估算,成本估算不仅仅是在项目开发工作之 前进行,O为了保证成本估算结果的准确性,在软件项目过程中也要进行成本估算过 程,可以迭代进行估算过程。2425衡量软件规模最常用的单位O是源代码行数(Line of Code,LOG)和功能点数(Function Point,FP)。体软件规模估算。O LOC是指所有的可执行的源代码行,包括可交付的工作 控制语言(Job Control Language,JCL)语句、数据 定义、数据类型声明、等价声明、输入/输出格式声明 於-寸。/*Now how many
16、 lines of code is this?*/for(i=0;i 25CHBOTTOM UPDOOR:MATERIAL:3CHFIME:15MINSTAFF:1-6.25CHFVideoScribe35类算法基本步骤是:O(1)整理出项目功能列表和实现每个功能的代码行。O(2)标识出每个功能列表与历史项目的相同点和不同 点,特别要注意历史项目做得不够的地方。O(3)通过步骤1和2得出各个功能的估计值。o(4)产生规模估计。软件项目中用类比法,往往还要解决可重用 代码的估算问题。36类算法估算可重用代码量的最好办法就是由程序员或系 统分析员详细地考卷酵在的代码,O估算出新项目可重用的代码中需
17、重新设计的代码百分比、需重新编 码或修改的代码百分比以及需重新测试的代码百分比。根据这三个百分比力可用下面的计算公式计算等 价新代码行:O等价代码行=(重新设计+重新编码+重新测试)/3*已有代码O比如:有10000行代码,假定30%需要重新设计,50%需要重新编 码,70%需要重新测试,那么其等价的代码行可以计算为:O 等价代码行=(30%+50%+70%)/3 X 10000=5000。o即:重用这10000代码相当于编写5000代码行的规模。3734工作根据规模估计结果,并定义了项目开发周期 和裁剪项目过程后,需要目过程中各阶段的 工作量和总工作量。目前,可以参考的历史数据包括爵O(1)
18、有历史项目的准确数据;O(2)至少有一个历史项目与现有项目规模类似;O(3)现有项目将和类似的历史项目采用类似的生命周 期、开发过程、开发技术和工具,类似技能和经验的项 目成员。同时可以参照业界公布的经验数据。3834工作工作量的估计可采用下面的公式进行:O工作量(人月)=规模(LOC)/生产率(LOC/人天)/22(天/月)参考历史项目数据中各阶段工作量所占百分比,可估算出各阶段工作量:O各阶段工作量(人月)=总工作量(人月)X各阶段工作量百分比o此外还有很多基于算法模型的方法,如:Putnam算法模型,经验 估算模型等,其基本思想是,找到软件工作量的各种成本影响因子,并判定它对工作量所产生
19、影响的程度是可加的、乘数的还是指数 的,以期得到最佳的模型算法表达形式。O当某个因子只影响系统的局部时,一般说它是可加性的。393-41 普特纳姆模型这是1978年普特纳姆(L-HPumam)提出 的,一种动态多变量模型,通用的形式为:O L:源代码行数(以LOC计)。o K:整个开发过程所花费的工作量(以人年计)。o TD:开发持续时间(以年计)。o Ck:技术状态常数,它反映“妨碍开发进展的限制”40Ck的典型值及开发对应环境Ck的典型值开发环境开发环境举例2000差没有系统的开发方 法,缺乏文档和复 审8000好有合适的系统的开 发方法,有充分的 文档和复审11000优有自动的开发工具
20、和技术o经验估算模型又叫COCOMO模型(ConstructiveCOstMOdel),这是由TRW 公司开发,Boehm提出的结构化成本估算模 型,是一种精确的、易于使用的成本估算方 法。COCOMO模型主要从两个方面来构建:以 源代码行(Single Line Of Code,SLOC)统 计的软件规模,成本驱动因子(Cost Driver)?。这些因素可以被归入产品,平台,人员和项目四个方面。42342 经验估算模型 C1)组织型(Organic)官o相对较小、较简单的软件项目。开发人员对开发目标理解比较充分,与软件系统相关的工作经验丰富,对软件的使用环境很熟悉,受硬 件的约束较小,程序
21、的规模不是很大(50000行)。(2)嵌入型(Embedded):O要求在紧密联系的硬件、软件和操作的限制条件下运行,通常与某 种复杂的硬件设备紧密结合在一起。对接口,数据结构,算法的要 求高。软件规模任意。如大而复杂的事务处理系统,大型、超大型 操作系统,航天用控制系统,大型指挥系统等。(3)半独立型(Semidetached):O介于上述两种软件之间。规模和复杂度都属于中等或更高。最大可 达30万行。43 按照项目开发的详细程度也可分为三级a基 本型,中间型和详细型。所采用的计算通式 为:PM=axSizeExYEAfi,=8+0.0卜2耳.EM的参考取值范围很低低正常高很高极高0.700
22、.85 1.00 1.15 1.30 1.6545功能点分析法是从软件用户的角度来评估一 个软件系统的功能,它将软件的功能分为五 个基本要素。,其中两个表示终端用户的数据需求W内部逻 辑文件,外部接口文件。o另外三个表示用户对数据的获取处理的事务功能:用户 输入,用户输出,用户查询。46(1)内部逻辑文件(Internal Logical Files,ILF)o是一个用户可识别的逻辑相关的数据组,它在应用程序边界内,由用户输 入来维护。它可能是某个大型数据库的一部分或是一个独立的文件。(2)外部接 口文件(External Interface Files,EIFo是一个用户可识别的逻辑相关的数
23、据组,但仅仅是起参考的作用,且数据 完全存于软件边界之外,由另一个应用程序进行维护,是另一个应用程序 的内部逻辑文件。(3)用户输入(Externallnputs,EI)O来自软件外部的数据输入,可以是控制信息,也可是事务数据输入。如果 是事务数据,它必须维护一个或多个内部逻辑文件。也就是说那些最后没 有保存的中间计算结果和消息发送,都不算作数据输入单元。输入数据可 来自一个数据输入屏幕或其他应用程序。47(4)用户输出(External Outputs,EO)o是“经过处理”的数据,由程序内部输出到外部。这里“经过处理”是指其区别于用户查询数据,是将一个或 多个ILF、EIF中取出数据经过一
24、定的组合、计算、总结 后得出的输出数据。(5)用户查询(ExternalInquiries,EQ)o是一个输入输出的组合过程,从一个或多个ILF、EIF中 取出数据输出到程序外部。其中的输入过程不更新任何 ILF,输出过程不进行任何数据处理。48软件功能计算中一旦估算出应用程序中每个 功能要素的数量后,就可以将每个计数与一 个复杂度值(加权因子)相乘,最后进行合 计,算出一个初步的总的功能点数(Function Points Countr UFC)。49Function Point ModelBoundary of Measured Application50功能要素复杂度加权因子表低平均高外
25、部输入数EI346外部输出数EO457外部查询表EQ346内部逻辑文件 数ILF71015外部接口文件 数EIF571051功能要素复杂度判别表ILF(内部逻辑文件)和EIF(外部接口文件)记数据单元录 119 205 51+里 0元文件类型(用户输出)和(用户查询)数据单元1 5 61 20+91 低 低 平均。或低125低 平均高 23低6 平均高 高 4 平均平均高高 低平均高数据单元或-30 12 4EI(用户输入)14515低低低平均高平均6+平均高高52(1)记录单元类型(Record Element Type,RET)o指在ILE或EIF中,用户可识别的数据域的子集,可以通过检查
26、数据中的各种逻辑分 组来识别它们。O例如,一个客户文件,包括客户姓名、地址等个人信息,以及客户的各种信用卡和 卡号。O 一个客户一般有多张信用卡,信用卡需同客户信息相连才有意义。因此,这个客户 文件含有两个记录单元,客户信息和信用卡信息。(2)文件引用类型(File Type Referenced,FTR)o指在一个事务过程中,所引用到的各种文件,可以是内部逻辑文件,也可以是外部 接口文件。(3)数据单元类型(Data Element Type,DET)o是用户可识别的无递归,不重复的信息单元。DET是动态的,而非静态的,读自于 文件,或由FTR的数据单元创建。另外,一个DET也可是对一个事务
27、处理过程的唤 醒,或是事务的有关信息。如果DET存在递归或重复,只计算其中的一个。O如上例中的客户姓名、地址就是两个DET。在可视化编程中,用于唤醒事务处理的 添加、修改按钮,也算DET。(4)确定技术复杂度因子(Technology Complexity Factor,TCF)o算出功能点总数UFC后,还需要根据项目具体情况,对技术复杂度参数进行调整。53技术复杂度因子表序号调节参数描述1E1数据通讯(Data Communications)2E2软件性能(Performance)3E3可配置性(Heavily Used Configuration)4E4事务效率(Transaction R
28、ate)5E5实时数据输入(Online Data Entry)6E6用户界面复杂度(End User Efficiency)7E7在线升级(Online Update)8E8复杂运算(Complex Processing)9E9代码复用性(Reusability Ease)10E10安装简易性(InstallationEase)11E11操作 h 便性(Operations Ease)12E12跨平台要求(Multiple Ease)13E13可扩展性(Facilitate Change)14E14分布式数据处理(Distributed Functions)54 1.功能点估算法O该方法主要
29、是依据软件项目的功能需求来评估开发工作 量。通过分析系统需求计算项目规模(功能点 数),再乘以各阶段完成每个功能点所需要 投入的人工时(开发成本系数),就可计算 出完成项目所需要的人月数。O适用于立项阶段需求分析比较详细的项目或者用于项目 完成阶段的最终工作量估算。55开发成本系数k取值范围功能点数(FP)开发成本系数(人工时/FP)3000 3.54.03000(FP 8000 4.04.58000 4.55.056 2.任务估算法。任务估算法,是把软件项目功能分解为若干个相对独立 的任务,再分别估计完成每个任务需要的人员搭配比例 及投入时间,每个人员的工作量之和就是该任务的工作 量。最后,
30、将各个任务的工作量累加起来就得出软件项目的 总工作量。O该方法适用于立项阶段的工作量估算。57设计各个岗位人员工作量可基于以下标准计楂O(1)以程序员的工作量为标准。O(2)高级程序员的工作量,为标准工作量的1.5倍。o(3)系统分析员的工作量,为标准工作量的2.5倍。o(4)测试工程师的工作量,为标准工作量。o(5)高级测试工程师的工作量,为标准工作量的1.5倍OO(6)项目管理人员的工作量,为标准工作量的3倍。o(7)市场营销人员的工作量,为标准工作量。o(8)技术支持工程师的工作量,为标准工作量。o(9)文秘的工作量,为标准工作量的0.5倍。58某任务工作量估算表合计:60.5(人月)开
31、发阶段投入人员情况时间(月)工作量(人月)需求分析系统分析员2人22X2X2.5=10系统设计系统分析员1人21X2X 2.5=5高级程序员2人22X2X 1.5=6编码高级程序员2人12X IX 1.5=3程序员4人14X1X1=4测试测试工程师4人24X2X1=8项目管理项目管理人员1人71X7X3=21文案工作文秘1人71X7XO.5=3.559,软件项目的实施范围,因项目而异。O有些项目只实施一个单位、有些需要实施多个单位、有 些甚至需要全市、全省甚至全国实施。所以,实施阶段的费用也会有很大的差异,甚至有的项目会出现实施费用超过开发费用 的情形。60(1)实施阶段的工作量,可依据开发阶
32、段工作量、实施系 数来计算。O实施工作量(人月)=开发工作量DX实施系数So根据项目是集中式实施还是分布式实施,实施系数S的取值有所不同。o集中式实施的项目实施系数S与“用户数”相关。设。为用户数,一般情况 下:o 当Ov区 100时,s=0.2;o否则,s=0.2+(n-100)/100)Xq(四舍五入取两位小数);o q是调节因子,取值范围为:0.03g0.05,具体取值依项目实施难度而定(2)分布式实施的项目o实施系数s与“实施单位(点)数”相关。设为需要实施的单位(点)数,一般情况下:s=0.2+(n-1)XqO q是调节因子,一般取值范围为:0.084牛0.15,具体取值依项目实施难
33、度 而定。61346 实施阶段工作(3)个别项目,如果对实施有特殊要求(这些特 殊要求是一般项目中从未出现过的或有本地化开 发工作的),或者实施环境、条件、难度等方面 因素的影响,则经专业机构或者专家评估,实施 系数可以超出此范围上限的限制。(4)如果软件项目是系统集成项目中的一部分,实施时需要整体考虑,则可将实施费抽出另算。一种是将软件实施费并入到整个集成项目的实施 费用中,另一种就是在软件实施费中加入项目集 成的实施费用。62软件项目通过验收,交付使用后,需进行一 年的系统维护。维护内容包括覆运行管理“系统平台维护、应用软件维护、数据维护等。63系统后期维护g系统运行一年之后的系统维 护,
34、需另行签订系统维护合约。e为了有利于保证用户的利益和扶植软件企业,在维护工作范围不变的前提下,O如果新的维护合同的维护费用不超过上一年度维护金额 的115%,则用户应该和原开发商直接签订维护合同,否则由可进行招投标并确定新的维护合同的项目承担单 位。643.5开发工期估算项目估计的第三步,是根据工作量制定项目 计划,包括人员安排、工作量分解、开始和 完成时间等等。O可以根据自己的历史数据或行业模型决定所需的人力资 源并落实到项目计划。如果没有以上信息,可以使用估计模板中的 方法来进行计算:完成工作量估计后,根据 现在的资源情况,确定在每个阶段投入的资 源,根据相关的计算方法,计算出进度。65E
35、ffortTravel Expenses j-oTraining CostCommunication Cost and other Cost Factors663.1开发工期估;,例如;一个员工在进行一项工作第一次需要 10个工作日,第二次需要8个工作日,则其 学习率为80%,当次数继续增加时,即重复 4次,可以期望第4次工作时间为6.4天,第 八次只需要4天。67成本估算,是指对完成项目各项活动所必须 的各种资源的成本做出的估算。估算计划活动的成本,涉及估算完成每项计 划活动所需的资源,包括人力资源,设备,材料,服务,设施和特殊条目,如通货膨胀 准备金和应急准备金等的近似费用。O在估算时需考
36、虑估算偏差可能的原因如风险等。计划活 动成本估算是针对完成计划活动所需资源的可能费用进 行的量化评估。68AritaseTraditional Software Costs IcebergWhat companies see ,License Purchase z:ManagementL/HardwareInstallation&License Software license&subscription costs1 咨询费咨询费,指软件项目立项前期,请专业机构 或者专家进行技术咨询、可行性分析、需求 分析,造价评估、方案设计、项目招标代理 等方面工作所发生的费用。该部分费用可根据项目预计投入
37、的建设费按 照一定比例计取,也可以根据所投入的人月 数进行计取,此外还可以由双方协商确定。O在招标活动中,公证处对全过程进行现场公证并对采购 合同进行公证,公证费按照国家规定标准计算。7273软件开发成本估算快速指南Building an App From the Ground UpDevelopmentProject Management-UIUX DesignQuality AssuranceBusiness Analytics74收费项目收费 基数软件行业咨询取费标准基准费率()3000万4.51.50.3日75Software ConsultantThe difference betw
38、een software consultant and a senior engineer,and how to pick the best ones.Business understanding.760005 O77公证服务取费标准兽。3 m O1XO兽。22 m o oF 3Imo o0一Qg055 Imo sm o 1 5 iES5 WHEREOF,by their igoatum bekw4 the Partica ooch have approved nd exwcuud this Agrccmcc2.8功能点100a32易用性易理解性a0.07易学性a0.06易操作性a0.073可
39、靠性成熟性a0.2容错性a0.2易恢复性a0.14维护性易改变性a0.07稳定性a0.07易测试性a0.065可移植性一个环境下测试a0.2多个测试环境,测试环境数na0.2+(n-1)X0.16效率一般的效率指标al负载并发用户数W50,测al;压力试脚本数03,测试每增加50个以内用 户数或3个以下测试 脚本数,a递增0.57文档用户文档a0.1技术合同a0.05需求规格说明书a0.183调节系数t取值范围序号项目建设费D(万元)收费折扣系数(t)1D12200D0.983500D0.9641000D0.9552000D0.9365000D0.927D100000.9084验收测试费关于项
40、目验收测试,需要注意:O(1)影响项目验收测试费用的因素一个是项目的大小,另一个是所选择的测试项。被选测试项多少决定测试 费率a,项目大小决定收费调节系数L;O(2)根据项目特点针对软件各个特性进行选择测试,测试费率为所选择软件特性测试费率a各项之和。O(3)根据项目大小采取项目建设费越高费率越低原则 进行调节。O(4)项目验收测试最低收费为:8000元(不含负载压 力测试),2万元(含负载压力测试)852.工程监理费软件项目监理收费,既考虑了信息系统软件 项目的特点,又参照了其他监理行业的收 费标准、收费方式。一般,可按照项目建设 费(或合同价格)的一定百分比取费,其取 费比率,主要根据项目
41、的规模、阶段、内容、复杂程度及监理成本等多方面因素综合计 算。计算公式如下:O监理费=建设费。x基本费率ax地域调整系数dx工期 调整系数e86监理基本费率a取值范围7序号项目建设费D(万 元)费率a(%)1D122200D93500D741000D652000D565000D4D 10000 387地域凋整系数限值范围序号地域范围地域调整系数1集中实施12地市范围1-1.23全省范围1.2-1.54全国范围L5288工期调整系数e取值范围序号|工程工期T(无J工期调整系数e3 T2 e1.4893.数据处理费项目中如含有大量档案、数据需要录入、处 理,则需要考虑相应的数据处理服务费。收 费标
42、准可以根据所需要处理的资料的页数核 计收费。一般情况下单纯的数据录入,收费标准为:0.30.5元/页。特殊要求的数据处理可依据 合同约定。904,附加费如果用户需要软件开发商提交源代码,则必 须支付相应的知识产权费;如果所开发的项 目是涉密项目,则需额外再支付给软件开发 商保密费。O这些费用的计算均与软件开发工作量相关,也就是与项 目建设费相关,可按照项目建设费的一定比例计取,或 者双方协商。915.需求变更估算由于软件开发过程中,用户的需求有可能不 断变化,从而导致开发工作量的变化,费用 追加。O故在立项阶段即要请专业机构或者专家对需求变更的风 险性进行评估,以便在做项目预算时留出足够应付需
43、求 变更的经费。项目需求变更一般发生在项目建设过程中,立项阶段的 咨询服务不受需求变化的影响。但验收测试和工程监理 工作量会随着需求变化而加大,所以需求变更费为:需求变更费=(建设费+验收测试费+监理 费)X需求变更风险系数f925.需求变更估算 风险系数何依据以下因素确定。O(1)项目的成熟度:如果是新项目,则开发过程中出现需求变更 的可能性很大,需求变更幅度大,风险系数就高;如果是成熟项目,或者已经有过案例的项目,需求变化的可能性较小,即使有变化,幅度也不会太高,则风险系数就低。O(2)项目的规模大小:如果项目规模小,需求容易确定,变更概 率就小,反之就大;O(3)用户业务的稳定性和管理的
44、规范性:用户单位业务的变化和 业务流程的调整,都有可能带来开发过程中需求的变化。前期项目需求分析、系统设计的规范性和完善性O前期的需求分析是否全面到位、系统设计的是否规范和细致,会影 响到开发过程的需求变化率。93SizeOverview of Software CostEstimationRisk analysisProductivityRisksGross HoursMeasuresAdjustmentsEffort hours Q TESTORIGENConsequenses94软件成本估I=J95PO UHflT96本章主要列举了两种规模估算方法:德尔菲 方法和类比估算法,但是,这两种
45、方法都具 有局限性介绍这两种方法的目的也希望在做软件项目 成本估算的时候可以结合这两种方法综合进 行估算,即先用类比估算的方法划分每个功 能单元,组织德尔菲估算方法小组O对每个功能单元进行估算,同时要标识出每个功能列表 与历史项目的相同点和不同点,特别要注意历史项目做 得不够的地方,还要解决可重用代码的估算问题。97介绍了两种工作量估算模型,Putnam模型和 经验估算模型。O当然,Putnam模型也可以用于软件工期估算,实际上 Putnam模型也是必须有软件工期估算为前提的,经验 估算模型或称为COCOMO模型这种模型有比较成熟的理论系统,从很多使 用过COCOMO模型的人员评价来看,这种
46、模型也能比较准确的对工作量进行估算,但 是需要考虑的因素较多。O建议的做法,是使用COCOMO估算或是其他有效的估 算方法,在重估算的时候可以考虑使用Putnam模型。98对于开发工期估算,除了介绍传统的估算公 式外还介绍了考虑使用学习曲线的方法进行 估算,由于软件项目的特殊性,对人员和技 术的依赖比较大,使用学习曲线方法进行估 算可以增加估算结果的准确性。最终,要进行软件项目开发成本的估算。由于有软件规 模估算,工作量估算,软件开发工期估算为前提在进行 成本估算的时候还要考虑能产生成本的各个因素。同时 适时的进行重估算的步骤也是有价值的。99Softwa re development costs100SOFTWARE DEVELOPMENT COST ESTIMATING PROCESS101