郝學(xué)良, 朱小冬, 葉 飛
(軍械工程學(xué)院維修工程實驗中心, 河北 石家莊 050003)
軟件維護(hù)性迭代驗證方法
郝學(xué)良, 朱小冬, 葉飛
(軍械工程學(xué)院維修工程實驗中心, 河北 石家莊 050003)
摘要:基于軟件維護(hù)性盡早、全過程迭代驗證的思想,提出了貫穿軟件生命周期的維護(hù)性迭代驗證策略及過程,建立了基于功能塊平均維護(hù)時間的維護(hù)性迭代驗證模型。通過階段性地開展軟件維護(hù)性驗證,可及時發(fā)現(xiàn)軟件維護(hù)性設(shè)計缺陷并及早更改,避免造成嚴(yán)重的維護(hù)性質(zhì)量問題,大大降低軟件使用階段的維護(hù)費用,提高軟件系統(tǒng)的完好率。通過制定規(guī)范的軟件維護(hù)性驗證策略和方案,規(guī)范了軟件維護(hù)性驗證實施過程,為軟件維護(hù)性驗證人員提供了可行的操作指南,也為軟件維護(hù)性驗證平臺開發(fā)人員明確平臺需要提供參考。實例驗證結(jié)果表明:所提出的軟件維護(hù)性迭代驗證方法是有效、可行的,可為軟件研制人員提供理論指導(dǎo),也為軟件使用和維護(hù)人員制訂軟件維護(hù)計劃、配置軟件維護(hù)資源提供決策依據(jù)。
關(guān)鍵詞:軟件維護(hù)性; 平均維護(hù)時間; 迭代驗證
軟件維護(hù)日益成為裝備保障的重要內(nèi)容,據(jù)統(tǒng)計,美軍F-22戰(zhàn)斗機(jī)中軟件實現(xiàn)的功能占整個系統(tǒng)功能的80%以上[1],隨著軟件系統(tǒng)在裝備中的大量應(yīng)用,軟件系統(tǒng)的維護(hù)性已成為影響裝備戰(zhàn)斗力的重要屬性。
軟件維護(hù)性是指軟件維護(hù)的難易程度,是一種外在屬性,其只有在實際的維護(hù)活動中才能體現(xiàn)出來,然而這種需要在真實條件下,通過整個軟件壽命周期來完成的驗證方式在經(jīng)濟(jì)和研制周期上都是不現(xiàn)實的。軟件缺陷修復(fù)是軟件維護(hù)內(nèi)容之一,通過利用自動化配置管理工具,可大量收集詳實、真實的缺陷修復(fù)數(shù)據(jù),為更好地進(jìn)行維護(hù)性驗證提供依據(jù)。
軟件工程化開發(fā)過程可在一定程度上提高軟件的維護(hù)性,但并不能直接證明軟件維護(hù)性是否達(dá)到規(guī)定的水平、滿足規(guī)定的要求。為了直接驗證軟件維護(hù)性水平與規(guī)定的維護(hù)性要求相符,需要在有代表性的或接近實際的維護(hù)環(huán)境下,對所研發(fā)的軟件進(jìn)行維護(hù)性驗證,確認(rèn)軟件系統(tǒng)的維護(hù)性實際水平。軍用軟件維護(hù)性驗證技術(shù)起步較晚,技術(shù)落后,專業(yè)人員缺乏,管理也不完善。近年來,由于軟件維護(hù)費用大幅增加,軟件維護(hù)性驗證研究也成為學(xué)者關(guān)注的熱點問題之一[2-3]。張策等[4]針對構(gòu)件軟件的質(zhì)量屬性,提出在復(fù)雜環(huán)境下應(yīng)用非參量求解方法、容錯體系結(jié)構(gòu)與集成化建模表示與分析等技術(shù)開展軟件維護(hù)性驗證研究的必要性。周遠(yuǎn)等[5]提出了采用程序不變量來度量軟件質(zhì)量的方法,克服了軟件輸入/輸出結(jié)果的不確定性,并可獲取可靠的失效數(shù)據(jù),對于軟件維護(hù)性驗證具有很好的指導(dǎo)意義。韓德帥等[6]提出了一種軟件自適應(yīng)UML建模方法,對軟件質(zhì)量實現(xiàn)了形式化驗證,有效降低了軟件建模和驗證的復(fù)雜度,提高了軟件可維護(hù)性,但如何由理論轉(zhuǎn)化為工具自動化過程仍有待進(jìn)一步研究。張璇等[7]利用模糊集合論和信息熵理論,針對非功能需求的可滿足性驗證進(jìn)行了深入研究,提出了基于可滿足性問題求解方法的推理過程。上述研究主要針對軟件內(nèi)部體系結(jié)構(gòu)或源代碼本身,從軟件內(nèi)部架構(gòu)、編程語言等角度進(jìn)行研究。軟件生命周期是一個長期反復(fù)更改的過程,軟件維護(hù)性也是一個迭代演化的過程,軟件維護(hù)性驗證同樣也應(yīng)該迭代開展。為此,筆者提出基于迭代驗證的軟件維護(hù)性驗證方法,從軟件維護(hù)行為的角度,通過先驗維護(hù)性信息與實測維護(hù)性數(shù)據(jù)相結(jié)合,軟件工程實際和軟件系統(tǒng)特點相結(jié)合,解決對軟件系統(tǒng)維護(hù)性進(jìn)行動態(tài)迭代驗證問題,為軟件系統(tǒng)研制和驗證提供一種新的思路和方法。
1迭代驗證技術(shù)框架
軟件演化貫穿軟件系統(tǒng)生命周期,也是軟件的基本特征[8],即隨著軟件系統(tǒng)需求的改變、功能實現(xiàn)的增強(qiáng)和加入、體系結(jié)構(gòu)的更改、缺陷修復(fù)、運行環(huán)境的改變而反復(fù)迭代。軟件演化過程如圖1所示。
圖1 軟件演化過程
軟件維護(hù)性既受設(shè)計特性的影響,又隨著軟件在使用維護(hù)中的更改而產(chǎn)生一定程度的動態(tài)變化。在演化過程中軟件維護(hù)性具有如下3個特征:
1) 迭代性。在軟件演化過程中,由于軟件系統(tǒng)不斷更改,軟件的維護(hù)性也在不斷變更。
2) 反饋性。針對用戶需求和軟件系統(tǒng)所處環(huán)境的變化,軟件必須做出反饋,其維護(hù)性也必須進(jìn)行相應(yīng)地反饋。
3) 交錯繼承性。軟件維護(hù)性的演化過程是連續(xù)性與間斷性的統(tǒng)一,且變更在全過程始終是可追溯的,因此,先驗維護(hù)性信息在驗證過程中具有非常重要的價值。
軟件維護(hù)性驗證試驗是為了驗證在給定的統(tǒng)計置信度下,軟件維護(hù)性水平是否滿足用戶要求而進(jìn)行的試驗,即用戶在接收軟件時,確定軟件是否滿足研制任務(wù)書中規(guī)定的維護(hù)性指標(biāo),其目的是驗證軟件設(shè)計是否達(dá)到規(guī)定的維護(hù)性指標(biāo)要求,是通過定量估計軟件系統(tǒng)的維護(hù)性來給出接收或拒收結(jié)論,一般在軟件確認(rèn)(驗收)階段進(jìn)行,試驗環(huán)境既可是軟件測試實驗室,也可是使用現(xiàn)場。
軟件維護(hù)性迭代驗證就是從早期階段的分析驗證到測試階段的維護(hù)性數(shù)據(jù)驗證,再到定型試驗階段的維護(hù)性數(shù)據(jù)驗證,直至部隊實際使用中收集的維護(hù)性數(shù)據(jù)驗證,進(jìn)而逐漸逼近維護(hù)性的真值。開展軟件維護(hù)性驗證和評估,需要考慮先驗維護(hù)性信息和后驗維護(hù)性數(shù)據(jù)。軟件維護(hù)性迭代驗證技術(shù)框架如圖2所示。
圖2 軟件維護(hù)性迭代驗證技術(shù)框架
2先驗維護(hù)性信息獲取
先驗維護(hù)性信息可理解為前置狀態(tài)維護(hù)性信息,即軟件在演化前一階段所處狀態(tài)的維護(hù)性。由于長期以來對軟件維護(hù)性驗證重視不夠,導(dǎo)致軟件維護(hù)性現(xiàn)場數(shù)據(jù)嚴(yán)重不足[9]。因此,對于軟件維護(hù)性迭代驗證,先驗維護(hù)性信息和現(xiàn)場的維護(hù)性信息同樣重要。
2.1軟件維護(hù)性數(shù)據(jù)收集框架與途徑
軟件工程的核心是將軟件開發(fā)或維護(hù)活動由“基于激情”轉(zhuǎn)變?yōu)椤盎跀?shù)據(jù)”[10]。筆者基于軟件工程思想提出軟件維護(hù)性數(shù)據(jù)收集框架[11],如圖3所示。
圖3 軟件維護(hù)性數(shù)據(jù)收集框架
軟件維護(hù)性數(shù)據(jù)收集是維護(hù)性驗證中一項關(guān)鍵性的工作,需要建立數(shù)據(jù)收集系統(tǒng),包括成立專門的數(shù)據(jù)資料管理線,制定各種數(shù)據(jù)表格和記錄卡,并安排專職人員來負(fù)責(zé)。此外,還應(yīng)收集功能測試、可靠性試驗等各種試驗中的故障、維護(hù)與保障的原始數(shù)據(jù),并建立數(shù)據(jù)庫進(jìn)行數(shù)據(jù)分析和處理。
目前,我軍軟件維護(hù)基本處于誰開發(fā)誰維護(hù)的狀態(tài),但是開發(fā)方在核查過程中使用的數(shù)據(jù)收集系統(tǒng)及其收集的數(shù)據(jù)必須符合核查的目的和要求,并與維護(hù)性驗證中訂購方的數(shù)據(jù)收集系統(tǒng)和收集的數(shù)據(jù)協(xié)調(diào)一致。維護(hù)性數(shù)據(jù)的收集不僅可用于維護(hù)性驗證,還可為軟件維護(hù)工作的組織和管理(如維護(hù)人員、維護(hù)工具的配備等)提供依據(jù)。完成維護(hù)性驗證試驗后,應(yīng)對收集的維護(hù)性數(shù)據(jù)進(jìn)行分析,根據(jù)維護(hù)作業(yè)的維護(hù)時間來評估軟件的維護(hù)性水平,為管理決策提供依據(jù)。軟件維護(hù)性驗證試驗數(shù)據(jù)分析表如表1所示。
表1 軟件維護(hù)性驗證試驗數(shù)據(jù)分析表
軟件維護(hù)性驗證數(shù)據(jù)的獲取途徑主要有:
1) 本軟件系統(tǒng)的歷史數(shù)據(jù),即使用、測試試驗等收集到的故障及維護(hù)數(shù)據(jù);
2) 類似軟件系統(tǒng)或模塊的歷史數(shù)據(jù),特別是同類型軟件在類似系統(tǒng)或硬件設(shè)備中使用、試驗得到的數(shù)據(jù);
3) 由使用維護(hù)人員提供的經(jīng)驗數(shù)據(jù);
4) 由設(shè)計人員憑經(jīng)驗判斷提出的數(shù)據(jù)。
2.2軟件歷史維護(hù)記錄分析
1) 一次維護(hù)時間。在維護(hù)狀態(tài)報告中對每次維護(hù)都記錄了“維護(hù)開始時間”、“維護(hù)結(jié)束時間”以及“維護(hù)人”。因此,可與維護(hù)人員進(jìn)行溝通,剔除維護(hù)結(jié)束時間與維護(hù)開始時間中的非工作時間,得到一次維護(hù)時間。
4) 軟件系統(tǒng)平均維護(hù)時間。功能塊所對應(yīng)的維護(hù)記錄數(shù)與軟件系統(tǒng)總的維護(hù)記錄數(shù)的比值反映了該功能塊維護(hù)的頻繁程度,將該比值作為權(quán)值,對各個功能塊的平均維護(hù)時間進(jìn)行加權(quán)平均,可得軟件系統(tǒng)的平均維護(hù)時間為T=Ti·ri/N。
2.3數(shù)據(jù)收集準(zhǔn)確性保證
在軟件維護(hù)性驗證過程中,由于對維護(hù)數(shù)據(jù)依賴較強(qiáng),所以需要保證數(shù)據(jù)的準(zhǔn)確性。
1) 數(shù)據(jù)收集應(yīng)與軟件維護(hù)并行進(jìn)行。軟件開發(fā)和維護(hù)均是一項智力活動,由于智力活動的度量難度較高,而且有些數(shù)據(jù)會隨著時間的延長而無法追蹤驗證,因此最好的方法是數(shù)據(jù)收集與軟件維護(hù)同時進(jìn)行。
2) 與編程人員面談。編程人員是提供數(shù)據(jù)的一線人員,與編程人員面談是驗證數(shù)據(jù)準(zhǔn)確性的有效手段之一。
3基于平均維護(hù)時間的驗證過程
圖4 軟件維護(hù)性迭代驗證過程
4實例系統(tǒng)驗證
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月對1.0版本進(jìn)行了升級改進(jìn),并于2014年6月發(fā)布了2.0版本。為了驗證所提方法的實用性和適用性,筆者對該“開發(fā)系統(tǒng)”的概要設(shè)計階段、詳細(xì)設(shè)計階段以及編碼設(shè)計階段的維護(hù)性分別進(jìn)行了驗證,判斷其是否滿足用戶提出的維護(hù)性要求。
在概要設(shè)計階段,為便于系統(tǒng)分析,將“開發(fā)系統(tǒng)”劃分為題庫導(dǎo)入、試題管理、文件管理、素材管理等10個功能塊。在功能塊維護(hù)性估算過程中,發(fā)現(xiàn)“排故流程課程制作”功能塊的平均維護(hù)時間超過了期望值,應(yīng)對此功能塊結(jié)構(gòu)進(jìn)行設(shè)計改進(jìn),以降低其維護(hù)時間、提高維護(hù)性。“排故流程課程制作”功能塊包括故障管理、檢測步驟設(shè)置和診斷書建模等構(gòu)件。
4.2系統(tǒng)數(shù)據(jù)收集
設(shè)計改進(jìn)之后,收集維護(hù)過程數(shù)據(jù)得到各功能塊的維護(hù)次數(shù)和平均維護(hù)時間,如表2所示。
表2 各功能塊的維護(hù)次數(shù)和平均維護(hù)時間
由表2可得維護(hù)性先驗信息: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ù)時間T=21.75 h。
由于升級維護(hù)過程中,相應(yīng)調(diào)整了“排故流程課程制作”功能塊的結(jié)構(gòu),在軟件詳細(xì)測試階段,對各功能塊的維護(hù)頻數(shù)和頻度進(jìn)行估算,結(jié)果如表3所示。
4.3驗證指標(biāo)計算
在測試階段收集功能塊平均維護(hù)時間,系統(tǒng)維護(hù)作業(yè)樣本量N=31,各模塊的維護(hù)時間如表4所示。
表3 軟件測試階段各功能塊的維護(hù)次數(shù)和頻度
表4 功能塊平均維護(hù)時間
由此可見:A≤B,軟件系統(tǒng)的維護(hù)性水平符合合同要求。
參考文獻(xiàn):
[1]周澤云, 杜家興. 軟件保障與硬件保障的區(qū)別[J]. 裝甲兵工程學(xué)院學(xué)報,2007,21(6):29-32.
[2]李曉麗, 龍翔, 劉超, 等. 軍用軟件測試現(xiàn)狀及對策[J]. 裝甲兵工程學(xué)院學(xué)報, 2008, 22(5): 66-70.
[3]劉麗. 基于復(fù)雜度的軟件維護(hù)性預(yù)計技術(shù)研究[D]. 石家莊: 軍械工程學(xué)院, 2015.
[4]張策, 崔剛, 劉宏偉, 等. 構(gòu)件軟件可靠性過程技術(shù)[J]. 計算機(jī)學(xué)報, 2014,37(12): 2586-2612.
[5]周遠(yuǎn), 丁佐華. 基于程序不變量計算軟件可靠性[J]. 軟件學(xué)報, 2015, 26(12): 3075-3087.
[6]韓德帥, 楊啟亮, 邢建春. 一種軟件自適應(yīng)UML建模及其形式化驗證方法[J]. 軟件學(xué)報, 2015, 26(4): 730-746.
[7]張璇, 李彤, 王旭,等. 可信軟件非功能需求形式化表示與可滿足分析[J]. 軟件學(xué)報, 2015, 26(10): 2545-2566.
[8]于倩. 基于EPMM的軟件演化過程自動化方法的研究[D]. 昆明: 云南大學(xué), 2014.
[9]劉穎, 杜健. 基于Bayes理論的裝備維修性驗證方法[J]. 裝甲兵工程學(xué)院學(xué)報, 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
文章編號:1672-1497(2016)02-0016-05
收稿日期:2016-01-28
基金項目:軍隊科研計劃項目
作者簡介:郝學(xué)良(1984-),男,博士研究生。
中圖分類號:TP311.53
文獻(xiàn)標(biāo)志碼:A
DOI:10.3969/j.issn.1672-1497.2016.02.004