郝學(xué)良, 朱小冬, 葉 飛
(軍械工程學(xué)院維修工程實(shí)驗(yàn)中心, 河北 石家莊 050003)
軟件維護(hù)性迭代驗(yàn)證方法
郝學(xué)良, 朱小冬, 葉飛
(軍械工程學(xué)院維修工程實(shí)驗(yàn)中心, 河北 石家莊 050003)
摘要:基于軟件維護(hù)性盡早、全過程迭代驗(yàn)證的思想,提出了貫穿軟件生命周期的維護(hù)性迭代驗(yàn)證策略及過程,建立了基于功能塊平均維護(hù)時(shí)間的維護(hù)性迭代驗(yàn)證模型。通過階段性地開展軟件維護(hù)性驗(yàn)證,可及時(shí)發(fā)現(xiàn)軟件維護(hù)性設(shè)計(jì)缺陷并及早更改,避免造成嚴(yán)重的維護(hù)性質(zhì)量問題,大大降低軟件使用階段的維護(hù)費(fèi)用,提高軟件系統(tǒng)的完好率。通過制定規(guī)范的軟件維護(hù)性驗(yàn)證策略和方案,規(guī)范了軟件維護(hù)性驗(yàn)證實(shí)施過程,為軟件維護(hù)性驗(yàn)證人員提供了可行的操作指南,也為軟件維護(hù)性驗(yàn)證平臺(tái)開發(fā)人員明確平臺(tái)需要提供參考。實(shí)例驗(yàn)證結(jié)果表明:所提出的軟件維護(hù)性迭代驗(yàn)證方法是有效、可行的,可為軟件研制人員提供理論指導(dǎo),也為軟件使用和維護(hù)人員制訂軟件維護(hù)計(jì)劃、配置軟件維護(hù)資源提供決策依據(jù)。
關(guān)鍵詞:軟件維護(hù)性; 平均維護(hù)時(shí)間; 迭代驗(yàn)證
軟件維護(hù)日益成為裝備保障的重要內(nèi)容,據(jù)統(tǒng)計(jì),美軍F-22戰(zhàn)斗機(jī)中軟件實(shí)現(xiàn)的功能占整個(gè)系統(tǒng)功能的80%以上[1],隨著軟件系統(tǒng)在裝備中的大量應(yīng)用,軟件系統(tǒng)的維護(hù)性已成為影響裝備戰(zhàn)斗力的重要屬性。
軟件維護(hù)性是指軟件維護(hù)的難易程度,是一種外在屬性,其只有在實(shí)際的維護(hù)活動(dòng)中才能體現(xiàn)出來,然而這種需要在真實(shí)條件下,通過整個(gè)軟件壽命周期來完成的驗(yàn)證方式在經(jīng)濟(jì)和研制周期上都是不現(xiàn)實(shí)的。軟件缺陷修復(fù)是軟件維護(hù)內(nèi)容之一,通過利用自動(dòng)化配置管理工具,可大量收集詳實(shí)、真實(shí)的缺陷修復(fù)數(shù)據(jù),為更好地進(jìn)行維護(hù)性驗(yàn)證提供依據(jù)。
軟件工程化開發(fā)過程可在一定程度上提高軟件的維護(hù)性,但并不能直接證明軟件維護(hù)性是否達(dá)到規(guī)定的水平、滿足規(guī)定的要求。為了直接驗(yàn)證軟件維護(hù)性水平與規(guī)定的維護(hù)性要求相符,需要在有代表性的或接近實(shí)際的維護(hù)環(huán)境下,對(duì)所研發(fā)的軟件進(jìn)行維護(hù)性驗(yàn)證,確認(rèn)軟件系統(tǒng)的維護(hù)性實(shí)際水平。軍用軟件維護(hù)性驗(yàn)證技術(shù)起步較晚,技術(shù)落后,專業(yè)人員缺乏,管理也不完善。近年來,由于軟件維護(hù)費(fèi)用大幅增加,軟件維護(hù)性驗(yàn)證研究也成為學(xué)者關(guān)注的熱點(diǎn)問題之一[2-3]。張策等[4]針對(duì)構(gòu)件軟件的質(zhì)量屬性,提出在復(fù)雜環(huán)境下應(yīng)用非參量求解方法、容錯(cuò)體系結(jié)構(gòu)與集成化建模表示與分析等技術(shù)開展軟件維護(hù)性驗(yàn)證研究的必要性。周遠(yuǎn)等[5]提出了采用程序不變量來度量軟件質(zhì)量的方法,克服了軟件輸入/輸出結(jié)果的不確定性,并可獲取可靠的失效數(shù)據(jù),對(duì)于軟件維護(hù)性驗(yàn)證具有很好的指導(dǎo)意義。韓德帥等[6]提出了一種軟件自適應(yīng)UML建模方法,對(duì)軟件質(zhì)量實(shí)現(xiàn)了形式化驗(yàn)證,有效降低了軟件建模和驗(yàn)證的復(fù)雜度,提高了軟件可維護(hù)性,但如何由理論轉(zhuǎn)化為工具自動(dòng)化過程仍有待進(jìn)一步研究。張璇等[7]利用模糊集合論和信息熵理論,針對(duì)非功能需求的可滿足性驗(yàn)證進(jìn)行了深入研究,提出了基于可滿足性問題求解方法的推理過程。上述研究主要針對(duì)軟件內(nèi)部體系結(jié)構(gòu)或源代碼本身,從軟件內(nèi)部架構(gòu)、編程語言等角度進(jìn)行研究。軟件生命周期是一個(gè)長期反復(fù)更改的過程,軟件維護(hù)性也是一個(gè)迭代演化的過程,軟件維護(hù)性驗(yàn)證同樣也應(yīng)該迭代開展。為此,筆者提出基于迭代驗(yàn)證的軟件維護(hù)性驗(yàn)證方法,從軟件維護(hù)行為的角度,通過先驗(yàn)維護(hù)性信息與實(shí)測(cè)維護(hù)性數(shù)據(jù)相結(jié)合,軟件工程實(shí)際和軟件系統(tǒng)特點(diǎn)相結(jié)合,解決對(duì)軟件系統(tǒng)維護(hù)性進(jìn)行動(dòng)態(tài)迭代驗(yàn)證問題,為軟件系統(tǒng)研制和驗(yàn)證提供一種新的思路和方法。
1迭代驗(yàn)證技術(shù)框架
軟件演化貫穿軟件系統(tǒng)生命周期,也是軟件的基本特征[8],即隨著軟件系統(tǒng)需求的改變、功能實(shí)現(xiàn)的增強(qiáng)和加入、體系結(jié)構(gòu)的更改、缺陷修復(fù)、運(yùn)行環(huán)境的改變而反復(fù)迭代。軟件演化過程如圖1所示。
圖1 軟件演化過程
軟件維護(hù)性既受設(shè)計(jì)特性的影響,又隨著軟件在使用維護(hù)中的更改而產(chǎn)生一定程度的動(dòng)態(tài)變化。在演化過程中軟件維護(hù)性具有如下3個(gè)特征:
1) 迭代性。在軟件演化過程中,由于軟件系統(tǒng)不斷更改,軟件的維護(hù)性也在不斷變更。
2) 反饋性。針對(duì)用戶需求和軟件系統(tǒng)所處環(huán)境的變化,軟件必須做出反饋,其維護(hù)性也必須進(jìn)行相應(yīng)地反饋。
3) 交錯(cuò)繼承性。軟件維護(hù)性的演化過程是連續(xù)性與間斷性的統(tǒng)一,且變更在全過程始終是可追溯的,因此,先驗(yàn)維護(hù)性信息在驗(yàn)證過程中具有非常重要的價(jià)值。
軟件維護(hù)性驗(yàn)證試驗(yàn)是為了驗(yàn)證在給定的統(tǒng)計(jì)置信度下,軟件維護(hù)性水平是否滿足用戶要求而進(jìn)行的試驗(yàn),即用戶在接收軟件時(shí),確定軟件是否滿足研制任務(wù)書中規(guī)定的維護(hù)性指標(biāo),其目的是驗(yàn)證軟件設(shè)計(jì)是否達(dá)到規(guī)定的維護(hù)性指標(biāo)要求,是通過定量估計(jì)軟件系統(tǒng)的維護(hù)性來給出接收或拒收結(jié)論,一般在軟件確認(rèn)(驗(yàn)收)階段進(jìn)行,試驗(yàn)環(huán)境既可是軟件測(cè)試實(shí)驗(yàn)室,也可是使用現(xiàn)場(chǎng)。
軟件維護(hù)性迭代驗(yàn)證就是從早期階段的分析驗(yàn)證到測(cè)試階段的維護(hù)性數(shù)據(jù)驗(yàn)證,再到定型試驗(yàn)階段的維護(hù)性數(shù)據(jù)驗(yàn)證,直至部隊(duì)實(shí)際使用中收集的維護(hù)性數(shù)據(jù)驗(yàn)證,進(jìn)而逐漸逼近維護(hù)性的真值。開展軟件維護(hù)性驗(yàn)證和評(píng)估,需要考慮先驗(yàn)維護(hù)性信息和后驗(yàn)維護(hù)性數(shù)據(jù)。軟件維護(hù)性迭代驗(yàn)證技術(shù)框架如圖2所示。
圖2 軟件維護(hù)性迭代驗(yàn)證技術(shù)框架
2先驗(yàn)維護(hù)性信息獲取
先驗(yàn)維護(hù)性信息可理解為前置狀態(tài)維護(hù)性信息,即軟件在演化前一階段所處狀態(tài)的維護(hù)性。由于長期以來對(duì)軟件維護(hù)性驗(yàn)證重視不夠,導(dǎo)致軟件維護(hù)性現(xiàn)場(chǎng)數(shù)據(jù)嚴(yán)重不足[9]。因此,對(duì)于軟件維護(hù)性迭代驗(yàn)證,先驗(yàn)維護(hù)性信息和現(xiàn)場(chǎng)的維護(hù)性信息同樣重要。
2.1軟件維護(hù)性數(shù)據(jù)收集框架與途徑
軟件工程的核心是將軟件開發(fā)或維護(hù)活動(dòng)由“基于激情”轉(zhuǎn)變?yōu)椤盎跀?shù)據(jù)”[10]。筆者基于軟件工程思想提出軟件維護(hù)性數(shù)據(jù)收集框架[11],如圖3所示。
圖3 軟件維護(hù)性數(shù)據(jù)收集框架
軟件維護(hù)性數(shù)據(jù)收集是維護(hù)性驗(yàn)證中一項(xiàng)關(guān)鍵性的工作,需要建立數(shù)據(jù)收集系統(tǒng),包括成立專門的數(shù)據(jù)資料管理線,制定各種數(shù)據(jù)表格和記錄卡,并安排專職人員來負(fù)責(zé)。此外,還應(yīng)收集功能測(cè)試、可靠性試驗(yàn)等各種試驗(yàn)中的故障、維護(hù)與保障的原始數(shù)據(jù),并建立數(shù)據(jù)庫進(jìn)行數(shù)據(jù)分析和處理。
目前,我軍軟件維護(hù)基本處于誰開發(fā)誰維護(hù)的狀態(tài),但是開發(fā)方在核查過程中使用的數(shù)據(jù)收集系統(tǒng)及其收集的數(shù)據(jù)必須符合核查的目的和要求,并與維護(hù)性驗(yàn)證中訂購方的數(shù)據(jù)收集系統(tǒng)和收集的數(shù)據(jù)協(xié)調(diào)一致。維護(hù)性數(shù)據(jù)的收集不僅可用于維護(hù)性驗(yàn)證,還可為軟件維護(hù)工作的組織和管理(如維護(hù)人員、維護(hù)工具的配備等)提供依據(jù)。完成維護(hù)性驗(yàn)證試驗(yàn)后,應(yīng)對(duì)收集的維護(hù)性數(shù)據(jù)進(jìn)行分析,根據(jù)維護(hù)作業(yè)的維護(hù)時(shí)間來評(píng)估軟件的維護(hù)性水平,為管理決策提供依據(jù)。軟件維護(hù)性驗(yàn)證試驗(yàn)數(shù)據(jù)分析表如表1所示。
表1 軟件維護(hù)性驗(yàn)證試驗(yàn)數(shù)據(jù)分析表
軟件維護(hù)性驗(yàn)證數(shù)據(jù)的獲取途徑主要有:
1) 本軟件系統(tǒng)的歷史數(shù)據(jù),即使用、測(cè)試試驗(yàn)等收集到的故障及維護(hù)數(shù)據(jù);
2) 類似軟件系統(tǒng)或模塊的歷史數(shù)據(jù),特別是同類型軟件在類似系統(tǒng)或硬件設(shè)備中使用、試驗(yàn)得到的數(shù)據(jù);
3) 由使用維護(hù)人員提供的經(jīng)驗(yàn)數(shù)據(jù);
4) 由設(shè)計(jì)人員憑經(jīng)驗(yàn)判斷提出的數(shù)據(jù)。
2.2軟件歷史維護(hù)記錄分析
1) 一次維護(hù)時(shí)間。在維護(hù)狀態(tài)報(bào)告中對(duì)每次維護(hù)都記錄了“維護(hù)開始時(shí)間”、“維護(hù)結(jié)束時(shí)間”以及“維護(hù)人”。因此,可與維護(hù)人員進(jìn)行溝通,剔除維護(hù)結(jié)束時(shí)間與維護(hù)開始時(shí)間中的非工作時(shí)間,得到一次維護(hù)時(shí)間。
4) 軟件系統(tǒng)平均維護(hù)時(shí)間。功能塊所對(duì)應(yīng)的維護(hù)記錄數(shù)與軟件系統(tǒng)總的維護(hù)記錄數(shù)的比值反映了該功能塊維護(hù)的頻繁程度,將該比值作為權(quán)值,對(duì)各個(gè)功能塊的平均維護(hù)時(shí)間進(jìn)行加權(quán)平均,可得軟件系統(tǒng)的平均維護(hù)時(shí)間為T=Ti·ri/N。
2.3數(shù)據(jù)收集準(zhǔn)確性保證
在軟件維護(hù)性驗(yàn)證過程中,由于對(duì)維護(hù)數(shù)據(jù)依賴較強(qiáng),所以需要保證數(shù)據(jù)的準(zhǔn)確性。
1) 數(shù)據(jù)收集應(yīng)與軟件維護(hù)并行進(jìn)行。軟件開發(fā)和維護(hù)均是一項(xiàng)智力活動(dòng),由于智力活動(dòng)的度量難度較高,而且有些數(shù)據(jù)會(huì)隨著時(shí)間的延長而無法追蹤驗(yàn)證,因此最好的方法是數(shù)據(jù)收集與軟件維護(hù)同時(shí)進(jìn)行。
2) 與編程人員面談。編程人員是提供數(shù)據(jù)的一線人員,與編程人員面談是驗(yàn)證數(shù)據(jù)準(zhǔn)確性的有效手段之一。
3基于平均維護(hù)時(shí)間的驗(yàn)證過程
圖4 軟件維護(hù)性迭代驗(yàn)證過程
4實(shí)例系統(tǒng)驗(yàn)證
4.1系統(tǒng)概述
“虛擬維修訓(xùn)練課程開發(fā)系統(tǒng)”(以下簡稱“開發(fā)系統(tǒng)”)為2007年底開始開發(fā)的原型系統(tǒng),2009年5月發(fā)布了1.0版本,由于1.0版本存在內(nèi)存不足、可重用性差、協(xié)同開發(fā)有一定難度等問題,2013年8月對(duì)1.0版本進(jìn)行了升級(jí)改進(jìn),并于2014年6月發(fā)布了2.0版本。為了驗(yàn)證所提方法的實(shí)用性和適用性,筆者對(duì)該“開發(fā)系統(tǒng)”的概要設(shè)計(jì)階段、詳細(xì)設(shè)計(jì)階段以及編碼設(shè)計(jì)階段的維護(hù)性分別進(jìn)行了驗(yàn)證,判斷其是否滿足用戶提出的維護(hù)性要求。
在概要設(shè)計(jì)階段,為便于系統(tǒng)分析,將“開發(fā)系統(tǒng)”劃分為題庫導(dǎo)入、試題管理、文件管理、素材管理等10個(gè)功能塊。在功能塊維護(hù)性估算過程中,發(fā)現(xiàn)“排故流程課程制作”功能塊的平均維護(hù)時(shí)間超過了期望值,應(yīng)對(duì)此功能塊結(jié)構(gòu)進(jìn)行設(shè)計(jì)改進(jìn),以降低其維護(hù)時(shí)間、提高維護(hù)性。“排故流程課程制作”功能塊包括故障管理、檢測(cè)步驟設(shè)置和診斷書建模等構(gòu)件。
4.2系統(tǒng)數(shù)據(jù)收集
設(shè)計(jì)改進(jìn)之后,收集維護(hù)過程數(shù)據(jù)得到各功能塊的維護(hù)次數(shù)和平均維護(hù)時(shí)間,如表2所示。
表2 各功能塊的維護(hù)次數(shù)和平均維護(hù)時(shí)間
由表2可得維護(hù)性先驗(yàn)信息:M=10,Ti=(7,8,6,10,12,8,26,30,32,16),λi=(0.014,0.014, 0.028, 0.039, 0.031, 0.089, 0.191, 0.216, 0.151, 0.227),系統(tǒng)平均維護(hù)時(shí)間T=21.75 h。
由于升級(jí)維護(hù)過程中,相應(yīng)調(diào)整了“排故流程課程制作”功能塊的結(jié)構(gòu),在軟件詳細(xì)測(cè)試階段,對(duì)各功能塊的維護(hù)頻數(shù)和頻度進(jìn)行估算,結(jié)果如表3所示。
4.3驗(yàn)證指標(biāo)計(jì)算
在測(cè)試階段收集功能塊平均維護(hù)時(shí)間,系統(tǒng)維護(hù)作業(yè)樣本量N=31,各模塊的維護(hù)時(shí)間如表4所示。
表3 軟件測(cè)試階段各功能塊的維護(hù)次數(shù)和頻度
表4 功能塊平均維護(hù)時(shí)間
由此可見:A≤B,軟件系統(tǒng)的維護(hù)性水平符合合同要求。
參考文獻(xiàn):
[1]周澤云, 杜家興. 軟件保障與硬件保障的區(qū)別[J]. 裝甲兵工程學(xué)院學(xué)報(bào),2007,21(6):29-32.
[2]李曉麗, 龍翔, 劉超, 等. 軍用軟件測(cè)試現(xiàn)狀及對(duì)策[J]. 裝甲兵工程學(xué)院學(xué)報(bào), 2008, 22(5): 66-70.
[3]劉麗. 基于復(fù)雜度的軟件維護(hù)性預(yù)計(jì)技術(shù)研究[D]. 石家莊: 軍械工程學(xué)院, 2015.
[4]張策, 崔剛, 劉宏偉, 等. 構(gòu)件軟件可靠性過程技術(shù)[J]. 計(jì)算機(jī)學(xué)報(bào), 2014,37(12): 2586-2612.
[5]周遠(yuǎn), 丁佐華. 基于程序不變量計(jì)算軟件可靠性[J]. 軟件學(xué)報(bào), 2015, 26(12): 3075-3087.
[6]韓德帥, 楊啟亮, 邢建春. 一種軟件自適應(yīng)UML建模及其形式化驗(yàn)證方法[J]. 軟件學(xué)報(bào), 2015, 26(4): 730-746.
[7]張璇, 李彤, 王旭,等. 可信軟件非功能需求形式化表示與可滿足分析[J]. 軟件學(xué)報(bào), 2015, 26(10): 2545-2566.
[8]于倩. 基于EPMM的軟件演化過程自動(dòng)化方法的研究[D]. 昆明: 云南大學(xué), 2014.
[9]劉穎, 杜健. 基于Bayes理論的裝備維修性驗(yàn)證方法[J]. 裝甲兵工程學(xué)院學(xué)報(bào), 2011, 25(1): 18-21.
[10]Reifer D J, Basili V R, Boehm B W,etal. COTS-based Systems:Twelve Lessons Learned about Maintenance[J]. Lecture Notes in Computer Science, 2004, 2959(1):137-145.
[11]Mendon?a M G, Basili V R. Validation of an Approach for Improving Existing Measurement Frameworks[J]. IEEE Transactins on Software Engineering, 2000, 26(6): 484-499.
(責(zé)任編輯: 王生鳳)
Software Maintainability Iterative Verification
HAO Xue-liang, ZHU Xiao-dong, YE Fei
(Maintenance Engineering Institute, Ordnance Engineering College, Shijiazhuang 050003, China)
Abstract:According to the principle of the whole process iterative and earlier verification of software maintainability, iterative verification scheme and process through all software development is made and model of maintainability iterative verification based on mean maintenance time of functional modules is built. Through episodically verification of software maintainability, software design defect can be found in time and be removed as fast as possible, so as to avoid serious quality problem on software maintainability, greatly reduce the maintainance cost of software in use and improve and readiness rate. Through making standard software maintainability verification scheme and plan, the software maintainability verifying process can be standardized, and software prototype system designer and developer can be guided. A real software case is exemplified to demonstrate that the methods above are feasible and effective, which can be used to guide software designers and developers theoretically and provide decision-making basis for software users and maintainers to make software plan and allocate maintainance resources.
Key words:software maintainability; mean maintenance time; iterative verification
文章編號(hào):1672-1497(2016)02-0016-05
收稿日期:2016-01-28
基金項(xiàng)目:軍隊(duì)科研計(jì)劃項(xiàng)目
作者簡介:郝學(xué)良(1984-),男,博士研究生。
中圖分類號(hào):TP311.53
文獻(xiàn)標(biāo)志碼:A
DOI:10.3969/j.issn.1672-1497.2016.02.004