APP下载

基于CBR 的软件项目成本估算方法

2014-12-23段美美于本海

计算机工程与设计 2014年11期
关键词:案例库检索案例

段美美,于本海,朱 萌

(1.山东师范大学 管理科学与工程学院,山东 济南250014;2.山东工商学院管理科学与工程学院,山东 烟台264005;3.山东工商学院 审计处,山东 烟台264005)

0 引 言

软件项目成本估算是对完成项目规模以及开发过程中所需总工作量的预测[1],是制定项目进度计划和资源合理分配的主要参考依据。但在开发过程中,尤其在软件项目开发前期,开发人员对软件需求功能了解不透彻,获取成本数据不准确,且项目面临各种不确定性风险因素,很难构造一个相对准确的估算模型。项目成本估算过高会造成增加竞标成功的难度;过低则会造成后期项目延期或者产品质量下降,甚至项目失败。在实际开发过程中,由于软件项目受到投入成本不断提高、开发经费有限的双重限制,因成本估算不准确导致项目延期甚至失败,并造成经济损失的案例越来越多。因此,提高成本估算精度是项目管理的核心问题,成本估算研究的成熟和完善也将对软件行业规范化发展起到重要作用。

目前,常用的软件成本估算方法主要有模型型与算法型2种。在模型法中最常用的为COCOMO、COCOMO II模型等。采用模型法可以借鉴历史数据,但是项目甲乙双方信息不对称、项目需求不确定,软件开发前期部分数据不精确,成本驱动因子不易确定,使用模型法进行估算精度相对较差。在算法型估算中,常用的有类比估算、专家判断、遗传算法等方法。Mukhopadhyay等将类比估算法用于软件项目工作量的估算,并验证其准确度高于基于COCOMO 模型的成本估算方法。但类比估算应用必须存在类似可比的知识体系且需要较大的存储容量,具有一定局限性。为了降低案例检索的难度及工作量,本文对人工智能领域基于案例推理 (case-based reasoning,CBR)技术加以改进,应用于软件项目成本估算中。

CBR 技术现已在软件需求分析、软件工作量估算等领域广泛应用。郑康宁等运用高斯指标代替欧式距离,高效处理相似度计算过程中的非线性数据[2],但针对存在较多线性数据的模型,该方法通用性受到限制。付雅芳等改进遗传算法,应用在历史数据较多、关键属性权重不确定的案例搜索中,减小估算误差,但相对计算量较大[3]。将CBR、灰色关联分析等结合进行软件成本估算的研究并不多见。本文充分借鉴CBR 技术在相同或相似案例获取以及推理方面的优势,对软件项目成本估算及其影响因素进行分析,充分发挥灰色关联分析依据相似度判断关联性时可打破常规数理统计对样本量、样本规律的限制,尤其在案例相对较少时,计算量较小的优势,构建基于CBR 的软件项目成本估算模型 (CBRCEM),应用灰色关联分析进行相似案例检索,通过已完成软件项目的历史数据和项目经验,进行软件项目前期 (市场招标期或者合同期)的成本估算,进一步提高估算精确度和准确度,进而提高项目成功率。

1 软件项目管理中的成本估算

成本估算是降低软件预算超支问题的直接举措之一,直接影响资源分配、项目招标、计划安排等管理活动。成本估算贯穿于项目招标之前、开发过程中或者WBS变更、项目各分解模块等整个软件生命周期中。为减小估算误差,必须充分考虑估算过程中的制约因素,对软件工作量做出精确估算,最终得到相对量化的结果[4]。在成本估算过程中应充分考虑项目规模、开发工具、资源需求、人员变更、项目变更、风险等诸多影响因素。资源限制、质量标准和规范要求、变更频率等因素均直接影响项目成本。成本估算重要性直接促使专家学者在估算模型方面的研究工作[5]。目前常用的算法模型估算方法主要有自顶向下 (类比)估算法[6],专家判断法[7],自底而上估算法,参数估算法,算法估计法,遗传算法,神经网络等等。软件成本估算中常用算法比较分析见表1。

