田立軍
(中國(guó)人民解放軍91404部隊(duì) 秦皇島 066001)
系統(tǒng)的軟件測(cè)試是保證軟件質(zhì)量和可靠性的重要手段,其根本任務(wù)是監(jiān)督軟件開發(fā)過程,盡可能地發(fā)現(xiàn)軟件中存在的錯(cuò)誤或缺陷[1]。隨著武器裝備信息化程度越來越高,其規(guī)?;凸δ苄阅芊矫姹戎丶眲∩仙?,對(duì)于安全等級(jí)很高的軟件,如彈道導(dǎo)彈飛行控制軟件、電源燃料監(jiān)測(cè)軟件、神舟飛船上各型號(hào)軟件等,其測(cè)試資源消耗甚至高達(dá)所有其他軟件工程階段成本總和的3~5倍[2]。軟件的測(cè)試工作任務(wù)必須是可持續(xù)性的,嚴(yán)格控制度量,對(duì)大型系統(tǒng)項(xiàng)目軟件測(cè)試任務(wù)進(jìn)行有效、準(zhǔn)確的軟件項(xiàng)目策劃度量,是整個(gè)生命周期中提高軟件質(zhì)量,保證軟件的可靠性重要前提和基礎(chǔ)。
目前,對(duì)系統(tǒng)軟件測(cè)試項(xiàng)目策劃估算的研究與應(yīng)用已經(jīng)比較廣泛,但在國(guó)內(nèi)軟件評(píng)測(cè)行業(yè),大部分項(xiàng)目成本估算僅僅依靠的是經(jīng)驗(yàn)和WBS工作分解結(jié)構(gòu)法[3],這對(duì)系統(tǒng)軟件整個(gè)測(cè)試過程的正規(guī)化、度量化保障是遠(yuǎn)遠(yuǎn)不夠的。本文通過軟件測(cè)試項(xiàng)目經(jīng)驗(yàn)數(shù)據(jù)介紹了COCOMO模型理論,并在測(cè)試策劃實(shí)施過程中進(jìn)行了應(yīng)用。
項(xiàng)目任務(wù)的工作量估算方法有很多種,一般可以根據(jù)歷史數(shù)據(jù)和軟件規(guī)模估算的結(jié)果進(jìn)行估算,主要有以下幾種。
1)算法模型:包括一個(gè)或多個(gè)算法,生成的軟件估計(jì)是一些變量的函數(shù),例如COCOMO[4];
2)類比:新項(xiàng)目與已完成項(xiàng)目(規(guī)模和功能相近的項(xiàng)目)作比較,基于已完成項(xiàng)目的實(shí)際值進(jìn)行估計(jì);
3)自頂向下的估計(jì):從項(xiàng)目的全局特性導(dǎo)出項(xiàng)目的整體估計(jì),然后將其分配到各個(gè)分量上;
4)自底向上的估計(jì):分別估計(jì)軟件作業(yè)的各個(gè)分量,再綜合出整體估計(jì)。
一般來說,具體估算時(shí)往往使用兩種以上的方法,并參考以往做項(xiàng)目的歷史數(shù)據(jù),以幫助導(dǎo)出和驗(yàn)證估計(jì)。在噴氣燃料軟件系統(tǒng)鑒定測(cè)試項(xiàng)目中主要應(yīng)用了COCOMO算法,在下文中詳細(xì)描述。
著名軟件工程專家、經(jīng)濟(jì)學(xué)家Barry Boehm教授在1981年發(fā)表的著作《軟件工程經(jīng)濟(jì)學(xué)》中首次提出了軟件估算模型層次結(jié)構(gòu),稱為構(gòu)造式成本模型 COCOMO(Constructive Cost Model)[5],該模型采用一種自底向上的微觀參數(shù)估計(jì)方法,使用成本驅(qū)動(dòng)因素從低端對(duì)軟件環(huán)境進(jìn)行描述,至今該模型已經(jīng)成為軟件界最通用的估算模型。
原始的COCOMO模型一般分為三個(gè)層級(jí)[6]:
1)基本COCOMO模型,用已估算出來的源代碼行數(shù)(KLOC)為自變量的函數(shù)來計(jì)算軟件開發(fā)工作量。
2)中級(jí)COCOMO模型,在用KLOC為自變量的函數(shù)計(jì)算軟件開發(fā)工作量的基礎(chǔ)上,再用涉及產(chǎn)品、硬件、人員、項(xiàng)目等方面屬性的影響因素來調(diào)整工作量的估算。
3)詳細(xì)COCOMO模型,包括中間COCOMO模型的所有特性。
當(dāng)對(duì)項(xiàng)目了解很少時(shí),使用基本模型;明確需求以后,使用中級(jí)模型;當(dāng)設(shè)計(jì)完成時(shí),使用高級(jí)模型。這三個(gè)模型具有相同的形式:
其中E表示需要計(jì)算的工作量,S表示以千代碼行(KLOC)計(jì)數(shù)的程序規(guī)模,F(xiàn)是調(diào)整參數(shù),其值為
F的值在基本模型里等于1,N的值是15,代表15個(gè)Fi成本驅(qū)動(dòng)因子,詳見4.2和4.3節(jié),a和b的值見表1。
表1 COCOMO模型的參數(shù)
其中,三種項(xiàng)目類型代表的意義分別是:
1)基本類(Organic Mode)項(xiàng)目:規(guī)模較小、較為簡(jiǎn)單的項(xiàng)目軟件。
2)嵌入式(Embedded Mode)項(xiàng)目:這類項(xiàng)目的開發(fā)工作緊密地與系統(tǒng)中的硬件、軟件和運(yùn)行限制聯(lián)系在一起。
3)半獨(dú)立型(Semi-detached Mode)項(xiàng)目:項(xiàng)目的性質(zhì)介于上述兩種類型之間,其規(guī)模與復(fù)雜性均屬于中等,如數(shù)據(jù)管理系統(tǒng)、OA系統(tǒng)等[7,12]。
XX噴燃系統(tǒng)通過與上級(jí)系統(tǒng)主要設(shè)備配合,實(shí)現(xiàn)對(duì)噴氣、燃料的自動(dòng)檢測(cè),集中、實(shí)時(shí)、動(dòng)態(tài)顯示燃油系統(tǒng)重要工作節(jié)點(diǎn)的關(guān)鍵參數(shù)數(shù)值,及時(shí)報(bào)告系統(tǒng)運(yùn)行狀態(tài)、提供報(bào)警信息,其功能結(jié)構(gòu)如下圖1所示。
圖1 軟件功能劃分圖
本文在項(xiàng)目測(cè)試成本估計(jì)的時(shí)候,參照國(guó)家標(biāo)準(zhǔn)劃分軟件安全性等級(jí),根據(jù)系統(tǒng)研制任務(wù)書及需求規(guī)格說明等相關(guān)文檔規(guī)定,該系統(tǒng)軟件的安全性等級(jí)為B級(jí)。按照軟件的安全性等級(jí)及開發(fā)方式可以確定軟件類型的嵌入式,故式(1)中a和b的值分別選取3.6和1.20。
系統(tǒng)軟件組成及描述如表2。
表2 系統(tǒng)軟件組成
經(jīng)過專業(yè)測(cè)試工具軟件分析,該項(xiàng)目軟件的代碼注釋行為總量的20%,故源程序指令行為28.64千行。式(1)中程序代碼規(guī)模S的值為28.64。
通過使用恰當(dāng)?shù)墓ぷ髁抗?,COCOMO生成了對(duì)工作量的初步估計(jì)。當(dāng)進(jìn)行到測(cè)試策劃階段時(shí),項(xiàng)目組長(zhǎng)可以應(yīng)用COCOMO的中級(jí)模型。Boehm假設(shè)了15中相互獨(dú)立的成本驅(qū)動(dòng)因子,每個(gè)成本驅(qū)動(dòng)因子按照最多6點(diǎn)的序數(shù)標(biāo)度分等級(jí):非常低、低、正常、高、很高、極高,每個(gè)點(diǎn)對(duì)應(yīng)一個(gè)成本驅(qū)動(dòng)因子值[8,11],式(1)中工作量的最后估計(jì)值是乘以15個(gè)成本驅(qū)動(dòng)因子Fi的值。
表3 COCOMO模型的成本驅(qū)動(dòng)因子
本質(zhì)上,COCOMO模型包括了兩個(gè)底層信息模型,第一個(gè)是用于描述軟件項(xiàng)目的框架,包括軟件產(chǎn)品的規(guī)?;驈?fù)雜性、開發(fā)方式、測(cè)試過程等,用規(guī)模、相關(guān)參數(shù)、成本驅(qū)動(dòng)因子及相關(guān)定義、公式與表格等來描述。第二個(gè)是經(jīng)驗(yàn)庫(kù),即精心挑選的歷史項(xiàng)目數(shù)據(jù),它們確定了模型中大量的基本參數(shù)值[9]。綜合項(xiàng)目框架,結(jié)合以往相似項(xiàng)目測(cè)試任務(wù)的經(jīng)驗(yàn)數(shù)據(jù),從表3中選取成本驅(qū)動(dòng)因子Fi一組值如表4所示。
表4 成本驅(qū)動(dòng)集選取值
因此,式(2)中調(diào)整參數(shù) F=1.081×0.87×0.7826×1.00=0.736。
在本項(xiàng)目中,根據(jù)數(shù)據(jù)整理分析,式(1)中a=3.6,b=1.20,S=28.64
E=91.06人月(保留小數(shù)點(diǎn)后兩位)。
COCOMO模型雖已獲得了廣泛認(rèn)可,但在運(yùn)用的過程中也應(yīng)注意到其特點(diǎn)與局限。首先COCOMO模型所依存的歷史數(shù)據(jù)基本上都是大型的軟件項(xiàng)目數(shù)據(jù),所以用于估算大型軟件項(xiàng)目時(shí)相對(duì)更為準(zhǔn)確,當(dāng)用于輔助小型項(xiàng)目決策時(shí),要留意其估算結(jié)果可能有較大的誤差。另外已有很多研究結(jié)果表明,當(dāng)根據(jù)COCOMO的定義、積累一定數(shù)量的本地?cái)?shù)據(jù)來擴(kuò)充其已有的歷史數(shù)據(jù)庫(kù),并重新校準(zhǔn)模型參數(shù)后,得出的結(jié)果將更為準(zhǔn)確。