系統架構設計師【第9章】: 軟件可靠性基礎知識 (核心總結)

文章目錄

    • 9.1 軟件可靠性基本概念
      • 9.1.1 軟件可靠性定義
      • 9.1.2 軟件可靠性的定量描述
      • 9.1.3 可靠性目標
      • 9.1.4 可靠性測試的意義
      • 9.1.5 廣義的可靠性測試與狹義的可靠性測試
    • 9.2 軟件可靠性建模
      • 9.2.1 影響軟件可靠性的因素
      • 9.2.2 軟件可靠性的建模方法
      • 9.2.3 軟件的可靠性模型分類
    • 9.3 軟件可靠性管理
    • 9.4 軟件可靠性設計
      • 9.4.1 容錯設計技術
      • 9.4.2 檢錯技術
      • 9.4.3 降低復雜度設計
      • 9.4.4 系統配置技術
    • 9.5 軟件可靠性測試
      • 9.5.1 軟件可靠性測試概述
      • 9.5.2 定義軟件運行剖面
      • 9.5.3 可靠性測試用例設計
      • 9.5.4 可靠性測試的實施
    • 9.6 軟件可靠性評價
      • 9.6.1 軟件可靠性評價概述
      • 9.6.2 怎樣選擇可靠性模型
      • 9.6.3 可靠性數據的收集
      • 9.6.4 軟件可靠性的評估和預測

9.1 軟件可靠性基本概念

9.1.1 軟件可靠性定義

軟件可靠性 (Software Reliability) 是軟件產品在規定的條件下和規定的時間區間完成規定功能的能力。即軟件不引起系統失效的概率。該概率是系統輸入和系統使用的函數,也是軟件中存在的缺陷函數; 系統輸入將確定是否會遇到已存在的缺陷。

9.1.2 軟件可靠性的定量描述

軟件的可靠性是在軟件使用條件、在規定時間內、系統的輸入/輸出、系統使用等變量構成的數學表達式,如圖:
在這里插入圖片描述

9.1.3 可靠性目標

軟件可靠性是指用戶對所使用的軟件的性能滿意程度的期望。可以用可靠度、平均失效時間和故障強度等來描述。

9.1.4 可靠性測試的意義

可靠性測試的意義是:

  • (1)軟件失效可能造成災難性的后果。
  • (2)軟件的失效在整個計算機系統失效中的比例較高。
  • (3)相比硬件可靠性技術,軟件可靠性技術不成熟。
  • (4)軟件可靠性問題會造成軟件費用增長。
  • (5)系統對軟件的依賴性強,對生產活動和社會生活影響日益增大。

可靠性測試的目的如圖:
在這里插入圖片描述

9.1.5 廣義的可靠性測試與狹義的可靠性測試

(1)廣義的可靠性測試是為了最終評價軟件系統的可靠性而運用建模、統計、試驗、分析和評價等一系列手段對軟件系統實施的一種測試。

(2)狹義的可靠性測試指為了獲取可靠性數據,按預先確定好的測試用例,在軟件預期使用環境中,對軟件實施的一種測試。

9.2 軟件可靠性建模

9.2.1 影響軟件可靠性的因素

軟件可靠性模型 (Software Reliability Model) 是指為預計或估算軟件的可靠性所建立的可靠性框圖和數學模型。 建立可靠性模型是為了將復雜系統的可靠性逐級分解為簡單系統的可靠性,以便于定量預計、 分配、估算和評價復雜系統的可靠性。

(1)影響軟件可靠性的因素包括:運行環境、軟件規模、軟件的內部結構、軟件的開發方法和開發環境、軟件的可靠性投入。

(2)軟件可靠性模型的組成和特性,如圖:
在這里插入圖片描述

9.2.2 軟件可靠性的建模方法

一個軟件可靠性模型通常(但不是絕對)由以下幾部分組成。

  • (1) 模型假設
  • (2) 性能度量
  • (3) 參數估計方法
  • (4) 數據要求

9.2.3 軟件的可靠性模型分類