表1 软件成本估算常用算法比较

应用CBR 进行软件项目成本估算的优势在于:①基于相同或类似案例发生会得到相同或类似结果的构建原理,通过增量式学习对案例调整扩充和重复使用,扩大案例库的覆盖度,有效提高估算精确度。②CBR 与Delphi法相似,但CBR 具有复用性,可在现有经验基础上调整决策,有效避免因专家偏好、经验差异、专业局限性等影响估算精度,估算过程更加清晰。③对非数值化关键因素属性进行量化处理,扩大关键属性因子选取范围。

2 基于案例推理的成本估算模型(CBRCEM)构建

2.1 案例推理 (CBR)

CBR 技术通过案例库中的相关或相似案例匹配并输出目标案例的解决方法。在结构化案例表示、案例相似检索以及案例库更新等方面逐步改进,在故障诊断[9]、工程建设项目[10]、供应链风险管理、医疗领域[11]、财务危机预警[12]、突 发 事 件 应 急 管 理[13]、工 业 设 计[14]、旅 游 服 务业[15]等领域已经得到成功应用。

2.2 基于案例推理的成本估算模型 (CBRCEM)构建

案例推理依据4R 模块循环,包括相似案例检索 (retrieve)、重用 (reuse)、修 改调 整 (revise)、学 习 (retain),其中Retrieve是CBR的关键环节,根据实际需求选取最为匹配的案例检索方法,可以提高匹配精确度和效率。Revise是CBR中较难的环节,在处理过程中,通常根据相关专业领域知识和用户需求有针对性的修改和调整,灵活性相对较强。

CBRCEM= {A,CASE,Q}其中,A= {s,k}表示需求分析专家及其知识和经验储备;s表示需求分析专家;k表示其知识和经验储备;Q 表示项目需求,包括功能需求、非功能需求以及相关领域的需求;CASE 表示联系A 和Q 的基于案例推理的系统,它是由案例库、基于案例推理活动及其对应的规则组成。CASE= (P,E,O,S,V)。P表示待解决问题的需求描述;E 表示案例的表示形式;O 表示输出的问题匹配记录;S表示问题解决方案;V表示专家评价。

CBRCEM 中的案例推理流程算法如下:

步骤1 根据案例库属性,搜集当前软件项目相关特征数据,按照统一模式预处理,得出目标案例;

步骤2 计算当前目标案例与案例库中源案例之间的相似度;

步骤3 进行案例相似度匹配,若匹配成功,则返回相似度最大的范例,跳转到步骤4;否则对目标案例进行调整和修改,跳转到步骤2;

步骤4 选取输出案例作为目标问题备用解决方案,根据实际要求适当调整;

步骤5 输出解决方案;步骤6 相似度判断,更新案例库描述。CBRCEM 系统的流程如图1所示。

2.2.1 案例库的建立及案例表示

在CBRCEM 中,首先分析整理已经完成、具有代表性的软件项目案例,对影响软件项目成本估算的各关键因素分类整合,初步建立存储框架,即源案例库。其次,分析不同项目需求在成本估算管理领域的适用性和匹配性,在加入新案例时对现有结构进行补充和调整,使软件项目成本估算分类尽可能完善,为扩充案例库提供清晰的基础框架,案例库的完善程度直接关系到案例检索的准确程度[16]。

图1 基于案例推理的成本估算模型(CBRCEM)基本流程

构建CBRCEM 模型的基础是案例表示,即数据预处理。输入数据的精确性直接影响案例检索的效率和准确性。案例表示至少包括两部分:①问题描述,②问题求解目标及完成该目标的解决方法。常用案例表示方法有语义网络、产生式、逻辑、框架、面向对象、因果关系图等。案例表示由3部分组成:

(1)案例编号、案例所属类型及收集时间;

(2)案例的关键属性及权重;

(3)备注。

