一、引言
随着信息技术的不断进步,信息系统的规模不断扩大、复杂度不断增加、造价越来越高,由此带来了信息系统投资风险的不断加大,使得信息系统造价评估的重要性越发凸显,成为影响信息系统相关各方计划、决策、实施的重要因素。良好的造价评估,对于规范信息产业发展、减少各方矛盾、提高工程质量具有重要意义。因此,学术界和工业界对信息系统造价评估开展了大量研究,提出了许多造价评估方法,比较著名的有基于功能点的分析[1]、COCOMO[2]、COCOMOⅡ[3]等等。
由于当前社会发展速度越来越快,人们的生产生活模式变化也越来越迅速,这对信息系统的建设也造成了重大影响。许多在信息系统开发之初制定的需求,在开发过程中就会发生变化,需求变更是信息系统开发过程中普遍存在的现象,这给信息系统的造价评估带来了新的挑战。当前的造价评估方法没有考虑到开发过程中需求变更的影响,使相关各方难以把握系统的造价,为项目的实施带来不便。
鉴于此,本文提出一种针对需求变更的信息系统的造价评估方法。由于该方法以功能点分析法为基础,因此本文将首先对功能点分析法做简要介绍,然后再详细阐述该方法。
二、基于功能点分析的造价评估方法
基于功能点分析的信息系统造价评估方法如下:
其中BC为通过该模型得到的造价评估值。
UFC是初步功能点数,通过功能要素换算得到。在功能点分析法中,共有五类功能要素,分别是:内部逻辑文件(Internal Logical Files,ILF)、外部接口文件(External Interface Files,EIF)、用户输入(External InPuts,EI)、用户输出(External Outputs,EO)、用户查询(External Inquiries,EQ)。
CRR为代码复用比率:指在软件系统中,被重复使用的代码所占的比率。
TFC为技术复杂度因子:是软件系统技术复杂程度的度量。其值取决于以下14个方面:数据通讯、软件性能、可配置性、事务效率、实时数据输入、用户界面复杂度、在线升级、复杂运算、代码复用性、安装简易性、操作方便性、跨平台要求、可扩展性、分布式数据处理。
PM为软件人员的人月成本:是指软件企业一个月平均需要的所有成本开销(包括工资、奖金、福利、办公成本、国家各种税费、管理费用等等)及软件企业合理利润的总和,除以企业员工人数。
SLOC是程序代码的行数,其值由语言类型L 决定,L与SLOC的对应关系,如表1所示。为了便于讨论,本文假定所研究的软件系统是单一语言的,即在系统开发过程中,L是不变的。
表1 L与SLOC的对应关系
关于UFC、CRR、TFC、PM的具体计算方法可参考文献【1】,限于篇幅,此处不再赘述。
三、考虑需求变更的造价评估方法
在信息系统项目实施过程中,需求变更对于前期的工作来说,会产生继承和破坏两重后果,即在需求变更后,前期的部分成果可以继续使用,而其余的成果将被舍弃。本文的方法就是基于这种思想展开的。
3.1总述
设S0是需求变更前的软件系统、S1是需求变更后的软件系统,则带有需求变更的信息系统的总的造价评估值BC为:
BC0为S0的造价评估值,有:
UFC0、CRR0、TFC0、PM0分别为S0的初步功能点数、代码复用比率、技术复杂度因子和软件人员的人月成本。
BC1是S1的造价评估值,有:
UFC1、CRR1、TFC1、PM1分别为S1的初步功能点数、代码复用比率、技术复杂度因子和软件人员的人月成本。
由于需求变更前后的软件系统会发生变化,导致UFC、CRR、TFC、PM的调整,故这些参数在BC0和BC1的评估中的取值可能不同。
D1和D2是在需求变更发生时,已开发工作对于S0和S1贡献因子,将在下一节讨论。
3.2相关参数的确定方法
在带有需求变更的软件系统的造价评估中,需要重点评估以下两方面的因素:
(1) 在需求变更发生之前得到的成果对S0的影响;
(2) 在需求变更发生之前得到的成果在S1中的影响。
在需求变更发生之前得到的成果对S0和S1的影响分别用贡献因子D1和D2来度量。
由于已完成的工作量并不能构成一个完整的系统,而基于功能点分析法的造价评估模型中的参数都是针对于一个完整系统进行估算的,因此本文采用补余法来估算已完成工作的造价。具体的做法是假定该系统已经完全开发完成,根据已开发完成的工作在整体中所占的比重来估算其造价。同时,又由于已完成的工作量很难用调整后的功能点(即 UFC×CRR×TFC)来表示,所以本文采用初步功能点数(即UFC)来计算工作量。
设UFCA是变更发生时,已经开发的功能点数(即针对S0的需求分析,开发出来的功能点数。该值可以是非整数值,因为某些功能点可能已经开始开发,但并未开发完成),UFCB是在开发S0时完成的,且在S1中依然被保留的功能要素的功能点数(该值同样可以是非整数值)。
设E是从开发S0开始到需求变更发生时,已经进入开发阶段的功能要素构成的集合,e∈E, We是e的复杂度加权因子(Complexity weights Factor), Pe是e完成的比例,Qe是e在变更后的系统S1中被保留的比例,则
UFCA是在开发S0时得到的功能点数,但是已完成工作对S0的贡献并不仅仅是这些,因为S0中未开发的部分里,有些是可以通过复用已完成的代码得到的,已完成工作的这部分贡献记为UFCC。
同理,UFCB也不是已完成工作对S1的全部贡献,因为S1中除UFCB以外的其它部分里,有些是可以通过复用已完成的代码得到的,已完成工作的这部分贡献记为UFCD。
设F是S0中包含未完成工作的功能要素构成的集合(包括两部分:一、已进入开发阶段但未开发完成的功能要素;二、未进入开发阶段的功能要素),f∈F,Wf是f的复杂度加权因子,Rf是f中可以通过复用已完成的代码来实现的工作占f的总工作的比例。则
设G是S1中含有“非S0的保留工作”的功能要素组成集合,g∈G,Wg是g的复杂度加权因子, Tg是g中可以通过复用UFCA中的代码来完成的工作占g的总工作的比例。则
UFCB和UFCD的区别是:UFCB代表的是在 S0中已进入开发,并且在S1中被直接保留下来的工作量;UFCD代表的是S1中其他的可以通过参考或复用中已得到代码来完成的工作量。
贡献因子D1和D2表征的是在变更发生时,已完成的工作量分别占S0和S1的工作量的比率,因此通过以上分析,有
将D1和D2代入公式(1)后,可得到展开后的造价评估值为:
四、结束语
本文对存在需求变更的信息系统的造价评估问题进行了研究,给出了一种造价评估方法的模型。引入贡献因子是该方法的主要特点,旨在描述需求变更对变更前、后两个阶段的造价的影响。由于该造价评估方法包含一定的经验成分,因此,在实践中修正方法中的各项参数、提高评估准确性、确定方法的适用范围是下一步研究工作的重点。
参考文献
[1] 李帜,林立新,曹亚波. 功能点分析方法与实践[M].北京:清华大学出版社,2005
[2] B W Boehm. Software Engineering Economics[ M ] . New Jersey:Prent ice Hall, 1981.
[3] J W Bailey, V R Basili. A Meta Model for Software Development Resources Expenditures[ A] . Proc of the 5th Int Conf on Software Engineering[ C] . 1981. 107-116.