軟件的可靠性模型大致可分為如下10類:

  • 種子法、
  • 失效率類、
  • 曲線擬合類、
  • 可靠性增長、
  • 程序結構分析、
  • 輸入域分類、
  • 執行路徑分析方法、
  • 非齊次泊松過程、
  • 馬爾可夫過程、
  • 貝葉斯分析。

9.3 軟件可靠性管理

軟件可靠性管理的各階段,如圖:
在這里插入圖片描述

9.4 軟件可靠性設計

軟件可靠性設計技術有: 容錯設計技術、檢錯技術、降低復雜度設計、系統配置技術

9.4.1 容錯設計技術

容錯設計技術: 恢復塊設計、N 版本程序設計、冗余設計

  • 1 ) 恢復塊設計: 選擇一組操作作為容錯設計單元,把普通的程序塊變成恢復塊。
  • 2 ) N 版本程序設計: 通過設計多個模塊或不同版本,對相同初始條件和相同輸入的操作結果,實行多數表決,防止其中某一軟件模塊/版本的故障提供錯誤的服務。
    3 ) 冗余設計: 在一套完整的軟件系統之外,設計一種不同路徑、不同算法或不同實現方式方法的模塊或系統作為備份,在出現故障時可使用冗余部分進行替換。

9.4.2 檢錯技術

1)檢錯技術代價低于容錯技術和冗余技術,但是不能自動解決故障,需要人工干預。

2)檢錯技術著重考慮 檢測對象、檢測延時、實現方式、處理方式 四個要素。

9.4.3 降低復雜度設計

降低復雜度設計思想是: 在保證實現軟件功能基礎上,簡化軟件結構、縮短程序代碼長度、優化
軟件數據流向、降低軟件復雜度、提高軟件可靠性。

9.4.4 系統配置技術

系統配置技術: 可以分為 雙機熱備技術和服務器集群技術

1)雙機熱備技術

  • 采用“心跳”方法保證主系統與備用系統的聯系。
  • 根據兩臺服務器的工作方式分為雙機熱備模式(一臺工作,一臺后備)、雙機互備模式(兩臺運行相對獨立應用,互為后備)、雙機雙工模式(兩臺同時運行相同應用,互為后備)。

2)服務器集群技術。 集群內各節點服務器通過內部局域網相互通信,若某節點服務器發生故障,這臺服務器運行的應用被另一節點服務器自動接管。

9.5 軟件可靠性測試

9.5.1 軟件可靠性測試概述

軟件可靠性測試包括: 可靠性目標的確定、運行剖面的開發、測試用例的設計、測試實施、測試結果分析等。

9.5.2 定義軟件運行剖面

為軟件的使用行為建模,開發使用模型,明確需測試內容。

9.5.3 可靠性測試用例設計

測試用例要能夠反映實際的使用情況,優先測試最重要的和最頻繁使用的功能。設計測試用例,針對組合功能或特定功能,編寫成相關文檔。測試用例組成如下圖:
在這里插入圖片描述

9.5.4 可靠性測試的實施

用時間定義的軟件可靠性數據分為4 類: 失效時間數據、失效間隔時間數據、分組時間內的失效數、分組時間的累積失效數。測試記錄與測試報告的組成如圖 :
在這里插入圖片描述

9.6 軟件可靠性評價

9.6.1 軟件可靠性評價概述

評估和預測軟件可靠性過程包括:

  • (1) 選擇可靠性模型。
  • (2) 收集可靠性數據。
  • (3) 可靠性評估和預測。

9.6.2 怎樣選擇可靠性模型

可以從以下幾方面選擇可靠性模型:

  • (1) 模型假設的適用性。
  • (2) 預測的能力與質量。
  • (3) 模型輸出值能否滿足可靠性的評價需求。
  • (4) 模型使用的簡便性。

9.6.3 可靠性數據的收集

數據收集可行的辦法有:

  • (1) 盡可能早地確定可靠性模型。
  • (2) 數據收集計劃要有較強的可操作性。
  • (3) 重視測試數據的分析和整理。
  • (4) 充分利用技術手段(數據庫技術)來完成分析和統計。

9.6.4 軟件可靠性的評估和預測

(1)軟件可靠性的評估和預測的目的是: 評估軟件系統的可靠性狀況和預測將來一段時間的可靠性水平

