安全關鍵系統嵌入式軟件開發指南
李曉華 潘怡融 許孟華
- 出版商: 機械工業
- 出版日期: 2026-01-01
- 售價: $594
- 語言: 簡體中文
- ISBN: 7111798600
- ISBN-13: 9787111798606
-
相關分類:
嵌入式系統
- 此書翻譯自: Embedded Software Development for Safety-Critical Systems (Hardcover)
下單後立即進貨 (約4週~6週)
買這商品的人也買了...
-
$594PCI Express 體系結構導讀 -
$601CCIE 路由和交換認證考試指南, 5/e (第2捲) -
$354路由與交換技術(華為信息與網絡技術學院指定教材)/ICT認證系列叢書 -
RISC-V Assembly Language (Paperback)$1,020$999 -
$474片上互連網絡 — 多核/眾核處理器關鍵技術 -
$550FPGA 進階開發與實踐 -
$414敏捷硬件開發語言 Chisel 與數字系統設計 -
$354路由交換技術詳解與實踐 第1捲(上冊) -
$453Wi-Fi 7 開發參考:技術原理、標準和應用 -
$453因特網技術十講 -
$407GPT 圖解 : 大模型是怎樣構建的 -
$300智能邊緣計算 -
硬件設計指南從裝置認知到手機基帶設計$594$564 -
高效能並行運行時系統:設計與實現$654$621 -
C++ 之美:代碼簡潔、安全又跑得快的 30個要訣 (Beautiful C++: 30 Core Guidelines for Writing Clean, Safe, and Fast Code)$654$621 -
$355先進 VLSI 技術:中後端面試精選 455問 -
AI 芯片開發核心技術詳解$654$621 -
$402渠道戰略 -
$504商用密碼權威指南 技術詳解、產品開發與工程實踐 -
開源心法$479$455 -
$504AIGC 智慧行銷:4A 模式驅動的AI行銷方法與實踐 -
下一代網絡處理器架構設計與應用$354$336 -
$658AI 處理器硬件架構設計 -
矽後驗證與調試$528$501 -
$417大語言模型革命
相關主題
商品描述
本書專為從事安全關鍵型嵌入式軟件開發的工程師與研究人員撰寫,聚焦IEC 61508、ISO 26262等 標準的實踐應用。全書分為背景、項目、設計模式、設計驗證、編碼、驗證六部分,系統闡述了安全關鍵軟件的設計原理、驗證方法、工具選型及工程案例,尤其關註軟件在硬件故障中的風險控制與災難規避作用。每章都呈現模塊化知識體系,分層展開論述,章末附精選參考文獻,兼顧學術深度與工程實用性。本書具有大量跨領域案例,覆蓋汽車、醫療、鐵路等嵌入式場景。本書源自QNX軟件系統培訓資料,既適合作為安全關鍵軟件研發指南,也為標準落地提供可操作路徑。
作者簡介
克裏斯·霍布斯(Chris Hobbs)一位覆雜軟件系統方面的專家。他曾任職於QNX公司,擁有40年左右的軟件開發經驗。現為QNX公司顧問,並擔任滑鐵盧大學客座研究員,繼續從事相關領域的研究。他專精於"足夠可靠的軟件"方向——以 投入和風險開發出滿足可靠性要求的軟件,尤其擅長開發必須符合IEC 61508、ISO 26262、EN 50128及IEC 62304等 安全標準要求的安全關鍵系統軟件。他曾是兩個安全工作小組的核心成員,致力於為保證案例及覆雜系統的安全分析制定指導性文件,並擔任這兩份文件的主編。
目錄大綱
譯者序
前言
第一部分 背景
第1章 概述 2
1.1 安全文化 2
1.2 我們的表達方式 4
1.2.1 背景材料 4
1.2.2 為安全關鍵應用開發產品 4
1.2.3 標準中推薦的技術 4
1.2.4 開發工具 4
1.3 挑選技術的準則 5
1.4 開發方法 5
1.5 當今的挑戰 6
1.5.1 信息安全 6
1.5.2 平衡架構需求的工具 7
1.5.3 硬件錯誤檢測 7
1.5.4 時限預測 7
1.5.5 數據 7
1.5.6 機器學習 8
參考文獻 8
第2章 與安全相關的術語 9
2.1 一般安全術語 9
2.1.1 危害、風險、緩解和殘余
風險 9
2.1.2 可用性、可靠性和可信度 10
2.1.3 功能安全 11
2.1.4 故障、錯誤和失效 11
2.1.5 形式化語言、半形式化語言
和非形式化語言 12
2.1.6 安全、活性和公平 13
2.1.7 向後及向前錯誤恢覆 13
2.1.8 意外系統 13
2.2 軟件專用術語 14
2.2.1 軟件 14
2.2.2 海森堡bug和玻爾bug 15
2.2.3 實時 16
2.2.4 契約式編程 17
參考文獻 17
第3章 安全標準及認證 18
3.1 標準機構 18
3.2 認可和認證 19
3.3 為什麼我們需要這些標準 20
3.4 基於目標的標準和基於規範的
標準 21
3.5 功能安全標準 22
3.5.1 IEC 61508 22
3.5.2 ISO 26262 25
3.6 IEC 62304和ISO 14971 28
3.7 機器學習和 SOTIF 29
3.7.1 機器學習 29
3.7.2 SOTIF 30
3.8 流程與標準 32
3.9 總結 32
參考文獻 33
第4章 代表性公司 34
4.1 Alpha設備公司 34
4.2 Beta零部件公司 34
4.3 使用經過認證的組件 35
第二部分 項目
第5章 基礎分析 38
5.1 分析 38
5.2 相互關系 39
5.3 危害和風險分析 39
5.3.1 識別危害和風險 39
5.3.2 緩解風險 41
5.3.3 評估殘余風險 42
5.4 安全案例 43
5.4.1 什麼是安全案例 43
5.4.2 我們為誰創建安全案例 43
5.4.3 安全案例問題 43
5.4.4 安全案例內容 44
5.4.5 安全案例中的信息安全 46
5.4.6 回溯性安全案例 47
5.5 失效分析 47
5.5.1 自下而上的方法 47
5.5.2 自上而下的方法 49
5.5.3 以事件為中心的方法 50
5.6 示例公司會進行的分析 51
5.6.1 安全手冊 51
5.6.2 危害和風險 52
5.6.3 安全需求 52
5.6.4 失效分析 52
5.6.5 殘余風險 52
5.6.6 安全案例 53
5.7 總結 53
參考文獻 53
第6章 認證和未認證的組件 55
6.1 SOUP的其他名字 55
6.2 認證或未認證的SOUP 55
6.3 使用未認證的組件 56
6.3.1 路線1S 56
6.3.2 路線2S 56
6.3.3 路線3S 57
6.4 使用認證的組件 59
6.5 對齊發布周期 60
6.6 示例公司 60
第三部分 設計模式
第7章 架構平衡 62
7.1 可用性/可靠性的平衡 62
7.2 實用性/安全性的平衡 63
7.3 信息安全/性能/功能安全的
平衡 64
7.4 性能/可靠性的平衡 66
7.5 實現手法的平衡 66
7.6 總結 66
參考文獻 67
第8章 錯誤檢測和處理 68
8.1 為何要進行錯誤檢測 68
8.2 錯誤檢測及其標準 68
8.3 異常檢測 68
8.3.1 異常檢測及其標準 70
8.3.2 異常檢測算法 70
8.3.3 示例 71
8.3.4 馬爾可夫鏈 71
8.3.5 卡爾曼濾波器 74
8.4 覆位 78
8.4.1 何時進行覆位 79
8.4.2 覆位做了什麼 79
8.4.3 選擇r4 80
8.4.4 冗余系統中的覆位 80
8.4.5 覆位及其標準 80
8.5 恢覆塊 81
8.6 對多樣化監控的一條註解 82
8.7 總結 82
參考文獻 83
第9章 預測意外 84
9.1 設計安全狀態 84
9.1.1 設計安全狀態的定義 84
9.1.2 設計安全狀態及其標準 85
9.1.3 設計安全狀態與危險失效 86
9.2 恢覆 86
9.2.1 恢覆技術 86
9.2.2 你希望恢覆嗎 86
9.3 僅崩潰模式 87
9.4 示例公司對意外事件的預期 87
9.5 總結 88
參考文獻 88
第10章 冗余和多樣化 89
10.1 冗余和多樣化的歷史 89
10.2 標準中的冗余 89
10.3 組件冗余還是系統冗余 90
10.4 冗余 91
10.4.1 系統冗余 91
10.4.2 冷備用 92
10.4.3 時間冗余 93
10.5 多樣化 93
10.5.1 硬件多樣化 93
10.5.2 軟件多樣化 94
10.5.3 數據多樣化 96
10.6 虛擬同步 96
10.7 鎖步處理器 100
10.8 多樣化監控器 101
10.8.1 外部監控器模式 101
10.8.2 看門狗式多樣化監控器 102
10.9 總結 103
參考文獻 103
第四部分 設計驗證
第11章 馬爾可夫模型 106
11.1 馬爾可夫模型簡介 106
11.2 馬爾可夫模型及相關標準 106
11.3 馬爾可夫假設 107
11.4 計算示例 108
11.4.1 估計比率 108
11.4.2 識別系統狀態 109
11.4.3 建立方程式 109
11.4.4 求解方程式 110
11.4.5 分析結果 110
11.5 馬爾可夫模型的優勢與劣勢 111
參考文獻 111
第12章 故障樹 112
12.1 FTA和FMECA 112
12.2 標準中的故障樹分析 112
12.3 故障樹類型 113
12.4 示例1:布爾故障樹 113
12.5 示例2:擴展布爾故障樹 115
12.6 示例3:貝葉斯故障樹 115
12.6.1 噪聲或 117
12.6.2 從結果到原因的推理 117
12.6.3 噪聲與 121
12.7 組合FTA 121
12.8 FTA工具 121
12.9 總結 122
參考文獻 122
第13章 軟件失效率 123
13.1 潛在的“異端邪說” 123
13.2 編譯器和硬件效果 124
13.3 評估失效率 125
13.3.1 硬件失效率 125
13.3.2 軟件失效率 126
13.4 失效建模 126
13.5 示例公司 130
參考文獻 130
第14章 半形式化設計驗證 132
14.1 重建設計的驗證 132
14.2 離散事件仿真 133
14.2.1 離散事件仿真及其
標準 134
14.2.2 偽隨機數生成 134
14.2.3 確定性系統的仿真 135
14.2.4 不確定性系統的仿真 136
14.2.5 離散事件仿真框架 136
14.2.6 離散事件仿真示例 137
14.2.7 知道何時開始 139
14.2.8 知道何時停止 139
14.3 時間Petri網 139
14.3.1 Petri網及其標準 139
14.3.2 Petri網的歷史 139
14.3.3 什麼是Petri網 140
14.3.4 一個簡單的Petri網 140
14.3.5 簡單Petri網的擴展 141
14.3.6 時間和隨機Petri網 142
14.3.7 理發店 142
14.3.8 Petri網和馬爾可夫
模型 144
14.3.9 令牌代表什麼 145
14.3.10 著色網 145
14.3.11 Petri網與非確定性 145
14.3.12 Petri網習語 146
14.4 仿真和示例公司 146
參考文獻 147
第15章 形式化設計驗證 148
15.1 什麼是形式化方法 148
15.2 形式化方法的歷史 148
15.3 形式化方法和標準 149
15.3.1 IEC 61508標準 149
15.3.2 ISO 26262標準 150
15.3.3 IEC 62304標準 150
15.4 形式化方法有效嗎 151
15.5 形式化方法的類型 152
15.6 自動代碼和測試生成 152
15.7 Spin建模工具 153
15.7.1 Spin的歷史記錄 153
15.7.2 Spin的結構 153
15.7.3 Promela語言 154
15.7.4 使用Spin檢查互斥
算法 154
15.7.5 Spin與線性時序邏輯 155
15.7.6 Spin總結 156
15.8 Rodin建模工具 157
15.8.1 Rodin的歷史 157
15.8.2 Rodin的結構 157
15.8.3 使用Rodin 158
15.8.4 Rodin定理的證明 159
15.8.5 再次檢查互斥算法 160
15.9 示例公司的形式化建模 161
15.10 形式化方法:總結 162
參考文獻 162
第五部分 編碼
第16章 編碼指南 166
16.1 編程語言的選擇 166
16.2 與編程語言相關的標準 166
16.3 語言特性 167
16.3.1 定義的完整性 167
16.3.2 明確的可信度支持 167
16.3.3 時間可預測性 167
16.3.4 異常處理 168
16.3.5 對靜態檢查的適應性 168
16.3.6 大規模現場使用 168
16.3.7 強類型指定和動態類型
指定 169
16.3.8 手誤的檢知 170
16.3.9 函數式語言 170
16.4 語言子集的使用 170
16.5 那麼,最好的編程語言是
什麼 171
16.6 浮點編程 171
參考文獻 172
第17章 代碼覆蓋率度量 173
17.1 代碼覆蓋率測試 173
17.2 代碼覆蓋率的類型 173
17.2.1 入口點覆蓋率 173
17.2.2 語句覆蓋率 173
17.2.3 分支覆蓋率 174
17.2.4 MC/DC覆蓋率 174
17.2.5 基礎路徑覆蓋率 175
17.2.6 路徑覆蓋率 177
17.3 覆蓋率及其標準 177
17.4 覆蓋率測試的有效性 178
17.5 覆蓋率的達成 179
17.6 總結 179
參考文獻 180
第18章 靜態分析 181
18.1 靜態分析要做些什麼 181
18.2 靜態代碼分析及其標準 182
18.3 靜態代碼分析 182
18.3.1 語法級檢查 183
18.3.2 語法檢查的語義增強 184
18.3.3 故障密度評估 186
18.3.4 通過不變量進行正確性
證明 186
18.4 符號執行 187
18.4.1 符號執行的優勢 187
18.4.2 符號執行及其標準 188
18.4.3 符號執行工具KLEE 188
18.5 總結 189
參考文獻 189
第六部分 驗證
第19章 集成測試 192
19.1 故障註入測試 192
19.1.1 為什麼要註入故障 192
19.1.2 向何處註入故障 194
19.1.3 註入什麼類型的故障 195
19.1.4 故障註入及其標準 195
19.1.5 ADC、BCI和故障
註入 195
19.2 模型和代碼間的背靠背測試
比較 196
19.2.1 標準 196
19.2.2 背靠背實例 196
19.2.3 背靠背測試被使用
了嗎 197
19.2.4 當模型成為測試預言 197
19.3 組合測試 198
19.4 基於需求的測試 201
19.4.1 安全需求是什麼 201
19.4.2 我們是否知曉全部
需求 202
19.4.3 人的因素 202
19.4.4 ISO 29119與基於需求的
測試 202
19.5 集成測試過程中的異常檢測 203
參考文獻 203
第20章 工具鏈 205
20.1 工具鏈的驗證 205
20.2 工具的分類 205
20.3 BCI公司的工具分類 206
20.4 使用第三方工具 206
20.5 驗證編譯器 207
20.5.1 多編譯器法 207
20.5.2 NPL法 208
20.5.3 編譯驗證法 209
20.6 ADC公司和BCI公司對
編譯器的驗證 212
參考文獻 213
第21章 結論 214
附錄A 目標結構表示法 215
附錄B 貝葉斯信念網絡 219
附錄C 計算(2+3)+4 228
附錄D 符號 231