针对成本估算特性,CBRCEM 中案例表示将采取框架表示法,实现案例结构性的记录。影响软件成本的因素很多,在计算相似度过程中,案例推理性能与选取的关键属性呈正相关。结合软件成本估算的主要影响因素分析,从项目自身因素、技术因素、人员因素归纳出当前影响软件成本的9个关键属性。关键属性特征,如表2所示。据此,得出CBRCEM 关键属性,如表3所示。不同属性在项目成本整体估算过程中相对重要程度不同,CBRCEM 中各属性的权重值由需求分析专家打分或者层次分析法 (AHP)确定。关键属性Xij的属性权重为ωij。

表2 源案例属性特征

表3 CBRCEM 关键属性

2.2.2 案例检索

案例检索是CBRCEM 的核心模块,根据实际需求选取最佳案例检索方法对案例进行检索,利用相似度算法从案例库中匹配关联度较大的相关案例。相似度方法选取直接影响CBR 的检索效率。常用案例检索策略主要有最近相邻策略 (nearest-neighbor method)、归纳推理策略 (inductive method)、知 识 引 导 策 略 (knowledge-based indexing method)、模板检索策略 (template retrieval method)等。最近相邻策略是基于距离相似性的方法,容易实现,但仅从单一特征方面检索最相似案例,计算过程中的逐一比较造成工作量较大,检索灵活降低。归纳引导策略中由于信息增益的引入,使用样本分类属性的数目达到最小,但是受最优启发函数的制约,并不能确保得到的分类属性数目最小。基于神经网络的最近相邻策略、树路径匹配的网页结构相似度算法[19]、相似度加权求和的遗传算法[20]、权重树的本体相似度算法[21]等在算法实现较为困难。灰色关联分析能够准确计算各因子间关联程度或相似程度。根据软件项目成本估算的特点,CBRCEM 将采用灰色关联理论优化案例的检索和匹配过程,该算法能够在历史数据相对较少时得出准确估算值。其中,采用灰色关联度作为案例的相似性指标,并针对案例库中各源案例属性的量纲、数量级的差异性,在计算相似度之前,对数据进行归一化处理,把案例属性值归一化到某一无量纲区间并且使所有相关属性归一化到同一数量级内,提高待解决新案例与源案例匹配精确度[22]。

设目标案例F0={f01,f02,…f0j,…f0m},案例库中源案例集合为C={C1,C2,…Ci,…Cn},其中第i个案例的属性集合为Ci={fi1,fi2…,fij,…,fim},即:Fij表示案例i的第j 个属性,属性矩阵Fij的表示形式如下

记第j列属性值的平均值为

式中:Xij——属性值fij偏离均值的程度,将原始属性值转换到 [-1,1]区间上的效用函数为Yij,记

显然Yij=f(Xij)是一条S型曲线 (Yij效用函数曲线如图2所示)。

待解决目标案例F0={f′01,f′02,…f′0j,…f′0m},根据灰色关联理论,F0与源案例C在关键属性Fij上的局部灰色相似度 (grey similarity,GS)定义为

作为衡量待解决目标案例与源案例关键属性关联程度的度量值,Ri值越大,两案例相似的可能性就越大。将输出的综合灰色关联度值的大小进行排序,取关联度值最大的案例作为最相似案例,并输出i值。

在匹配过程中,关联度最大的案例是否可以作为求解案例,还需要预先设置一个阈值T,用来判断案例的匹配是否达到预设的要求。当关联度Ri大于阈值T 时,说明匹配度达到要求,同时输出匹配成功记录。此时检索出的源案例可用作为可能解决方案。当关联度Ri小于阈值T 时,说明匹配度未达到要求,输出匹配未成功记录,此时则需要对案例进行必要的修正和调整,然后重新进行案例检索和匹配。结合CBRCEM 模型中软件成本估算案例相似度以及专家意见,阈值T 取0.5,由此可以得到符合匹配要求的项目案例。

