软件开发项目计算方法()广东软件行业协会二○○六年八月目录1前言.........................................................目的.......................................................软件项目建设类别...........................................适用范围...................................................名词解释...................................................2软件项目费用概算.............................................项目阶段划分................................................各阶段费用构成.............................................项目费用概算...............................................3各项费用取费依据.............................................咨询费.....................................................建设费.....................................................服务费.....................................................附加费.....................................................需求变更估算................................................4工作量估算方法...............................................开发阶段工作量估算.........................................实施阶段工作量估算.........................................维护阶段工作量估算.........................................5人月成本估算方法.............................................6其他事项.....................................................最终合同金额确定...........................................付款方式...................................................评估机构...................................................软件项目规模功能点估算方法......................................1功能点估算流程............................................2功能点分析的要素..........................................3功能点计算(初步值UFC)..................................4确定技术复杂度因子TCF....................................5计算调节后的功能点数FP...................................参考文献........................................................1前言目的规范软件市场行为,维护价格公平竞争,同时为软件项目建设经费概算提供科学可信的依据。软件项目建设类别软件产业发展到现今阶段,技术已经很成熟,产品也已经很丰富,同时由于开发工具和操作系统平台的可选择性,软件项目出现了多样化的趋势。同样是软件项目,完成途径和开发手段不同,其费用也会存在很大差异。不同类别的软件项目,其费用构成和概算方法也不同。根据项目建设要求和方式,一般分为以下几类:新开发项目:从项目的需求分析开始直至产品完成正式交付使用,其工作覆盖软件产品的分析、设计、测试、实施、运行维护各阶段。二次开发:在现有产品的基础上进行提升和改造。软件移植:已有产品从一个操作系统平台转移到另一个操作系统平台,或者从原来的运行环境切换到另一个新的运行环境所需要进行的调整和变动。产品集成:将多个现有软件产品构件整合在一起,组装成比较复杂的或者更加完整的产品。适用范围本指南适用于应用类定制软件的新开发项目,项目应覆盖软件开发全过程(包括立项可行性分析,需求分析、编码实现、安装实施、运行维护各个阶段工作)。其中人月成本的计算方法也适用于其他类型的项目。本指南是站在行业的角度,去评估一个应用软件项目的开发费用应该是多少,而不是站在开发商的角度去计算某企业开发软件时的成本支出是多少。虽然这两者之间会有关联。对于同一软件开发项目,不同的开发商由于各自的技术、能力、管理、积累以及其他方面的因素,其实际成本支出会有较大差异。而这不在本指南考虑之内。名词解释应用软件:是指针对特定领域开发,为特定目的服务的一类软件。软件开发:指从软件项目启动到项目实施前这一时间段的工作。其内容包括详细设计、编码、测试、系统调试等方面的工作。系统实施:指软件项目开发完毕进行安装到项目正式验收这一时间段的工作。其内容包括系统安装、个性化配置、用户培训等方面的工作,但不包括各实施点的本地化开发工作。运行维护:指从软件项目正式验收到合同规定的项目维护期结束的这一时间段的工作。其内容包括在此期间所需要提供的原系统完善性修改和服务等工作(不包括新增需求和原功能的重大变更)。如:运行管理、系统平台维护、应用软件维护、数据维护等验收测试:确定项目是否符合其验收准则,使客户能确定是否接收此项目的正式测试。功能点(FP):功能点是对软件功能和大小的间接度量单位,一般通过必须和用户交互的情况的数目来测算程序工作量的大小。功能点分析法是目前国际上软件行业普遍接受的软件项目规模度量模型。成本系数:成本系数是指完成某个功能点(FP)的规定活动所需要投入的人工时,其单位为:人工时/FP。根据软件项目建设过程的各阶段工作,可分为:开发成本系数、实施成本系数、维护成本系数。工作量:工作量的计算是按一个开发工作人员在一个月内(日历中的月,即包括国家规定的节假日)能完成的工作量为单位,也就是通常所讲的“人月”。人月成本:指软件企业一个月平均需要的所有开销(包括员工成本、国家税收、企业利润、管理成本和质量成本等)摊分到各个员工头上的金额。平均工资:指软件企业支付给所有员工的工资总和除以企业员工人数得到的工资数。2软件项目费用概算项目阶段划分软件项目全过程可分为:立项阶段、建设阶段、完成阶段。不同阶段工作重点不同。为保证软件项目开发质量,避免因需求不确定,或者频繁更改所造成的成本上升,同时也利于项目费用概算,软件项目建设最好采取“总体规划、分段实施”的原则。立项阶段:可委托专业技术咨询机构或者专家进行项目的可行性分析,需求分析;根据需求分析,进行系统设计;根据需求分析、系统设计,计算工作量,估算项目建设费(预算);根据项目概算进行招投标,确定软件开发商,签订建设合同。建设阶段:由软件开发商根据前期需求分析和系统设计,进行编码实现,并负责安装实施、运行维护等工作。项目实施完毕,需委托第三方测试机构进行验收测试。完成阶段:项目完成后,在需求变更较大的情形下,可委托专业技术机构根据实际工作量估算项目建设费(决算),项目结束。各阶段费用构成各阶段的所有费用可分为四类:咨询费:包括立项阶段的可行性分析,需求分析、系统设计、估价、招投标等方面的工作所需要支出的费用。服务费:第三方测试机构的验收测试费、监理单位的监理费、进行数据扫描录入等方面工作的数据处理费等。建设费:软件开发商在开发、实施、维护等方面工作的费用。其中包括:软件开发费、系统实施费、运行维护费。附加费:针对具有特殊性质的软件开发项目。如:若需要提交源程序,必须增加知识产权费;若涉及保密方面的工作,则须增加保密费用等。此外,由于软件项目建设过程中,需求变更不可避免,因而还需要考虑到因需求变更导致工作量加大带来的费用。软件项目费用构成如图1所示。图1软件项目费用构成可行性分析咨询费需求分析系统设计估价招标代理技术咨项目费用概算依上所述,软件项目从立项到结束,项目费用为:项目概算=咨询费+建设费+服务费(+需求变更费+附加费)=咨询费+开发费+实施费+维护费+验收测试费+监理费(+需求变更费+附加费)3各项费用取费依据咨询费指软件项目立项前期,请专业机构或者专家进行技术咨询、可行性分析、需求分析,造价评估、方案设计、项目招标代理等方面工作所发生的费用。该部分费用可根据项目预计投入的建设费按照一定比例计取,也可以根据所投入的人月数进行计取,此外还可以由双方协商确定。在招标活动中,公证处对全过程进行现场公证并对采购合同进行公证,公证费按照国家规定标准计算。表1软件行业咨询取费标准收费项目收费基数基准费率(%)≤100万101-300万301-500万501-1000万1001-3000万3000万需求分析、可行性分析、系统设计等项目预投入费估价项目预投入费招标代理中标金额技术咨询每人每日1000元~1500元表2公证服务取费标准标的额m(万元)≤22m≤55m≤1010m≤5050m≤100100m≤200200m≤300300m≤400400费率(%)1注:1)按表1计费不足1000元的,按1000元收费。2)按表2计费不足200元的,按200元收费。3)技术咨询按耗用工时(日)计费,为完成委托任务发生的差旅、交通费由委托方另行支付。4)招标代理收费和公证服务收费按差额定率累进法计算。如某招标代理业务中标金额为600万元,计算招标代理费如下:100万元*%=1万元(300-100)万元*%=万元(500-300)万元*%=万元(600-500)万元*%=万元则合计收费:1+++=万元建设费建设费包括支付给软件开发商的进行软件开发、实施、维护等方面工作的费用。主要依据工作量(完成该项目需要投入的人力,以人月度量)和人月成本进行估算。建设费=开发费+实施费+运行维护费=(开发工作量+实施工作量+运行维护工作量)×人月成本服务费验收测试费软件项目验收是一个运行环境复杂、技术难度较高、评价体系抽象的过程。该项目验收除经过专家评审外,还应进行相应验收测试,只有两者结合才能为信息化项目验收和鉴定提供定性、定量的科学依据,才能做出较为客观准确的验收和鉴定结论。软件项目的验收测试是根据项目的特点(功能、技术需求和大小等)以及项目投入,按照评价软件质量的功能性、易用性、可靠性、可维护性、可移植性、效率和文档等7个特性进行特性裁减,分为功能确认测试和验收测试。1)功能确认测试项目对象:省、市级信息化建设项目包括电子政务建设项目验收,各种渠道申报的与软件相关的科技项目的验收和科技成果鉴定项目。测试内容:根据申报或鉴定合同的技术条款和软件操作手册及被测软件运行确定测试内容,一般只覆盖软件的功能性、易用性和文档。主要判断被测系统是否完成合同要求的功能及相关特性。收费标准:8000-10000元。2)项目验收测试项目对象:各类信息化建设项目包括电子政务建设项目应用发布之前的验收,各种渠道申报的与软件相关的科技项目的验收和科技成果的鉴定项目,只要用户需求和合同中的条款覆盖效率和可移植性等特性要求的项目。测试内容:在模拟或实际环境下测试被测系统是否