趙智偉 王猛 周輝 安娜
摘要:針對大型復雜軟件可靠性低、重大任務運行過程中出現(xiàn)軟件故障的問題,從軟件的全生命周期角度研究軟件可靠性設計方法;從軟件可靠性檢驗、軟件維修性檢驗、軟件保障性檢驗、軟件測試性檢驗、軟件安全性檢驗和軟件環(huán)境適應性檢驗等方面探討軟件六性檢驗方法。針對軟件可靠性檢驗,從軟件失效、功能剖面、失效模式和影響度分析、可靠性定義、可靠性模型選擇和指標分配,涵蓋了軟件需求、概要設計、詳細設計及測試設計等不同階段,最后以實例進行驗證。
關鍵詞:關鍵件;失效模式;可靠性模型;六性檢驗
中圖分類號:TP393 文獻標志碼:A 文章編號:1008-1739(2021)13-70-4
Discussion on Six Properties of Software Inspection
ZHAO Zhiwei1, WANG Meng2, ZHOU Hui3, AN Na4
(1. Unit 91917, PLA, Beijing 102401, China;
2. Military Representative Office of the Equipment Department of PLA Rocket Force Stationed in Langfang, Langfang 065000, China;
3. Military Representative Office of the Military Representative Bureau of Equipment Development Department of CMC Stationed inShijiazhuang, Shijiazhuang 050081, China;
4. The 54th Research Institute of CETC, Shijiazhuang 050081, China)
Abstract:In view of low reliability of large and complex software and software fault in running, the design of software reliability isstudied. The inspection method of six properties of software is discussed, from the view of software lifetime, including softwarereliability, maintenance, safeguard, testing and safety and environments adaptability. Aiming at the software reliability, the softwarefault and software function profile and fault mode, effect analysis, reliability definition, reliability model choice and indexes allocationcover the software requirement, online design, detailed design and testing design. At last, the verification is done by using the instance.
Keywords:key module; fault mode; reliability model; six properties inspection
0 引言
軟件是各個系統(tǒng)的必要組成部分,也是各系統(tǒng)的核心功能所在,隨著 SDN/NFV 的出現(xiàn),軟件定義網(wǎng)絡及硬件功能軟件化、虛擬化,軟件的地位和作用越來越突出。同時軟件直接面向各級各類運維人員,是網(wǎng)絡整體運行狀態(tài)的呈現(xiàn)者,為大型任務網(wǎng)可靠高效運行保駕護航,為重大任務的順利完成提供技術支撐,因此研制高可靠性高質量的軟件勢在必行,研究探討軟件六性檢驗、提升軟件質量和可靠性具有重要意義。
1 軟件可靠性檢驗
軟件可靠性檢驗主要包括軟件復雜度、軟件冗余、軟件健壯性、軟件避錯和軟件程序可讀性檢驗。
1.1 軟件復雜度檢驗
軟件復雜度檢驗主要關注層次結構、模塊化設計、服務化設計等方面:
①體系架構檢驗:檢驗軟件是否有體系架構設計圖,針對大型復雜軟件,重點檢驗是否進行體系架構的層次性分解。
②功能剖面設計檢驗:是否進行軟件功能分解,是否封裝為軟件模塊,軟件模塊的分解圖、軟件的關鍵件和重要件是否確定,軟件的功能剖面是否具備,軟件功能剖面是否進行了功能模塊標識、功能模塊說明;是否將軟件功能剖面進行了功能執(zhí)行概率分解,執(zhí)行概率與軟件可靠度是否進行了分解和匹配。
③服務化設計檢驗:是否將軟件模塊進行了服務化封裝,服務化的軟件模塊是否采用標準的服務接口進行消息交互。
④軟件失效分析:是否描繪了軟件失效模式與影響分析表,細化為軟件模塊的失效模式、失效原因、失效影響和嚴重程度,對整個軟件的失效影響概率。
⑤關鍵件重要件的失效模式及故障恢復:在軟件功能模塊化分解之后,提取對軟件系統(tǒng)有重大影響的模塊,確定為關鍵件或重要件,分析失效模式以及故障快速處理手段和方法。
⑥可靠性指標分配:將系統(tǒng)可靠性指標進行了分配和分解,確定軟件系統(tǒng)的可靠性三要素,即規(guī)定的條件、規(guī)定的時間和規(guī)定的功能。
規(guī)定的條件指軟件的運行環(huán)境,涉及軟件系統(tǒng)運行時所需的各種支持要素,如支持硬件、操作系統(tǒng)、其他支持軟件、輸入數(shù)據(jù)格式和范圍以及操作規(guī)程等。不同的環(huán)境條件下軟件的可靠性是不同的。具體地說,規(guī)定的環(huán)境條件主要是描述軟件系統(tǒng)運行時計算機的配置情況以及對輸入數(shù)據(jù)的要求。
規(guī)定的條件還指軟件的用法,一個軟件的可靠性隨著用法的不同而不同。有些用法可以揭露軟件的故障,有些則不能揭露軟件的故障。因此如何定義軟件的用法,以及如何度量軟件用法對軟件失效的影響,是軟件可靠性設計中的一個主要問題。
規(guī)定的時間指軟件的工作周期,軟件可靠性是時間的函數(shù),失效的概率隨著系統(tǒng)工作周期的增長而增加。軟件可靠性只是體現(xiàn)在運行階段,所以將運行時間作為規(guī)定的時間的度量。運行時間包括軟件系統(tǒng)運行后工作與掛起(開啟但空閑)的累計時間。由于軟件運行的環(huán)境與程序路徑選取的隨機性,軟件的失效為隨機事件,所以運行時間屬于隨機變量。
規(guī)定功能指軟件不出現(xiàn)失效。如果一個系統(tǒng)不能完成其規(guī)定功能,就說明它已經失效。規(guī)定的功能通常在軟件需求規(guī)格說明書中定義,軟件可靠性與規(guī)定的任務和功能有關。由于要完成的任務不同,軟件的運行剖面會有所區(qū)別,則調用的模塊就不同(即程序路徑選擇不同),其可靠性也可能不同。
軟件系統(tǒng)可靠性模型確定,可按照系統(tǒng)可靠性設計選用串聯(lián)模型、并聯(lián)模型和權聯(lián)模型。在此基礎上進行軟件系統(tǒng)可靠性指標分配。
1.2 軟件冗余檢驗
軟件冗余檢驗主要有以下 3 個方面:
①系統(tǒng)主機備份:對于可靠性要求極高的軟件,如航天系統(tǒng),一定要檢驗相關軟件是否支持或采用主備熱備、主備冷備、雙機熱備、多機熱備模式部署,確保軟件無故障運行,保證重要信息和數(shù)據(jù)的實時正確存儲備份。
②重要模塊備份:針對系統(tǒng)功能強大復雜、軟件模塊眾多的系統(tǒng)的檢驗,尤其是航天類系統(tǒng),要重點檢驗關鍵軟件模塊是否有備份,備份方式是熱備份還是冷備份。
③信息冗余:針對大型復雜系統(tǒng),數(shù)據(jù)庫是重要的信息存儲方式,因此對數(shù)據(jù)庫要重點檢驗,一是關注數(shù)據(jù)庫的選型方面是否選擇可靠性較高的數(shù)據(jù)庫,二是檢驗數(shù)據(jù)庫是否具備實時自動備份和異地存儲備份功能。
1.3 軟件健壯性檢驗
在軟件健壯性檢驗中,重點關注如下方面:
①在界面檢驗中,檢驗時重點關注軟件界面是否需要輸入的地方均采用下拉列表框設計,盡量減少編輯框,軟件界面是否對輸入數(shù)據(jù)的有效性及合理性進行設計,數(shù)據(jù)輸入范圍(最大值、最小值、合理值、非法值)等是否有相應提示或錯誤輸入限制。
②軟件數(shù)據(jù)健壯性方面:重點檢驗軟件是否采用數(shù)據(jù)實時自動備份等方式,針對重要數(shù)據(jù)的誤刪除操作是否有信息備份恢復機制。
1.4 軟件避錯檢驗
在軟件避錯檢驗中,主要關注如下方面:
①需求檢驗:是否有明確的功能需求、性能需求、接口需求、環(huán)境需求、安全需求和人機界面需求。
②設計檢驗:是否有詳盡的概要設計、詳細設計、接口設計和數(shù)據(jù)庫設計文檔,是否與需求說明直接一一對應。界面設計檢驗重點針對界面的友好性、界面輸入限制和錯誤提示。
③測試檢驗:重點檢驗是否有規(guī)范準確測試標準、規(guī)范,測試大綱、測試用例、測試報告,測試用例是否遍歷所有的測試項目,是否涵蓋功能、性能及接口等,測試用例是否具有正常值、邊界值、異常值等邊界測試。
1.5 軟件程序可讀性檢驗
檢驗軟件代碼是否進行了標注和解釋說明,代碼注釋率是否達到軟件規(guī)模的 15%,針對軟件模塊級的注釋,是否有模塊功能、模塊接口說明;針對函數(shù)級的注釋,是否有函數(shù)功能、函數(shù)輸入、函數(shù)輸出、參數(shù)解釋的說明。
2 軟件維修性檢驗
軟件不同于硬件,其維修性通常定義為針對軟件模塊的故障定位,同時軟件運行正常與否也取決于軟件所運行的硬件平臺、支撐軟件、應用軟件、安裝部署、軟件架構設計方式等多個方面。為提高軟件的維修性水平,擬采取以下維修性措施:
①軟件運行載體選用的硬件平臺均為通用的、穩(wěn)定的、成熟的 PC 機和服務器設備,選用在國產關鍵軟硬件應用推進計劃中安排的國產服務器中的一種,內部都采取了模塊化和標準化設計,便于檢查、維修和更換故障模塊;
②軟件運行載體整體結構和設備內部結構布局合理,能夠實現(xiàn)視覺可達、實體可達,并提供充足的操作空間,最終保障維修的可達性;
③軟件架構采用松耦合、緊內聚的模塊化設計方法來提高系統(tǒng)的可擴展性和易用性,便于在軟件發(fā)生故障時迅速定位和修復軟件;
④在軟件數(shù)據(jù)庫設計過程中考慮到數(shù)據(jù)備份和恢復功能,能夠在數(shù)據(jù)丟失、損壞的情況下方便恢復,加快修復速度。
3 軟件保障性檢驗
保障性是系統(tǒng)設計特性和計劃的保障資源能滿足平時戰(zhàn)備和戰(zhàn)時使用要求的能力。為提高軟件系統(tǒng)的保障性,從軟件保障、技術保障、人員保障和售后保障 4 個方面進行保障性設計:
①軟件保障:軟件運行的支撐軟件,如操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)和辦公軟件等支撐軟件都使用自主軟件或通用軟件,能夠保障軟件產品質量和供給。
②技術保障:是否擁有較為完善的質量控制手段和健全的質量體系。在產品研制、交付時,要求提供足夠的技術保障資料,便于軟件系統(tǒng)的使用和維護,具有持續(xù)改進和升級完善能力。
③檢驗是否擁有完善的管理體制和技術隊伍,能夠提供良好的人員保障。
④售后保障:對用戶進行系統(tǒng)、嚴格的培訓,使用戶達到原理清晰、操作合理、維護及時。技術服務分為兩階段,第 1 階段,軟件系統(tǒng)交付用戶前,對用戶進行技術咨詢、技術培訓,使用戶對訂購系統(tǒng)的技術狀態(tài)具有全面了解;第 2 階段,軟件系統(tǒng)交付用戶后,對用戶在使用操作過程中出現(xiàn)的各類技術問題進行講解,并協(xié)助用戶解決使用過程中出現(xiàn)的各類技術問題和進行必要的升級維護。
4 軟件測試性檢驗
軟件系統(tǒng)的測試性設計主要從可測性設計、接口測試性、自身測試性、界面測試性方面進行設計,包括以下內容:
①可測試性設計:對軟件的功能測試、性能測試、標準符合性測試、容錯測試、壓力測試、安全性測試及運行測試等方面進行設計。
②接口測試性:軟件設置有對外接口模塊檢測功能,實時監(jiān)測對外模塊狀態(tài),并將結果動態(tài)發(fā)布呈現(xiàn)至軟件界面。同時將模塊異常記錄寫入數(shù)據(jù)庫,方便用戶瀏覽歷史數(shù)據(jù)排查故障。
③自身檢測:軟件具有 CPU、內存、硬盤使用率實時監(jiān)測功能。實時提示用戶當前主機的工作狀態(tài),方便用戶了解主機情況。
④界面設計檢驗:軟件界面是人機交互的橋梁,軟件界面輸入操作提示、輸入變量范圍提示、輸入信息合法性檢查、界面刪除操作提示及軟件操作幫助詳細指南等。
5 軟件安全性檢驗
軟件系統(tǒng)安全性檢驗主要包括以下幾個方面:
①用戶認證和權限控制:系統(tǒng)具有操作員認證和權限控制措施,防止非法用戶登錄網(wǎng)絡管理系統(tǒng)或進行越權操作。
②管控誤操作控制:加強對重要操作的控制,防止用戶的誤操作,具有一定的誤操作撤銷和恢復能力。
③管控信息存儲安全:加強對數(shù)據(jù)庫的訪問控制,防止非法訪問數(shù)據(jù)庫;同時對于重要的網(wǎng)管信息,采用加密方式存儲到數(shù)據(jù)庫或數(shù)據(jù)文件中。
④管控運行平臺安全:對操作系統(tǒng)進行合理配置,關閉不必要的協(xié)議、停止未用服務和工具,及時更新和升級操作系統(tǒng)。
⑤管控信息安全傳輸:加強系統(tǒng)間接口協(xié)議、外部接口協(xié)議和消息交互中間件信息傳輸協(xié)議的安全設計。
⑥數(shù)據(jù)備份:提供便捷的數(shù)據(jù)備份恢復方法。
⑦安裝卸載:提供便捷的軟件安裝、卸載方法,提供可視化向導式操作說明,防止誤卸載。
6 軟件環(huán)境適應性檢驗
軟件環(huán)境適應性檢驗主要測試軟件是否具備跨操作系統(tǒng)跨平臺運行能力,既能運行在 Windows 操作系統(tǒng)上,也能運行在國產化中標麒麟操作系統(tǒng)上。是否具備支持多型數(shù)據(jù)庫能力:oracle 數(shù)據(jù)庫、達夢數(shù)據(jù)庫及金倉數(shù)據(jù)庫等。
7 結束語
高質量的軟件要嚴格遵守軟件的六性設計,對軟件的各個設計環(huán)節(jié)進行設計,只有經過詳盡設計的軟件,其質量才能保證,才能保證整個系統(tǒng)的高效可靠運行。然而隨著網(wǎng)絡規(guī)模的擴大和復雜性日益提高,軟件規(guī)模和復雜性也與日俱增,而且隨著 SDN/NFV、大數(shù)據(jù)、云計算、人工智能等新技術的出現(xiàn),軟件形態(tài)和先進性也都發(fā)生著變革,因此軟件的可靠性設計任重而道遠,需要在現(xiàn)有基礎上進一步深入研究。
參考文獻
[1] 張彤,吳世榮.基于 SNMP 計算機網(wǎng)絡流量監(jiān)控系統(tǒng)研究[J].計算機技術與發(fā)展,2011,21(1):88-91.
[2] 徐鶴,王汝傳.一種 P2P 流量監(jiān)控系統(tǒng)的設計及實現(xiàn)[J].計算機技術與發(fā)展,2009,19(10):6-10.
[3] 趙英,黃九梅,董小國,等.網(wǎng)絡流量監(jiān)控系統(tǒng)的設計與實現(xiàn)[J].計算機應用,2004(S1):32-33.
[4] 張衛(wèi)東,王偉,韓維桓.網(wǎng)絡流量測量與監(jiān)控系統(tǒng)的設計與實現(xiàn)[J].計算機工程與應用, 2005,41(32):160-163.
[5] 方木云,李銳.軟件可靠性評估研究[J].微機發(fā)展,2002(1):11-13.
[6] LEINWEBER D. Stupid Data Miner Tricks: Overfitting theS&P500[J].The Journal of Investing,2007,16(1):15-22.
[7] LOVEMAN G W. Diamonds in the Data Mine[J].HarvardBusiness Review,2003(5):109-113.
[8] KEVJN L.Big Data and Strategic Intelligence[J].Intelligenceand National Security,2016,31(4):619-635.
[9] RAGHUPATHI W,RAGHUPATHI V.Big Data Analytics inHealthcare: Promise and Potential[J].Health InformationScienceand Systems,2014,2:3.
[10] COHEN J,DOLAN B,DUNLAP M,et al. MAD Skills: NewAnalysis Practices for Big Data[C]//Proceedings of theVLDB Endowment.New York:VLDB,2009:1481-1492.