一般情况下,为了提高成本估算精度,在案例检索和匹配过程中,可以根据关联度R 对筛选的案例进行排名。根据排名依次选取3 个最相似项目对应的实际工期采取PERT 加权平均的算法,即 (O+4M+P)/6,将加权平均值作为待估算项目的工期估算值,尽可能使误差率最小。同时适量选取相似项目,避免因引入太多相似度不高的项目,反而会因过度拟合而降低估算的准确性,选取项目过少同样不能得到比较准确的估算值。

CBRCEM 中利用灰色关联理论估算软件成本的算法如下:

步骤1 数据标准化处理。构造源案例关键属性矩阵Fij,目标案例的属性矩阵F0j,根据式 (1)~式 (3),进行数据标准化处理,消除因子间量纲差异对求解结果的影响

步骤3 确定相似案例。将灰色关联度值Ri按照大小进行排序,取关联程度值最大者为最相似案例,并输出i值。

步骤4 确定求解案例。当相似度Ri大于阈值T 时,说明可依据案例i的成本估算得出目标案例的成本。反之,则需要对目标案例关键属性值进行调整,重新进行检索、匹配。选取Ri值较大的前3个案例的成本值进行PERT 加权平均,作为目标案例的估算成本。

步骤5 输出目标案例估算成本。

2.2.3 案例重用和存储

CBRCEM 中案例修改包括2个部分:①对于2.2.2案例检索和匹配过程中出现相似度S小于阈值T,匹配度未达到要求的案例,进行案例的调整和修改,进而重新进行检索,并根据实际的需要进行修正。②对于检索出的源案例,结合待解决问题进行修正,得出更精确的解决方案。由于系统自动修整技术非常困难,所以CBRCEM 中的案例调整和修改采用专家干预的形式,由系统分析专家根据项目成本管理的具体情况,参照案例调整和修正建议,进行针对性的修改。

CBRCEM 通过案例学习判断当前目标案例是否具备存储条件,实现案例库同步的更新和扩充升级,保证CBRCEM有效投入应用。①案例库更新:目标案例相比匹配案例更加完善,此时将目标案例进行修复加工后,覆盖匹配案例存入案例库,并未改变案例库的数量;②案例库扩充升级:目标案例不能代表检索出的匹配案例,将目标案例进行加工,并作为新案例存入案例库,实现案例库扩充升级。

当案例库中存储案例较多时,还可以通过聚类分析对案例库进行进一步的改进。通过SPSS进行聚类分析,将同一类型的相似案例进行归类并整合,抽象出一个代表性的案例,通过不断改善现有案例库,提高估算精确度。

3 实例应用

山东某软件公司为A 公司开发一套客户关系管理信息系统平台,通过项目的前期调研分析,得到该项目各属性的特征值,见表4。该软件公司已经完成的10个项目属性特征值,见表5;专家采用Delphi法,通过源案例库属性特征和目标案例属性特征分析,应用AHP算法,得到关键属性特征权重列表,见表6。应用本文构建的CBRCEM 进行软件成本估算。

表4 目标属性

表5 源案例库属性

表6 CBRCEM 关键属性权重

(1)在模型中导入数据

依据式 (1)、式 (2)、式 (3)对数据进行标准化处理,然后根据CBRCEM 中的灰色关联理论算法筛选源案例库中与目标案例相似度最大的案例,输出结果如下

(2)案例选取

1)由Ri、i的输出值可知,即目标案例F0与案例F6最为相近。

2)选取Ri值较大的案例F6、案例F3、案例F7的成本值,结合PERT 加权平均,分别取M=108、O=112、P=116代入公式 (O+4M+P)/6,计算可得C0=110。

3)结合专家意见输出解决方案,目标案例的项目成本约为110万元。

项目完成之后,实际成本费用为119 万元。CBRCEM模型估算的项目成本的误差率为8.1%。通过CBRCEM 模型为待开发软件的成本估算提供了参考数据,同时结合PERT 加权平均法,使估算结果更为准确。CBRCEM 模型在Windows平台上用JAVA 语言开发完成。

4 结束语

