郝學良, 朱小冬, 葉 飛
(軍械工程學院維修工程實驗中心, 河北 石家莊 050003)
軟件維護性迭代驗證方法
郝學良, 朱小冬, 葉飛
(軍械工程學院維修工程實驗中心, 河北 石家莊 050003)
摘要:基于軟件維護性盡早、全過程迭代驗證的思想,提出了貫穿軟件生命周期的維護性迭代驗證策略及過程,建立了基于功能塊平均維護時間的維護性迭代驗證模型。通過階段性地開展軟件維護性驗證,可及時發現軟件維護性設計缺陷并及早更改,避免造成嚴重的維護性質量問題,大大降低軟件使用階段的維護費用,提高軟件系統的完好率。通過制定規范的軟件維護性驗證策略和方案,規范了軟件維護性驗證實施過程,為軟件維護性驗證人員提供了可行的操作指南,也為軟件維護性驗證平臺開發人員明確平臺需要提供參考。實例驗證結果表明:所提出的軟件維護性迭代驗證方法是有效、可行的,可為軟件研制人員提供理論指導,也為軟件使用和維護人員制訂軟件維護計劃、配置軟件維護資源提供決策依據。
關鍵詞:軟件維護性; 平均維護時間; 迭代驗證
軟件維護日益成為裝備保障的重要內容,據統計,美軍F-22戰斗機中軟件實現的功能占整個系統功能的80%以上[1],隨著軟件系統在裝備中的大量應用,軟件系統的維護性已成為影響裝備戰斗力的重要屬性。
軟件維護性是指軟件維護的難易程度,是一種外在屬性,其只有在實際的維護活動中才能體現出來,然而這種需要在真實條件下,通過整個軟件壽命周期來完成的驗證方式在經濟和研制周期上都是不現實的。軟件缺陷修復是軟件維護內容之一,通過利用自動化配置管理工具,可大量收集詳實、真實的缺陷修復數據,為更好地進行維護性驗證提供依據。
軟件工程化開發過程可在一定程度上提高軟件的維護性,但并不能直接證明軟件維護性是否達到規定的水平、滿足規定的要求。為了直接驗證軟件維護性水平與規定的維護性要求相符,需要在有代表性的或接近實際的維護環境下,對所研發的軟件進行維護性驗證,確認軟件系統的維護性實際水平。軍用軟件維護性驗證技術起步較晚,技術落后,專業人員缺乏,管理也不完善。近年來,由于軟件維護費用大幅增加,軟件維護性驗證研究也成為學者關注的熱點問題之一[2-3]。張策等[4]針對構件軟件的質量屬性,提出在復雜環境下應用非參量求解方法、容錯體系結構與集成化建模表示與分析等技術開展軟件維護性驗證研究的必要性。周遠等[5]提出了采用程序不變量來度量軟件質量的方法,克服了軟件輸入/輸出結果的不確定性,并可獲取可靠的失效數據,對于軟件維護性驗證具有很好的指導意義。韓德帥等[6]提出了一種軟件自適應UML建模方法,對軟件質量實現了形式化驗證,有效降低了軟件建模和驗證的復雜度,提高了軟件可維護性,但如何由理論轉化為工具自動化過程仍有待進一步研究。張璇等[7]利用模糊集合論和信息熵理論,針對非功能需求的可滿足性驗證進行了深入研究,提出了基于可滿足性問題求解方法的推理過程。上述研究主要針對軟件內部體系結構或源代碼本身,從軟件內部架構、編程語言等角度進行研究。軟件生命周期是一個長期反復更改的過程,軟件維護性也是一個迭代演化的過程,軟件維護性驗證同樣也應該迭代開展。為此,筆者提出基于迭代驗證的軟件維護性驗證方法,從軟件維護行為的角度,通過先驗維護性信息與實測維護性數據相結合,軟件工程實際和軟件系統特點相結合,解決對軟件系統維護性進行動態迭代驗證問題,為軟件系統研制和驗證提供一種新的思路和方法。
1迭代驗證技術框架
軟件演化貫穿軟件系統生命周期,也是軟件的基本特征[8],即隨著軟件系統需求的改變、功能實現的增強和加入、體系結構的更改、缺陷修復、運行環境的改變而反復迭代。軟件演化過程如圖1所示。

圖1 軟件演化過程
軟件維護性既受設計特性的影響,又隨著軟件在使用維護中的更改而產生一定程度的動態變化。在演化過程中軟件維護性具有如下3個特征:
1) 迭代性。在軟件演化過程中,由于軟件系統不斷更改,軟件的維護性也在不斷變更。
2) 反饋性。針對用戶需求和軟件系統所處環境的變化,軟件必須做出反饋,其維護性也必須進行相應地反饋。
3) 交錯繼承性。軟件維護性的演化過程是連續性與間斷性的統一,且變更在全過程始終是可追溯的,因此,先驗維護性信息在驗證過程中具有非常重要的價值。
軟件維護性驗證試驗是為了驗證在給定的統計置信度下,軟件維護性水平是否滿足用戶要求而進行的試驗,即用戶在接收軟件時,確定軟件是否滿足研制任務書中規定的維護性指標,其目的是驗證軟件設計是否達到規定的維護性指標要求,是通過定量估計軟件系統的維護性來給出接收或拒收結論,一般在軟件確認(驗收)階段進行,試驗環境既可是軟件測試實驗室,也可是使用現場。
軟件維護性迭代驗證就是從早期階段的分析驗證到測試階段的維護性數據驗證,再到定型試驗階段的維護性數據驗證,直至部隊實際使用中收集的維護性數據驗證,進而逐漸逼近維護性的真值。開展軟件維護性驗證和評估,需要考慮先驗維護性信息和后驗維護性數據。軟件維護性迭代驗證技術框架如圖2所示。

