第一部分 引言
第1章 引言和概覽 2
1.1 安全關鍵軟件的定義 2
1.2 安全性問題的重要性 2
1.3 本書目的和重要提示 4
1.4 本書概覽 5
第二部分 安全關鍵軟件開發的語境
第2章 係統語境中的軟件 8
2.1 係統開發概覽 8
2.2 係統需求 10
2.2.1 係統需求的重要性 10
2.2.2 係統需求的類型 10
2.2.3 良好需求的特性 10
2.2.4 係統需求考慮 11
2.2.5 需求假設 14
2.2.6 分配到軟硬件項 14
2.3 係統需求確認與驗證 14
2.3.1 需求確認 14
2.3.2 實現驗證 15
2.3.3 確認與驗證建議 15
2.4 係統工程師最佳實踐 16
2.5 軟件與係統的關係 18
第3章 係統安全性評估語境中的軟件 20
3.1 航空器與係統安全性評估過程概覽 20
3.1.1 安全性工作計劃 20
3.1.2 功能危險評估 21
3.1.3 係統功能危險評估 22
3.1.4 初步航空器安全性評估 22
3.1.5 初步係統安全性評估 22
3.1.6 共同原因分析 23
3.1.7 航空器安全性評估和係統安全性評估 23
3.2 開發保證 24
3.2.1 開發保證級彆 25
3.3 軟件如何置入安全性過程 25
3.3.1 軟件的獨特性 25
3.3.2 軟件開發保證 26
3.3.3 其他視點 27
3.3.4 在係統安全性過程關注軟件的建議 28
第三部分 使用DO-178C開發安全關鍵軟件
第4章 DO-178C及支持文件概覽 31
4.1 DO-178曆史 31
4.2 DO-178C和DO-278A核心文件 33
4.2.1 DO-278A與DO-178C的不同 37
4.2.2 DO-178C附件A目標錶概覽 38
4.3 DO-330:軟件工具鑒定考慮 41
4.4 DO-178C技術補充 41
4.4.1 DO-331:基於模型的開發補充 42
4.4.2 DO-332:麵嚮對象技術補充 42
4.4.3 DO-333:形式化方法補充 42
4.5 DO-248C:支持材料 43
第5章 軟件策劃 44
5.1 引言 44
5.2 一般策劃建議 44
5.3 5個軟件計劃 46
5.3.1 軟件閤格審定計劃 46
5.3.2 軟件開發計劃 48
5.3.3 軟件驗證計劃 49
5.3.4 軟件配置管理計劃 51
5.3.5 軟件質量保證計劃 53
5.4 3個開發標準 54
5.4.1 軟件需求標準 55
5.4.2 軟件設計標準 55
5.4.3 軟件編碼標準 56
5.5 工具鑒定計劃 57
5.6 其他計劃 57
5.6.1 項目管理計劃 57
5.6.2 需求管理計劃 57
5.6.3 測試計劃 57
第6章 軟件需求 58
6.1 引言 58
6.2 定義需求 58
6.3 良好軟件需求的重要性 59
6.3.1 原因1:需求是軟件開發的基礎 59
6.3.2 原因2:好的需求節省時間和金錢 60
6.3.3 原因3:好的需求對安全性至關重要 60
6.3.4 原因4:好的需求對滿足客戶需要是必需的 61
6.3.5 原因5:好的需求對測試很重要 61
6.4 軟件需求工程師 61
6.5 軟件需求開發概覽 62
6.6 收集和分析軟件需求的輸入 63
6.6.1 需求收集活動 64
6.6.2 需求分析活動 64
6.7 編寫軟件需求 65
6.7.1 任務1:確定方法 65
6.7.2 任務2:確定軟件需求文檔版式 66
6.7.3 任務3:將軟件需求劃分為子係統和/或特徵 66
6.7.4 任務4:確定需求優先級 67
6.7.5 一個簡單迂迴(不是一個任務):要避免的斜坡 67
6.7.6 任務5:編檔需求 68
6.7.7 任務6:提供係統需求的反饋 72
6.8 驗證(評審)需求 73
6.8.1 同行評審推薦實踐 74
6.9 管理需求 76
6.9.1 需求管理基礎 76
6.9.2 需求管理工具 77
6.10 需求原型 78
6.11 可追蹤性 79
6.11.1 可追蹤性的重要性和好處 79
6.11.2 雙嚮可追蹤性 79
6.11.3 DO-178C和可追蹤性 80
6.11.4 可追蹤性挑戰 81
第7章 軟件設計 83
7.1 軟件設計概覽 83
7.1.1 軟件體係結構 83
7.1.2 軟件低層需求 83
7.1.3 設計打包 85
7.2 設計方法 85
7.2.1 基於結構的設計(傳統) 85
7.2.2 麵嚮對象的設計 86
7.3 良好設計的特性 86
7.4 設計驗證 89
第8章 軟件實現:編碼與集成 91
8.1 引言 91
8.2 編碼 91
8.2.1 DO-178C編碼指南概覽 91
8.2.2 安全關鍵軟件中使用的語言 92
8.2.3 選擇一種語言和編譯器 94
8.2.4 編程的一般建議 95
8.2.5 代碼相關的特彆話題 102
8.3 驗證源代碼 103
8.4 開發集成 104
8.4.1 構建過程 104
8.4.2 加載過程 105
8.5 驗證開發集成 105
第9章 軟件驗證 106
9.1 引言 106
9.2 驗證的重要性 106
9.3 獨立性與驗證 107
9.4 評審 108
9.4.1 軟件計劃評審 108
9.4.2 軟件需求、設計和代碼評審 108
9.4.3 測試資料評審 108
9.4.4 其他資料項評審 108
9.5 分析 109
9.5.1 最壞情況執行時間分析 109
9.5.2 內存餘量分析 110
9.5.3 鏈接和內存映像分析 110
9.5.4 加載分析 111
9.5.5 中斷分析 111
9.5.6 數學分析 111
9.5.7 錯誤和警告分析 112
9.5.8 分區分析 112
9.6 軟件測試 112
9.6.1 軟件測試的目的 112
9.6.2 DO-178C軟件測試指南概覽 114
9.6.3 測試策略綜述 115
9.6.4 測試策劃 119
9.6.5 測試開發 120
9.6.6 測試執行 122
9.6.7 測試報告 124
9.6.8 測試可追蹤性 124
9.6.9 迴歸測試 124
9.6.10易測試性 125
9.6.11驗證過程中的自動化 125
9.7 驗證的驗證 126
9.7.1 測試規程評審 127
9.7.2 測試結果的評審 127
9.7.3 需求覆蓋分析 127
9.7.4 結構覆蓋分析 128
9.8 問題報告 134
9.9 驗證過程建議 136
第10章 軟件配置管理 140
10.1 引言 140
10.1.1 什麼是軟件配置管理 140
10.1.2 為何需要軟件配置管理 140
10.1.3 誰負責實現軟件配置管理 141
10.1.4 軟件配置管理涉及什麼 142
10.2 SCM活動 142
10.2.1 配置標識 142
10.2.2 基綫 143
10.2.3 可追蹤性 143
10.2.4 問題報告 143
10.2.5 變更控製和評審 146
10.2.6 配置狀態記錄 147
10.2.7 發布 147
10.2.8 歸檔和提取 148
10.2.9 資料控製類 148
10.2.10加載控製 149
10.2.11軟件生命周期環境控製 150
10.3 特彆SCM技能 150
10.4 SCM資料 151
10.4.1 SCM計劃 151
10.4.2 問題報告 151
10.4.3 軟件生命周期環境配置索引 151
10.4.4 軟件配置索引 151
10.4.5 SCM記錄 152
10.5 SCM陷阱 152
10.6 變更影響分析 154
第11章 軟件質量保證 157
11.1 引言:軟件質量和軟件質量保證 157
11.1.1 定義軟件質量 157
11.1.2 高質量軟件的特性 157
11.1.3 軟件質量保證 158
11.1.4 常見質量過程和産品問題的例子 159
11.2 有效和無效SQA的特徵 159
11.2.1 有效的SQA 159
11.2.2 無效的SQA 160
11.3 SQA活動 161
第12章 閤格審定聯絡 164
12.1 什麼是閤格審定聯絡 164
12.2 與閤格審定機構的溝通 164
12.2.1 與閤格審定機構協調的最佳實踐 165
12.3 軟件完成總結 167
12.4 介入階段審核 168
12.4.1 SOI審核概覽 168
12.4.2 軟件作業輔助概覽 169
12.4.3 使用軟件作業輔助 171
12.4.4 對審核者的一般建議 171
12.4.5 對被審核者的一般建議 176
12.4.6 SOI評審細節 177
12.5 閤格審定飛行測試之前的軟件成熟度 184
第四部分 工具鑒定和DO-178C補充
第13章 DO-330和軟件工具鑒定 186
13.1 引言 186
13.2 確定工具鑒定需要和級彆(DO-178C的12.2節) 187
13.3 鑒定一個工具(DO-330概覽) 190
13.3.1 DO-330的需要 190
13.3.2 DO-330工具鑒定過程 190
13.4 工具鑒定特彆話題 197
13.4.1 FAA規定8110.49 197
13.4.2 工具確定性 197
13.4.3 額外的工具鑒定考慮 198
13.4.4 工具鑒定陷阱 199
13.4.5 DO-330和DO-178C補充 200
13.4.6 DO-330用於其他領域 200
第14章 DO-331和基於模型的開發與驗證 201
14.1 引言 201
14.2 基於模型開發的潛在好處 202
14.3 基於模型開發的潛在風險 204
14.4 DO-331概覽 206
14.5 閤格審定機構對DO-331的認識 210
第15章 DO-332和麵嚮對象技術及相關技術 211
15.1 麵嚮對象技術介紹 211
15.2 OOT在航空中的使用 211
15.3 航空手冊中的OOT 212
15.4 FAA資助的OOT和結構覆蓋研究 212
15.5 DO-332概覽 213
15.5.1 策劃 213
15.5.2 開發 213
15.5.3 驗證 213
15.5.4 脆弱性 214
15.5.5 類型安全 214
15.5.6 相關技術 214
15.5.7 常見問題 214
15.6 OOT建議 215
15.7 結論 215
第16章 DO-333和形式化方法 216
16.1 形式化方法介紹 216
16.2 什麼是形式化方法 217
16.3 形式化方法的潛在好處 218
16.4 形式化方法的挑戰 219
16.5 DO-333概覽 220
16.5.1 DO-333的目的 220
16.5.2 DO-333與DO-178C的比較 220
16.6 其他資源 222
第五部分 特彆專題
第17章 未覆蓋代碼(無關、無效和非激活代碼) 224
17.1 引言 224
17.2 無關和無效代碼 224
17.2.1 避免無關和無效代碼的晚發現 225
17.2.2 評價無關或無效代碼 225
17.3 非激活代碼 227
17.3.1 策劃 229
17.3.2 開發 229
17.3.3 驗證 230
第18章 現場可加載軟件 231
18.1 引言 231
18.2 什麼是現場可加載軟件 231
18.3 現場可加載軟件的好處 231
18.4 現場可加載軟件的挑戰 232
18.5 開發和加載現場可加載軟件 232
18.5.1 開發係統成為現場可加載的 232
18.5.2 開發現場可加載軟件 233
18.5.3 加載現場可加載軟件 233
18.5.4 修改現場可加載軟件 234
18.6 總結 234
第19章 用戶可修改軟件 235
19.1 引言 235
19.2 什麼是用戶可修改軟件 235
19.3 UMS例子 236
19.4 為UMS設計係統 236
19.5 修改和維護UMS 238
第20章 實時操作係統 240
20.1 引言 240
20.2 什麼是RTOS 240
20.3 為什麼使用RTOS 241
20.4 RTOS內核及其支持軟件 241
20.4.1 RTOS內核 242
20.4.2 應用編程接口 242
20.4.3 主闆支持包 243
20.4.4 設備驅動 243
20.4.5 支持庫 244
20.5 安全關鍵係統中使用的RTOS的特性 244
20.5.1 確定性 244
20.5.2 可靠的性能 244
20.5.3 硬件兼容 244
20.5.4 環境兼容 244
20.5.5 容錯 244
20.5.6 健康監控 245
20.5.7 可審定 245
20.5.8 可維護 245
20.5.9 可復用 246
20.6 安全關鍵係統中使用的RTOS的特徵 246
20.6.1 多任務 246
20.6.2 有保證和確定性的可調度性 246
20.6.3 確定性的任務間通信 248
20.6.4 可靠的內存管理 248
20.6.5 中斷處理 248
20.6.6 鈎子函數 249
20.6.7 健壯性檢查 249
20.6.8 文件係統 249
20.6.9 健壯分區 249
20.7 需考慮的RTOS問題 250
20.7.1 要考慮的技術問題 250
20.7.2 要考慮的閤格審定問題 252
20.8 其他的RTOS相關話題 254
20.8.1 ARINC 653概覽 254
20.8.2 工具支持 256
20.8.3 開源RTOS 256
20.8.4 多核處理器、虛擬化和虛擬機管理器 257
20.8.5 保密性 257
20.8.6 RTOS選擇問題 257
第21章 軟件分區 258
21.1 引言 258
21.1.1 分區:保護的一個子集 258
21.1.2 DO-178C和分區 258
21.1.3 健壯分區 259
21.2 共享內存(空間分區) 260
21.3 共享中央處理器(時間分區) 261
21.4 共享輸入/輸齣 262
21.5 一些與分區相關的挑戰 262
21.5.1 直接內存訪問 262
21.5.2 高速緩存 263
21.5.3 中斷 263
21.5.4 分區之間通信 263
21.6 分區的建議 264
第22章 配置數據 268
22.1 引言 268
22.2 術語和例子 268
22.3 DO-178C關於參數數據的指南總結 269
22.4 建議 270
第23章 航空數據 274
23.1 引言 274
23.2 DO-200A:航空數據處理標準 274
23.3 FAA谘詢通告AC 20-153A 277
23.4 用於處理航空數據的工具 278
23.5 與航空數據相關的其他工業文件 278
23.5.1 DO-201A:航空信息標準 279
23.5.2 DO-236B:航空係統性能最低標準:區域導航要求的導航性能 279
23.5.3 DO-272C:機場地圖信息的用戶需求 279
23.5.4 DO-276A:地形和障礙數據的用戶需求 279
23.5.5 DO-291B:地形、障礙和機場地圖數據互換標準 279
23.5.6 ARINC 424:導航係統數據庫標準 279
23.5.7 ARINC 816-1:機場地圖數據庫的嵌入式互換格式 280
第24章 軟件復用 281
24.1 引言 281
24.2 設計可復用構件 282
24.3 復用先前開發的軟件 285
24.3.1 為在民用航空産品中使用而評價PDS 285
24.3.2 復用未使用DO-178[ ]開發的PDS 289
24.3.3 COTS軟件的額外考慮 290
24.4 産品服役曆史 292
24.4.1 産品服役曆史的定義 292
24.4.2 使用産品服役曆史尋求置信度的睏難 292
24.4.3 使用産品服役曆史聲明置信度時考慮的因素 292
第25章 逆嚮工程 294
25.1 引言 294
25.2 什麼是逆嚮工程 294
25.3 逆嚮工程的例子 295
25.4 逆嚮工程時要考慮的問題 295
25.5 逆嚮工程的建議 296
第26章 外包和離岸外包軟件生命周期活動 301
26.1 引言 301
26.2 外包的原因 302
26.3 外包的挑戰和風險 302
26.4 剋服挑戰和風險的建議 305
26.5 總結 311
附錄A 轉換準則舉例 312
附錄B 實時操作係統關注點 318
附錄C 為安全關鍵係統選擇實時操作係統時考慮的問題 321
附錄D 軟件服役曆史問題 324
縮略語 327
參考文獻 332
· · · · · · (
收起)