通过分析现有软件项目成本估算算法模型,建立基于CBR 理论的CBRCEM 估算方法。通过案例检索、重用、修改和调整、学习等步骤,实现软件成本的估算。论文采用重实例化和案例学习方法,通过引入归一化效用函数和对灰色关联分析加以改进,使CBRCEM 应用更具针对性。在案例重用过程中,需借鉴专家干预的形式,由系统分析专家结合实际,对CBRCEM 模型输出的解决方案进一步调整和修改,必要时需要用户干预。CBRCEM 构建是软件项目成本估算实践在CBR 领域的初步的探索,具有良好的开放性和可扩展性。但CBRCEM 的研究还存在诸多缺点和不足,仍存在很大的探讨分析空间。例如:在案例的检索和匹配阶段,对于相似算法的检索效率就可以作为未来研究的内容之一。

[1]HAN Wanjiang,JIANG lixin.Software project management case tutorial[M].Beijing:Mechanical Industry Press,2009(in Chinese). [韩万江,姜立新.软件项目管理案例教程[M].北京:机械工业出版社,2009.]

[2]ZHENG Kangning,LI Xiagnyang,YANG Kai.Gaussian method in case-based reasoning and applications [J].Operations Research and Management,2011,20 (6):99-105 (in Chinese).[郑康宁,李向阳,杨凯.高斯—案例推理方法的预测模型及应用 [J].运筹与管理,2011,20 (6):99-105.]

[3]FU Yafang,LIU Xiaodong,LI Yanjie,et al.Software cost estimation method based on genetic algorithm and case-based reasoning [J].Computer Engineering and Applications,2012,48 (8):86-91 (in Chinese).[付雅芳,刘晓东,李延杰,等.基于遗传算法和案例推理的软件费用估算方法 [J].计算机工程与应用,2012,48 (8):86-91.]

[4]Kathy Schwalbe.IT project management [M].5nd ed.YANG Kun,transl.Beijing: Mechanical Industry Press,2009 (in Chinese). [Kathy Schwalbe.IT 项目管理 [M].5版.杨坤,译.北京:机械工业出版社,2009.]

[5]Li YF,Xie M,Goh TN.A study of mutual information based feature selection for case based reasoning in software cost estimation [J].Expert Systems with Applications,2009 (36):5921-5931.

[6]Li YF,Xie M,Goh TN.A study of project selection and feature weighting for analogy based software cost estimation [J].Journal of Systems and Software,2009,82 (2):241-252.

[7]Jrgensen M.Forecasting of software development work effort:Evidence on expert judgement and formal models[J].International Journal of Forecasting,2007,23 (3):449-462.

[8]BIAN Xia,MI Liang.Development on genetic algorithm theory and its applications [J].The Research and Application of Computer,2010,27 (7):2425-2429 (in Chinese). [边霞,米良.遗传算法理论及其应用研究进展 [J].计算机应用研究,2010,27 (7):2425-2429.]

[9]YAN Jun,NI Zhiwei,WANG Hongyu,et al.On applying case-base reasoning in car fault diagnosis [J].The Research and Application of Computer,2009,26 (10):3846-3848 (in Chinese).[严军,倪志伟,王宏宇,等.案例推理在汽车故障诊断中的应用 [J].计算机应用研究,2009,26 (10):3846-3848.]

[10]TaeHoon Hong,ChangTaek Hyun,HyunSeok Moon.CBRbased cost prediction model-II of the design phase for multifamily housing projects [J].Expert Systems with Applications,2011 (38):2797-2808.

[11]QU Gang,TANG Jiafu,LIU Zhe.Self-adaptive clinical pathway system based on CBR and Multi-agent[J].System Engineering,2012 (11):101-106 (in Chinese). [曲刚,唐加福,刘喆.基于CBR 和Multi-agent的自适应临床路径系统 [J].系统工程,2012 (11):101-106.]

[12]LIAO Zhiwen.Financial distress pre-warning based on CBR and gray correlation degree[J].Computer Project,2012,38(1):174-176 (in Chinese).[廖志文.基于CBR 与灰色关联度的财务危机预警 [J].计算机工程,2012,38 (1):174-176.]

