田立軍
(中國人民解放軍91404部隊 秦皇島 066001)
系統(tǒng)的軟件測試是保證軟件質(zhì)量和可靠性的重要手段,其根本任務(wù)是監(jiān)督軟件開發(fā)過程,盡可能地發(fā)現(xiàn)軟件中存在的錯誤或缺陷[1]。隨著武器裝備信息化程度越來越高,其規(guī)模化和功能性能方面比重急劇上升,對于安全等級很高的軟件,如彈道導(dǎo)彈飛行控制軟件、電源燃料監(jiān)測軟件、神舟飛船上各型號軟件等,其測試資源消耗甚至高達所有其他軟件工程階段成本總和的3~5倍[2]。軟件的測試工作任務(wù)必須是可持續(xù)性的,嚴格控制度量,對大型系統(tǒng)項目軟件測試任務(wù)進行有效、準確的軟件項目策劃度量,是整個生命周期中提高軟件質(zhì)量,保證軟件的可靠性重要前提和基礎(chǔ)。
目前,對系統(tǒng)軟件測試項目策劃估算的研究與應(yīng)用已經(jīng)比較廣泛,但在國內(nèi)軟件評測行業(yè),大部分項目成本估算僅僅依靠的是經(jīng)驗和WBS工作分解結(jié)構(gòu)法[3],這對系統(tǒng)軟件整個測試過程的正規(guī)化、度量化保障是遠遠不夠的。本文通過軟件測試項目經(jīng)驗數(shù)據(jù)介紹了COCOMO模型理論,并在測試策劃實施過程中進行了應(yīng)用。
項目任務(wù)的工作量估算方法有很多種,一般可以根據(jù)歷史數(shù)據(jù)和軟件規(guī)模估算的結(jié)果進行估算,主要有以下幾種。
1)算法模型:包括一個或多個算法,生成的軟件估計是一些變量的函數(shù),例如COCOMO[4];
2)類比:新項目與已完成項目(規(guī)模和功能相近的項目)作比較,基于已完成項目的實際值進行估計;
3)自頂向下的估計:從項目的全局特性導(dǎo)出項目的整體估計,然后將其分配到各個分量上;
4)自底向上的估計:分別估計軟件作業(yè)的各個分量,再綜合出整體估計。
一般來說,具體估算時往往使用兩種以上的方法,并參考以往做項目的歷史數(shù)據(jù),以幫助導(dǎo)出和驗證估計。在噴氣燃料軟件系統(tǒng)鑒定測試項目中主要應(yīng)用了COCOMO算法,在下文中詳細描述。
著名軟件工程專家、經(jīng)濟學(xué)家Barry Boehm教授在1981年發(fā)表的著作《軟件工程經(jīng)濟學(xué)》中首次提出了軟件估算模型層次結(jié)構(gòu),稱為構(gòu)造式成本模型 COCOMO(Constructive Cost Model)[5],該模型采用一種自底向上的微觀參數(shù)估計方法,使用成本驅(qū)動因素從低端對軟件環(huán)境進行描述,至今該模型已經(jīng)成為軟件界最通用的估算模型。
原始的COCOMO模型一般分為三個層級[6]:
1)基本COCOMO模型,用已估算出來的源代碼行數(shù)(KLOC)為自變量的函數(shù)來計算軟件開發(fā)工作量。
2)中級COCOMO模型,在用KLOC為自變量的函數(shù)計算軟件開發(fā)工作量的基礎(chǔ)上,再用涉及產(chǎn)品、硬件、人員、項目等方面屬性的影響因素來調(diào)整工作量的估算。
3)詳細COCOMO模型,包括中間COCOMO模型的所有特性。
當對項目了解很少時,使用基本模型;明確需求以后,使用中級模型;當設(shè)計完成時,使用高級模型。這三個模型具有相同的形式:

其中E表示需要計算的工作量,S表示以千代碼行(KLOC)計數(shù)的程序規(guī)模,F(xiàn)是調(diào)整參數(shù),其值為

F的值在基本模型里等于1,N的值是15,代表15個Fi成本驅(qū)動因子,詳見4.2和4.3節(jié),a和b的值見表1。

