智荣腾 秦晋
(1.山东工商学院管理科学与工程学院,山东 烟台 264005;2.山东省车联网工程技术研究中心,山东 烟台 264005)
软件项目成本估算模型研究综述*
智荣腾1,2秦晋1,2
(1.山东工商学院管理科学与工程学院,山东 烟台 264005;2.山东省车联网工程技术研究中心,山东 烟台 264005)
通过对软件项目成本估算模型研究现状的梳理分析,归纳估算模型的成本影响因子;按照算法驱动式模型、数据驱动式模型以及组合式模型的分类方法对其进行分类,重点比较各类成本估算模型的优缺点;结合当前软件项目的开发环境,讨论软件项目成本估算模型所面临的机遇和挑战,为软件组织选择成本估算模型提供了借鉴。
成本影响因子;软件项目成本估算;算法驱动式模型;数据驱动式模型;组合式模型
成本估算贯穿于整个软件项目的生命周期,有效的估算能够提高软件项目成本效益分析和盈亏平衡分析的准确性,使软件开发企业在生产还是购买之间做出正确决策,为成本管理提供可靠的数据支持。合理的估算既是成本控制的基础、软件开发的成功要素,也是软件项目管理不可或缺的重要环节。提高软件项目成本估算的精确性,建立完善的成本估算模型,正成为软件项目管理的重要课题之一。
1.1 国外研究现状
国外对软件项目成本估算模型的研究始于20世纪60年代,早期模型见表1。
20世纪90年代以前,软件项目成本估算模
表1 国外软件项目成本估算模型
型注重从参数角度得出成本估算规则和公式,估算准确度不高,不能运用在软件项目需求分析的前期阶段。90年代以后的成本估算模型充分利用统计分析、数据挖掘和案例推理等相关技术,并对大量历史数据进行分析测试提高了估算的精度。如:Jørgensen[1]借助回归技术分析了软件开发工作量的精度和偏差,构建了误差估算模型,指出影响估算精度和导致估算偏差的因素,并对这些因素做了显著性检验,为偏差估算提供了有效支持,但模型解释能力和预测能力有限。An等[2]提出基于层次分析法的案例推理成本估算模型,适用于项目前期的招投标阶段,模型基本准确,但其本质仍然是一种基于专家经验和直觉判断的方法,具有较强的主观性。Khalifelu等[3]应用挖掘技术对软件项目进行估算,并与COCOMO模型对比,得出数据挖掘技术可以提高估算效率,但该研究只侧重数据挖掘技术中LR、ANN、SVR和K-NN模型,未探究遗传算法、模糊决策树等技术在软件项目成本估算中的应用。
1.2 国内研究现状
国内的软件项目成本估算在国外研究的基础上取得了一定进展。但国内对软件项目成本估算模型的研究与应用还不够成熟。周杰等[4]介绍了COCOMOⅡ模型基本思路,但未指出COCOMOⅡ模型的适用范围以及未来发展方向。甘早斌等[5]研究了影响软件开发成本估算精确性的因素,分类比较了各类估算技术,但在成本影响因素方面阐述比较笼统。方海光等[6]分析了软件项目成本估算和基于CBR推理的特点,详细描述了COSCBR系统结构,但模型估算的准确性依赖于成本属性数据和范例数据的提取,具有一定的局限性。李明树等[7]将软件项目成本估算模型分为基于算法和非基于算法两种模型,同时指出成本估算方法的主要发展趋势,但只是主要介绍了COCOMO81和COCOMOⅡ模型,而忽略了其他常用的算法模型。李嘉等[8]提出了一种基于功能点规模度量的软件项目成本估算模型,模型对成本估算和管理以及计划编制和资源安排具有一定的辅助作用,但没能克服功能点的主观性强、数据支持少和适用范围窄等缺点。程博等[9]提出了基于ANN的工作量模型,能够准确估算敏捷开发项目的成本,但算法比较复杂且易受训练样本量和噪声数据的影响,需不断调整隐藏层神经元数量。于本海[10]构建了基于全生命周期软件过程进度和成本可信属性和评价指标框架,但在指标体系关系方面仍需加强。彭志[11]将遗传算法和差分进化算法分别结合案例推理技术应用于软件项目工作量估算,能够提高估算精度,但对历史数据库的依赖性较大,不适用于跨领域项目。吴登生等[12]提出SVR模型使软件项目成本的估算结果更加准确,但对不同模型的交互关系研究需进一步加强。
随着各类软件项目成本估算模型的深入运用,学者对传统模型的可行性分析逐渐减少,对模型的改进和探索呈平稳增长态势,着重研究成本估算的影响因子以及模型的适用范围、优势和局限性。研究热点转向提高模型估算精确度,为模型的选择提供理论基础。
软件项目成本影响因子较多,且因子之间相互作用、相互制约,存在着线性或非线性关系。表2列出了五个常见模型的成本影响因子。
表2 模型的成本影响因子
(续)
SDC是由美国空军委托SDC公司研制的最早的软件项目成本估算模型。SDC只考虑了人员、程序、硬件、需求、设备等14个成本影响因子,其取值为0或1。Boehm提出的COCOMO模型应用较为广泛,考虑的影响因子比较全面,包括人员、计算机、产品和项目四个方面。COCOMOⅡ模型对COCOMO模型的影响因子进行调整:新增了可复用性、需要的文档量、人员连续性和多地点开发四个成本影响因子;略去了环境周转时间和现代编程规范两个因子[13],使成本估算模型更符合软件市场发展的要求。功能点法从功能的角度度量软件规模,主要评估了14个技术复杂度因子,规定影响因子的取值范围为0到5[14]。用例点综合了COCOMOⅡ模型和功能点的部分影响因子,增加了系统、需求、安全等方面的影响因子,并将影响因子划分为技术复杂度因子和环境复杂度因子两大类。COCOMOⅡ模型、功能点和用例点均考虑了可复用性影响因子。目前,可复用性对软件项目成本估算影响不断增加,成本影响因子的定义也更加灵活[15]。
通过分析软件项目成本与相关影响因子之间的关系,对成本估算模型进行分类。根据模型的构建基础将成本估算模型划分为算法驱动式、数据驱动式和组合式三类。
3.1 算法驱动式模型
通过分析驱动因子对成本估算影响程度,使成本估算成为主要影响因子变量函数的模型称为算法驱动式模型。基于算法的模型很多,如SDC、SLIM模型、COCOMO模型、COCOMOⅡ模型、功能点模型、PRICE-S等,见表3。
表3 算法驱动式模型分析表
3.2 数据驱动式模型
多元异构的海量数据为数据驱动式模型的构建提供了基础。按照建模采用数据处理技术的不同,可将数据驱动式成本估算模型分为基于回归分析模型和基于机器学习技术模型。
3.2.1 基于回归分析模型
回归模型通过分析成本影响因子与项目成本之间的线性或非线性关系得出成本估算值。主要包括标准回归OLS、“Robust”回归、分类回归树CART、最优子集回归OSR、逐步方差分析Stepwise ANOVA等。其中,最常用的方法是标准回归OLS和“Robust”回归。
标准回归OLS假设一个依赖变量是与一个或多个独立变量相关联的。其限定条件较多,如:具备大量数据、没有数据项丢失和外部因素介入、预测变量不相关且容易解释等[16]。以上条件不满足时,用OLS回归分析技术会对成本估算结果造成偏差。
“Robust”回归分析技术是对OLS的改进,能够提高线性回归结果的真实性,减少外部因素介入带来的影响,消除例外问题,适用于回归变量较少的情况[16]。
3.2.2 基于机器学习技术模型
基于机器学习模型是根据大量历史项目数据,采用人工智能中机器学习方法构造能够拟合数据规则的估算模型。神经网络技术、决策树、案例推理技术和分类预测技术是其典型的例子。
神经网络技术是应用人工智能模拟人脑神经网络进行学习、判断与推理的方法和技术,可对影响因子与成本间的关系进行建模,利用历史数据自动调整算法的参数值,减少实际值与估算值之间的差异[17]。目前神经网络已有40多种类型,其中RBF和BP神经网络的应用最广泛。
1)基于径向基核函数(Radial Basis Function,RBF)的成本估算模型将15个成本影响因子的评分和代码千行数作为输入层数据;在隐含层,通过样本聚类方法确定其节点数;输出层则以人月为单位的成本估算值为唯一节点。
2)反向传播算法(Back Propagation,BP)神经网络将16个成本影响因子和KDSI代码千行数作为输入层节点。17个输入节点、35个隐层节点和1个输出节点通过一边传播一边不断调整权值,使实际输出与期望输出的误差达到最小[18]。
决策树是一种由结点和有向边组成的树结构预测模型。估算决策树将软件开发工作量属性作为叶节点,将软件项目属性作为中间节点,根据经验基准数据构建决策树[19]。它具有计算复杂度低、结果直观、易理解、易维护、可处理高维数据和离散型的属性数据等优点。
案例推理技术(Case Based Reasoning,CBR)是通过访问范例库中的源范例来推理目标范例的解决方案。CBR将当前项目相关特征数据预处理成目标案例[20],通过相似度度量找出与新软件项目最相似的历史项目,进而估算新软件的开发成本[21]。CBR技术具有较强的可理解性,能够准确解决知识表达困难的问题。
分类预测技术根据历史项目的数据建立分类模型,获取分类规则,同时预测新软件项目的目标属性值,构建成本估算模型,从而得到新软件项目的开发成本[16]。分类预测技术具有易操作、耗时短、估算客观等优点,适用于相同项目领域中数据集较小、离散属性明确、目标属性跨度小的软件项目。
3.3 组合式模型
该模型就是把多种单一软件项目成本估算模型组合运用,形成更适合项目估算的公式或模型,能够中和各估算模型利弊、迎合不同项目要求,提高成本估算精度。组合方式模型的种类很多,较典型的有:COBRA、Web-COBRA和Bayesian分析。
3.3.1 COBRA
COBRA将成本估算方法中的算法模型和经验法相结合,通过构建生产率估算模型来估算软件项目成本。其估算步骤分为两大步:第一,建立因果关系模型;第二,建立生产率等式。因果关系模型用于估算成本超支CO,生产率等式用于建立CO和生产率P间的转换关系。CO和P的关系表达式为
P=β0-β1×CO
式中,β0是标称项目生产率;β1是CO和P的斜率。
同时,模型假设工作量和项目规模线性相关,表示为
通过公式可知:软件项目的工作量是由软件规模和生产率共同确定的,而生产率的大小又是由成本超支确定的,因此,成本超支的确定是计算项目工作量的前提。
3.3.2Web-COBRA
用Web-COBRA模型进行成本估算的基本步骤为:第一,确定影响软件项目成本的因素;第二,构建因果关系模型,分析成本影响因子与软件项目成本的关系;第三,综合专家意见;第四,针对Web应用进行剪裁,估算项目规模。目前,该模型仍在完善中。
3.3.3Bayesian分析
Bayesian分析的一个显著特征是在先验的专家判断和项目数据相结合基础上产生性能更优的后验模型。Bayesian分析步骤为:第一,综合分析先验知识和样本数据;第二,根据贝叶斯定理构建概率模型,确定效用函数的假设;第三,确定模型参数的分布,进行决策。Bayesian分析技术融合了回归技术和专家经验的优点,减少了软件项目成本估算时由于数据不完整带来的风险,提高了模型精确度,为成本估算模型提供了重要的理论支持。
软件项目成本估算模型随着软件开发技术的进步、软件数据库的大型化、移动互联网及电子商务普及的O2O电商模式高速发展[22]正不断演进和完善,但没有一种估算模型总是优于其他模型,各类模型具有不同的优缺点,见表4。软件组织要根据具体情况和模型的特点进行选择。
随着“互联网+”、大数据、人工智能的发展,计算机技术不断更新、软件复杂度逐渐增加,软件产业的发展空间更加广阔,软件项目成本管理受到高度重视,给项目成本估算模型的研究工作带来众多机遇和挑战。其机遇和挑战对比见表5。
为了更好地抓住机遇、应对挑战,软件项目成本估算模型需不断改善和演化。要充分应用新技术、合理组合旧方法、准确校正数据集、加强全面管理、提高人员素质、充分利用学科融合优势,努力构造估算准、质量好、效率高、可靠性强、应用广泛的软件项目成本估算模型。
表4 软件项目成本估算模型对比情况表
表5 软件项目成本估算模型的机遇和挑战对比情况表
(续)
本文介绍了国内外软件项目成本估算模型的研究现状,梳理分析了主要影响因子和各类模型的优缺点,总结了应用成本估算模型面临的机遇和挑战。综上所述,本文具有重要的指导作用,能够为构建和选择估算模型提供一定借鉴,同时也预测了未来软件项目成本估算的发展方向。
[1]Jørgensen M.Regression models of software development effort estimation accuracy and bias[J].Empirical Software Engineering,2004,9(4):297-314.
[2]An S,Kim G,Kang K.A case-based reasoning cost estimating model using experience by analytic hierarchy process[J].Building and Environment,2007,42(7):2573-2579.
[3]Khalifelu Z A,Gharehchopogh F S.Comparison and evaluation of data mining techniques with algorithmic models in software cost estimation[J].Procedia Technology,2012,1:65-71.
[4]周杰,杜磊.COCOMOⅡ:软件项目管理中的成本估算方法[J].计算机应用研究,2000,17(11):56-58.
[5]甘早斌,聂正茂,卢正鼎.软件开发成本估算技术综述[J].计算机工程与科学,2005,27(6):108-110.
[6]方海光,陈澎,佘莉.基于范例库推理的软件成本估算模型研究[J].计算机工程,2006,32(19):191-192.
[7]李明树,何梅,杨达,等.软件成本估算方法及应用[J].软件学报,2007,18(4):775-795.
[8]李嘉,易平,宋巍,等.一种基于功能点规模度量的软件成本估算模型[J].软件产业与工程,2011(5):32-35.
[9]程博,于学军.基于敏捷开发的工作量估算模型的研究[J].计算机工程与设计,2013,34(3):909-914.
[10]于本海.可信软件测度理论与方法[M].北京:科学出版社,2014.
[11]彭志.演化算法在软件工作量估算问题上的应用研究[D].广州:华南理工大学,2014.
[12]吴登生,李建平,孙晓蕾.基于加权案例推理模型族的软件成本 SVR 组合估算[J].管理工程学报,2015,29(2):210-216.
[13]Boehm B W,Valerdi R.Achievements and challenges in cocomo-based software resource estimation[J].IEEE Software,2008,25(5):74-83.
[14]Baumann F,Milutinovic A,Roller D.Software engineering inspired cost estimation for process modelling[J].International Journal of Social,Behavioral,Educational,Economic,Business and Industrial Engineering,2016,10(2):555-565.
[15]李效云,杨达,叶凯.InCoME软件成本估算工具[J].计算机工程与设计,2010,31(23):5015-5018.
[16]王晓明.基于分类预测技术的软件成本估算方法的研究与应用[D].北京:国防科学技术大学,2010.
[17]吴琴.软件成本估算技术研究综述[J].科技资讯,2013(18):201-203.
[18]周启超.BP算法改进及在软件成本估算中的应用[J].计算机技术与发展,2016,26(2):195-198.
[19]王晓明,何鸿君,尹俊文,等.决策树分类方法在软件成本估算中的应用研究[J].科技信息,2010(5):466-468.
[20]段美美,于本海,朱萌.基于CBR的软件项目成本估算方法[J].计算机工程与设计,2014(11):3837-3844.
[21]Li Y F,Xie M,Goh T N.A study of mutual information based feature selection for case based reasoning in software cost estimation[J].Expert Systems with Applications,2009,36(3):5921-5931.
[22]于本海,杨永清,孙静林,等.顾客体验与商户线下存在对社区O2O电商接受意向的影响研究[J].管理学报,2015,12(11):1658-1664.PMT
国家自然科学基金项目(71471103,71301089)。
2016-04-27