,,,,
(中國(guó)船舶工業(yè)集團(tuán)有限公司 軟件質(zhì)量與可靠性測(cè)評(píng)中心,北京 100081)
隨著軟件構(gòu)件技術(shù)的快速發(fā)展,艦船裝備軟件開(kāi)發(fā)中集成軟件構(gòu)件的方法日趨成熟。基于構(gòu)件的軟件系統(tǒng)開(kāi)發(fā)日益增多,在艦船作戰(zhàn)系統(tǒng)和集成艦橋系統(tǒng)中都采用了構(gòu)件開(kāi)發(fā)技術(shù)。
基于構(gòu)件的軟件開(kāi)發(fā)方法是在軟件開(kāi)發(fā)過(guò)程中避免重復(fù)勞動(dòng)、實(shí)現(xiàn)軟件復(fù)用、提高軟件開(kāi)發(fā)質(zhì)量和效率的重要途徑之一[1]。軟件構(gòu)件進(jìn)行可靠性評(píng)估有助于發(fā)現(xiàn)其中的錯(cuò)誤,能夠最大限度、最有效地發(fā)現(xiàn)影響軟件可靠性的缺陷,對(duì)其可靠性的提高具有顯著的效果,同時(shí)能夠提高軟件可靠性能力。
對(duì)軟件構(gòu)件系統(tǒng)進(jìn)行評(píng)估是一個(gè)先分解后綜合的過(guò)程,因此需要對(duì)單個(gè)構(gòu)件進(jìn)行可靠性評(píng)估,單個(gè)構(gòu)件的可靠度是在它被調(diào)用時(shí)能夠正確執(zhí)行的概率。本文針對(duì)艦船裝備軟件構(gòu)件進(jìn)行可靠性評(píng)估,過(guò)程如圖1所示。
圖1 構(gòu)件可靠性評(píng)估過(guò)程
選擇可靠性評(píng)估模型主要考慮三個(gè)因素即代碼是否可用、構(gòu)件被測(cè)試的方法;構(gòu)件本身是重用還是新研。構(gòu)件若是從以前的型號(hào)軟件項(xiàng)目中復(fù)用過(guò)來(lái)的,則這些構(gòu)件的可靠性可使用相似產(chǎn)品法來(lái)建模,直接采用以前的軟件項(xiàng)目中該構(gòu)件的可靠性模型和數(shù)據(jù)。若軟件為新研構(gòu)件考慮固有特性和開(kāi)發(fā)特征建立可靠性模型。若缺少構(gòu)件的合適信息進(jìn)行評(píng)估,采用基于“黑盒”的可靠性評(píng)估方法對(duì)其進(jìn)行評(píng)估,即將單個(gè)構(gòu)件當(dāng)做一個(gè)“黑盒”,使用“黑盒測(cè)試”的方法計(jì)算其可靠度[4]。
若軟件構(gòu)件是從以前的型號(hào)軟件復(fù)用過(guò)來(lái)的,則這些構(gòu)件的可靠性可以使用相似產(chǎn)品法來(lái)建模。相似產(chǎn)品主要是指軟件結(jié)構(gòu)、功能、接口、配置、環(huán)境等5個(gè)方面具有相似性的產(chǎn)品。從這五個(gè)方面進(jìn)行定性分析,收集被測(cè)構(gòu)件的相關(guān)數(shù)據(jù),即可評(píng)估被測(cè)構(gòu)件的可靠性。
表1 結(jié)構(gòu)相似對(duì)比
表2 功能相似對(duì)比
表3 接口相似對(duì)比
表4 配置相似對(duì)比
表5 環(huán)境相似對(duì)比
如果沒(méi)有某個(gè)構(gòu)件的可靠度計(jì)算信息,可以通過(guò)分析歷史數(shù)據(jù),分析構(gòu)件失效情況,通過(guò)“單個(gè)構(gòu)件可靠度=1-該構(gòu)件失效次數(shù)/該構(gòu)件被調(diào)用的總次數(shù)”計(jì)算得到。
S-R方法是由美國(guó)Rome中心提出的軟件可靠性早期預(yù)計(jì)方法,其基于軟件功能流程圖建立預(yù)計(jì)模型,依據(jù)軟件本身的固有特征和開(kāi)發(fā)過(guò)程中的避錯(cuò)和探錯(cuò)軟件開(kāi)發(fā)過(guò)程特征,來(lái)預(yù)測(cè)構(gòu)件的可靠性。
若構(gòu)件為新研構(gòu)件,考慮固有特征和開(kāi)發(fā)特征建立可靠性模型。一方面考慮固有特征對(duì)軟件的錯(cuò)誤類型分布產(chǎn)生直接的影響,不同特征對(duì)錯(cuò)誤類型的影響是不一樣的,同一特征對(duì)不同的錯(cuò)誤類型的影響也是不一樣的。另一方面考慮開(kāi)發(fā)特征中的避錯(cuò)和查錯(cuò)措施對(duì)構(gòu)件可靠性的影響,分析各項(xiàng)避錯(cuò)和查錯(cuò)措施對(duì)錯(cuò)誤類型的影響即避錯(cuò)效應(yīng)和查錯(cuò)效應(yīng),避錯(cuò)效應(yīng)用軟件采用避錯(cuò)措施后錯(cuò)誤得以避免的概率來(lái)評(píng)價(jià),查錯(cuò)效應(yīng)用軟件采用查錯(cuò)措施后錯(cuò)誤得以避免的概率來(lái)評(píng)價(jià)。綜合固有特征信息和開(kāi)發(fā)特征信息建立相應(yīng)的可靠性評(píng)估模型。
構(gòu)件的可靠性與其固有可靠性和采用避錯(cuò)和查錯(cuò)技術(shù)后可靠性改變的程度有關(guān)。
若對(duì)構(gòu)件進(jìn)行可靠性評(píng)估時(shí)缺少構(gòu)件的適合信息,那么就可以采用基于“黑盒”的可靠性評(píng)估方法對(duì)其進(jìn)行評(píng)估。即將單個(gè)構(gòu)件當(dāng)作一個(gè)“黑盒”,使用“黑盒測(cè)試”的方法計(jì)算其可靠度。
構(gòu)件失效數(shù)據(jù)的獲取步驟分為三步:構(gòu)件操作剖面、生成測(cè)試用例、執(zhí)行測(cè)試收集失效數(shù)據(jù)。
1.3.1 構(gòu)建操作剖面
操作剖面主要是描述用戶對(duì)軟件的使用情況,并且在此基礎(chǔ)上通過(guò)測(cè)試產(chǎn)生測(cè)試數(shù)據(jù)。常見(jiàn)的可靠性測(cè)試操作剖面構(gòu)建方法有三種:基于操作日志獲取操作剖面、基于專家咨詢法獲取操作剖面和基于操作插樁法獲取操作剖面[5]。
1.3.1.1 操作日志法
艦船裝備的復(fù)雜大型軟件系統(tǒng)很難一次性開(kāi)發(fā)完畢,往往采用迭代開(kāi)發(fā)的方法,內(nèi)部測(cè)試、三方驗(yàn)收測(cè)試和試驗(yàn)過(guò)程中建立跟蹤日志。通過(guò)收集并統(tǒng)計(jì)用戶的跟蹤日志得到操作列表和操作頻率,當(dāng)操作總數(shù)達(dá)到一定值,可以用操作頻率/操作總數(shù)近似于操作概率Pi,如下式所示:
其中:Ti代表操作i的次數(shù),n為操作的種類。
1.3.1.2 專家咨詢法
在這一過(guò)程中,專家處于互相不知情的隔離狀態(tài),每個(gè)專家都是根據(jù)其個(gè)人的知識(shí)、經(jīng)驗(yàn)和專長(zhǎng)對(duì)軟件的所有操作的使用情況進(jìn)行獨(dú)立打分。專家咨詢法的優(yōu)點(diǎn)是操作簡(jiǎn)單、直觀。
1.3.1.3 插樁法
該構(gòu)件如果在軟件研制階段的后期進(jìn)行了功能測(cè)試,對(duì)測(cè)試過(guò)程建立了跟蹤日志,跟蹤日志中所記錄的信息有:第i個(gè)測(cè)試用例,各子模塊的訪問(wèn)次數(shù),是否發(fā)生了失效,發(fā)生失效的系統(tǒng)時(shí)間t,導(dǎo)致失效的錯(cuò)誤原因。對(duì)每個(gè)測(cè)試用例運(yùn)行時(shí)所經(jīng)過(guò)的子模塊訪問(wèn)路徑、子模塊的運(yùn)行次數(shù)以及引起模塊失效的錯(cuò)誤數(shù)進(jìn)行統(tǒng)計(jì)。其中各子模塊的訪問(wèn)次數(shù)的測(cè)量方法利用軟件測(cè)試中的插樁技術(shù),在每個(gè)模塊的出口設(shè)置若干個(gè)轉(zhuǎn)移計(jì)數(shù)變量,例如:模塊A轉(zhuǎn)移到模塊B的計(jì)數(shù)變量為sum-atob;模塊B轉(zhuǎn)移到模塊C的計(jì)數(shù)變量為sHm-btoc。
1.3.2 生成測(cè)試用例
根據(jù)構(gòu)建的操作剖面,按比例對(duì)應(yīng)生成相應(yīng)的測(cè)試用例,搭建構(gòu)建測(cè)試環(huán)境,執(zhí)行測(cè)試用例。
1.3.3 執(zhí)行測(cè)試收集失效數(shù)據(jù)
對(duì)構(gòu)件的失效行為進(jìn)行定義,明確構(gòu)件在什么情況下屬于失效行為,什么情況下不屬于失效行為,本文將“一般”以上等級(jí)的問(wèn)題定義為失效。然后針對(duì)失效的具體特征進(jìn)行監(jiān)控,在測(cè)試用例執(zhí)行過(guò)程中,將導(dǎo)致構(gòu)件發(fā)生失效的測(cè)試用例執(zhí)行時(shí)刻進(jìn)行記錄,并且記錄相應(yīng)的失效序號(hào),作為構(gòu)件可靠性評(píng)估的數(shù)據(jù)依據(jù)。在獲得測(cè)試數(shù)據(jù)的情況下,計(jì)算平均失效間隔時(shí)間:
Xi為失效間隔時(shí)間,假設(shè)構(gòu)件的失效服從指數(shù)分布,則構(gòu)件的失效率為:
最后得到軟件的可靠度為:
若此時(shí)已經(jīng)對(duì)軟件進(jìn)行了測(cè)試,則可通過(guò)分析測(cè)試后得到的構(gòu)件失效歷史記錄來(lái)計(jì)算其可靠度,即單個(gè)構(gòu)件的可靠度=1-此構(gòu)件失效的次數(shù)/此構(gòu)件被調(diào)用的總次數(shù)。
對(duì)艦船裝備軟件構(gòu)件進(jìn)行可靠性評(píng)估是一個(gè)先分解后綜合的過(guò)程,因此需要對(duì)組成大型軟件系統(tǒng)的單個(gè)構(gòu)件進(jìn)行可靠性評(píng)估,單個(gè)構(gòu)件的可靠度是它被調(diào)用時(shí)能夠正確執(zhí)行的概率,本章對(duì)其評(píng)估過(guò)程進(jìn)行研究。
對(duì)艦船裝備軟件構(gòu)件可靠性評(píng)估過(guò)程分為構(gòu)件特征分析、構(gòu)件可靠性評(píng)估模型確定以及構(gòu)件特征的數(shù)據(jù)收集。
2.2.1 構(gòu)件特征分析
對(duì)構(gòu)件的特征分析就是要識(shí)別出軟件的任務(wù)特點(diǎn)、功能、接口、輸入、輸出、故障類型和運(yùn)行環(huán)境等屬性信息,建立軟件特征模型,包括固有特征、開(kāi)發(fā)特征并且給出每類特征屬性。
本文將構(gòu)件的固有特征分為應(yīng)用特征、任務(wù)特征、功能特征、系統(tǒng)接口特征和輸入特征等5大類和若干個(gè)子類。構(gòu)件的固有特征類型見(jiàn)表6所示。
表6 構(gòu)件的固有特征分類
2.2.2 構(gòu)件可靠性評(píng)估模型研究
研究國(guó)內(nèi)外各種軟件部件、組件、構(gòu)件的可靠性評(píng)估方法,以及它們的應(yīng)用情況和效果,進(jìn)而分析各模型對(duì)艦船裝備軟件構(gòu)件評(píng)估的適用性。根據(jù)構(gòu)件的特征,選擇、改進(jìn)或綜合利用現(xiàn)有模型,重點(diǎn)考慮構(gòu)件設(shè)計(jì)開(kāi)發(fā)特征和固有特征,形成適用于艦船裝備軟件構(gòu)件的評(píng)估模型。
2.2.2.1 基于軟件測(cè)試數(shù)據(jù)的可靠性增長(zhǎng)模型
此種模型的出現(xiàn)主要是早期的軟件系統(tǒng)是基于過(guò)程開(kāi)發(fā)的。研究者提出軟件可靠性與系統(tǒng)故障之間存在相關(guān)性的假設(shè),認(rèn)為故障的檢測(cè)和修復(fù)使得軟件的可靠性具有不斷增加的特性,基于此,研究者可以通過(guò)收集軟件構(gòu)件測(cè)試或軟件使用過(guò)程中的失效數(shù)據(jù),并且利用統(tǒng)計(jì)知識(shí)分析其規(guī)律,建立對(duì)應(yīng)的模型,對(duì)該統(tǒng)計(jì)分布的參數(shù)進(jìn)行估計(jì)。具體流程如圖2所示。
圖2 基于軟件測(cè)試數(shù)據(jù)模型評(píng)估流程
2.2.2.2 基于軟件開(kāi)發(fā)階段固有特性的早期評(píng)估模型
此種模型的產(chǎn)生是因?yàn)榛谲浖y(cè)試數(shù)據(jù)的軟件可靠性增長(zhǎng)模型都是在軟件開(kāi)發(fā)完成后,利用對(duì)軟件運(yùn)行、測(cè)試過(guò)程中所得到的失效數(shù)據(jù)進(jìn)行可靠性評(píng)估,它只是對(duì)軟件的可靠性指標(biāo)進(jìn)行了評(píng)估,并不能夠?qū)浖旧淼目煽啃蕴岣弋a(chǎn)生作用。若要提高軟件的可靠性,在軟件開(kāi)發(fā)周期的開(kāi)始,就要求對(duì)軟件可靠性進(jìn)行評(píng)估并提高軟件的可靠性。
2.2.3 構(gòu)件可靠性計(jì)算方法
根據(jù)構(gòu)件的可靠性評(píng)估模型,分別給出不同構(gòu)件特征的數(shù)據(jù)收集方法包括相似產(chǎn)品法、S-R方法和軟件測(cè)試方法,收集構(gòu)件可靠性評(píng)估數(shù)據(jù),給出構(gòu)件可靠性計(jì)算過(guò)程和方法。
構(gòu)件可靠性評(píng)估是艦船裝備軟件構(gòu)件可靠性評(píng)估工具中的一個(gè)功能模塊,其功能需求包括相似產(chǎn)品度判斷、相似產(chǎn)品數(shù)據(jù)的輸入與可靠性評(píng)估結(jié)果的計(jì)算、軟件開(kāi)發(fā)特征和固有特征的信息統(tǒng)計(jì)與計(jì)算、軟件可靠性測(cè)試數(shù)據(jù)輸入與評(píng)估結(jié)果計(jì)算。具體功能包括:
方法選擇:提供用戶相似產(chǎn)品法、基于特征的SR法、軟件可靠性測(cè)試方法的用戶選擇功能[6]。
3.1.1 相似產(chǎn)品法
以表格化的方法供用戶選擇相似產(chǎn)品特征并且計(jì)算軟件產(chǎn)品相似度,根據(jù)閾值判斷相似程度,以表格形式顯示相似產(chǎn)品的信息并計(jì)算可靠度。
3.1.2 基于特征的SR法
軟件能以表格的形式清晰方便的對(duì)各個(gè)構(gòu)件的固有特性和開(kāi)發(fā)特征進(jìn)行統(tǒng)計(jì),計(jì)算避錯(cuò)效應(yīng)矩陣,計(jì)算各個(gè)構(gòu)件的可靠性計(jì)算結(jié)果。
3.1.3 軟件測(cè)試法
提供單獨(dú)的界面進(jìn)行構(gòu)件可靠性測(cè)試結(jié)果的輸入,根據(jù)失效間隔時(shí)間,計(jì)算基于指數(shù)分布的軟件可靠性評(píng)估結(jié)果。
3.2.1 層次結(jié)構(gòu)設(shè)計(jì)
構(gòu)件可靠性評(píng)估模型的層次架構(gòu)包括界面顯示層、數(shù)據(jù)處理層和存儲(chǔ)層。界面顯示層主要用于實(shí)現(xiàn)人機(jī)交互,提供界面輸入數(shù)據(jù)集,包括相似產(chǎn)品信息、特征信息、可靠性測(cè)試數(shù)據(jù)等,并對(duì)計(jì)算結(jié)果進(jìn)行顯示。數(shù)據(jù)處理層負(fù)責(zé)利用顯示層統(tǒng)計(jì)的數(shù)據(jù)根據(jù)可靠性評(píng)估模型建立數(shù)據(jù)矩陣,進(jìn)行構(gòu)件可靠性評(píng)估結(jié)果的計(jì)算,存儲(chǔ)層用于存儲(chǔ)計(jì)算過(guò)程的數(shù)據(jù)。
3.2.2 接口設(shè)計(jì)
構(gòu)件可靠性評(píng)估模塊的接口包括人機(jī)交互界面接口和函數(shù)調(diào)用接口。人機(jī)交互界面接口主要用于輸入構(gòu)件的數(shù)據(jù),函數(shù)調(diào)用接口主要用于接收體系結(jié)構(gòu)建模模塊的數(shù)據(jù)結(jié)構(gòu)信息。
3.2.3 界面設(shè)計(jì)
構(gòu)件可靠性評(píng)估模塊人機(jī)界面選用非標(biāo)準(zhǔn)Windows風(fēng)格,兼容標(biāo)準(zhǔn)Windows界面特征。
構(gòu)件可靠性評(píng)估模塊工作流程如圖3所示。
圖3 構(gòu)件測(cè)試工作流程
構(gòu)件可靠性評(píng)估首先識(shí)別構(gòu)件的特征,使用SR法評(píng)估其可靠性的前提是要知道構(gòu)件的固有特征和開(kāi)發(fā)特征。若未知構(gòu)件開(kāi)發(fā)特性和固有特征,可使用相似產(chǎn)品法和軟件測(cè)試方法對(duì)其進(jìn)行評(píng)估,相似產(chǎn)品法從結(jié)構(gòu)相似、功能相似、接口相似、配置相似和環(huán)境相似五個(gè)方面進(jìn)行定性分析,收集被測(cè)構(gòu)件的相似產(chǎn)品,通過(guò)兩者之間的相似性,即可評(píng)估被測(cè)產(chǎn)品的可靠性。
測(cè)試數(shù)據(jù)法或軟件測(cè)試法,主要是選擇合適的數(shù)學(xué)模型,著名的模型有J-M模型,即指數(shù)分布假設(shè)的可靠性評(píng)估模型,該模型分三步,第一是構(gòu)件操作剖面,第二是生成測(cè)試用例,第三是執(zhí)行測(cè)試收集失效數(shù)據(jù),最后利用失效數(shù)據(jù),依據(jù)相應(yīng)經(jīng)驗(yàn)公式計(jì)算構(gòu)件的可靠性。
艦船裝備軟件構(gòu)件可靠性評(píng)估工具在艦船裝備軟件中應(yīng)用廣泛,現(xiàn)以該評(píng)估工具測(cè)試某型艦船綜合艦橋軟件構(gòu)件為例,采用其信息輸入采用用戶勾選或下拉框選擇的方式輸入,軟件構(gòu)件測(cè)試過(guò)程及結(jié)果如圖4~6所示。
圖4 接口和輸入特性界面
圖5 軟件構(gòu)件測(cè)試活動(dòng)界面
圖6 軟件構(gòu)件測(cè)試結(jié)果界面
圖4~6評(píng)估被測(cè)件使用的是SR法,圖4根據(jù)構(gòu)件的固有特征在評(píng)估工具中選擇相應(yīng)數(shù)據(jù)后,圖5是測(cè)試活動(dòng)界面,可以看到構(gòu)件中數(shù)據(jù)流圖和調(diào)用關(guān)系圖,圖6是構(gòu)件測(cè)試結(jié)果圖,從圖上可以看出艦船裝備軟件構(gòu)件可靠性評(píng)估工具準(zhǔn)確性很高,具有一定的工程意義。
軟件構(gòu)件可靠性評(píng)估的工具,雖然可以極為方便地實(shí)現(xiàn)艦船裝備軟件構(gòu)件可靠性評(píng)估工作,但是也存在一些問(wèn)題,例如人機(jī)交互界面不夠友好和無(wú)法應(yīng)用該工具測(cè)試嵌入式軟件等問(wèn)題。
本文對(duì)艦船裝備軟件構(gòu)件的可靠性評(píng)估方法進(jìn)行了研究,首先給出了軟件構(gòu)件可靠性評(píng)估過(guò)程,接著介紹了相似產(chǎn)品法,基于軟件特征的可靠性評(píng)估方法和基于測(cè)試的可靠性評(píng)估方法,接著將以上方法在艦船裝備軟件構(gòu)件可靠性評(píng)估的過(guò)程進(jìn)行應(yīng)用。最后,開(kāi)發(fā)了軟件構(gòu)件可靠性評(píng)估的工具,實(shí)踐證明該軟件可以極為方便的實(shí)現(xiàn)艦船裝備軟件構(gòu)件可靠性評(píng)估工作,具有重要的工程意義。
參考文獻(xiàn):
[1] Goseva P K,Trivedl K S. Architecture-based approach to reliability assessment of software systems[J].Performance Evaluation Journal,2001,45(2/3):179-204.
[2] Ramamoorthy C V,Bastanl F B. Software reliability-status and perspectives[J]. IEEE Transactions on Software Engineering,1982,8(4):354-371.
[3] 鐘德明.通用嵌入式軟件仿真測(cè)試環(huán)境的軟件體系結(jié)構(gòu)研究[D].北京:北京航空航天大學(xué),2005.
[4] Parnas D L. The Influence of Software Structure on Reliablity[A]. Proc.1975 Int Conf. Reliable Software[C].1975:358-372.
[5] Shooman M.Structural models for software reliability prediction[A]. Proceedings of the Second International ConferenceSoftwareEngineering[C].1976:268-280.
[6] 蔡開(kāi)元,白成剛,鐘小軍.軟件構(gòu)件系統(tǒng)的可靠性評(píng)估模型簡(jiǎn)介[J].西安交通大學(xué)學(xué)報(bào),2003,37(6):560-564.
[7] 郝紅衛(wèi).計(jì)算機(jī)系統(tǒng)軟件可靠性預(yù)計(jì)評(píng)估方法及CAD[D].北京:北京航空航天大學(xué),1997,3.
[8] 陸民燕.軟件可靠性工程[M].北京:國(guó)防工業(yè)出版社,2011.
[9] 程明華,姚一平.軟件可靠性早期預(yù)計(jì)方法初步研究分析報(bào)告[R].1997,11.
[10] 陳春秀,馬力.軟件可靠性測(cè)試技術(shù)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2010(2):4628-4631.
[11] Cheung R C.A user-oriented software reliability mode[J].Software Engineering IEEE Transactions on 1980,SE-6(2):118-125.