首页 理论教育 软件工程项目成本估算技巧

软件工程项目成本估算技巧

时间:2023-11-06 理论教育 版权反馈
【摘要】:历史项目数据可以为项目成本估算提供参考,前提是这部分数据是完整和准确的。在成本估算过程的最后一步需要对估算的准确度和项目可能存在的风险进行分析,分析的结果用来修正最后的成本估算结果。图8-9成本估算过程

软件工程项目成本估算技巧

在进行项目资源计划的时候,实质上已经开展了一部分项目成本估算的工作,包括工作量估算以及资源组合成本估算等,因此项目成本估算是建立在项目资源计划的基础上,利用资源单位价格、历史信息以及会计报表对整个项目的成本进行近似估算,估算的结果是进行项目预算的基础。

1.软件规模估算

软件规模可以用代码行分析和功能点分析两种方法,现在常用的是功能点分析。

功能点(FP)分析是一种从用户角度对软件开发进行度量的方法,主要从逻辑设计的角度出发对提供给用户的功能进行量化,确定软件的规模。功能点分析的步骤如下。

第一步:识别功能点的类型。

功能点分析可以用在项目上也可以用在应用上,识别类型就是确定是项目还是应用,项目还需要进一步区分是开发项目还是升级项目。

第二步:识别分析范围和应用边界。

分析范围的界定限制了再一次分析中所应该包括的功能范围。应用边界的界定划分了被分析应用与用户之间的界限。

第三步:确定未经调整的功能点数(UFP)。

未经调整的功能点数反映了应用向用户提供的功能数量。可以分成两类:数据功能和交易功能(图8-8)。

数据功能是指向用户提供的满足内部或外部数据需求的功能,包括:

·内部逻辑文件(ILF),指一组用户能够识别的,存在内在逻辑关联的数据或者控制信息,这些数据或信息应该在本应用的边界之内被控制的;

·外部接口文件(EIF),指一组用户能够识别的,在本应用中被引用的,以及存在内在逻辑关联的数据或者控制信息,这些信息是在本应用边界之外被控制的。即本应用的EIF是其他应用的ILF。

交易功能指的是向用户提供用来处理数据的功能,包括下面几个。

·外部输入(EI),指一个处理来自本应用边界之外的一组数据或控制信息的基本处理,外部输入的目的是为了维护一个内部逻辑文件或改变系统的行为;

图8-8 未经调整的功能点数分类

·外部输出(EO),指向一个应用边界之外发送数据或者控制信息的基本处理,该处理过程必须包含至少一个数学公式或计算方法或生成派生数据,外部输出可能包含维护一个内部逻辑文件或改变系统的行为;

·外部查询(EQ),指一个向应用边界之外发送数据或控制信息的基本处理,该处理过程不包含一个数学公式或计算方法或生成派生数据,外部查询不维护内部逻辑文件也不会引起系统行为的改变。

对ILF和EIF的功能点计数从识别ILF、EIF开始,之后确定每个ILF、EIF的复杂度,不同复杂度对应不同的功能点数的贡献。ILF、EIF的复杂度取决于所处理数据的DET和RET。其中,数据元素类型(DET)指的是一个用户可以识别的,非重复的域;记录类型元素(RET)指的是一个EIF或者ILF中用户可以识别的数据的子集。具体见表8-8、表8-9。

表8-8 ILF、EIF复杂度

表8-9 ILF、EIF不同复杂度对应功能点数

对EI、EO和EQ的功能点计数从识别ILF、EIF开始,之后确定每个EI、EO和EQ的复杂度,不同复杂度对应不同的功能点数的贡献。EI、EO和EQ的复杂度由这个EI或EO或EQ的数据元素类型(DET)数和引用文件类型(FTR)数决定的。其中:引用文件类型(FTR)指由一个交易所维护的ILF或者所读取的EIF。具体见表8-10、表8-11、表8-12。(www.xing528.com)

表8-10 EI复杂度

表8-11 EO、EQ复杂度

表8-12 EI、EO、EQ不同复杂度对应功能点数

第四步:确定调整系数。

调整系数(VAF)反映的是应用给用户提供的功能的概况,也可以称为技术复杂度因子(TCF)。VAF包含了14个基本系统特征(GSC,见表8-13),每一个特征都有特定的规则描述来帮助使用者确定该特征对本应用影响的大小。这些影响值从0到5,分别表示对系统从无影响到具有强烈影响的程度。计算公式为

表8-13 基本系统特征

第五步:计算经过调整的功能点。

经过调整的功能点(AFP)是针对不同类型的使用(开发、升级、应用)使用不同的公式计算得来的。

2.成本估算过程

软件规模估算是项目成本估算的一部分,实际成本估算过程还需要考虑系统软硬件计划以及用户培训和系统转换计划。此外,如果软件项目存在有数据迁移和维护,那么这部分费用也需要考虑进去。成本估算过程如图8-9所示。历史项目数据可以为项目成本估算提供参考,前提是这部分数据是完整和准确的。在成本估算过程的最后一步需要对估算的准确度和项目可能存在的风险进行分析,分析的结果用来修正最后的成本估算结果。因此软件项目成果估算的过程可以归结为以下步骤:

①界定项目的边界和范围;

②对项目工作任务进行分解,对每个任务估算所需的资源情况,得到项目资源计划;

③估算每个任务的直接成本,直接成本=需求量×费率,需求量可以通过项目资源计划得到,费率一般可以采用经验数据(比如人力成本)或者是现实采购价格(比如购买服务或者是购买硬件设备);

④估算项目的间接成本,间接成本=∑直接成本×间接成本系数,间接成本系数每个企业因为管理结构、管理方式和成本控制的方式不同而不同,一般是经验数据,为20%~50%;

⑤分析项目可能存在的风险,计提风险准备金、风险准备金用于应对在项目可能出现的新资源需求、项目延期需要增加的成本以及可能的罚金。风险准备金=(∑直接成本+间接成本)×风险准备金系数,风险准备金系数一般是经验数据,为10%~30%;

⑥完成项目成本估算,项目总成本=∑直接成本+间接成本+风险准备金。

从上述过程可以看出有些步骤是在项目进度计划当中完成的,事实上在项目进度计划中也需要考虑成本的问题,而且项目进度与成本之间存在有密切的相关性。

图8-9 成本估算过程

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