系統的可靠性設計問答

  1. 軟件可靠性的定義是什麼
  2. 與軟件可靠性有關的定量指標簡介
  3. 軟件可靠性目標是什麼,通過哪些指標衡量
  4. 可靠性測試存在的意義是什麼
  5. 可靠性測試的目的是什麼
  6. 軟件可靠性建模是什麼,應該怎麼去操作
  7. 如何進行軟件可靠性評價
  8. 軟件可靠性設計是什麼

 

1.軟件可靠性的定義是什麼

答:軟件可靠性是指產品在規定條件下和規定時間內完成規定功能的能力。規定的時間只是體現在軟件的運行階段,包括系統運行後工作和掛起的累計時間。規定的條件是指軟件的運行環境。軟件可靠性與規定的任務和功能有關,不同任務功能的可靠性是不一樣的。

按照產品可靠性的形成,可靠性分爲固有可靠性和使用可靠性。固有可靠性是通過設計、製造賦予產品的可靠性;使用可靠性既受設計、製造的影響,也受使用條件的影響。一般使用可靠性總低於固有可靠性。軟件可靠性不同於硬件可靠性的主要區別點有四個:複雜性,軟件的邏輯複雜性高於硬件;物理退化,軟件不會發生物理退化;唯一性,軟件複製不會改變軟件本身,硬件則沒有兩個完全相同的硬件;版本更新,軟件更新速度快於硬件更新。

保障軟件可靠性最有效、最經濟、最重要的手段是在軟件設計階段採取措施,控制可靠性。

 

2.與軟件可靠性有關的定量指標簡介

答:規定時間,有三種概念,第一種是日然時間,如工作日、會計日等;第二種是運行時間,從軟件啓動到運行結束的時間段;第三種是執行時間,是運行時間中CPU執行程序執行的時間總和。實際測量中以執行時間最爲準確,如果出現穩定的執行規律,可以進行時間的折算。

失效概率一個函數,在0到正無窮的區間上單調遞增,隨着時間變化無限趨近於1.

可靠度直接的量化公式是:可靠度函數+失效概率函數=1

失效強度是單位時間軟件系統出現實現的概率。用極限的定義方式得到:失效強度爲失效概率函數的導數。

失效率也稱爲風險函數或者條件失效強度,是在運行至此軟件系統爲失效的情況下,單位時間軟件系統出現失效的概率。

平均無失效時間是軟件運行後到下一次出現失效的平均時間。

 

3.軟件可靠性目標是什麼,通過哪些指標衡量

答:可靠性目標是客戶對軟件性能滿意程度的期望,通常用可靠度、故障強度、平均失效時間等指標來描述。定量的可靠性指標需要對可靠性、交付時間、成本進行平衡。系統的可靠性指標必須確定系統的運行模式,定義故障的嚴重性等級,確定故障強度目標。

失效嚴重程度類是對用戶具有相同程度影響的失效集合。對失效程度驗證程度分級一般是按照成本影響、系統能力影響等標準進行劃分。

 

4.可靠性測試存在的意義是什麼

答:軟件失效可能造成的災難性後果、軟件失效在計算機系統失效中比例較高、軟件可靠性技術比硬件可靠性技術不成熟、軟件可靠性問題引起費用增長、系統對軟件部分的依賴增強。

 

5.可靠性測試的目的是什麼

答:發現軟件系統在需求、設計、編碼、測試、實施等方面的各種缺陷;爲軟件使用和維護提供可靠性數據;確認軟件是否達到可靠性的定量要求。

 

6.軟件可靠性建模是什麼,應該怎麼去操作

答:軟件可靠性模型是爲預計或估算軟件的可靠性建立的可靠性框圖或者數學模型。建立可靠性模型是將複雜的系統的可靠性逐級分解爲簡單系統的可靠性,便於定量預計、分配、估算和評價複雜系統的可靠性。

首先考慮影響軟件可靠性的主要因素:缺陷的引入、發現、清楚。從技術層面上看,影響可靠性的主要因素有:運行剖面(環境)、軟件規模、軟件內部結構、軟件開發方法和開發環境、軟件可靠性投入。

接下來是找到軟件可靠性建模的一些基本組成元素,包括模型假設、性能度量、參數估計方法、數據要求等。絕大多數模型包含三個共同假設,目前尚未有克服這些假設的有效方法,它們是代表性假設、獨立性假設、共同性假設。一個好的軟件可靠性模型應該具有如下重要的特性:基於可靠的假設、簡單、計算指標有效有用、給出未來失效行爲的良好映射、可廣泛應用。