圖2 軟件維護性迭代驗證技術框架
2先驗維護性信息獲取
先驗維護性信息可理解為前置狀態維護性信息,即軟件在演化前一階段所處狀態的維護性。由于長期以來對軟件維護性驗證重視不夠,導致軟件維護性現場數據嚴重不足[9]。因此,對于軟件維護性迭代驗證,先驗維護性信息和現場的維護性信息同樣重要。
2.1軟件維護性數據收集框架與途徑
軟件工程的核心是將軟件開發或維護活動由“基于激情”轉變為“基于數據”[10]。筆者基于軟件工程思想提出軟件維護性數據收集框架[11],如圖3所示。

圖3 軟件維護性數據收集框架
軟件維護性數據收集是維護性驗證中一項關鍵性的工作,需要建立數據收集系統,包括成立專門的數據資料管理線,制定各種數據表格和記錄卡,并安排專職人員來負責。此外,還應收集功能測試、可靠性試驗等各種試驗中的故障、維護與保障的原始數據,并建立數據庫進行數據分析和處理。
目前,我軍軟件維護基本處于誰開發誰維護的狀態,但是開發方在核查過程中使用的數據收集系統及其收集的數據必須符合核查的目的和要求,并與維護性驗證中訂購方的數據收集系統和收集的數據協調一致。維護性數據的收集不僅可用于維護性驗證,還可為軟件維護工作的組織和管理(如維護人員、維護工具的配備等)提供依據。完成維護性驗證試驗后,應對收集的維護性數據進行分析,根據維護作業的維護時間來評估軟件的維護性水平,為管理決策提供依據。軟件維護性驗證試驗數據分析表如表1所示。

表1 軟件維護性驗證試驗數據分析表
軟件維護性驗證數據的獲取途徑主要有:
1) 本軟件系統的歷史數據,即使用、測試試驗等收集到的故障及維護數據;
2) 類似軟件系統或模塊的歷史數據,特別是同類型軟件在類似系統或硬件設備中使用、試驗得到的數據;
3) 由使用維護人員提供的經驗數據;
4) 由設計人員憑經驗判斷提出的數據。
2.2軟件歷史維護記錄分析
1) 一次維護時間。在維護狀態報告中對每次維護都記錄了“維護開始時間”、“維護結束時間”以及“維護人”。因此,可與維護人員進行溝通,剔除維護結束時間與維護開始時間中的非工作時間,得到一次維護時間。


4) 軟件系統平均維護時間。功能塊所對應的維護記錄數與軟件系統總的維護記錄數的比值反映了該功能塊維護的頻繁程度,將該比值作為權值,對各個功能塊的平均維護時間進行加權平均,可得軟件系統的平均維護時間為T=Ti·ri/N。
2.3數據收集準確性保證
在軟件維護性驗證過程中,由于對維護數據依賴較強,所以需要保證數據的準確性。
1) 數據收集應與軟件維護并行進行。軟件開發和維護均是一項智力活動,由于智力活動的度量難度較高,而且有些數據會隨著時間的延長而無法追蹤驗證,因此最好的方法是數據收集與軟件維護同時進行。
2) 與編程人員面談。編程人員是提供數據的一線人員,與編程人員面談是驗證數據準確性的有效手段之一。
3基于平均維護時間的驗證過程

圖4 軟件維護性迭代驗證過程

4實例系統驗證
4.1系統概述
“虛擬維修訓練課程開發系統”(以下簡稱“開發系統”)為2007年底開始開發的原型系統,2009年5月發布了1.0版本,由于1.0版本存在內存不足、可重用性差、協同開發有一定難度等問題,2013年8月對1.0版本進行了升級改進,并于2014年6月發布了2.0版本。為了驗證所提方法的實用性和適用性,筆者對該“開發系統”的概要設計階段、詳細設計階段以及編碼設計階段的維護性分別進行了驗證,判斷其是否滿足用戶提出的維護性要求。
在概要設計階段,為便于系統分析,將“開發系統”劃分為題庫導入、試題管理、文件管理、素材管理等10個功能塊。在功能塊維護性估算過程中,發現“排故流程課程制作”功能塊的平均維護時間超過了期望值,應對此功能塊結構進行設計改進,以降低其維護時間、提高維護性。“排故流程課程制作”功能塊包括故障管理、檢測步驟設置和診斷書建模等構件。
4.2系統數據收集
設計改進之后,收集維護過程數據得到各功能塊的維護次數和平均維護時間,如表2所示。

表2 各功能塊的維護次數和平均維護時間
由表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=21.75 h。
由于升級維護過程中,相應調整了“排故流程課程制作”功能塊的結構,在軟件詳細測試階段,對各功能塊的維護頻數和頻度進行估算,結果如表3所示。
4.3驗證指標計算
在測試階段收集功能塊平均維護時間,系統維護作業樣本量N=31,各模塊的維護時間如表4所示。

表3 軟件測試階段各功能塊的維護次數和頻度

表4 功能塊平均維護時間
由此可見:A≤B,軟件系統的維護性水平符合合同要求。
參考文獻:
[1]周澤云, 杜家興. 軟件保障與硬件保障的區別[J]. 裝甲兵工程學院學報,2007,21(6):29-32.
[2]李曉麗, 龍翔, 劉超, 等. 軍用軟件測試現狀及對策[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