资源描述
软件开发项目计算方法( V2.0)广东软件行业协会二六年八月目录1前言.21.1目的 .21.2软件项目建设类别.21.3适用范围 .21.4名词解释 .32软件项目费用概算 .42.1项目阶段划分 . .42.2各阶段费用构成 .52.3项目费用概算 .63各项费用取费依据 .73.1咨询费 .73.2建设费 .83.3服务费 .83.4附加费 .123.5需求变更估算 . .124工作量估算方法 .134.1开发阶段工作量估算.134.2实施阶段工作量估算.154.3维护阶段工作量估算.175人月成本估算方法 .186其他事项 .196.1最终合同金额确定.196.2付款方式 .206.3评估机构 .20软件项目规模功能点估算方法.211功能点估算流程 .212功能点分析的要素 .223 功能点计算(初步值UFC) .234 确定技术复杂度因子TCF.245 计算调节后的功能点数FP.25参考文献.26标准实用1 前言1.1目的规范软件市场行为,维护价格公平竞争,同时为软件项目建设经费概算提供科学可信的依据。1.2软件项目建设类别软件产业发展到现今阶段,技术已经很成熟,产品也已经很丰富,同时由于开发工具和操作系统平台的可选择性,软件项目出现了多样化的趋势。同样是软件项目,完成途径和开发手段不同,其费用也会存在很大差异。不同类别的软件项目,其费用构成和概算方法也不同。根据项目建设要求和方式,一般分为以下几类:新开发项目: 从项目的需求分析开始直至产品完成正式交付使用, 其工作覆盖软件产品的分析、设计、测试、实施、运行维护各阶段。二次开发: 在现有产品的基础上进行提升和改造。软件移植: 已有产品从一个操作系统平台转移到另一个操作系统平台,或者从原来的运行环境切换到另一个新的运行环境所需要进行的调整和变动。产品集成:将多个现有软件产品构件整合在一起, 组装成比较复杂的或者更加完整的产品。1.3适用范围本指南适用于应用类定制软件的新开发项目,项目应覆盖软件开发全过标准实用程(包括立项可行性分析,需求分析、编码实现、安装实施、运行维护各个阶段工作)。其中人月成本的计算方法也适用于其他类型的项目。本指南是站在行业的角度, 去评估一个应用软件项目的开发费用应该是多少,而不是站在开发商的角度去计算某企业开发软件时的成本支出是多少。虽然这两者之间会有关联。对于同一软件开发项目,不同的开发商由于各自的技术、能力、管理、积累以及其他方面的因素,其实际成本支出会有较大差异。而这不在本指南考虑之内。1.4名词解释应用软件: 是指针对特定领域开发,为特定目的服务的一类软件。软件开发:指从软件项目启动到项目实施前这一时间段的工作。其内容包括详细设计、编码、测试、系统调试等方面的工作。系统实施: 指软件项目开发完毕进行安装到项目正式验收这一时间段的工作。其内容包括系统安装、 个性化配置、用户培训等方面的工作,但不包括各实施点的本地化开发工作。运行维护:指从软件项目正式验收到合同规定的项目维护期结束的这一时间段的工作。其内容包括在此期间所需要提供的原系统完善性修改和服务等工作(不包括新增需求和原功能的重大变更)。如:运行管理、系统平台维护、应用软件维护、数据维护等验收测试: 确定项目是否符合其验收准则,使客户能确定是否接收此项目的正式测试。功能点 (FP) :功能点是对软件功能和大小的间接度量单位,一般通过必须和标准实用用户交互的情况的数目来测算程序工作量的大小。功能点分析法是目前国际上软件行业普遍接受的软件项目规模度量模型。成本系数: 成本系数是指完成某个功能点( FP)的规定活动所需要投入的人工时,其单位为:人工时 /FP。根据软件项目建设过程的各阶段工作,可分为:开发成本系数、实施成本系数、维护成本系数。工作量: 工作量的计算是按一个开发工作人员在一个月内(日历中的月,即包括国家规定的节假日)能完成的工作量为单位,也就是通常所讲的“人月”。人月成本: 指软件企业一个月平均需要的所有开销(包括员工成本、国家税收、企业利润、管理成本和质量成本等)摊分到各个员工头上的金额。平均工资:指软件企业支付给所有员工的工资总和除以企业员工人数得到的工资数。2 软件项目费用概算2.1 项目阶段划分软件项目全过程可分为:立项阶段、建设阶段、完成阶段。不同阶段工作重点不同。为保证软件项目开发质量,避免因需求不确定,或者频繁更改所造成的成本上升,同时也利于项目费用概算,软件项目建设最好采取“总体规划、分段实施”的原则。立项阶段: 可委托专业技术咨询机构或者专家进行项目的可行性分析,需求分析;根据需求分析,进行系统设计;根据需求分析、系统设计,计算标准实用工作量,估算项目建设费(预算);根据项目概算进行招投标,确定软件开发商,签订建设合同。建设阶段 :由软件开发商根据前期需求分析和系统设计,进行编码实现,并负责安装实施、运行维护等工作。项目实施完毕,需委托第三方测试机构进行验收测试。完成阶段: 项目完成后,在需求变更较大的情形下,可委托专业技术机构根据实际工作量估算项目建设费(决算),项目结束。2.2各阶段费用构成各阶段的所有费用可分为四类:咨询费: 包括立项阶段的可行性分析,需求分析、系统设计、估价、招投标等方面的工作所需要支出的费用。服务费: 第三方测试机构的验收测试费、监理单位的监理费、进行数据扫描录入等方面工作的数据处理费等。建设费: 软件开发商在开发、实施、维护等方面工作的费用。其中包括:软件开发费、系统实施费、运行维护费。附加费: 针对具有特殊性质的软件开发项目。如:若需要提交源程序,必须增加知识产权费;若涉及保密方面的工作,则须增加保密费用等。此外,由于软件项目建设过程中,需求变更不可避免,因而还需要考虑到因需求变更导致工作量加大带来的费用。软件项目费用构成如图1 所示。标准实用咨询费软件项目建设费费用构成服务费需求变更费可行性分析需求分析系统设计估价招标代理技术咨询标准符合性检测开发费实施费维护费测试费监理费数据处理知识产权保护费附加费保密费其它图 1软件项目费用构成2.3项目费用概算依上所述,软件项目从立项到结束,项目费用为:项目概算= 咨询费 +建设费 +服务费(需求变更费 +附加费)=咨询费 +开发费 +实施费 +维护费 +验收测试费 +监理费(+需求变更费 +附加费)标准实用3 各项费用取费依据3.1咨询费指软件项目立项前期,请专业机构或者专家进行技术咨询、 可行性分析、需求分析,造价评估、方案设计、项目招标代理等方面工作所发生的费用。该部分费用可根据项目预计投入的建设费按照一定比例计取,也可以根据所投入的人月数进行计取,此外还可以由双方协商确定。在招标活动中,公证处对全过程进行现场公证并对采购合同进行公证,公证费按照国家规定标准计算。表 1软件行业咨询取费标准收费项目收费基数基准费率( %)100万101-300 万301-500 万501-1000 万1001-3000 万3000 万需求分析、 可行性分析、 系项目预投入费8.37.87.36.75.44.5统设计等估价项目预投入费3.63.02.52.21.81.5招标代理中标金额1.00.80.70.550.350.3技术咨询每人每日1000 元 1500 元表 2公证服务取费标准标的额 m22m5m 10m 50m 100m 200m 300400(万元)51050100200300400费率 (%)10.80.60.50.40.30.20.10.05注: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服务费验收测试费软件项目验收是一个运行环境复杂、技术难度较高、评价体系抽象的过程。该项目验收除经过专家评审外,还应进行相应验收测试,只有两者结合才能为信息化项目验收和鉴定提供定性、定量的科学依据,才能做出较为客观准确的验收和鉴定结论。软件项目的验收测试是根据项目的特点(功能、技术需求和大小等)以及项目投入,按照评价软件质量的功能性、易用性、可靠性、可维护性、可移植性、效率和文档等 7 个特性进行特性裁减,分为功能确认测试和验收测试。1)功能确认测试项目对象:省、市级信息化建设项目包括电子政务建设项目验收, 各种渠道申报的与软件相关的科技项目的验收和科技成果鉴定项目。测试内容:根据申报或鉴定合同的技术条款和软件操作手册及被测软件运行确定测试内容, 一般只覆盖软件的功能性、 易用性和文档。 主要判断被测系统是否完成合同要求的功能及相关特性。收费标准: 8000-10000 元。标准实用2)项目验收测试项目对象: 各类信息化建设项目包括电子政务建设项目应用发布之前的验收,各种渠道申报的与软件相关的科技项目的验收和科技成果的鉴定项目,只要用户需求和合同中的条款覆盖效率和可移植性等特性要求的项目。测试内容: 在模拟或实际环境下测试被测系统是否实现了用户需求,是否达到了国家标准的相关要求。依据用户需求分析、合同的技术条款、国家标准的特性要求、软件操作手册和被测软件运行确定测试内容。收费标准:验收测试费 = 建设费 D*各测试项费率之和 * 调节系数 t各测试项的费率及收费调节系数取值如表3、表 4 所示。表 3 验收测试项费率表序号测试项子特性费率( a%)1功能性功能点 100a2.8功能点 100a32易用性易理解性a0.07易学性a0.06易操作性a0.073可靠性成熟性a0.2容错性a0.2易恢复性a0.14维护性易改变性a0.07稳定性a0.07易测试性a0.065可移植性一个环境下测试a0.2多个测试环境,测试环境数 na0.2+(n-1)*0.16效率一般的效率指标a1负载并发用户数 50,测试脚本数a1;压力3,测试每增加50 个以内用户数或 3a 递增 0.5个以下测试脚本数,7文档用户文档a0.1技术合同a0.05需求规格说明书a0.1标准实用表 4调节系数 t 取值范围序号项目建设费 D(万元)收费折扣系数 (t)1D 200 12200D 500 0.983500D 1000 0.9641000D 2000 0.9552000D 5000 0.9365000D 10000 0.927D 10000 0.90注:1)影响项目验收测试费用的因素一个是项目的大小,另一个是所选择的测试项。被选测试项多少决定测试费率a,项目大小决定收费调节系数L;2)根据项目特点针对软件各个特性进行选择测试,测试费率为所选择软件特性测试费率3)根据项目大小采取项目建设费越高费率越低原则进行调节。4)项目验收测试最低收费为:8000 元(不含负载压力测试)2 万元(含负载压力测试)a 各项之和。工程监理费软件项目监理收费既考虑了信息系统软件项目的特点,又参照了其它监理行业的收费标准、收费方式。一般可按照项目建设费( 或合同价格 ) 的一定百分比取费。其取费比率主要根据项目的规模、阶段、内容、复杂程度及监理成本等多方面因素综合计算。计算公式如下:监理费 = 建设费 D*基本费率 a* 地域调整系数 d* 工期调整系数 e1)基本费率 a 根据项目建设费的规模进行调整。取值范围如下:表 5监理基本费率 a 取值范围序号项目建设费 D(万元)费率 a( %)1D200 122200 D 500 93500 D 1000 741000 D 2000 652000 D 5000 565000 D 10000 47D 10000 3标准实用2)鉴于软件项目实施时分布的地域会有所不同,因此,监理的费率应在基本费率的基础上考虑地域的因素。地域调整系数d 取值如下:表 6地域凋整系数 d 取值范围序号地域范围地域调整系数1集中实施12地市范围1 1.23全省范围1.2 1.54全国范围1.5 23)鉴于软件项目工期长短不一,因此,监理的费率应在监理的基本费率基础上考虑工期的因素。工期越长,系数越大。工期调整系数e 如下:表 7 工期调整系数 e 取值范围序号工程工期 T(年)工期调整系数 e1T 1e 0.921T2e 1.13T 2e 1.44)其他对于非监理原因造成工程延期而产生的监理附加工作,监理单位有权获得监理附加报酬。监理附加报酬率= 监理费 * 附加工作月数 / 合同规定月数。对于项目结束后的维护,其监理取费由用户单位和监理单位协商解决。本参考标准未作规定的,可参考国家相关标准。数据处理费项目中如含有大量档案、数据需要录入、处理,则需要考虑相应的数据处理服务费。收费标准可以根据所需要处理的资料的页数核计收费。一般情况下单纯的数据录入,收费标准为: 0.3-0.5元/ 页。特殊要求的数据处理可依据合同约定。标准实用3.4附加费如果用户需要软件开发商提交源代码,则必须支付相应的知识产权费;如果所开发的项目是涉密项目,则需额外再支付给软件开发商保密费。这些费用的计算均与软件开发工作量相关,也就是与项目建设费相关,可按照项目建设费的一定比例计取,或者双方协商。3.5 需求变更估算由于软件开发过程中,用户的需求有可能不断变化,从而导致开发工作量的变化,费用追加。故在立项阶段即要请专业机构或者专家对需求变更的风险性进行评估,以便在做项目预算时留出足够应付需求变更的经费。项目需求变更一般发生在项目建设过程中, 立项阶段的咨询服务不受需求变化的影响。但验收测试和工程监理工作量会随着需求变化而加大,所以需求变更费为:需求变更费 = (建设费验收测试费监理费) * 需求变更风险系数 f 风险系数 f 可依据以下因素确定:1) 项目的成熟度:如果是新项目,则开发过程中出现需求变更的可能性很大,且需求变更幅度大,风险系数就高;如果是成熟项目,或者已经有过案例的项目,则需求变化的可能性较小,即使有变化,幅度也不会太高,则风险系数就低。2) 项目的规模大小:如果项目规模小,需求容易确定,变更几率就小,反之就大;3) 用户业务的稳定性和管理的规范性:用户单位业务的变化和业务流程的调整,都有可能带来开发过程中需求的变化。标准实用4) 前期项目需求分析、系统设计的规范性和完善性:前期的需求分析是否全面到位、系统设计的是否规范和细致,会影响到开发过程的需求变化率。4 工作量估算方法工作量指在软件项目建设过程中需要投入的人力和时间,一般用人月数进行度量。项目建设阶段一般可分为: 开发阶段、实施阶段、运行维护阶段。故在工作量需分阶段进行估算。工作量 =开发工作量 +实施工作量 +维护工作量另:由于在软件项目开发过程中,因需求变更导致工作量改变的情形不可避免,故可分别在立项阶段进行工作量预算,在项目完成阶段进行工作量核算。4.1开发阶段工作量估算开发工作量是计算实施阶段和维护阶段工作量的基础。主要有两种估算方法。功能点估算法该方法主要是依据软件项目的功能需求来评估开发工作量。通过分析系统需求计算项目规模(功能点数),再乘以各阶段完成每个功能点所需要投入的人工时(开发成本系数) ,就可计算出完成项目所需要的人月数。适用于立项阶段需求分析比较详细的项目或者用于项目完成阶段的最终工作量估算。开发工作量 D(人月) = (项目功能点 FP*开发成本系数 k/H/W)标准实用其中 H是指国家规定的一天工作时数,W指一个月工作天数。功能点 FP的估算详见附录软件项目功能点估算法。开发成本系数 k 的大小主要是考虑项目的非技术难度,如开发周期、协调难度、业务的复杂程度、 需求的不确定性等因素。 根据对实际数据的测算,开发成本系数 k 取值范围一般为:表 8开发成本系数 k 取值范围功能点数 (FP)开发成本系数(人工时/FP ) 30003.5 4.03000 FP 80004.0 4.5 80004.5 5.0针对个别项目,如果有特殊情况(如某些用户业务的特殊要求是一般项目中从未出现过的、开发人员需要到用户现场开发等),则经专业咨询机构或者专家评估,开发成本系数可以超出此范围上限的限制。任务估算法任务估算法是把软件项目功能分解为若干个相对独立的任务,再分别估计完成每个任务需要的人员搭配比例及投入时间,每个人员的工作量之和就是该任务的工作量。 最后将各个任务的工作量累加起来就得出软件项目的总工作量。该方法适用于立项阶段的工作量估算。依据软件工程的概念、国内软件开发行业的惯例及经验值,软件开发工作可分为:设计、编码、测试。设计各个岗位人员工作量可基于以下标准计算:( 1)以程序员的工作量为标准;( 2)高级程序员的工作量为标准工作量的 1.5 倍;标准实用( 3)系统分析员的工作量为标准工作量的 2.5 倍;( 4)测试工程师的工作量为标准工作量;( 5)高级测试工程师的工作量为标准工作量的 1.5 倍;( 6)项目管理人员的工作量为标准工作量的 3 倍;( 7)市场营销人员的工作量为标准工作量;( 8)技术支持工程师的工作量为标准工作量;( 9)文秘的工作量为标准工作量的 0.5 倍;例如:完成某个任务的人员投入和时间需求如表 9,则其工作量为 60.5人月。表 9某任务工作量估算表开发阶段投入人员情况时间(月)工作量(人月)需求分析系统分析员2 人22*2*2.5=10系统设计系统分析员1 人21*2*2.5=5高级程序员2 人22*2*1.5=6编码高级程序员2 人12*1*1.5=3程序员 4人14*1*1=4测试测试工程师4 人24*2*1=8项目管理项目管理人员 1 人71*7*3=21文案工作文秘 1人71*7*0.5=3.5合计: 60.5 (人月)4.2实施阶段工作量估算软件项目的实施范围因项目而异(有些项目只实施一个单位、有些需要实施多个单位、有些甚至需要全市、全省甚至全国实施),所以实施阶段的费用也会有很大的差异, 甚至有的项目会出现实施费用超过开发费用的情形。实施阶段的工作量可依据开发阶段工作量、实施系数来计算。标准实用实施工作量(人月) = 开发工作量 D*实施系数 s根据项目是集中式实施还是分布式实施,实施系数s 的取值有所不同。1) 集中式实施的项目实施系数 s 与“用户数”相关。设n 为用户数,一般情况下:当 0n 100 时, s=0.2 ;否则, s=0.2 + (n-100 )/100 ) *q (四舍五入取两位小数);q 是调节因子, 取值范围为: 0.03 q0.05 ,具体取值依项目实施难度而定。2) 分布式实施的项目实施系数 s 与“实施单位(点)数”相关。设 n 为需要实施的单位 (点)数,一般情况下:s =0.2 + ( n - 1 )*qq 是调节因子 , 一般取值范围为: 0.08 q0.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评估机构项目概算过程中要充分发挥专家和中介机构在管理与决策中的咨询和评议作用。标准实用附录软件项目规模功能点估算方法软件项目的工作量大小由软件项目规模所决定。软件项目规模大小可根据历史经验、类比等方法来估算,但目前国际上通行的也比较科学的估算方法是采用功能点分析方法。 功能点分析方法是通过一种基于软件功能的预测模型,以各种与软件项目功能有关的因素作为软件开发工作量的度量。一旦项目的需求分析确定,就可以大致得出软件的各项功能要素,并进行相应的功能点计算,以功能点表示软件的规模,并转化为工作量大小。功能点方式目前被广泛认可并应用在信息系统、数据库密集型、4GL应用系统开发等。本指南亦采用功能点作为软件项目规模的度量指标。1 功能点估算流程功能点是对软件功能和大小的间接度量单位, 一般通过必须和用户交互的情况的数目来测算程序工作量的大小。其工作流程如下:1)确定计算范围:确定功能点的计算规范、划定应用程序的边界。2)功能点分析:识别和估算与软件数据和事务功能有关的各种要素及其数量。要确定功能点的数目, 需要对软件的用户输入数、 用户输出数、用户查询表、内部逻辑文件数、外部逻辑文件数的数量进行评估。3)功能点计算(初步):预估出五个要素的数量后,根据复杂度加权因子,计算出初步的功能点数UFC;4)确定技术复杂度因子:根据项目具体情况,对14 个技术复杂度参数进行调整。得出技术复杂度调整参数TCF;标准实用5)功能点调节:计算出经调节后的功能点数:FP=UFC TCF2 功能点分析的要素功能点分析法是从软件用户的角度来评估一个软件系统的功能,它将软件的功能分为五个基本要素:其中两个表示终端用户的数据需求:内部逻辑文件 ( InternalLogicalFiles ),外部 接口文件(ExternalInterfaceFiles),另外三个表示用户对数据的获取处理的事务功能:用户输入(External InPuts),用户输出(External Outputs),用户查询(ExternalInquiries)。它们的详细定义如下:1)内部逻辑文件( ILF ):是一个用户可识别的逻辑相关的数据组,它在应用程序边界内,由用户输入来维护。它可能是某个大型数据库的一部分或是一个独立的文件。2)外部接口文件( EIF):是一个用户可识别的逻辑相关的数据组,但仅仅是起参考的作用,且数据完全存于软件边界之外,由另一个应用程序进行维护,是另一个应用程序的内部逻辑文件。3)用户输入( EI ):是来自于软件外部的数据输入,可以是控制信息,也可是事务数据输入。如果是事务数据,它必须维护一个或多个内部逻辑文件。也就是说那些最后没有保存的中间计算结果和消息发送,都不算作数据输入单元。输入数据可来自于一个数据输入屏幕或其他应用程序。4)用户输出( EO):是“经过处理”的数据,由程序内部输出到外部。这里“经过处理”是指其区别于用户查询数据,是将一个或多个ILF 、EIF中取出数据经过一定的组合、计算、总结后得出的输出数据。5)用户查询( EQ):是一个输入输出的组合过程,从一个或多个ILF 、标准实用EIF中取出数据输出到程序外部。其中的输入过程不更新任何ILF ,输出过程不进行任何数据处理。注:对软件项目进行估算的有效性和准确性取决于所掌握的有关项目的原始资料的完备性。这些原始资料包括:需求说明书、系统规格说明书、或者软件需求说明书等。从这些原始资料中可分析得出以上 5 类要素。如果以上 5 类要素的数据不准确,将直接影响到评估的结果。3 功能点计算(初步值UFC)一旦估算出应用程序中每个功能要素的数量后, 就可以将每个计数与一个复杂度值(加权因子)相乘,最后进行合计,算出一个初步的总的功能点数 UFC。复杂度加权因子表如下:附表 1功能要素复杂度加权因子表复杂度低平均高功能要素外部输入数 EI346外部输出数 EO457外部查询表 EQ346内部逻辑文件数ILF71015外部接口文件数EIF5710例如,假设每个功能要素的复杂度都是平均的。一个由25 个数据登记表、 5 个接口文件, 15 个报告、 10 个外部查询和 20 个逻辑内部表单组成的系统,其功能点为: UFC (25*4)+(5*7)+(15*5)+(10*4)+(20*10) 450每个功能要素的复杂度可通过下表进行分析判断。附表 2功能要素复杂度判别表ILF (内部逻辑文件)和EO(用户输出)和EI (用户输入)EIF (外部接口文件)EQ(用户查询)记录数据单元文件数据单元文件数据单元单元1-1920-5051+类型1-56-1920+类型1-45-1516+1低低平均0 或 1低低平均0 或 1低低平均2-5低平均高2-3低平均高2-3低平均高6平均高高4平均高高4平均高高标准实用从表中可以看出, 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 技术复杂度因子表序号调节参数描 述1E1数据通讯( Data communications)2E2软件性能( Performance )3E3可配置性( Heavily used configuration)4E4事务效率( Transaction rate)5E5实时数据输入( Online data entry)6E6用户界面复杂度( End user efficiency)7E7在线升级( Online update )8E8复杂运算( Complex processing)9E9代码复用性( Reusability ease)10E10安装简易性( Installation ease)11E11操作方便性( Operations ease)12E12跨平台要求( Multiple ease)13E13可扩展性( Facilitate change)14E14分布式数
展开阅读全文