可靠性模型有近百種,大體上分爲十類,分別是:種子類模型,根據預先設定的錯誤分類和比重設定一些錯誤,測試後跟這些錯誤的比重對比,發現遺留錯誤,難在預先設定;失效率類模型,主要研究程序失效率;曲線擬合類模型,使用迴歸分析方法研究軟件複雜性、程序缺陷數、失效率、失效間隔時間,包括參數方法和非參數方法兩種;可靠性增長模型,預測軟件在檢錯過程中可靠性改進,用增長函數來描述軟件的改進過程;程序結構分析模型,根據程序、子程序、相互間的調用關係形成一個可靠性分析網絡;輸入域分類模型,選取輸入域中某些樣本進行檢測,通過檢測結果推斷軟件的使用可靠性;執行路徑分析模型,根據執行過程中計算程序的邏輯路徑執行概率和錯誤羅靜執行概率推斷軟件的使用可靠性;非齊次泊松過程模型,NHPP,預測軟件在某使用時間點的累計失效數;馬爾可夫過程模型;貝葉斯模型,利用失效率的實驗前分佈和當前的測試失效此案系,評估軟件的可靠性。

軟件可靠性測試由可靠性目標的確定、運行剖面的開發、測試用例的設計、測試實施、測試結果的分析等主要活動組成,基於對軟件開發進度和成本的約束,最好在受控的自動測試環境下完成測試。軟件可靠性測試是面向可靠性的,並不能保證軟件的bug最少。

定義軟件運行剖面是根據系統的目標運行環境構件模擬測試環境,對業務路徑進行概率加權,對業務路徑的全狀態進行貫穿性測試,檢測故障比例,根據反饋的故障比例適當的做補充測試。

可靠性測試用例應優先測試最重要最頻繁使用的功能,釋放和緩解最高級別的風險,提早發現故障保證軟件按期交付。

軟件可靠性測試必須是受控測試。軟件可靠性測試依賴於軟件的可測試性,可靠性測試的難點在於判斷測試用例運行成功還是失敗。軟件可靠性測試大體上分爲兩個階段,第一階段是少量測試用例檢查運行結果的正確定,第二階段是大量的測試用例檢查失效現象。軟件可靠性數據是可靠性評價的基礎,可以使用多臺機器同時運行軟件增加累計運行時間。在收集的數據中,重點關注失效時間數據、失效間隔時間數據、分組時間內失效數、分組時間的累積失效數,然後進行統計分析,得出可靠性的實際測量值。

 

7.如何進行軟件可靠性評價

答:軟件可靠性評價是評估軟件當前的可靠性,確認是否可以終止測試併發布軟件,同時還可以預計軟件要達到相應的可靠性水平所需要的時間和工程量,評價提交軟件時軟件的可靠性水平。軟件可靠性評價需要經過三個過程,分別是選擇可靠性模型、收集可靠性數據、可靠性評估和預測。

可靠性模型的選擇需要從以下方面進行考慮:模型假設的適用性、預測的能力和質量、模型輸出值能否滿足可靠性評價需求、模型適用的簡便性。

可靠性數據的收集要解決數據規範不統一、工作連續性問題、有效的數據收集手段、數據完整性、數據質量和正確性。只要解決好這些問題,數據收集方面基本上不會有什麼大的出入。

軟件可靠性評價技術和方法主要依據選用的軟件可靠性模型,其來源於統計理論。失效數據圖形分析法可以藉助圖形進行處理失效數據,得到部分分析信息。試探性數據分析技術(EDA),可以對數據進行處理,發現和揭示數據中的異常。

 

8.軟件可靠性設計是什麼

答:軟件可靠性設計技術是提高和保障軟件的可靠性爲目的,在軟件設計階段運用的一種特殊設計技術,將可靠性設計融入到軟件設計中。目前被認可且具有應用前景的軟件可靠性設計技術主要有容錯設計、檢錯設計、降低複雜度設計三種技術。

容錯設計技術主要有恢復塊設計、N版本程序設計、冗餘設計三種具體的方法。恢復塊設計是類似於程序模塊的替代方案,當正常程序出現錯誤的時候,切換到程序模塊的替換方案上。N版本設計是通過多個模塊或版本,對相同初始條件和輸入的操作結果進行多數決策,少數服從多數。N版本方法要保證每個版本的設計人員和實施人員是不同的,最好保證全程要素的不相關性。冗餘技術是對關鍵部分或者整體上做出的替換方案,當關鍵部分或者整體上出現故障時,啓動冗餘方案來替代,粒度層級高於恢復塊設計。

檢錯技術主要針對不能採用容錯設計的部分,同時還對可靠性要求較高。檢錯技術的場景不能自動解決故障,需要在故障發生後及時進行人工干預,所以採用檢錯技術時需要考慮檢錯多項、檢測延時、實現方式、處理方式等這些因素。

軟件複雜度由軟件的模塊複雜性和結構複雜性組成,模塊複雜性包括模塊內部的數據流向和程序長度兩個方面,結構複雜度有不同模塊之間的關聯程度決定,軟件複雜性是產生軟件缺陷重要根源,實踐表明,當軟件複雜度超過一定界限時,軟件缺陷數會急劇上升。由此,降低複雜度設計是非常有必要的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章