(2)軟件可靠性的評估和預測以 軟件可靠性模型分析為主,以失效數據的圖形分析法和試探性數據分析技術等為輔

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20131.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20131.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20131.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

實物資產的市場主線將逐步回歸

民生證券認為,投資者逐漸意識到長期趨勢并沒有發生變化,這或許正是本周最大的變化。在預期博弈重回冷靜期后,去金融化背景下實物資源占優的市場主線也將逐步回歸。 1 高低切換后的冷靜期 從4月下旬至上周,A股市場呈現出由高位資產…

用windows server backup備份文件夾到網絡共享文件夾并恢復

一、備份 開始 運行windows server backup,在右邊的窗格中點擊“備份計劃” 選擇備份配置 因為我們要備份的是一個文件夾,所以,選“自定義”,卷即為磁盤分區。 選擇要備份的項 點擊添加項目,可依次添加多個備份項目。 勾選需要…

汽車MCU虛擬化--對中斷虛擬化的思考(2)

目錄 1.引入 2.TC4xx如何實現中斷虛擬化 3.小結 1.引入 其實不管內核怎么變,針對中斷虛擬化無非就是上面兩種,要么透傳給VM,要么由Hypervisor統一分發。汽車MCU虛擬化--對中斷虛擬化的思考(1)-CSDN博客 那么,作為車規MCU龍頭…

MySQL 視圖(2)

上一篇:MySQL視圖(1) 基于其他視圖 案例對 WITH [CASCADED | LOCAL] CHECK OPTION 進行釋義 創建視圖時,可以基于表 / 多個表,也可以使用 其他視圖表 / 其他視圖 其他視圖 的方式進行組合。 總結 更新視圖&#x…

【HTML】tabindex

當給 div 標簽以 button 角色&#xff1a; <div role"button">這時要指定其 tabindex&#xff0c;因此正確的寫法是&#xff1a; <div role"button" tabindex"0">索引值不應當大于0&#xff0c;見a11y-positive-tabindex

Open3D(C++) Ransac擬合多項式曲線

目錄 一、算法原理一、代碼實現三、結果展示本文由CSDN點云俠原創,Open3D(C++) Ransac擬合多項式曲線,爬蟲自重。如果你不是在點云俠的博客中看到該文章,那么此處便是不要臉的爬蟲與GPT生成的文章。 一、算法原理 RANSAC(Random Sample Consensus)是一種用于擬合模型的迭…

設計模式深度解析:分布式與中心化

設計模式在軟件開發中扮演著至關重要的角色,它們提供了一套經過驗證的解決方案,用于解決常見的設計問題。在分布式和中心化這兩種不同的系統架構中,設計模式的應用也有所不同。以下是對這兩種架構下設計模式的深度解析: 分布式系統設計模式 在分布式系統中,由于系統被拆…

004 仿muduo實現高性能服務器組件_Buffer模塊與Socket模塊的實現

?&#x1f308;個人主頁&#xff1a;Fan_558 &#x1f525; 系列專欄&#xff1a;仿muduo &#x1f339;關注我&#x1f4aa;&#x1f3fb;帶你學更多知識 文章目錄 前言Buffer模塊Socket模塊 小結 前言 這章將會向你介紹仿muduo高性能服務器組件的buffer模塊與socket模塊的實…

【Leetcode 706 】設計哈希映射——數組嵌套鏈表(限制哈希Key)

題目 不使用任何內建的哈希表庫設計一個哈希映射&#xff08;HashMap&#xff09;。 實現 MyHashMap 類&#xff1a; MyHashMap() 用空映射初始化對象void put(int key, int value) 向 HashMap 插入一個鍵值對 (key, value) 。如果 key 已經存在于映射中&#xff0c;則更新其…

MATLAB的plot3使用技巧|更改視角|例程分享鏈接

plot3命令 MATLAB的plot3函數是用來繪制3D圖形的函數。它可以將三維數據可視化為線段、點、曲線等形式。plot3函數可以用于繪制三維空間中的曲線、曲面、散點圖等。 plot3函數的基本用法是&#xff1a; plot3(X,Y,Z)&#xff1a;繪制三維線段&#xff0c;其中X、Y、Z分別是包…