表1 COCOMO模型的參數(shù)
其中,三種項目類型代表的意義分別是:
1)基本類(Organic Mode)項目:規(guī)模較小、較為簡單的項目軟件。
2)嵌入式(Embedded Mode)項目:這類項目的開發(fā)工作緊密地與系統(tǒng)中的硬件、軟件和運行限制聯(lián)系在一起。
3)半獨立型(Semi-detached Mode)項目:項目的性質(zhì)介于上述兩種類型之間,其規(guī)模與復(fù)雜性均屬于中等,如數(shù)據(jù)管理系統(tǒng)、OA系統(tǒng)等[7,12]。
XX噴燃系統(tǒng)通過與上級系統(tǒng)主要設(shè)備配合,實現(xiàn)對噴氣、燃料的自動檢測,集中、實時、動態(tài)顯示燃油系統(tǒng)重要工作節(jié)點的關(guān)鍵參數(shù)數(shù)值,及時報告系統(tǒng)運行狀態(tài)、提供報警信息,其功能結(jié)構(gòu)如下圖1所示。

圖1 軟件功能劃分圖
本文在項目測試成本估計的時候,參照國家標準劃分軟件安全性等級,根據(jù)系統(tǒng)研制任務(wù)書及需求規(guī)格說明等相關(guān)文檔規(guī)定,該系統(tǒng)軟件的安全性等級為B級。按照軟件的安全性等級及開發(fā)方式可以確定軟件類型的嵌入式,故式(1)中a和b的值分別選取3.6和1.20。
系統(tǒng)軟件組成及描述如表2。

表2 系統(tǒng)軟件組成
經(jīng)過專業(yè)測試工具軟件分析,該項目軟件的代碼注釋行為總量的20%,故源程序指令行為28.64千行。式(1)中程序代碼規(guī)模S的值為28.64。
通過使用恰當?shù)墓ぷ髁抗剑珻OCOMO生成了對工作量的初步估計。當進行到測試策劃階段時,項目組長可以應(yīng)用COCOMO的中級模型。Boehm假設(shè)了15中相互獨立的成本驅(qū)動因子,每個成本驅(qū)動因子按照最多6點的序數(shù)標度分等級:非常低、低、正常、高、很高、極高,每個點對應(yīng)一個成本驅(qū)動因子值[8,11],式(1)中工作量的最后估計值是乘以15個成本驅(qū)動因子Fi的值。

表3 COCOMO模型的成本驅(qū)動因子
本質(zhì)上,COCOMO模型包括了兩個底層信息模型,第一個是用于描述軟件項目的框架,包括軟件產(chǎn)品的規(guī)模或復(fù)雜性、開發(fā)方式、測試過程等,用規(guī)模、相關(guān)參數(shù)、成本驅(qū)動因子及相關(guān)定義、公式與表格等來描述。第二個是經(jīng)驗庫,即精心挑選的歷史項目數(shù)據(jù),它們確定了模型中大量的基本參數(shù)值[9]。綜合項目框架,結(jié)合以往相似項目測試任務(wù)的經(jīng)驗數(shù)據(jù),從表3中選取成本驅(qū)動因子Fi一組值如表4所示。

表4 成本驅(qū)動集選取值
因此,式(2)中調(diào)整參數(shù) F=1.081×0.87×0.7826×1.00=0.736。
在本項目中,根據(jù)數(shù)據(jù)整理分析,式(1)中a=3.6,b=1.20,S=28.64

E=91.06人月(保留小數(shù)點后兩位)。
COCOMO模型雖已獲得了廣泛認可,但在運用的過程中也應(yīng)注意到其特點與局限。首先COCOMO模型所依存的歷史數(shù)據(jù)基本上都是大型的軟件項目數(shù)據(jù),所以用于估算大型軟件項目時相對更為準確,當用于輔助小型項目決策時,要留意其估算結(jié)果可能有較大的誤差。另外已有很多研究結(jié)果表明,當根據(jù)COCOMO的定義、積累一定數(shù)量的本地數(shù)據(jù)來擴充其已有的歷史數(shù)據(jù)庫,并重新校準模型參數(shù)后,得出的結(jié)果將更為準確。