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