兩個雙指針 的 “他“和“ 她“會相遇么? —— “雙指針“算法 (Java版)

本篇會加入個人的所謂魚式瘋言 ??????魚式瘋言:??????此瘋言非彼瘋言 而是理解過并總結出來通俗易懂的大白話, 小編會盡可能的在每個概念后插入魚式瘋言,幫助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能說的不是那么嚴謹.但小編初心是能讓更多人能接…

MySQL入門學習-查詢進階.UNION

UNION操作符用于合并兩個或多個SELECT語句的結果集。它可以將多個查詢結果合并為一個結果集&#xff0c;這在需要從多個表中獲取數據并將它們組合在一起時非常有用。下面是一個使用UNION的示例代碼&#xff1a; SELECT column1, column2,...FROM table1UNIONSELECT column1, c…

springboot kafka 提高拉取數量

文章目錄 背景問題復現解決問題原理分析fetch.min.bytesfetch.max.wait.ms源碼分析ReplicaManager#fetchMessages 背景 開發過程中&#xff0c;使用kafka批量消費&#xff0c;發現拉取數量一直為1&#xff0c;如何提高批量拉取數量&#xff0c;記錄下踩坑記錄。 問題復現 ka…

攻防對抗少丟分,愛加密幫您筑起第二防線

應用程序通常處理和存儲大量的敏感數據&#xff0c;如用戶個人信息、財務信息、商業數據、國家數據等&#xff0c;用戶量越大的應用程序&#xff0c;其需要存儲和保護的用戶數據越多。因此應用層長期是攻擊方的核心目標&#xff0c;傳統應用安全依靠防火墻(FireWall)、入侵檢測…

1.7 協議層次和服務模型

協議層次 網絡是一個復雜的系統! ? 網絡功能繁雜&#xff1a;數字信號的物理信 號承載、點到點、路由、rdt、進程區分、應用等 ?現實來看&#xff0c;網絡的許多構成元素和設備: ? 主機 ? 路由器 ? 各種媒體的鏈路 ? 應用 ? 協議 ? 硬件, 軟件 Q:如何組織和實現這個…

Linux上實現ssh免密通訊

Linux上實現ssh免密通訊 1.SSH互信原理2.SSH所需的RPM包3.兩臺機器實現互信4.常見問題及處理 1.SSH互信原理 SSH&#xff08;Secure Shell&#xff09;是一種安全的傳輸協議&#xff0c;它能讓Linux系統中的服務器和客戶端之間進行安全可靠的通訊。 SSH使用加密的傳輸方式&…

iOS組件化 方案 實現

iOS組件化 組件化的原因現在流行的組件化方案方案一、url-block &#xff08;基于 URL Router&#xff09;方案二、protocol調用方式解讀 方案三、target-action調用方式解讀 gitHub代碼鏈接參考 組件化的原因 模塊間解耦模塊重用提高團隊協作開發效率單元測試 當項目App處于…

網絡原理-四

一、續 當窗口大小為0,意味著緩沖區滿了,此時發送方,就因該暫停發送,發送方會周期性的除法 " 窗口探測包 " ,并不攜帶載荷,這樣的包對于業務不產生影響,只是為了觸發ACK,一旦查詢出來的結果是非0,緩沖區右有空間了,發送方就可以繼續發送. 二、擁塞控制 要限制發送方…

一步一步寫線程之十三隊列間的消息通知

一、線程和分布式的通信 隨著技術的不斷發展&#xff0c;多線程和分布式通信愈發的普及。那么在這種場景下的如何進行數據的通信&#xff0c;便成為了一個非常典型的問題。無論是多線程還是分布式&#xff0c;其實其抽象出來的通信機制都是類似的。或者說換句話&#xff0c;多…

java檢測字符串是否包含數字和字母

在Java中&#xff0c;要檢測一個字符串是否同時包含數字和字母&#xff0c;我們可以使用正則表達式&#xff08;regex&#xff09;或者通過遍歷字符串并檢查每個字符來實現。以下是兩種方法的詳細代碼示例&#xff1a; 1.方法一&#xff1a;使用正則表達式 import java.util.…