《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 形式化規(guī)范在軟件可靠性早期估計中的應(yīng)用研究
形式化規(guī)范在軟件可靠性早期估計中的應(yīng)用研究
來源:微型機與應(yīng)用2011年第11期
呂閩暉1,呂敏蓉2
(1. 海軍工程大學(xué)裝備經(jīng)濟研究所,湖北 武漢 430033; 2.湖南女子學(xué)院,湖南 長沙 410
摘要: 隨著軟件的廣泛應(yīng)用,特別是軟件在尖端領(lǐng)域的應(yīng)用,軟件可靠性成為一個非常重要的問題。形式化規(guī)范在軟件可靠性研究中能夠起到的作用是多方面的。本文針對非形式化統(tǒng)計使用測試的不足,結(jié)合已有的早期可靠性估計方法,設(shè)計了優(yōu)化算法,并提出了即使在設(shè)計中采用了形式化規(guī)范仍然需要測試的結(jié)論。
Abstract:
Key words :

摘  要: 隨著軟件的廣泛應(yīng)用,特別是軟件在尖端領(lǐng)域的應(yīng)用,軟件可靠性成為一個非常重要的問題。形式化規(guī)范在軟件可靠性研究中能夠起到的作用是多方面的。本文針對非形式化統(tǒng)計使用測試的不足,結(jié)合已有的早期可靠性估計方法,設(shè)計了優(yōu)化算法,并提出了即使在設(shè)計中采用了形式化規(guī)范仍然需要測試的結(jié)論。
關(guān)鍵詞: 形式化規(guī)范;軟件可靠性;早期估計;測試

 軟件可靠性研究的主要目的是評價和度量軟件的可靠性和預(yù)測軟件可靠性。軟件可靠性估計主要指應(yīng)用數(shù)理統(tǒng)計分析處理系統(tǒng)測試和系統(tǒng)運行期間得到的失效數(shù)據(jù),對軟件系統(tǒng)當前的可靠性進行估計。主要目的是估計當前可靠性,并確定可靠性模型水平的依據(jù)。
1 非形式化統(tǒng)計使用測試的不足
1.1 傳統(tǒng)使用剖面的不足

 軟件使用剖面[1]是關(guān)于如何使用軟件系統(tǒng)的一種量化描述,一個剖面就是一組操作及某個操作發(fā)生概率所組成的集合。例如:如果A在60%的時間內(nèi)發(fā)生,B在40%的時間內(nèi)發(fā)生,使用剖面就是A:0.6,B:0.4。
傳統(tǒng)理論認為,剖面是反映軟件不同的客戶、用戶、系統(tǒng)模式、功能和操作的發(fā)生概率的一個量化特征,其目的是為軟件測試及其他軟件開發(fā)階段進行資源分配提供相應(yīng)的參考信息,決定如何在軟件測試中進行測試實例的生成,如何在測試過程中分配測試資源。
 傳統(tǒng)的剖面生成方法已經(jīng)為統(tǒng)計測試提供了一個良好的基礎(chǔ),然而這并不說明傳統(tǒng)的使用剖面的數(shù)據(jù)本身和相應(yīng)的獲得方法沒有缺陷。事實上,以下問題在傳統(tǒng)剖面中一直沒有得到有效解決:(1)剖面獲得方法主觀性較強。(2)統(tǒng)計所得使用頻率并不能完全代表軟件的實際應(yīng)用情況[2]。(3)影響可靠性度量[2]。
1.2 非形式化統(tǒng)計使用測試的不足
 軟件測試占用了軟件開發(fā)過程中大量的人力物力資源,然而軟件測試卻往往缺乏較好的理論基礎(chǔ),測試數(shù)據(jù)即測試實例的選擇通常根據(jù)經(jīng)驗作出,因此具有主觀性,并依賴于個人經(jīng)驗。
 統(tǒng)計使用測試則是一種按軟件實際使用的方法來測試軟件的方法。測試實例是按照使用規(guī)范得到的,而使用規(guī)范是軟件預(yù)期使用的描述。統(tǒng)計測試根據(jù)用戶對軟件可靠性的期望,最大程度地利用可以支配的資源。另外,因為統(tǒng)計使用測試是以概率統(tǒng)計為基礎(chǔ)的,因此利用統(tǒng)計測試得到的數(shù)據(jù)也可以利用概率統(tǒng)計的方法來預(yù)測軟件可靠性,從而為可靠性度量提供數(shù)據(jù),并可以相應(yīng)進行軟件的可靠性度量,另外還可以決定軟件測試可以停止的標準。這一切都可以使得軟件可靠性處在嚴密控制之下[4,6]。
2 早期可靠性估計方法及其改進
2.1 使用SDL進行使用實例建模

 在文獻[5]中通過引入狀態(tài)層次模型,有可能減少統(tǒng)計使用測試中的狀態(tài)爆炸問題,該方法采用馬爾科夫鏈描述技術(shù)描述用戶及其對系統(tǒng)的使用。
 使用SDL可結(jié)合狀態(tài)層次模型的方法進行軟件可靠性早期估計,就是用SDL的替換形式SHY-SDL(State Hierarchy with SDL)對使用的層次化描述建模形式化。
 目前已有基于使用剖面的測試用例選擇算法可以應(yīng)用于系統(tǒng)的使用模型,算法的結(jié)果產(chǎn)生測試序列,測試序列可以用SDL或其他方法描述。因此,在進行可靠性早期估計時,用SDL描述測試用例很重要,優(yōu)點是:(1)用SDL描述使用,就容易用SDL自動生成測試用例。(2)用SDL描述測試用例,有可能使用SBA。
2.2 分析和使用實例建模
 SBA應(yīng)根據(jù)對用戶及系統(tǒng)使用的描述和系統(tǒng)的原始SDL描述。使用結(jié)合SHY-SDL的SBA有三種方式:
 (1)原始SDL系統(tǒng)成為一個塊,SHY-SDL模型作為另一個塊,形成新的系統(tǒng),如圖1。這種方案不能直接實現(xiàn),因為SBA工具將對SDL系統(tǒng)進行充分的動態(tài)分析,這與統(tǒng)計質(zhì)量控制過程的目標相沖突。該方案的主要好處是檢查系統(tǒng)描述與獲得的真實環(huán)境的一致性,但一般作為其他方法的補充。

 (2)修改SBA工具,使之適合于統(tǒng)計分析,可以按隨機的步驟采用第一種方案執(zhí)行,但同時通過SHY-SDL模型根據(jù)使用剖面選擇特定的執(zhí)行路徑。所以在執(zhí)行路徑的決策處理和調(diào)度兩個方面必須對SBA加以補充。
 (3)根據(jù)SHY-SDL模型生成分析(測試)序列,使分析實例的SDL描述成為新的SDL系統(tǒng)中的塊,這種方法意味著用SBA分析選擇的使用實例。
2.3 根據(jù)分析進行可靠性估計
 初步的可靠性估計可用如下兩種方式:(1)失效間隔時間和相關(guān)模型進行比較;(2)計算成功執(zhí)行的分析實例數(shù)與總分析實例數(shù)的比。
 第一種方法意味著分析是一個序列,第二種則要求把環(huán)境行為描述分成幾個分析實例。在使用SBA分析時,將報告連續(xù)兩次失效間分析的狀態(tài)數(shù),這就對第一種方法形成了簡單的支持。如果失效被糾正,將看到可靠性增長,并作為測試和運行期間的可靠性增長的估計,對可靠性增長的早期估計可以更好地規(guī)劃達到質(zhì)量目標的測試時間。如果不糾正失效,將得到實際可靠性估計,這種情況只有當分析工具的執(zhí)行是連續(xù)、不糾正失效時才有可能。
 第二種分析方法的主要問題在于SBA工具交互性很差,如果一個塊中實現(xiàn)幾個實例,很難分析其中某一個,解決辦法是一次只實現(xiàn)一個分析實例,但這又使得工具用戶為每個分析實例重新生成代碼。
結(jié)合SBA的方法可獲得第二步軟件可靠性估計,采用剖面的動態(tài)分析可以結(jié)合充分分析(SBA的完整形式)如下:
 (1)基于使用剖面進行部分分析,獲得可靠性增長估計;
 (2)進行充分動態(tài)分析;
 (3)將規(guī)格化的失效時間與可靠性增長估計相比較。
 必須規(guī)格化失效時間,這樣能夠比較充分分析和按使用剖面進行部分分析的結(jié)果。通過記錄失效在使用描述中發(fā)生的位置來規(guī)格化時間,如果分析根據(jù)剖面進行,可以計算失效發(fā)生的平均時間。這個時間被認為是實際的失效時間。
2.4 導(dǎo)出失效時間算法及其優(yōu)化

 


 通過分析可以得到動態(tài)失效與實際操作中失效的關(guān)系。下面介紹通過分析檢測的動態(tài)失效是否代表了運行中的實際失效。
 首先給出以下假設(shè):
 (1)由SBA動態(tài)分析找出的失效集是所有可能失效的子集;
 (2)動態(tài)分析中找出的失效隨機分布于所有失效中,例如在某段時間內(nèi),隨機失效與動態(tài)失效的比例因子用c表示;
 (3)根據(jù)使用剖面測試是操作的近似,這也是統(tǒng)計使用測試的基礎(chǔ)和大多可靠性估計模型的基礎(chǔ);
 (4)而采用SBA根據(jù)使用剖面分析是采用SBA進行充分分析的近似,充分動態(tài)分析遍歷所有狀態(tài),采用使用剖面進行有選擇的動態(tài)分析時,是根據(jù)所有可能的狀態(tài)集選擇進入的狀態(tài),選擇是根據(jù)特定的使用剖面的取樣,而不是隨機取樣。
 (5)SBA利用使用剖面進行動態(tài)分析與統(tǒng)計使用測試是可以比較的,從相同的使用剖面選擇用于動態(tài)分析的實例類似于選擇統(tǒng)計使用測試實例,區(qū)別為后者是隨機的。
 要使根據(jù)動態(tài)分析估計的可靠性增長可應(yīng)用于考慮隨機失效的可靠性增長,必須將動態(tài)分析失效數(shù)據(jù)對應(yīng)代表所有失效。以某軟件為例,可采用以下算法[3]:
 (1)根據(jù)使用剖面進行動態(tài)分析。圖2中,t1、t2、t3是失效時間。失效數(shù)據(jù)可以用來估計SBA分析所得動態(tài)失效的MTTF(平均失效時間),估計模型可以采用凈室可靠性估計模型。

 (2)確定c。如:包括隨機失效在內(nèi)的實際總失效數(shù)與SBA找出的動態(tài)失效數(shù)之比;c值主要根據(jù)早期開發(fā)的項目,程序特點不同可以采用不同的c值,而且分析不同階段c值也又可能不同。
 (3)根據(jù)第一步計算的MTTF,確定每個時間間隔發(fā)生的失效數(shù)。如果c不是整數(shù),間隔內(nèi)的失效數(shù)按trunc(c-1)和trunc(c)之間的兩點分布選擇,則c-1為平均值,如果是整數(shù),則每個間隔失效數(shù)為c-1。
 (4)在時間間隔內(nèi)隨機選擇失效時間放入根據(jù)不同c值得到的失效,如:t1a、t2a、t2b和t3a。
 (5)根據(jù)分析和計算的失效數(shù)據(jù)估計MTTF,這就是對所有失效類型MTTF的估計。
分析的實際值和可能值應(yīng)該進一步根據(jù)理論和實踐研究,但可以肯定,初步估計考慮的是動態(tài)分析軟件規(guī)范期間的動態(tài)失效。
3 算法改進
 (1)改進使用剖面
 通常隨機測試也是一種使用剖面,例如:系統(tǒng)所有的事件或信號是等可能出現(xiàn)的,這樣可以測試系統(tǒng)將來的可靠性。考慮軟件可靠性時,有必要對關(guān)鍵部分加以特別重視,生成這樣的剖面在某類嚴重失效不常發(fā)生時是很有價值的[4]。
 另外,即使考慮了使用剖面中的重要度和使用頻繁度,仍需改變使用剖面,尤其是在動態(tài)分析期間,很容易進行第二次分析。改變使用剖面的目的是檢查其他使用剖面的可靠性,因為系統(tǒng)的使用情況不斷變化,這意味著高可靠的系統(tǒng)由于使用情況的改變有可能變得不可靠了,所以,改變使用剖面有意義。
還有一種方法可以獲得在正常使用中較少出現(xiàn)情況的可靠性,即使用充分動態(tài)分析考慮軟件中易產(chǎn)生故障的部分,找出這些部分可以說明軟件使用剖面的改變是可以改變了軟件可靠性的。
 (2)該方法中選擇的時間間隔是兩個失效間的間隔,但如果把時間間隔擴大為幾個失效的間隔,則在可靠性估計時計算MTTF時更準確,更接近于項目的真實情況。當然,這又依賴于對c值的進一步確定。
 (3)該方法在時間間隔中放入隨機失效時采用的是隨機放置的方法,但采用什么方式放置對于統(tǒng)計最后的MTTF是很關(guān)鍵的。從統(tǒng)計意義上來說,可以按指數(shù)分布在時間間隔內(nèi)放置隨機失效,因為假設(shè)X為某系統(tǒng)發(fā)生故障的時間,它服從指數(shù)分布,則對νs,νt>0,有:

 這表明,在時段(s,s+t)內(nèi)無故障的概率只與時段的長度t有關(guān),而與系統(tǒng)過去無故障的工作時間s無關(guān)。這正好滿足選擇動態(tài)失效間隔放置隨機失效的條件。
即使在設(shè)計中采用了形式化方法,仍然需要測試。測試可以檢查出早期檢測所遺留的或求精過程中所引起的錯誤,如T800晶片機的浮點部件在測試中發(fā)現(xiàn)了一個對微代碼改變而產(chǎn)生的錯誤,這個改變是發(fā)生在形式化開發(fā)后??梢哉f,測試永遠是有用的檢查手段,因此建議:
 (1)開發(fā)軟件測試平臺
 研究、開發(fā)軟件測試平臺是很有現(xiàn)實意義,國內(nèi)外軟件測試工具很多,應(yīng)針對開發(fā)軟件所常用的語言,利用現(xiàn)有的技術(shù),開發(fā)軟件測試平臺。
 (2)建立軟件測試和評估中心
 軟件的專業(yè)性很強,因此,軟件測試評估中心應(yīng)由計算機軟件、可靠性工程、系統(tǒng)工程等領(lǐng)域的專家組成,負責(zé)制定軟件可靠性各種標準,并監(jiān)督實施,做好軟件可靠性管理工作;建立軟件測試平臺,做好軟件可靠性技術(shù)保障工作;由軟件生產(chǎn)單位協(xié)助,建立可靠性測試實例庫,客觀、公正地驗收軟件;做好可靠性數(shù)據(jù)的收集、整理、分析工作,開展軟件可靠性模型的研究,建立適用于軟件的可靠性模型,并進行可靠性評估。
參考文獻
[1] MUSA J D. Operational profiles in software-reliability engineering[J]. IEEE Software, 1993,10(2):14-32.
[2] KITCHENHAM B. Validation verification and testing. diversity rules[J]. IEEE Software, 1998,15(4):46-49.
[3] WOHLIN C, RUNESON P. A method proposal for early software reliability estimation [C]. Proceedings of 3th International Symposium on Software Reliability Engineering, 1992.
[4] 顏炯,艦載指控軟件操作剖面研究[D].武漢:海軍工程大學(xué),2000.
[5] Runeson. Usage modeling: The basis for statistical quality control. Proceedings of SRS’92, Denver, USA, June 1992,77-84.
[6] STOCKS P A, CARRINGTON D A. A framework for specification-based testing [ J]. IEEE SE, 1996,22(11):777-793.
[7] RUSHBY J, PARK M. Formal methods and their role in the certification of critical systems[C]. In: Safety and Reliability of Software Based Systems, 12th Annual CSR Workshop, Springer, 1997.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。