智榮騰 秦晉
(1.山東工商學(xué)院管理科學(xué)與工程學(xué)院,山東 煙臺(tái) 264005;2.山東省車聯(lián)網(wǎng)工程技術(shù)研究中心,山東 煙臺(tái) 264005)
軟件項(xiàng)目成本估算模型研究綜述*
智榮騰1,2秦晉1,2
(1.山東工商學(xué)院管理科學(xué)與工程學(xué)院,山東 煙臺(tái) 264005;2.山東省車聯(lián)網(wǎng)工程技術(shù)研究中心,山東 煙臺(tái) 264005)
通過對(duì)軟件項(xiàng)目成本估算模型研究現(xiàn)狀的梳理分析,歸納估算模型的成本影響因子;按照算法驅(qū)動(dòng)式模型、數(shù)據(jù)驅(qū)動(dòng)式模型以及組合式模型的分類方法對(duì)其進(jìn)行分類,重點(diǎn)比較各類成本估算模型的優(yōu)缺點(diǎn);結(jié)合當(dāng)前軟件項(xiàng)目的開發(fā)環(huán)境,討論軟件項(xiàng)目成本估算模型所面臨的機(jī)遇和挑戰(zhàn),為軟件組織選擇成本估算模型提供了借鑒。
成本影響因子;軟件項(xiàng)目成本估算;算法驅(qū)動(dòng)式模型;數(shù)據(jù)驅(qū)動(dòng)式模型;組合式模型
成本估算貫穿于整個(gè)軟件項(xiàng)目的生命周期,有效的估算能夠提高軟件項(xiàng)目成本效益分析和盈虧平衡分析的準(zhǔn)確性,使軟件開發(fā)企業(yè)在生產(chǎn)還是購(gòu)買之間做出正確決策,為成本管理提供可靠的數(shù)據(jù)支持。合理的估算既是成本控制的基礎(chǔ)、軟件開發(fā)的成功要素,也是軟件項(xiàng)目管理不可或缺的重要環(huán)節(jié)。提高軟件項(xiàng)目成本估算的精確性,建立完善的成本估算模型,正成為軟件項(xiàng)目管理的重要課題之一。
1.1 國(guó)外研究現(xiàn)狀
國(guó)外對(duì)軟件項(xiàng)目成本估算模型的研究始于20世紀(jì)60年代,早期模型見表1。
20世紀(jì)90年代以前,軟件項(xiàng)目成本估算模
表1 國(guó)外軟件項(xiàng)目成本估算模型
型注重從參數(shù)角度得出成本估算規(guī)則和公式,估算準(zhǔn)確度不高,不能運(yùn)用在軟件項(xiàng)目需求分析的前期階段。90年代以后的成本估算模型充分利用統(tǒng)計(jì)分析、數(shù)據(jù)挖掘和案例推理等相關(guān)技術(shù),并對(duì)大量歷史數(shù)據(jù)進(jìn)行分析測(cè)試提高了估算的精度。如:J?rgensen[1]借助回歸技術(shù)分析了軟件開發(fā)工作量的精度和偏差,構(gòu)建了誤差估算模型,指出影響估算精度和導(dǎo)致估算偏差的因素,并對(duì)這些因素做了顯著性檢驗(yàn),為偏差估算提供了有效支持,但模型解釋能力和預(yù)測(cè)能力有限。An等[2]提出基于層次分析法的案例推理成本估算模型,適用于項(xiàng)目前期的招投標(biāo)階段,模型基本準(zhǔn)確,但其本質(zhì)仍然是一種基于專家經(jīng)驗(yàn)和直覺判斷的方法,具有較強(qiáng)的主觀性。Khalifelu等[3]應(yīng)用挖掘技術(shù)對(duì)軟件項(xiàng)目進(jìn)行估算,并與COCOMO模型對(duì)比,得出數(shù)據(jù)挖掘技術(shù)可以提高估算效率,但該研究只側(cè)重?cái)?shù)據(jù)挖掘技術(shù)中LR、ANN、SVR和K-NN模型,未探究遺傳算法、模糊決策樹等技術(shù)在軟件項(xiàng)目成本估算中的應(yīng)用。
1.2 國(guó)內(nèi)研究現(xiàn)狀
國(guó)內(nèi)的軟件項(xiàng)目成本估算在國(guó)外研究的基礎(chǔ)上取得了一定進(jìn)展。但國(guó)內(nèi)對(duì)軟件項(xiàng)目成本估算模型的研究與應(yīng)用還不夠成熟。周杰等[4]介紹了COCOMOⅡ模型基本思路,但未指出COCOMOⅡ模型的適用范圍以及未來發(fā)展方向。甘早斌等[5]研究了影響軟件開發(fā)成本估算精確性的因素,分類比較了各類估算技術(shù),但在成本影響因素方面闡述比較籠統(tǒng)。方海光等[6]分析了軟件項(xiàng)目成本估算和基于CBR推理的特點(diǎn),詳細(xì)描述了COSCBR系統(tǒng)結(jié)構(gòu),但模型估算的準(zhǔn)確性依賴于成本屬性數(shù)據(jù)和范例數(shù)據(jù)的提取,具有一定的局限性。李明樹等[7]將軟件項(xiàng)目成本估算模型分為基于算法和非基于算法兩種模型,同時(shí)指出成本估算方法的主要發(fā)展趨勢(shì),但只是主要介紹了COCOMO81和COCOMOⅡ模型,而忽略了其他常用的算法模型。李嘉等[8]提出了一種基于功能點(diǎn)規(guī)模度量的軟件項(xiàng)目成本估算模型,模型對(duì)成本估算和管理以及計(jì)劃編制和資源安排具有一定的輔助作用,但沒能克服功能點(diǎn)的主觀性強(qiáng)、數(shù)據(jù)支持少和適用范圍窄等缺點(diǎn)。程博等[9]提出了基于ANN的工作量模型,能夠準(zhǔn)確估算敏捷開發(fā)項(xiàng)目的成本,但算法比較復(fù)雜且易受訓(xùn)練樣本量和噪聲數(shù)據(jù)的影響,需不斷調(diào)整隱藏層神經(jīng)元數(shù)量。于本海[10]構(gòu)建了基于全生命周期軟件過程進(jìn)度和成本可信屬性和評(píng)價(jià)指標(biāo)框架,但在指標(biāo)體系關(guān)系方面仍需加強(qiáng)。彭志[11]將遺傳算法和差分進(jìn)化算法分別結(jié)合案例推理技術(shù)應(yīng)用于軟件項(xiàng)目工作量估算,能夠提高估算精度,但對(duì)歷史數(shù)據(jù)庫(kù)的依賴性較大,不適用于跨領(lǐng)域項(xiàng)目。吳登生等[12]提出SVR模型使軟件項(xiàng)目成本的估算結(jié)果更加準(zhǔn)確,但對(duì)不同模型的交互關(guān)系研究需進(jìn)一步加強(qiáng)。
隨著各類軟件項(xiàng)目成本估算模型的深入運(yùn)用,學(xué)者對(duì)傳統(tǒng)模型的可行性分析逐漸減少,對(duì)模型的改進(jìn)和探索呈平穩(wěn)增長(zhǎng)態(tài)勢(shì),著重研究成本估算的影響因子以及模型的適用范圍、優(yōu)勢(shì)和局限性。研究熱點(diǎn)轉(zhuǎn)向提高模型估算精確度,為模型的選擇提供理論基礎(chǔ)。
軟件項(xiàng)目成本影響因子較多,且因子之間相互作用、相互制約,存在著線性或非線性關(guān)系。表2列出了五個(gè)常見模型的成本影響因子。
表2 模型的成本影響因子
(續(xù))
SDC是由美國(guó)空軍委托SDC公司研制的最早的軟件項(xiàng)目成本估算模型。SDC只考慮了人員、程序、硬件、需求、設(shè)備等14個(gè)成本影響因子,其取值為0或1。Boehm提出的COCOMO模型應(yīng)用較為廣泛,考慮的影響因子比較全面,包括人員、計(jì)算機(jī)、產(chǎn)品和項(xiàng)目四個(gè)方面。COCOMOⅡ模型對(duì)COCOMO模型的影響因子進(jìn)行調(diào)整:新增了可復(fù)用性、需要的文檔量、人員連續(xù)性和多地點(diǎn)開發(fā)四個(gè)成本影響因子;略去了環(huán)境周轉(zhuǎn)時(shí)間和現(xiàn)代編程規(guī)范兩個(gè)因子[13],使成本估算模型更符合軟件市場(chǎng)發(fā)展的要求。功能點(diǎn)法從功能的角度度量軟件規(guī)模,主要評(píng)估了14個(gè)技術(shù)復(fù)雜度因子,規(guī)定影響因子的取值范圍為0到5[14]。用例點(diǎn)綜合了COCOMOⅡ模型和功能點(diǎn)的部分影響因子,增加了系統(tǒng)、需求、安全等方面的影響因子,并將影響因子劃分為技術(shù)復(fù)雜度因子和環(huán)境復(fù)雜度因子兩大類。COCOMOⅡ模型、功能點(diǎn)和用例點(diǎn)均考慮了可復(fù)用性影響因子。目前,可復(fù)用性對(duì)軟件項(xiàng)目成本估算影響不斷增加,成本影響因子的定義也更加靈活[15]。
通過分析軟件項(xiàng)目成本與相關(guān)影響因子之間的關(guān)系,對(duì)成本估算模型進(jìn)行分類。根據(jù)模型的構(gòu)建基礎(chǔ)將成本估算模型劃分為算法驅(qū)動(dòng)式、數(shù)據(jù)驅(qū)動(dòng)式和組合式三類。
3.1 算法驅(qū)動(dòng)式模型
通過分析驅(qū)動(dòng)因子對(duì)成本估算影響程度,使成本估算成為主要影響因子變量函數(shù)的模型稱為算法驅(qū)動(dòng)式模型?;谒惴ǖ哪P秃芏?,如SDC、SLIM模型、COCOMO模型、COCOMOⅡ模型、功能點(diǎn)模型、PRICE-S等,見表3。
表3 算法驅(qū)動(dòng)式模型分析表
3.2 數(shù)據(jù)驅(qū)動(dòng)式模型
多元異構(gòu)的海量數(shù)據(jù)為數(shù)據(jù)驅(qū)動(dòng)式模型的構(gòu)建提供了基礎(chǔ)。按照建模采用數(shù)據(jù)處理技術(shù)的不同,可將數(shù)據(jù)驅(qū)動(dòng)式成本估算模型分為基于回歸分析模型和基于機(jī)器學(xué)習(xí)技術(shù)模型。
3.2.1 基于回歸分析模型
回歸模型通過分析成本影響因子與項(xiàng)目成本之間的線性或非線性關(guān)系得出成本估算值。主要包括標(biāo)準(zhǔn)回歸OLS、“Robust”回歸、分類回歸樹CART、最優(yōu)子集回歸OSR、逐步方差分析Stepwise ANOVA等。其中,最常用的方法是標(biāo)準(zhǔn)回歸OLS和“Robust”回歸。
標(biāo)準(zhǔn)回歸OLS假設(shè)一個(gè)依賴變量是與一個(gè)或多個(gè)獨(dú)立變量相關(guān)聯(lián)的。其限定條件較多,如:具備大量數(shù)據(jù)、沒有數(shù)據(jù)項(xiàng)丟失和外部因素介入、預(yù)測(cè)變量不相關(guān)且容易解釋等[16]。以上條件不滿足時(shí),用OLS回歸分析技術(shù)會(huì)對(duì)成本估算結(jié)果造成偏差。
“Robust”回歸分析技術(shù)是對(duì)OLS的改進(jìn),能夠提高線性回歸結(jié)果的真實(shí)性,減少外部因素介入帶來的影響,消除例外問題,適用于回歸變量較少的情況[16]。
3.2.2 基于機(jī)器學(xué)習(xí)技術(shù)模型
基于機(jī)器學(xué)習(xí)模型是根據(jù)大量歷史項(xiàng)目數(shù)據(jù),采用人工智能中機(jī)器學(xué)習(xí)方法構(gòu)造能夠擬合數(shù)據(jù)規(guī)則的估算模型。神經(jīng)網(wǎng)絡(luò)技術(shù)、決策樹、案例推理技術(shù)和分類預(yù)測(cè)技術(shù)是其典型的例子。
神經(jīng)網(wǎng)絡(luò)技術(shù)是應(yīng)用人工智能模擬人腦神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)、判斷與推理的方法和技術(shù),可對(duì)影響因子與成本間的關(guān)系進(jìn)行建模,利用歷史數(shù)據(jù)自動(dòng)調(diào)整算法的參數(shù)值,減少實(shí)際值與估算值之間的差異[17]。目前神經(jīng)網(wǎng)絡(luò)已有40多種類型,其中RBF和BP神經(jīng)網(wǎng)絡(luò)的應(yīng)用最廣泛。
1)基于徑向基核函數(shù)(Radial Basis Function,RBF)的成本估算模型將15個(gè)成本影響因子的評(píng)分和代碼千行數(shù)作為輸入層數(shù)據(jù);在隱含層,通過樣本聚類方法確定其節(jié)點(diǎn)數(shù);輸出層則以人月為單位的成本估算值為唯一節(jié)點(diǎn)。
2)反向傳播算法(Back Propagation,BP)神經(jīng)網(wǎng)絡(luò)將16個(gè)成本影響因子和KDSI代碼千行數(shù)作為輸入層節(jié)點(diǎn)。17個(gè)輸入節(jié)點(diǎn)、35個(gè)隱層節(jié)點(diǎn)和1個(gè)輸出節(jié)點(diǎn)通過一邊傳播一邊不斷調(diào)整權(quán)值,使實(shí)際輸出與期望輸出的誤差達(dá)到最小[18]。
決策樹是一種由結(jié)點(diǎn)和有向邊組成的樹結(jié)構(gòu)預(yù)測(cè)模型。估算決策樹將軟件開發(fā)工作量屬性作為葉節(jié)點(diǎn),將軟件項(xiàng)目屬性作為中間節(jié)點(diǎn),根據(jù)經(jīng)驗(yàn)基準(zhǔn)數(shù)據(jù)構(gòu)建決策樹[19]。它具有計(jì)算復(fù)雜度低、結(jié)果直觀、易理解、易維護(hù)、可處理高維數(shù)據(jù)和離散型的屬性數(shù)據(jù)等優(yōu)點(diǎn)。
案例推理技術(shù)(Case Based Reasoning,CBR)是通過訪問范例庫(kù)中的源范例來推理目標(biāo)范例的解決方案。CBR將當(dāng)前項(xiàng)目相關(guān)特征數(shù)據(jù)預(yù)處理成目標(biāo)案例[20],通過相似度度量找出與新軟件項(xiàng)目最相似的歷史項(xiàng)目,進(jìn)而估算新軟件的開發(fā)成本[21]。CBR技術(shù)具有較強(qiáng)的可理解性,能夠準(zhǔn)確解決知識(shí)表達(dá)困難的問題。
分類預(yù)測(cè)技術(shù)根據(jù)歷史項(xiàng)目的數(shù)據(jù)建立分類模型,獲取分類規(guī)則,同時(shí)預(yù)測(cè)新軟件項(xiàng)目的目標(biāo)屬性值,構(gòu)建成本估算模型,從而得到新軟件項(xiàng)目的開發(fā)成本[16]。分類預(yù)測(cè)技術(shù)具有易操作、耗時(shí)短、估算客觀等優(yōu)點(diǎn),適用于相同項(xiàng)目領(lǐng)域中數(shù)據(jù)集較小、離散屬性明確、目標(biāo)屬性跨度小的軟件項(xiàng)目。
3.3 組合式模型
該模型就是把多種單一軟件項(xiàng)目成本估算模型組合運(yùn)用,形成更適合項(xiàng)目估算的公式或模型,能夠中和各估算模型利弊、迎合不同項(xiàng)目要求,提高成本估算精度。組合方式模型的種類很多,較典型的有:COBRA、Web-COBRA和Bayesian分析。
3.3.1 COBRA
COBRA將成本估算方法中的算法模型和經(jīng)驗(yàn)法相結(jié)合,通過構(gòu)建生產(chǎn)率估算模型來估算軟件項(xiàng)目成本。其估算步驟分為兩大步:第一,建立因果關(guān)系模型;第二,建立生產(chǎn)率等式。因果關(guān)系模型用于估算成本超支CO,生產(chǎn)率等式用于建立CO和生產(chǎn)率P間的轉(zhuǎn)換關(guān)系。CO和P的關(guān)系表達(dá)式為
P=β0-β1×CO
式中,β0是標(biāo)稱項(xiàng)目生產(chǎn)率;β1是CO和P的斜率。
同時(shí),模型假設(shè)工作量和項(xiàng)目規(guī)模線性相關(guān),表示為
通過公式可知:軟件項(xiàng)目的工作量是由軟件規(guī)模和生產(chǎn)率共同確定的,而生產(chǎn)率的大小又是由成本超支確定的,因此,成本超支的確定是計(jì)算項(xiàng)目工作量的前提。
3.3.2Web-COBRA
用Web-COBRA模型進(jìn)行成本估算的基本步驟為:第一,確定影響軟件項(xiàng)目成本的因素;第二,構(gòu)建因果關(guān)系模型,分析成本影響因子與軟件項(xiàng)目成本的關(guān)系;第三,綜合專家意見;第四,針對(duì)Web應(yīng)用進(jìn)行剪裁,估算項(xiàng)目規(guī)模。目前,該模型仍在完善中。
3.3.3Bayesian分析
Bayesian分析的一個(gè)顯著特征是在先驗(yàn)的專家判斷和項(xiàng)目數(shù)據(jù)相結(jié)合基礎(chǔ)上產(chǎn)生性能更優(yōu)的后驗(yàn)?zāi)P?。Bayesian分析步驟為:第一,綜合分析先驗(yàn)知識(shí)和樣本數(shù)據(jù);第二,根據(jù)貝葉斯定理構(gòu)建概率模型,確定效用函數(shù)的假設(shè);第三,確定模型參數(shù)的分布,進(jìn)行決策。Bayesian分析技術(shù)融合了回歸技術(shù)和專家經(jīng)驗(yàn)的優(yōu)點(diǎn),減少了軟件項(xiàng)目成本估算時(shí)由于數(shù)據(jù)不完整帶來的風(fēng)險(xiǎn),提高了模型精確度,為成本估算模型提供了重要的理論支持。
軟件項(xiàng)目成本估算模型隨著軟件開發(fā)技術(shù)的進(jìn)步、軟件數(shù)據(jù)庫(kù)的大型化、移動(dòng)互聯(lián)網(wǎng)及電子商務(wù)普及的O2O電商模式高速發(fā)展[22]正不斷演進(jìn)和完善,但沒有一種估算模型總是優(yōu)于其他模型,各類模型具有不同的優(yōu)缺點(diǎn),見表4。軟件組織要根據(jù)具體情況和模型的特點(diǎn)進(jìn)行選擇。
隨著“互聯(lián)網(wǎng)+”、大數(shù)據(jù)、人工智能的發(fā)展,計(jì)算機(jī)技術(shù)不斷更新、軟件復(fù)雜度逐漸增加,軟件產(chǎn)業(yè)的發(fā)展空間更加廣闊,軟件項(xiàng)目成本管理受到高度重視,給項(xiàng)目成本估算模型的研究工作帶來眾多機(jī)遇和挑戰(zhàn)。其機(jī)遇和挑戰(zhàn)對(duì)比見表5。
為了更好地抓住機(jī)遇、應(yīng)對(duì)挑戰(zhàn),軟件項(xiàng)目成本估算模型需不斷改善和演化。要充分應(yīng)用新技術(shù)、合理組合舊方法、準(zhǔn)確校正數(shù)據(jù)集、加強(qiáng)全面管理、提高人員素質(zhì)、充分利用學(xué)科融合優(yōu)勢(shì),努力構(gòu)造估算準(zhǔn)、質(zhì)量好、效率高、可靠性強(qiáng)、應(yīng)用廣泛的軟件項(xiàng)目成本估算模型。
表4 軟件項(xiàng)目成本估算模型對(duì)比情況表
表5 軟件項(xiàng)目成本估算模型的機(jī)遇和挑戰(zhàn)對(duì)比情況表
(續(xù))
本文介紹了國(guó)內(nèi)外軟件項(xiàng)目成本估算模型的研究現(xiàn)狀,梳理分析了主要影響因子和各類模型的優(yōu)缺點(diǎn),總結(jié)了應(yīng)用成本估算模型面臨的機(jī)遇和挑戰(zhàn)。綜上所述,本文具有重要的指導(dǎo)作用,能夠?yàn)闃?gòu)建和選擇估算模型提供一定借鑒,同時(shí)也預(yù)測(cè)了未來軟件項(xiàng)目成本估算的發(fā)展方向。
[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Ⅱ:軟件項(xiàng)目管理中的成本估算方法[J].計(jì)算機(jī)應(yīng)用研究,2000,17(11):56-58.
[5]甘早斌,聶正茂,盧正鼎.軟件開發(fā)成本估算技術(shù)綜述[J].計(jì)算機(jī)工程與科學(xué),2005,27(6):108-110.
[6]方海光,陳澎,佘莉.基于范例庫(kù)推理的軟件成本估算模型研究[J].計(jì)算機(jī)工程,2006,32(19):191-192.
[7]李明樹,何梅,楊達(dá),等.軟件成本估算方法及應(yīng)用[J].軟件學(xué)報(bào),2007,18(4):775-795.
[8]李嘉,易平,宋巍,等.一種基于功能點(diǎn)規(guī)模度量的軟件成本估算模型[J].軟件產(chǎn)業(yè)與工程,2011(5):32-35.
[9]程博,于學(xué)軍.基于敏捷開發(fā)的工作量估算模型的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(3):909-914.
[10]于本海.可信軟件測(cè)度理論與方法[M].北京:科學(xué)出版社,2014.
[11]彭志.演化算法在軟件工作量估算問題上的應(yīng)用研究[D].廣州:華南理工大學(xué),2014.
[12]吳登生,李建平,孫曉蕾.基于加權(quán)案例推理模型族的軟件成本 SVR 組合估算[J].管理工程學(xué)報(bào),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]李效云,楊達(dá),葉凱.InCoME軟件成本估算工具[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(23):5015-5018.
[16]王曉明.基于分類預(yù)測(cè)技術(shù)的軟件成本估算方法的研究與應(yīng)用[D].北京:國(guó)防科學(xué)技術(shù)大學(xué),2010.
[17]吳琴.軟件成本估算技術(shù)研究綜述[J].科技資訊,2013(18):201-203.
[18]周啟超.BP算法改進(jìn)及在軟件成本估算中的應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016,26(2):195-198.
[19]王曉明,何鴻君,尹俊文,等.決策樹分類方法在軟件成本估算中的應(yīng)用研究[J].科技信息,2010(5):466-468.
[20]段美美,于本海,朱萌.基于CBR的軟件項(xiàng)目成本估算方法[J].計(jì)算機(jī)工程與設(shè)計(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]于本海,楊永清,孫靜林,等.顧客體驗(yàn)與商戶線下存在對(duì)社區(qū)O2O電商接受意向的影響研究[J].管理學(xué)報(bào),2015,12(11):1658-1664.PMT
國(guó)家自然科學(xué)基金項(xiàng)目(71471103,71301089)。
2016-04-27