[13]ZHANG Yingju,ZHONG Qiuyan,YE Xin,et al.Research on method of emergency aid decision-making based on CBR[J].The Research and Application of Computer,2009,26(4):1412-1415 (in Chinese).[张英菊,仲秋雁,叶鑫,等.基于案例推理的应急辅助决策方法研究 [J].计算机应用研究,2009,26 (4):1412-1415.]

[14]SONG Kai,ZHOU Jing,YANG Yu.CBR-based digital design and research for precision planter [J].Computer Engineering and Design,2011,32 (2):646-648 (in Chinese).[宋凯,周静,杨宇.基于CBR 的精密播种机数字化设计研究 [J].计算机工程与设计,2011,32 (2):646-648.]

[15]LIU Xiaowen,YU Jin.Automated negotiation system for tourism enterprises based on RBR and CBR technology [J].Computer Engineering and Design,2012,33 (12):4696-4700 (in Chinese).[刘晓文,于瑾.融合RBR 和CBR 的旅游服务企业自动谈判系统研究 [J].计算机工程与设计,2012,33 (12):4696-4700.]

[16]HAN Min,SHEN Lihua.Case-based reasoning based on FCM and neural network [J].Control and Decision,2012,27 (9):1421-1424 (in Chinese). [韩 敏,沈 力 华.基 于FCM 与神经网络的案例推理方法 [J].控制与决策,2012,27 (9):1421-1424.]

[17]ZHOU Hanbing,GUAN Xin,MA Li.Function point analysis’s application in software development[J].Computer Engineering and Design,2006,27 (3):525-526 (in Chinese).[周汉兵,关昕,马力.功能点度量在软件开发中的应用[J].计算机工程与设计,2006,27 (3):525-526.]

[18]Boehm BW.Software cost estimation with Cocomo II[M].LI Shixian,transl.Beijing:Mechanical Industry Press,2005(in Chinese).[Boehm BW.软件成本估算:COCOMO Ⅱ模型方法 [M].李师贤,译.北京:机械工业出版社,2005.]

[19]LIAO Haowei,YANG Yan,JIA Zhen,et al.An improved Web structure similarity based on matching algorithm of tree paths[J].Journal of Jilin University (Natural Science Edition),2012,50 (6):1199-1203 (in Chinese). [廖浩伟,杨燕,贾真,等.一种改进的基于树路径匹配的网页结构相似度算法 [J].吉林大学学报 (理学版),2012,50 (6):1199-1203.]

[20]FENG Wenjiang,LIU Zhen,QIN Chunling.Application of casebased reasoning in cognitive engine[J].Pattern Recognition and Artificial Intelligence,2011,24 (3):400-404 (in Chinese).[冯文江,刘震,秦春玲.案例推理在认知引擎中的应用 [J].模式识别与人工智能,2011,24 (3):400-404.]

[21]CAO Can,ZHAO Fang,CHEN Hang.Domain ontology fragment similarity algorithm based on weightted-tree [J].Computer Engineering and Design,2010,31 (20):4347-4349 (in Chinese).[曹灿,赵方,陈航.基于权重树的领域本体片段相似度算法 [J].计算机工程与设计,2010,31(20):4347-4349.]

[22]CHEN Ling,CHENG Zhonghua,ZENG Huiyan.Study on case retrieval of case-based RCM analysis system [J].Computer Engineering and Design,2012,33 (2):581-585 (in Chinese). [陈凌,程中华,曾慧燕.基于案例推理的RCM分析系统中案例检索研究 [J].计算机工程与设计,2012,33 (2):581-585.]

猜你喜欢

案例库检索案例
心血管外科教学案例库的建设及应用研究
国内首个海事司法案例库正式上线
案例4 奔跑吧,少年!
基于实践应用的基坑工程设计案例库建设研究
随机变量分布及统计案例拔高卷
MTI朝鲜语同声传译教学案例库建设研究
发生在你我身边的那些治超案例
专利检索中“语义”的表现
一个模拟案例引发的多重思考
国际标准检索