软件开发项目概算指南
(V1.0)
广东软件行业协会 二○○七年八月
目 录
1
前言 . .......................................................................................................................................................... 2 1.1 目的 . .................................................................................................................................................. 2 1.2 软件项目建设类别 ........................................................................................................................... 2 1.3 适用范围 . .......................................................................................................................................... 3 1.4 名词解释 . .......................................................................................................................................... 3 2 软件项目费用概算 . .................................................................................................................................. 4
2.1项目阶段划分 . ................................................................................................................................... 4 2.2 各阶段费用构成 . .............................................................................................................................. 5 2.3 项目费用概算 . .................................................................................................................................. 6 3 各项费用取费依据 . .................................................................................................................................. 7
3.1 咨询费 . .............................................................................................................................................. 7 3.2 建设费 . .............................................................................................................................................. 8 3.3 服务费 . .............................................................................................................................................. 8 3.4 附加费 . ............................................................................................................................................ 12 3.5需求变更估算 . ................................................................................................................................. 12 4 工作量估算方法 . .................................................................................................................................... 13
4.1 开发阶段工作量估算 ..................................................................................................................... 13 4.2 实施阶段工作量估算 ..................................................................................................................... 16 4.3 维护阶段工作量估算 ..................................................................................................................... 17 5 人月成本估算方法 . ................................................................................................................................ 18 6 其他事项 . ................................................................................................................................................ 20
6.1 最终合同金额确定 ......................................................................................................................... 20 6.2 付款方式 . ........................................................................................................................................ 20 6.3 评估机构 . ........................................................................................................................................ 20 软件项目规模功能点估算方法 . .................................................................................................................... 21
1 功能点估算流程 . ................................................................................................................................ 21 2 功能点分析的要素 . ............................................................................................................................ 22 3 功能点计算(初步值UFC ) .............................................................................................................. 23 4 确定技术复杂度因子TCF .................................................................................................................. 24 5 计算调节后的功能点数FP ................................................................................................................ 25
1 前言
1.1 目的
规范软件市场行为,维护价格公平竞争,同时为软件项目建设经费概算提供科学可信的依据。
1.2 软件项目建设类别
软件产业发展到现今阶段,技术已经很成熟,产品也已经很丰富,同时由于开发工具和操作系统平台的可选择性,软件项目出现了多样化的趋势。同样是软件项目,完成途径和开发手段不同,其费用也会存在很大差异。不同类别的软件项目,其费用构成和概算方法也不同。根据项目建设要求和方式,一般分为以下几类:
新开发项目:从项目的需求分析开始直至产品完成正式交付使用,其工
作覆盖软件产品的分析、设计、测试、实施、运行维护各阶段。
二次开发:在现有产品的基础上进行提升和改造。
软件移植:已有产品从一个操作系统平台转移到另一个操作系统平
台,或者从原来的运行环境切换到另一个新的运行环境所需要进行的调整和变动。
产品集成:将多个现有软件产品构件整合在一起,组装成比较复杂的
或者更加完整的产品。
1.3 适用范围
本指南适用于软件项目在招标投标前的费用概算,主要适用于应用类定制软件的新开发项目,项目应覆盖软件开发全过程(包括立项可行性分析,需求分析、编码实现、安装实施、运行维护各个阶段工作)。其中人月成本的计算方法也适用于其他类型的项目。
本指南是站在行业的角度,去评估一个应用软件项目的开发费用应该是多少,而不是站在开发商的角度去计算某企业开发软件时的成本支出是多少。虽然这两者之间会有关联。
对于同一软件开发项目,不同的开发商由于各自的技术、能力、管理、积累以及其他方面的因素,其实际成本支出会有较大差异。而这不在本指南考虑之内。
1.4 名词解释
应用软件:是指针对特定领域开发,为特定目的服务的一类软件。 软件开发: 指从软件项目启动到项目实施前这一时间段的工作。其中内容
包括详细需求分析、详细设计、编码、测试、系统调试等方面的工作。
系统实施:指软件项目开发完毕进行安装到项目正式验收这一时间段的工
作。其内容包括系统安装、个性化配臵、用户培训等方面的工作,但不包括各实施点的本地化开发工作。
运行维护:指从软件项目正式验收到合同规定的项目维护期结束的这一时间
段的工作。其内容包括在此期间所需要提供的原系统完善性修改和服务等工作(不包括新增需求和原功能的重大变更)。如:运
行管理、系统平台维护、应用软件维护、数据维护等
验收测试:确定项目是否符合其验收准则,使客户能确定是否接收此项目的
正式测试。
功能点(FP):功能点是对软件功能和大小的间接度量单位,一般通过必须和
用户交互的情况的数目来测算程序工作量的大小。
成本系数:成本系数是指完成某个功能点(FP )的规定活动所需要投入的人
工时,其单位为:人工时/FP。根据软件项目建设过程的各阶段工作,可分为:开发成本系数、实施成本系数、维护成本系数。
工作量:工作量的计算是按一个开发工作人员在一个月内(日历中的月,
即包括国家规定的节假日)能完成的工作量为单位,也就是通常所讲的“人月”。
人月成本:指软件企业一个月平均需要的所有开销(包括员工成本、国家税
收、企业利润、管理成本和质量成本等)摊分到各个员工头上的金额。
平均工资:指软件企业支付给所有员工的工资总和除以企业员工人数得到的
工资数。
2 软件项目费用概算
2.1项目阶段划分
软件项目全过程可分为:立项阶段、建设阶段、完成阶段。不同阶段工作重点不同。为保证软件项目开发质量,避免因需求不确定,或者频繁更改所造成的成本上升,同时也利于项目费用概算,软件项目建设最好采取“总
体规划、分段实施”的原则。
立项阶段:可委托专业技术咨询机构或者专家进行项目的可行性分析,需求分析;根据需求分析,进行系统设计;根据需求分析、系统设计,计算工作量,估算项目建设费(预算);根据项目概算进行招投标,确定软件开发商,签订建设合同。
建设阶段:由软件开发商根据前期需求分析和系统设计,进行编码实现,并负责安装实施、运行维护等工作。项目实施完毕,需委托第三方测试机构进行验收测试。
完成阶段:项目完成后,在需求变更较大的情形下,可委托专业技术机构根据实际工作量估算项目建设费(决算),项目结束。
2.2 各阶段费用构成
各阶段的所有费用可分为四类:
咨询费:包括立项阶段的可行性分析,需求分析、系统设计、估价、招
投标等方面的工作所需要支出的费用。
服务费:第三方测试机构的验收测试费、监理单位的监理费、进行数据
扫描录入等方面工作的数据处理费等。
建设费:软件开发商在开发、实施、维护等方面工作的费用。其中包括:
软件开发费、系统实施费、运行维护费。
附加费:针对具有特殊性质的软件开发项目。如:若需要提交源程序,
必须增加知识产权费;若涉及保密方面的工作,则须增加保密费用等。
此外,由于软件项目建设过程中,需求变更不可避免,因而还需要考虑
到因需求变更导致工作量加大带来的费用。软件项目费用构成如图1所示。
软件项目费用构成
咨询费
可行性分析 需求分析 系统设计 估价 招标代理 技术咨询
建设费
标准符合性检测 开发费 实施费
服务费
维护费 测试费 监理费 数据处理
2.3 项目费用概算
依上所述,软件项目从立项到结束,项目费用为:
项目概算 = 咨询费+建设费+服务费(+需求变更费+附加费) = 咨询费+开发费+实施费+维护费+验收测试费+监理费 (+需求变更费+附加费)
需求变更费 附加费
培训费
知识产权保护费
保密费 其它
图1 软件项目费用构成
3 各项费用取费依据
3.1 咨询费
指软件项目立项前期,请专业机构或者专家进行技术咨询、可行性分析、需求分析,造价评估、方案设计、项目招标代理等方面工作所发生的费用。该部分费用可根据项目预计投入的建设费按照一定比例计取,也可以根据所投入的人月数进行计取,此外还可以由双方协商确定。
在招标活动中,公证处对全过程进行现场公证并对采购合同进行公证,公证费按照国家规定标准计算。
表1 软件行业咨询取费标准
表2 公证服务取费标准
注:
1) 按表1计费不足1000元的,按1000元收费。 2) 按表2计费不足200元的,按200元收费。
3) 技术咨询按耗用工时(日)计费,为完成委托任务发生的差旅、交通费由委托方另行支付。 4) 招标代理收费和公证服务收费按差额定率累进法计算。
如某招标代理业务中标金额为600万元,计算招标代理费如下: 100万元*1.0% = 1万元
(300-100)万元*0.8% = 1.6万元 (500-300)万元*0.7% = 1.4万元 (600-500)万元*0.55% = 0.55万元 则合计收费:1 + 1.6 + 1.4 + 0.55 = 4.55万元
3.2 建设费
建设费包括支付给软件开发商的进行软件开发、实施、维护等方面工作的费用。主要依据工作量(完成该项目需要投入的人力,以人月度量)和人月成本进行估算。
建设费 = 开发费+实施费+运行维护费
= (开发工作量+实施工作量+运行维护工作量)× 人月成本
3.3 服务费
3.3.1 验收测试费
软件项目验收是一个运行环境复杂、技术难度较高、评价体系抽象的过程。该项目验收除经过专家评审外,还应进行相应第三方验收测试,只有两者结合才能为信息化项目验收和鉴定提供定性、定量的科学依据,才能做出较为客观准确的验收和鉴定结论。软件项目的验收测试是根据项目的特点(功能、技术需求和大小等)、相关标准和规范要求以及项目投入,按照评价软件质量的功能性、易用性、可靠性、可维护性、可移植性、效率和文档等7个特性进行相应裁减,分为功能确认测试和验收测试。 1)功能确认测试
项目对象:省、市级信息化建设项目包括电子政务建设项目验收,各种渠道申报的与软件相关的科技项目的验收和科技成果鉴定项目。
测试内容:根据申报或鉴定合同的技术条款和软件操作手册及被测软件运行确定测试内容,一般只覆盖软件的功能性、易用性和文档。主要判断被测系统是否完成合同要求的功能及相关特性。
收费标准:8000-30000元。
2)项目验收测试
项目对象:各类信息化建设项目包括电子政务建设项目应用发布之前的验收,各种渠道申报的与软件相关的科技项目的验收和科技成果的鉴定项目,只要用户需求和合同中的条款覆盖效率和可移植性等特性要求的项目。
测试内容:在模拟或实际环境下测试被测系统是否实现了用户需求,是否达到了国家标准的相关要求。依据用户需求分析、合同的技术条款、国家标准的特性要求、软件操作手册和被测软件运行确定测试内容。
收费标准:验收测试费 = 建设费D*各测试项费率之和*调节系数t 各测试项的费率及收费调节系数取值如表3、表4所示。
表3 验收测试项费率表
表4 调节系数t 取值范围
注:
1)影响项目验收测试费用的因素一个是项目的大小,另一个是所选择的测试项。被选测试项多少决定测试费率a ,项目大小决定收费调节系数L ;
2)根据项目特点针对软件各个特性进行选择测试,测试费率为所选择软件特性测试费率a 各项之和。 3)根据项目大小采取项目建设费越高费率越低原则进行调节。 4)项目验收测试最低收费为: 8000元(不含负载压力测试)
2万元(含负载压力测试)
3.3.2 工程监理费
软件项目监理收费既考虑了信息系统软件项目的特点,又参照了其它监理行业的收费标准、收费方式。一般可按照项目建设费(或合同价格) 的一定百分比取费。其取费比率主要根据项目的规模、阶段、内容、复杂程度及监理成本等多方面因素综合计算。计算公式如下:
监理费 = 建设费D*基本费率a*地域调整系数d*工期调整系数e 1)基本费率a 根据项目建设费的规模进行调整。取值范围如下:
表5 监理基本费率a 取值范围
2)鉴于软件项目实施时分布的地域会有所不同,因此,监理的费率应在基本费率的基础上考虑地域的因素。地域调整系数d 取值如下:
表6 地域凋整系数d 取值范围
3)鉴于软件项目工期长短不一,因此,监理的费率应在监理的基本费率基础上考虑工期的因素。工期越长,系数越大。工期调整系数e 如下:
表
7 工期调整系数e 取值范围
4)其他
对于非监理原因造成工程延期而产生的监理附加工作,监理单位有权获得监理附加报酬。
监理附加报酬率 = 监理费*附加工作月数/合同规定月数。
对于项目结束后的维护,其监理取费由用户单位和监理单位协商解决。 本参考标准未作规定的,可参考国家相关标准。 3.3.3 数据处理费
项目中如含有大量档案、数据需要录入、处理,则需要考虑相应的数据处理服务费。收费标准可以根据所需要处理的资料的页数核计收费。
一般情况下单纯的数据录入,收费标准为:0.3~0.5元/页。特殊要求的数据处理可依据合同约定。
3.3.4 项目培训费
项目培训费是指软件开发项目验收后,对建设方进行培训产生的费用,取费比率可由双方协商决定。
3.4 附加费
如果用户需要软件开发商提交源代码,则必须支付相应的知识产权费;如果所开发的项目是涉密项目,则需额外再支付给软件开发商保密费。这些费用的计算均与软件开发工作量相关,也就是与项目建设费相关,可按照项目建设费的一定比例计取,或者双方协商。
3.5需求变更估算
由于软件开发过程中,用户的需求有可能不断变化,从而导致开发工作量的变化,费用追加。故在立项阶段即要请专业机构或者专家对需求变更的风险性进行评估,以便在做项目预算时留出足够应付需求变更的经费。
项目需求变更一般发生在项目建设过程中,立项阶段的咨询服务不受需求变化的影响。但验收测试和工程监理工作量会随着需求变化而加大,所以需求变更费为:
需求变更费 =(建设费+验收测试费+监理费)* 需求变更风险系数f 风险系数f 可依据以下因素确定:
1) 项目的成熟度:如果是新项目,则开发过程中出现需求变更的可能性很大,且需求变更幅度大,风险系数就高;如果是成熟项目,或者已经有过案例的项目,则需求变化的可能性较小,即使有变化,幅度也不会太高,则风险系数就低。
2) 项目的规模大小:如果项目规模小,需求容易确定,变更几率就小,反之就大;
3) 用户业务的稳定性和管理的规范性:用户单位业务的变化和业务流程的调整,都有可能带来开发过程中需求的变化。
4) 前期项目需求分析、系统设计的规范性和完善性:前期的需求分析是否全面到位、系统设计的是否规范和细致,会影响到开发过程的需求变化率。
因需求变更而追加的费用一般不能超过项目概算的40%。如果由于需求发生巨大变更而导致需求变更费用大幅增加,软件开发商需要及时向用户方提出申请,由专家进行评估后决定是终止需求的变更或续签新合同。
4 工作量估算方法
工作量指在软件项目建设过程中需要投入的人力和时间,一般用人月数进行度量。项目建设阶段一般可分为:开发阶段、实施阶段、运行维护阶段。故在工作量需分阶段进行估算。
工作量=开发工作量+实施工作量+维护工作量
另:由于在软件项目开发过程中,因需求变更导致工作量改变的情形不可避免,故可分别在立项阶段进行工作量预算,在项目完成阶段进行工作量核算。
4.1 开发阶段工作量估算
开发工作量是计算实施阶段和维护阶段工作量的基础。主要有两种估算方法,实际操作中,可采用其中的一种,或将两种估算方法结合起来使用。
4.1.1功能点估算法
该方法主要是依据软件项目的功能需求来评估开发工作量。通过分析系统需求计算项目规模(功能点数),再乘以各阶段完成每个功能点所需要投入的人工时(开发成本系数),就可计算出完成项目所需要的人月数。适用于立项阶段需求分析比较详细的项目或者用于项目完成阶段的最终工作量估算。
开发工作量D (人月)= (项目功能点FP*开发成本系数k/H/W) 其中H 是指国家规定的一天工作时数,W 指一个月工作天数。 功能点FP 的估算详见附录—软件项目功能点估算法。
开发成本系数k 的大小主要是考虑项目的非技术难度,如开发周期、协调难度、业务的复杂程度、需求的不确定性等因素。根据对实际数据的测算,开发成本系数k 取值范围一般为:
表8 开发成本系数k 取值范围
针对个别项目,如果有特殊情况(如某些用户业务的特殊要求是一般项目中从未出现过的、开发人员需要到用户现场开发等),则经专业咨询机构或者专家评估,开发成本系数可以超出此范围上限的限制。 4.1.2 任务估算法
任务估算法是把软件项目功能分解为若干任务,按自上而下逐层细分方法,将各任务分解至若干密不可分的子任务,对每项子任务在软件开发过程
中的设计、编码、调试各阶段工作按比例分配人员及开发时间,每个人员的工作量之和就是该任务的工作量。最后将各个任务的工作量进行累加,即得到软件项目的总工作量。该方法适用于立项阶段的工作量估算。
依据软件工程的概念、国内软件开发行业的惯例及经验值,根据不同任务,软件开发工作可分为:设计、编码、测试。
设计各个岗位人员工作量可基于以下标准计算: (1) 以程序员的工作量为基准工作量;
(2) 高级程序员的工作量为基准工作量的1.5倍; (3) 系统分析员的工作量为基准工作量的2.5倍; (4) 测试工程师的工作量为基准工作量;
(5) 高级测试工程师的工作量为基准工作量的1.5倍; (6) 项目管理人员的工作量为基准工作量的3倍; (7) 市场营销人员的工作量为基准工作量; (8) 技术支持工程师的工作量为基准工作量; (9) 文秘的工作量为基准工作量的0.5倍;
例如:完成某个任务的人员投入和时间需求如表9,则其工作量为60.5 人月。
表9 某任务工作量估算表
4.2 实施阶段工作量估算
软件项目的实施范围因项目而异(有些项目只实施一个单位、有些需要实施多个单位、有些甚至需要全市、全省甚至全国实施),所以实施阶段的费用也会有很大的差异, 甚至有的项目会出现实施费用超过开发费用的情形。
实施阶段的工作量可依据开发阶段工作量、实施系数来计算。 实施工作量(人月)= 开发工作量D*实施系数s
根据项目是集中式实施还是分布式实施,实施系数s 的取值有所不同。 1) 集中式实施的项目
实施系数s 与“用户数”相关。设n 为用户数,一般情况下: 当 0
否则,s=0.2 +((n-100)/100)*q(四舍五入取两位小数); q 是调节因子,取值范围为:0.03≤q ≤0.05,具体取值依项目实施难度而定。
2) 分布式实施的项目
实施系数s 与“实施单位(点)数”相关。设n 为需要实施的单位(点)数,一般情况下:
s =0.2 +(n - 1)* q
q 是调节因子, 一般取值范围为:0.08≤q ≤0.15,具体取值依项目实施难度而定。
3) 个别项目,如果对实施有特殊要求(这些特殊要求是一般项目中从
未出现过的或有本地化开发工作的),或者实施环境、条件、难度等方面因素的影响,则经专业机构或者专家评估,实施系数可以超出此范围上限的限制。
4) 如果软件项目是系统集成项目中的一部分,实施时需要整体考虑,则可将实施费抽出另算。一种是将软件实施费并入到整个集成项目的实施费用中,另一种就是在软件实施费中加入项目集成的实施费用。
4.3 维护阶段工作量估算
软件项目通过验收, 交付使用后,需进行一年的系统维护。维护内容包括:运行管理、系统平台维护、应用软件维护、数据维护等。根据不同的用户要求,系统维护服务可分为以下两种情形: A 级
软件企业派出技术人员常驻用户处,解决日常运行中发生的问题。则其工作量由派驻人员的数目和派驻的时间决定。
软件(系统)维护工作量 = 派驻的人员数*时间(月) B 级
软件企业在国家规定的正常工作时间,按双方约定的条件和时间到达现场,且每月(或定期)派技术人员到现场进行软件(系统)性能调试,使之运行处于良好状态。则B 级的维护工作所需工作量依据开发工作量、实施工作量、维护系数来计算。
运行维护工作量(人月) = (开发工作量+实施工作量)*维护系数w = (开发工作量+开发工作量*实施系数s )*维护系数w
= D*(1+s)*w
维护系数w 取值范围为0.15-0.20,具体取值依项目维护难度而定。 针对个别项目,如果对维护有特殊要求(这些特殊要求是一般项目中从未出现过的),则经专业机构或者专家评估,维护成本系数可以不受此限制。
备注:
系统后期维护:系统运行一年之后的系统维护,需另行签订系统维护合约。为了有利于保证用户的利益和扶植软件企业,在维护工作范围不变的前提下,如果新维护合同的维护费用不超过上一年度维护金额的115%,则用户应该和原开发商直接签订维护合同,否则由可进行招投标并确定新维护合同的项目承担单位。
5 人月成本估算方法
软件开发项目成本计算中应包括软件项目在开发过程中所耗费的各项费用,包括从设计阶段到测试完毕交付用户使用之间所发生的工资费、材料费、外协费、试验费、固定资产使用费、交通费、管理费等。一般用人月成本作为度量指标。
人月成本是指软件企业一个月平均需要的所有成本开销(包括工资、奖金、福利、办公成本、国家各种税费、管理费用等等)及软件企业合理利润的总和,除以企业员工人数。其成本开销主要包括以下方面:
1)工资:指软件企业需要支付给软件开发人员的工资的平均值,设该值为B 。
2)国家规定的福利:按照国家政策的缴费基数缴纳的职工福利,其中公积金8%~20%(此处按8%计),医疗保险金12%,养老金22%,失业金2%(即通常所说的四金),另外还有按工资总额计征的工伤保证金0.5%,生育保证金0.5%,残疾基金1.6%,工会基金1%,累计为47.6%。故该项成本为0.476B 。
3)奖金及各项物质奖励:指企业支付给企业的奖金及过年过节的一些
物质奖励和基本福利。根据经验及广东省软件行业情况,该项成本约为0.20B 。
4)办公成本:包括办公场地租赁费、水电费、差旅费、企业为项目顺利运作所支付的其他费用如市场营销费等各项。根据经验及研究,该项支出约占企业员工成本的三分之一,即该项成本为B/3。
5)人力资源储备费:企业人员流动、人员储备及人员的学习、培养、知识更新,不能创造价值但需要支付成本,该项成本为0.20B 。
6)基础设施建设、设备的购臵、折旧费,各项开发平台、开发工具的购买等,该项成本约为0.15B 。
7)国家税收和企业利润,根据经验和统计数据,约占企业员工成本的三分之一,故该项成本约为B/3。
8)管理费用:包括公司管理层,部门管理层,人力资源、行政、财务等人员的费用分摊。根据经验和行业通常计算方法,每十个软件人员配备两个管理人员,则管理费用计取的比例为前面七项总和的20%。
综合以上因素, 可得出一般程序员的人月成本Q 为:
Q = (工资+福利+奖金+办公成本+资源储备+基础建设+税收利润)
*( 1 + 管理费率)
= (B+0.20B+0.476B+B/3+0.2B+0.15B+B/3)*1.2 = 3.23*B
注:平均工资B 根据国家经济发展和软件行业发展状况每年会有所调整,不同的地区工资水平也会有所差异。可由软件行业协会根据软件行业统计数据和地方经济发布数据,得出全省主要地市每年的平均值并予以发布。
6 其他事项
6.1 最终合同金额确定
软件项目完成后,根据最终的系统功能点数和性能要求,可由专业评估机构再次进行评估,根据评估结果确定最终项目的合同金额。其中因需求变更而追加的费用一般不能超过项目概算的40%。如果由于需求发生巨大变更而导致需求变更费用大幅增加,软件开发商需要及时向用户方提出申请,由专家进行评估后决定是终止需求的变更或续签新合同。
6.2 付款方式
软件项目建设过程,为保证工程按时按质完成并保证投资方和开发商的利益,可将整个软件项目分解为多个子项目或者分阶段项目,逐个实施,分项付款。
6.3 评估机构
项目概算过程中要充分发挥专家和中介机构在管理与决策中的咨询和评议作用。
附录A
软件项目规模功能点估算方法
软件项目的工作量大小由软件项目规模所决定。软件项目规模大小可根据历史经验、类比等方法来估算,但目前国际上通行的也比较科学的估算方法是采用功能点分析方法。功能点分析方法是通过一种基于软件功能的预测模型,以各种与软件项目功能有关的因素作为软件开发工作量的度量。一旦项目的需求分析确定,就可以大致得出软件的各项功能要素,并进行相应的功能点计算,以功能点表示软件的规模,并转化为工作量大小。功能点方式目前被广泛认可并应用在信息系统、数据库密集型、4GL 应用系统开发等。
本指南亦采用功能点作为软件项目规模的度量指标。
1 功能点估算流程
功能点是对软件功能和大小的间接度量单位,一般通过必须和用户交互的情况的数目来测算程序工作量的大小。其工作流程如下:
1)确定计算范围:确定功能点的计算规范、划定应用程序的边界。 2)功能点分析:识别和估算与软件数据和事务功能有关的各种要素及其数量。要确定功能点的数目,需要对软件的用户输入数、用户输出数、用户查询表、内部逻辑文件数、外部逻辑文件数的数量进行评估。 3)功能点计算(初步):预估出五个要素的数量后,根据复杂度加权因子,计算出初步的功能点数UFC ;
4)确定技术复杂度因子:根据项目具体情况,对14个技术复杂度参数进行调整。得出技术复杂度调整参数TCF ;
5)功能点调节:计算出经调节后的功能点数:FP=UFC × TCF
2 功能点分析的要素
功能点分析法是从软件用户的角度来评估一个软件系统的功能,它将软件的功能分为五个基本要素:其中两个表示终端用户的数据需求:内部逻辑文件(Internal Logical Files ),外部接口文件(External Interface Files) ,另外三个表示用户对数据的获取处理的事务功能:用户输入(External InPuts),用户输出(External Outputs),用户查询(External Inquiries) 。它们的详细定义如下:
1)内部逻辑文件(ILF ):是一个用户可识别的逻辑相关的数据组,它在应用程序边界内,由用户输入来维护。它可能是某个大型数据库的一部分或是一个独立的文件。
2)外部接口文件(EIF ):是一个用户可识别的逻辑相关的数据组,但仅仅是起参考的作用,且数据完全存于软件边界之外,由另一个应用程序进行维护,是另一个应用程序的内部逻辑文件。
3)用户输入(EI ):是来自于软件外部的数据输入,可以是控制信息,也可是事务数据输入。如果是事务数据,它必须维护一个或多个内部逻辑文件。也就是说那些最后没有保存的中间计算结果和消息发送,都不算作数据输入单元。输入数据可来自于一个数据输入屏幕或其他应用程序。
4)用户输出(EO ):是“经过处理”的数据,由程序内部输出到外部。这里“经过处理”是指其区别于用户查询数据,是将一个或多个ILF 、EIF 中取出数据经过一定的组合、计算、总结后得出的输出数据。
5)用户查询(EQ ):是一个输入输出的组合过程,从一个或多个ILF 、
EIF 中取出数据输出到程序外部。其中的输入过程不更新任何ILF ,输出过程不进行任何数据处理。
注:
对软件项目进行估算的有效性和准确性取决于所掌握的有关项目的原始资料的完备性。这些原始资料包括:需求说明书、系统规格说明书、或者软件需求说明书等。从这些原始资料中可分析得出以上5类要素。如果以上5类要素的数据不准确,将直接影响到评估的结果。
3 功能点计算(初步值UFC )
一旦估算出应用程序中每个功能要素的数量后,就可以将每个计数与一个复杂度值(加权因子)相乘,最后进行合计,算出一个初步的总的功能点数UFC 。复杂度加权因子表如下:
附表1 功能要素复杂度加权因子表
例如,假设每个功能要素的复杂度都是平均的。一个由25个数据登记表、5个接口文件,15个报告、10个外部查询和20个逻辑内部表单组成的系统,其功能点为:UFC =(25*4)+(5*7)+(15*5)+(10*4)+(20*10)=450
每个功能要素的复杂度可通过下表进行分析判断。
附表2 功能要素复杂度判别表
从表中可以看出,EI (外部输入)、EO (外部输出)和EQ (外部查询)是由文件类型和数据单元的数量来决定的。而ILF (内部逻辑文件)和EIF (外部接口文件)则是由记录单元和数据单元来决定的。通过上面的两维表即可确定各个功能要素的复杂度是低、平均,还是高。 表中三种数据项定义如下:
〃记录单元类型Record Element Type(RET ):指在ILE 或EIF 中,用户可识别的数据域的子集,可以通过检查数据中的各种逻辑分组来识别它们。(例如一个客户文件,包括客户姓名、地址等个人信息,以及客户的各种信用卡和卡号。一个客户一般有多张信用卡,信用卡需同客户信息相连才有意义。因此,这个客户文件含有两个记录单元:客户信息和信用卡信息)
〃文件引用类型File Type Referenced(FTR):指在一个事务过程中,所引用到的各种文件,可以是内部逻辑文件,也可以是外部接口文件。
〃数据单元类型Data Element Type(DET ):是用户可识别的无递归,不重复的信息单元。DET 是动态的,而非静态的,可以读自于文件,或由FTR 的数据单元创建。另外,一个DET 也可是对一个事务处理过程的唤醒,或是事务的有关信息。如果DET 存在递归或重复,只计算其中的一个(如上例中的客户姓名、地址就是两个DET 。在可视化编程中,用于唤醒事务处理的添加、修改按钮,也算DET )。
4 确定技术复杂度因子TCF
算出功能点总数UFC 后,还需要根据项目具体情况,对各个技术复杂度参数进行调整。技术复杂度一共考虑了14个调节参数,分别是:
附表3 技术复杂度因子表
各个复杂度参数的取值范围从0到5,表示该项对功能点总数的影响从没有到极高。各个参数默认值为0,也就是该项不影响功能点调整。
每个参数都是对总功能点数的线性调整,设Ei 为根据14个方面的调节参数对软件系统的影响程度,则功能点技术复杂度因子为:
TCF = 0.65 + 0.01*∑Ei , (i=1….14)
Ei ∈(0,5), 则: TCF∈(0.65,1.35)
5 计算调节后的功能点数FP
最后得出经调节后功能点数FP =UFC*TCF。
参考文献
1. 《软件开发和服务项目价格构成及评估方法》,中国软件行业协会制定,上海市软件行业协会编写
2.《信息系统工程造价指导书》,深圳市信息工程协会和广东省价格协会编制
3.《基于COCOMOII 模型的软件评估软件一系统设计及实现》,李鹏,山东大学硕士学位论文,2004.11
4.《通信软件开发成本评估系统研究》,李文,电子科技大学工程硕士学位
论文,2004年10月
5.《软件工程项目管理——功能点分析方法与实践》,李臶、林立新、曹亚
波,清华大学出版社
6. 《软件成本估算COCOMOII 模型方法》,Barry W.Boehm 等著,李师贤等译,
机械工业出版社
7.《软件工程》,杨文龙、姚淑珍、吴芸编著,电子工业出版社 8.《计算机软件工程规范国家标准汇编2003》,中国标准出版社 9.《IT 企业投标指南》,马龙、翟荔洋编,电子工业出版社
10. 《软件过程改进的复杂性工作程序研究》,万江平、杨建梅著,科学出版
社
软件开发项目概算指南
(V1.0)
广东软件行业协会 二○○七年八月
目 录
1
前言 . .......................................................................................................................................................... 2 1.1 目的 . .................................................................................................................................................. 2 1.2 软件项目建设类别 ........................................................................................................................... 2 1.3 适用范围 . .......................................................................................................................................... 3 1.4 名词解释 . .......................................................................................................................................... 3 2 软件项目费用概算 . .................................................................................................................................. 4
2.1项目阶段划分 . ................................................................................................................................... 4 2.2 各阶段费用构成 . .............................................................................................................................. 5 2.3 项目费用概算 . .................................................................................................................................. 6 3 各项费用取费依据 . .................................................................................................................................. 7
3.1 咨询费 . .............................................................................................................................................. 7 3.2 建设费 . .............................................................................................................................................. 8 3.3 服务费 . .............................................................................................................................................. 8 3.4 附加费 . ............................................................................................................................................ 12 3.5需求变更估算 . ................................................................................................................................. 12 4 工作量估算方法 . .................................................................................................................................... 13
4.1 开发阶段工作量估算 ..................................................................................................................... 13 4.2 实施阶段工作量估算 ..................................................................................................................... 16 4.3 维护阶段工作量估算 ..................................................................................................................... 17 5 人月成本估算方法 . ................................................................................................................................ 18 6 其他事项 . ................................................................................................................................................ 20
6.1 最终合同金额确定 ......................................................................................................................... 20 6.2 付款方式 . ........................................................................................................................................ 20 6.3 评估机构 . ........................................................................................................................................ 20 软件项目规模功能点估算方法 . .................................................................................................................... 21
1 功能点估算流程 . ................................................................................................................................ 21 2 功能点分析的要素 . ............................................................................................................................ 22 3 功能点计算(初步值UFC ) .............................................................................................................. 23 4 确定技术复杂度因子TCF .................................................................................................................. 24 5 计算调节后的功能点数FP ................................................................................................................ 25
1 前言
1.1 目的
规范软件市场行为,维护价格公平竞争,同时为软件项目建设经费概算提供科学可信的依据。
1.2 软件项目建设类别
软件产业发展到现今阶段,技术已经很成熟,产品也已经很丰富,同时由于开发工具和操作系统平台的可选择性,软件项目出现了多样化的趋势。同样是软件项目,完成途径和开发手段不同,其费用也会存在很大差异。不同类别的软件项目,其费用构成和概算方法也不同。根据项目建设要求和方式,一般分为以下几类:
新开发项目:从项目的需求分析开始直至产品完成正式交付使用,其工
作覆盖软件产品的分析、设计、测试、实施、运行维护各阶段。
二次开发:在现有产品的基础上进行提升和改造。
软件移植:已有产品从一个操作系统平台转移到另一个操作系统平
台,或者从原来的运行环境切换到另一个新的运行环境所需要进行的调整和变动。
产品集成:将多个现有软件产品构件整合在一起,组装成比较复杂的
或者更加完整的产品。
1.3 适用范围
本指南适用于软件项目在招标投标前的费用概算,主要适用于应用类定制软件的新开发项目,项目应覆盖软件开发全过程(包括立项可行性分析,需求分析、编码实现、安装实施、运行维护各个阶段工作)。其中人月成本的计算方法也适用于其他类型的项目。
本指南是站在行业的角度,去评估一个应用软件项目的开发费用应该是多少,而不是站在开发商的角度去计算某企业开发软件时的成本支出是多少。虽然这两者之间会有关联。
对于同一软件开发项目,不同的开发商由于各自的技术、能力、管理、积累以及其他方面的因素,其实际成本支出会有较大差异。而这不在本指南考虑之内。
1.4 名词解释
应用软件:是指针对特定领域开发,为特定目的服务的一类软件。 软件开发: 指从软件项目启动到项目实施前这一时间段的工作。其中内容
包括详细需求分析、详细设计、编码、测试、系统调试等方面的工作。
系统实施:指软件项目开发完毕进行安装到项目正式验收这一时间段的工
作。其内容包括系统安装、个性化配臵、用户培训等方面的工作,但不包括各实施点的本地化开发工作。
运行维护:指从软件项目正式验收到合同规定的项目维护期结束的这一时间
段的工作。其内容包括在此期间所需要提供的原系统完善性修改和服务等工作(不包括新增需求和原功能的重大变更)。如:运
行管理、系统平台维护、应用软件维护、数据维护等
验收测试:确定项目是否符合其验收准则,使客户能确定是否接收此项目的
正式测试。
功能点(FP):功能点是对软件功能和大小的间接度量单位,一般通过必须和
用户交互的情况的数目来测算程序工作量的大小。
成本系数:成本系数是指完成某个功能点(FP )的规定活动所需要投入的人
工时,其单位为:人工时/FP。根据软件项目建设过程的各阶段工作,可分为:开发成本系数、实施成本系数、维护成本系数。
工作量:工作量的计算是按一个开发工作人员在一个月内(日历中的月,
即包括国家规定的节假日)能完成的工作量为单位,也就是通常所讲的“人月”。
人月成本:指软件企业一个月平均需要的所有开销(包括员工成本、国家税
收、企业利润、管理成本和质量成本等)摊分到各个员工头上的金额。
平均工资:指软件企业支付给所有员工的工资总和除以企业员工人数得到的
工资数。
2 软件项目费用概算
2.1项目阶段划分
软件项目全过程可分为:立项阶段、建设阶段、完成阶段。不同阶段工作重点不同。为保证软件项目开发质量,避免因需求不确定,或者频繁更改所造成的成本上升,同时也利于项目费用概算,软件项目建设最好采取“总
体规划、分段实施”的原则。
立项阶段:可委托专业技术咨询机构或者专家进行项目的可行性分析,需求分析;根据需求分析,进行系统设计;根据需求分析、系统设计,计算工作量,估算项目建设费(预算);根据项目概算进行招投标,确定软件开发商,签订建设合同。
建设阶段:由软件开发商根据前期需求分析和系统设计,进行编码实现,并负责安装实施、运行维护等工作。项目实施完毕,需委托第三方测试机构进行验收测试。
完成阶段:项目完成后,在需求变更较大的情形下,可委托专业技术机构根据实际工作量估算项目建设费(决算),项目结束。
2.2 各阶段费用构成
各阶段的所有费用可分为四类:
咨询费:包括立项阶段的可行性分析,需求分析、系统设计、估价、招
投标等方面的工作所需要支出的费用。
服务费:第三方测试机构的验收测试费、监理单位的监理费、进行数据
扫描录入等方面工作的数据处理费等。
建设费:软件开发商在开发、实施、维护等方面工作的费用。其中包括:
软件开发费、系统实施费、运行维护费。
附加费:针对具有特殊性质的软件开发项目。如:若需要提交源程序,
必须增加知识产权费;若涉及保密方面的工作,则须增加保密费用等。
此外,由于软件项目建设过程中,需求变更不可避免,因而还需要考虑
到因需求变更导致工作量加大带来的费用。软件项目费用构成如图1所示。
软件项目费用构成
咨询费
可行性分析 需求分析 系统设计 估价 招标代理 技术咨询
建设费
标准符合性检测 开发费 实施费
服务费
维护费 测试费 监理费 数据处理
2.3 项目费用概算
依上所述,软件项目从立项到结束,项目费用为:
项目概算 = 咨询费+建设费+服务费(+需求变更费+附加费) = 咨询费+开发费+实施费+维护费+验收测试费+监理费 (+需求变更费+附加费)
需求变更费 附加费
培训费
知识产权保护费
保密费 其它
图1 软件项目费用构成
3 各项费用取费依据
3.1 咨询费
指软件项目立项前期,请专业机构或者专家进行技术咨询、可行性分析、需求分析,造价评估、方案设计、项目招标代理等方面工作所发生的费用。该部分费用可根据项目预计投入的建设费按照一定比例计取,也可以根据所投入的人月数进行计取,此外还可以由双方协商确定。
在招标活动中,公证处对全过程进行现场公证并对采购合同进行公证,公证费按照国家规定标准计算。
表1 软件行业咨询取费标准
表2 公证服务取费标准
注:
1) 按表1计费不足1000元的,按1000元收费。 2) 按表2计费不足200元的,按200元收费。
3) 技术咨询按耗用工时(日)计费,为完成委托任务发生的差旅、交通费由委托方另行支付。 4) 招标代理收费和公证服务收费按差额定率累进法计算。
如某招标代理业务中标金额为600万元,计算招标代理费如下: 100万元*1.0% = 1万元
(300-100)万元*0.8% = 1.6万元 (500-300)万元*0.7% = 1.4万元 (600-500)万元*0.55% = 0.55万元 则合计收费:1 + 1.6 + 1.4 + 0.55 = 4.55万元
3.2 建设费
建设费包括支付给软件开发商的进行软件开发、实施、维护等方面工作的费用。主要依据工作量(完成该项目需要投入的人力,以人月度量)和人月成本进行估算。
建设费 = 开发费+实施费+运行维护费
= (开发工作量+实施工作量+运行维护工作量)× 人月成本
3.3 服务费
3.3.1 验收测试费
软件项目验收是一个运行环境复杂、技术难度较高、评价体系抽象的过程。该项目验收除经过专家评审外,还应进行相应第三方验收测试,只有两者结合才能为信息化项目验收和鉴定提供定性、定量的科学依据,才能做出较为客观准确的验收和鉴定结论。软件项目的验收测试是根据项目的特点(功能、技术需求和大小等)、相关标准和规范要求以及项目投入,按照评价软件质量的功能性、易用性、可靠性、可维护性、可移植性、效率和文档等7个特性进行相应裁减,分为功能确认测试和验收测试。 1)功能确认测试
项目对象:省、市级信息化建设项目包括电子政务建设项目验收,各种渠道申报的与软件相关的科技项目的验收和科技成果鉴定项目。
测试内容:根据申报或鉴定合同的技术条款和软件操作手册及被测软件运行确定测试内容,一般只覆盖软件的功能性、易用性和文档。主要判断被测系统是否完成合同要求的功能及相关特性。
收费标准:8000-30000元。
2)项目验收测试
项目对象:各类信息化建设项目包括电子政务建设项目应用发布之前的验收,各种渠道申报的与软件相关的科技项目的验收和科技成果的鉴定项目,只要用户需求和合同中的条款覆盖效率和可移植性等特性要求的项目。
测试内容:在模拟或实际环境下测试被测系统是否实现了用户需求,是否达到了国家标准的相关要求。依据用户需求分析、合同的技术条款、国家标准的特性要求、软件操作手册和被测软件运行确定测试内容。
收费标准:验收测试费 = 建设费D*各测试项费率之和*调节系数t 各测试项的费率及收费调节系数取值如表3、表4所示。
表3 验收测试项费率表
表4 调节系数t 取值范围
注:
1)影响项目验收测试费用的因素一个是项目的大小,另一个是所选择的测试项。被选测试项多少决定测试费率a ,项目大小决定收费调节系数L ;
2)根据项目特点针对软件各个特性进行选择测试,测试费率为所选择软件特性测试费率a 各项之和。 3)根据项目大小采取项目建设费越高费率越低原则进行调节。 4)项目验收测试最低收费为: 8000元(不含负载压力测试)
2万元(含负载压力测试)
3.3.2 工程监理费
软件项目监理收费既考虑了信息系统软件项目的特点,又参照了其它监理行业的收费标准、收费方式。一般可按照项目建设费(或合同价格) 的一定百分比取费。其取费比率主要根据项目的规模、阶段、内容、复杂程度及监理成本等多方面因素综合计算。计算公式如下:
监理费 = 建设费D*基本费率a*地域调整系数d*工期调整系数e 1)基本费率a 根据项目建设费的规模进行调整。取值范围如下:
表5 监理基本费率a 取值范围
2)鉴于软件项目实施时分布的地域会有所不同,因此,监理的费率应在基本费率的基础上考虑地域的因素。地域调整系数d 取值如下:
表6 地域凋整系数d 取值范围
3)鉴于软件项目工期长短不一,因此,监理的费率应在监理的基本费率基础上考虑工期的因素。工期越长,系数越大。工期调整系数e 如下:
表
7 工期调整系数e 取值范围
4)其他
对于非监理原因造成工程延期而产生的监理附加工作,监理单位有权获得监理附加报酬。
监理附加报酬率 = 监理费*附加工作月数/合同规定月数。
对于项目结束后的维护,其监理取费由用户单位和监理单位协商解决。 本参考标准未作规定的,可参考国家相关标准。 3.3.3 数据处理费
项目中如含有大量档案、数据需要录入、处理,则需要考虑相应的数据处理服务费。收费标准可以根据所需要处理的资料的页数核计收费。
一般情况下单纯的数据录入,收费标准为:0.3~0.5元/页。特殊要求的数据处理可依据合同约定。
3.3.4 项目培训费
项目培训费是指软件开发项目验收后,对建设方进行培训产生的费用,取费比率可由双方协商决定。
3.4 附加费
如果用户需要软件开发商提交源代码,则必须支付相应的知识产权费;如果所开发的项目是涉密项目,则需额外再支付给软件开发商保密费。这些费用的计算均与软件开发工作量相关,也就是与项目建设费相关,可按照项目建设费的一定比例计取,或者双方协商。
3.5需求变更估算
由于软件开发过程中,用户的需求有可能不断变化,从而导致开发工作量的变化,费用追加。故在立项阶段即要请专业机构或者专家对需求变更的风险性进行评估,以便在做项目预算时留出足够应付需求变更的经费。
项目需求变更一般发生在项目建设过程中,立项阶段的咨询服务不受需求变化的影响。但验收测试和工程监理工作量会随着需求变化而加大,所以需求变更费为:
需求变更费 =(建设费+验收测试费+监理费)* 需求变更风险系数f 风险系数f 可依据以下因素确定:
1) 项目的成熟度:如果是新项目,则开发过程中出现需求变更的可能性很大,且需求变更幅度大,风险系数就高;如果是成熟项目,或者已经有过案例的项目,则需求变化的可能性较小,即使有变化,幅度也不会太高,则风险系数就低。
2) 项目的规模大小:如果项目规模小,需求容易确定,变更几率就小,反之就大;
3) 用户业务的稳定性和管理的规范性:用户单位业务的变化和业务流程的调整,都有可能带来开发过程中需求的变化。
4) 前期项目需求分析、系统设计的规范性和完善性:前期的需求分析是否全面到位、系统设计的是否规范和细致,会影响到开发过程的需求变化率。
因需求变更而追加的费用一般不能超过项目概算的40%。如果由于需求发生巨大变更而导致需求变更费用大幅增加,软件开发商需要及时向用户方提出申请,由专家进行评估后决定是终止需求的变更或续签新合同。
4 工作量估算方法
工作量指在软件项目建设过程中需要投入的人力和时间,一般用人月数进行度量。项目建设阶段一般可分为:开发阶段、实施阶段、运行维护阶段。故在工作量需分阶段进行估算。
工作量=开发工作量+实施工作量+维护工作量
另:由于在软件项目开发过程中,因需求变更导致工作量改变的情形不可避免,故可分别在立项阶段进行工作量预算,在项目完成阶段进行工作量核算。
4.1 开发阶段工作量估算
开发工作量是计算实施阶段和维护阶段工作量的基础。主要有两种估算方法,实际操作中,可采用其中的一种,或将两种估算方法结合起来使用。
4.1.1功能点估算法
该方法主要是依据软件项目的功能需求来评估开发工作量。通过分析系统需求计算项目规模(功能点数),再乘以各阶段完成每个功能点所需要投入的人工时(开发成本系数),就可计算出完成项目所需要的人月数。适用于立项阶段需求分析比较详细的项目或者用于项目完成阶段的最终工作量估算。
开发工作量D (人月)= (项目功能点FP*开发成本系数k/H/W) 其中H 是指国家规定的一天工作时数,W 指一个月工作天数。 功能点FP 的估算详见附录—软件项目功能点估算法。
开发成本系数k 的大小主要是考虑项目的非技术难度,如开发周期、协调难度、业务的复杂程度、需求的不确定性等因素。根据对实际数据的测算,开发成本系数k 取值范围一般为:
表8 开发成本系数k 取值范围
针对个别项目,如果有特殊情况(如某些用户业务的特殊要求是一般项目中从未出现过的、开发人员需要到用户现场开发等),则经专业咨询机构或者专家评估,开发成本系数可以超出此范围上限的限制。 4.1.2 任务估算法
任务估算法是把软件项目功能分解为若干任务,按自上而下逐层细分方法,将各任务分解至若干密不可分的子任务,对每项子任务在软件开发过程
中的设计、编码、调试各阶段工作按比例分配人员及开发时间,每个人员的工作量之和就是该任务的工作量。最后将各个任务的工作量进行累加,即得到软件项目的总工作量。该方法适用于立项阶段的工作量估算。
依据软件工程的概念、国内软件开发行业的惯例及经验值,根据不同任务,软件开发工作可分为:设计、编码、测试。
设计各个岗位人员工作量可基于以下标准计算: (1) 以程序员的工作量为基准工作量;
(2) 高级程序员的工作量为基准工作量的1.5倍; (3) 系统分析员的工作量为基准工作量的2.5倍; (4) 测试工程师的工作量为基准工作量;
(5) 高级测试工程师的工作量为基准工作量的1.5倍; (6) 项目管理人员的工作量为基准工作量的3倍; (7) 市场营销人员的工作量为基准工作量; (8) 技术支持工程师的工作量为基准工作量; (9) 文秘的工作量为基准工作量的0.5倍;
例如:完成某个任务的人员投入和时间需求如表9,则其工作量为60.5 人月。
表9 某任务工作量估算表
4.2 实施阶段工作量估算
软件项目的实施范围因项目而异(有些项目只实施一个单位、有些需要实施多个单位、有些甚至需要全市、全省甚至全国实施),所以实施阶段的费用也会有很大的差异, 甚至有的项目会出现实施费用超过开发费用的情形。
实施阶段的工作量可依据开发阶段工作量、实施系数来计算。 实施工作量(人月)= 开发工作量D*实施系数s
根据项目是集中式实施还是分布式实施,实施系数s 的取值有所不同。 1) 集中式实施的项目
实施系数s 与“用户数”相关。设n 为用户数,一般情况下: 当 0
否则,s=0.2 +((n-100)/100)*q(四舍五入取两位小数); q 是调节因子,取值范围为:0.03≤q ≤0.05,具体取值依项目实施难度而定。
2) 分布式实施的项目
实施系数s 与“实施单位(点)数”相关。设n 为需要实施的单位(点)数,一般情况下:
s =0.2 +(n - 1)* q
q 是调节因子, 一般取值范围为:0.08≤q ≤0.15,具体取值依项目实施难度而定。
3) 个别项目,如果对实施有特殊要求(这些特殊要求是一般项目中从
未出现过的或有本地化开发工作的),或者实施环境、条件、难度等方面因素的影响,则经专业机构或者专家评估,实施系数可以超出此范围上限的限制。
4) 如果软件项目是系统集成项目中的一部分,实施时需要整体考虑,则可将实施费抽出另算。一种是将软件实施费并入到整个集成项目的实施费用中,另一种就是在软件实施费中加入项目集成的实施费用。
4.3 维护阶段工作量估算
软件项目通过验收, 交付使用后,需进行一年的系统维护。维护内容包括:运行管理、系统平台维护、应用软件维护、数据维护等。根据不同的用户要求,系统维护服务可分为以下两种情形: A 级
软件企业派出技术人员常驻用户处,解决日常运行中发生的问题。则其工作量由派驻人员的数目和派驻的时间决定。
软件(系统)维护工作量 = 派驻的人员数*时间(月) B 级
软件企业在国家规定的正常工作时间,按双方约定的条件和时间到达现场,且每月(或定期)派技术人员到现场进行软件(系统)性能调试,使之运行处于良好状态。则B 级的维护工作所需工作量依据开发工作量、实施工作量、维护系数来计算。
运行维护工作量(人月) = (开发工作量+实施工作量)*维护系数w = (开发工作量+开发工作量*实施系数s )*维护系数w
= D*(1+s)*w
维护系数w 取值范围为0.15-0.20,具体取值依项目维护难度而定。 针对个别项目,如果对维护有特殊要求(这些特殊要求是一般项目中从未出现过的),则经专业机构或者专家评估,维护成本系数可以不受此限制。
备注:
系统后期维护:系统运行一年之后的系统维护,需另行签订系统维护合约。为了有利于保证用户的利益和扶植软件企业,在维护工作范围不变的前提下,如果新维护合同的维护费用不超过上一年度维护金额的115%,则用户应该和原开发商直接签订维护合同,否则由可进行招投标并确定新维护合同的项目承担单位。
5 人月成本估算方法
软件开发项目成本计算中应包括软件项目在开发过程中所耗费的各项费用,包括从设计阶段到测试完毕交付用户使用之间所发生的工资费、材料费、外协费、试验费、固定资产使用费、交通费、管理费等。一般用人月成本作为度量指标。
人月成本是指软件企业一个月平均需要的所有成本开销(包括工资、奖金、福利、办公成本、国家各种税费、管理费用等等)及软件企业合理利润的总和,除以企业员工人数。其成本开销主要包括以下方面:
1)工资:指软件企业需要支付给软件开发人员的工资的平均值,设该值为B 。
2)国家规定的福利:按照国家政策的缴费基数缴纳的职工福利,其中公积金8%~20%(此处按8%计),医疗保险金12%,养老金22%,失业金2%(即通常所说的四金),另外还有按工资总额计征的工伤保证金0.5%,生育保证金0.5%,残疾基金1.6%,工会基金1%,累计为47.6%。故该项成本为0.476B 。
3)奖金及各项物质奖励:指企业支付给企业的奖金及过年过节的一些
物质奖励和基本福利。根据经验及广东省软件行业情况,该项成本约为0.20B 。
4)办公成本:包括办公场地租赁费、水电费、差旅费、企业为项目顺利运作所支付的其他费用如市场营销费等各项。根据经验及研究,该项支出约占企业员工成本的三分之一,即该项成本为B/3。
5)人力资源储备费:企业人员流动、人员储备及人员的学习、培养、知识更新,不能创造价值但需要支付成本,该项成本为0.20B 。
6)基础设施建设、设备的购臵、折旧费,各项开发平台、开发工具的购买等,该项成本约为0.15B 。
7)国家税收和企业利润,根据经验和统计数据,约占企业员工成本的三分之一,故该项成本约为B/3。
8)管理费用:包括公司管理层,部门管理层,人力资源、行政、财务等人员的费用分摊。根据经验和行业通常计算方法,每十个软件人员配备两个管理人员,则管理费用计取的比例为前面七项总和的20%。
综合以上因素, 可得出一般程序员的人月成本Q 为:
Q = (工资+福利+奖金+办公成本+资源储备+基础建设+税收利润)
*( 1 + 管理费率)
= (B+0.20B+0.476B+B/3+0.2B+0.15B+B/3)*1.2 = 3.23*B
注:平均工资B 根据国家经济发展和软件行业发展状况每年会有所调整,不同的地区工资水平也会有所差异。可由软件行业协会根据软件行业统计数据和地方经济发布数据,得出全省主要地市每年的平均值并予以发布。
6 其他事项
6.1 最终合同金额确定
软件项目完成后,根据最终的系统功能点数和性能要求,可由专业评估机构再次进行评估,根据评估结果确定最终项目的合同金额。其中因需求变更而追加的费用一般不能超过项目概算的40%。如果由于需求发生巨大变更而导致需求变更费用大幅增加,软件开发商需要及时向用户方提出申请,由专家进行评估后决定是终止需求的变更或续签新合同。
6.2 付款方式
软件项目建设过程,为保证工程按时按质完成并保证投资方和开发商的利益,可将整个软件项目分解为多个子项目或者分阶段项目,逐个实施,分项付款。
6.3 评估机构
项目概算过程中要充分发挥专家和中介机构在管理与决策中的咨询和评议作用。
附录A
软件项目规模功能点估算方法
软件项目的工作量大小由软件项目规模所决定。软件项目规模大小可根据历史经验、类比等方法来估算,但目前国际上通行的也比较科学的估算方法是采用功能点分析方法。功能点分析方法是通过一种基于软件功能的预测模型,以各种与软件项目功能有关的因素作为软件开发工作量的度量。一旦项目的需求分析确定,就可以大致得出软件的各项功能要素,并进行相应的功能点计算,以功能点表示软件的规模,并转化为工作量大小。功能点方式目前被广泛认可并应用在信息系统、数据库密集型、4GL 应用系统开发等。
本指南亦采用功能点作为软件项目规模的度量指标。
1 功能点估算流程
功能点是对软件功能和大小的间接度量单位,一般通过必须和用户交互的情况的数目来测算程序工作量的大小。其工作流程如下:
1)确定计算范围:确定功能点的计算规范、划定应用程序的边界。 2)功能点分析:识别和估算与软件数据和事务功能有关的各种要素及其数量。要确定功能点的数目,需要对软件的用户输入数、用户输出数、用户查询表、内部逻辑文件数、外部逻辑文件数的数量进行评估。 3)功能点计算(初步):预估出五个要素的数量后,根据复杂度加权因子,计算出初步的功能点数UFC ;
4)确定技术复杂度因子:根据项目具体情况,对14个技术复杂度参数进行调整。得出技术复杂度调整参数TCF ;
5)功能点调节:计算出经调节后的功能点数:FP=UFC × TCF
2 功能点分析的要素
功能点分析法是从软件用户的角度来评估一个软件系统的功能,它将软件的功能分为五个基本要素:其中两个表示终端用户的数据需求:内部逻辑文件(Internal Logical Files ),外部接口文件(External Interface Files) ,另外三个表示用户对数据的获取处理的事务功能:用户输入(External InPuts),用户输出(External Outputs),用户查询(External Inquiries) 。它们的详细定义如下:
1)内部逻辑文件(ILF ):是一个用户可识别的逻辑相关的数据组,它在应用程序边界内,由用户输入来维护。它可能是某个大型数据库的一部分或是一个独立的文件。
2)外部接口文件(EIF ):是一个用户可识别的逻辑相关的数据组,但仅仅是起参考的作用,且数据完全存于软件边界之外,由另一个应用程序进行维护,是另一个应用程序的内部逻辑文件。
3)用户输入(EI ):是来自于软件外部的数据输入,可以是控制信息,也可是事务数据输入。如果是事务数据,它必须维护一个或多个内部逻辑文件。也就是说那些最后没有保存的中间计算结果和消息发送,都不算作数据输入单元。输入数据可来自于一个数据输入屏幕或其他应用程序。
4)用户输出(EO ):是“经过处理”的数据,由程序内部输出到外部。这里“经过处理”是指其区别于用户查询数据,是将一个或多个ILF 、EIF 中取出数据经过一定的组合、计算、总结后得出的输出数据。
5)用户查询(EQ ):是一个输入输出的组合过程,从一个或多个ILF 、
EIF 中取出数据输出到程序外部。其中的输入过程不更新任何ILF ,输出过程不进行任何数据处理。
注:
对软件项目进行估算的有效性和准确性取决于所掌握的有关项目的原始资料的完备性。这些原始资料包括:需求说明书、系统规格说明书、或者软件需求说明书等。从这些原始资料中可分析得出以上5类要素。如果以上5类要素的数据不准确,将直接影响到评估的结果。
3 功能点计算(初步值UFC )
一旦估算出应用程序中每个功能要素的数量后,就可以将每个计数与一个复杂度值(加权因子)相乘,最后进行合计,算出一个初步的总的功能点数UFC 。复杂度加权因子表如下:
附表1 功能要素复杂度加权因子表
例如,假设每个功能要素的复杂度都是平均的。一个由25个数据登记表、5个接口文件,15个报告、10个外部查询和20个逻辑内部表单组成的系统,其功能点为:UFC =(25*4)+(5*7)+(15*5)+(10*4)+(20*10)=450
每个功能要素的复杂度可通过下表进行分析判断。
附表2 功能要素复杂度判别表
从表中可以看出,EI (外部输入)、EO (外部输出)和EQ (外部查询)是由文件类型和数据单元的数量来决定的。而ILF (内部逻辑文件)和EIF (外部接口文件)则是由记录单元和数据单元来决定的。通过上面的两维表即可确定各个功能要素的复杂度是低、平均,还是高。 表中三种数据项定义如下:
〃记录单元类型Record Element Type(RET ):指在ILE 或EIF 中,用户可识别的数据域的子集,可以通过检查数据中的各种逻辑分组来识别它们。(例如一个客户文件,包括客户姓名、地址等个人信息,以及客户的各种信用卡和卡号。一个客户一般有多张信用卡,信用卡需同客户信息相连才有意义。因此,这个客户文件含有两个记录单元:客户信息和信用卡信息)
〃文件引用类型File Type Referenced(FTR):指在一个事务过程中,所引用到的各种文件,可以是内部逻辑文件,也可以是外部接口文件。
〃数据单元类型Data Element Type(DET ):是用户可识别的无递归,不重复的信息单元。DET 是动态的,而非静态的,可以读自于文件,或由FTR 的数据单元创建。另外,一个DET 也可是对一个事务处理过程的唤醒,或是事务的有关信息。如果DET 存在递归或重复,只计算其中的一个(如上例中的客户姓名、地址就是两个DET 。在可视化编程中,用于唤醒事务处理的添加、修改按钮,也算DET )。
4 确定技术复杂度因子TCF
算出功能点总数UFC 后,还需要根据项目具体情况,对各个技术复杂度参数进行调整。技术复杂度一共考虑了14个调节参数,分别是:
附表3 技术复杂度因子表
各个复杂度参数的取值范围从0到5,表示该项对功能点总数的影响从没有到极高。各个参数默认值为0,也就是该项不影响功能点调整。
每个参数都是对总功能点数的线性调整,设Ei 为根据14个方面的调节参数对软件系统的影响程度,则功能点技术复杂度因子为:
TCF = 0.65 + 0.01*∑Ei , (i=1….14)
Ei ∈(0,5), 则: TCF∈(0.65,1.35)
5 计算调节后的功能点数FP
最后得出经调节后功能点数FP =UFC*TCF。
参考文献
1. 《软件开发和服务项目价格构成及评估方法》,中国软件行业协会制定,上海市软件行业协会编写
2.《信息系统工程造价指导书》,深圳市信息工程协会和广东省价格协会编制
3.《基于COCOMOII 模型的软件评估软件一系统设计及实现》,李鹏,山东大学硕士学位论文,2004.11
4.《通信软件开发成本评估系统研究》,李文,电子科技大学工程硕士学位
论文,2004年10月
5.《软件工程项目管理——功能点分析方法与实践》,李臶、林立新、曹亚
波,清华大学出版社
6. 《软件成本估算COCOMOII 模型方法》,Barry W.Boehm 等著,李师贤等译,
机械工业出版社
7.《软件工程》,杨文龙、姚淑珍、吴芸编著,电子工业出版社 8.《计算机软件工程规范国家标准汇编2003》,中国标准出版社 9.《IT 企业投标指南》,马龙、翟荔洋编,电子工业出版社
10. 《软件过程改进的复杂性工作程序研究》,万江平、杨建梅著,科学出版
社