安全關鍵軟件開發與審定 — DO-178C 標準實踐指南 Developing Safety-Critical Software: A Practical Guide for Aviation Software and DO-178C Compliance

Rierson, Leanna 崔曉峰

買這商品的人也買了...

商品描述

本書以民用航空機載軟件適航標準制定者的視角,
詳細介紹瞭如何基於目前最新版的DO-178C標準進行安全關鍵軟件的開發與管理,
給出瞭如何獲得成功審定的實用指南。
主要內容包括:
在系統與安全大視野中的軟件,DO-178C標準的深入解讀和推薦實踐,
4個標準技術補充(軟件工具鑒定、基於模型的開發、面向對象技術和形式化方法)的講解說明,
以及10個相關特別專題(未覆蓋代碼、外場可加載軟件、用戶可修改軟件和實時操作系統等)的指導建議。

作者簡介

Leanna Rierson 

安全關鍵軟件和復雜電子系統領域的資深專家,獨立諮詢師。
多年擔任美國聯邦航空局(FAA)的軟件和航空電子專家、航空計算機軟件首席科學家和技術顧​​問。
作為在軟件和復雜硬件技術領域具有A級授權的FAA委任工程代表(DER),
與眾多航空器和航空電子公司有過合作,包括波音、賽斯納、里爾噴氣、
巴西航空工業、羅克韋爾-柯林斯、通用電氣航空和霍尼韋爾等公司。
她是DO-178C標準的主要參與製定者之一,在負責制定該標準的美國航空無線電技術委員會(RTCA)
中擔任一個工作組的聯合主席和編寫組負責人,
發表過大量關於安全關鍵軟件和綜合模塊化航空電子(IMA)的論文,
領導過許多國際工程團隊和工作會議,為FAA編制了一系列課程、政策、手冊和指南材料,
為數百名專業人士講授過DO-178B和DO-178C標準。

 

譯者簡介

崔曉峰

研究員,北京大學計算機軟件與理論專業博士,英國約克大學訪問學者。
長期從事軟件工程理論與方法研究、大型關鍵任務軟件系統設計與工程化管理,以及軟件研製能力評價工作。
主要研究和實踐領域包括軟件體系結構、軟件需求工程、軟件項目管理、
軟件過程改進、業務流程管理、系統工程、領域工程等。

目錄大綱

第一部分 引  言
第1章 引言和概覽 2
1.1 安全關鍵軟件的定義 2
1.2 安全性問題的重要性 2
1.3 本書目的和重要提示 4
1.4 本書概覽 6

第二部分安全關鍵軟件開發的語境
第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 系統需求確認與驗證 15
2.3.1 需求確認 15
2.3.2 實現驗證 15
2.3.3 確認與驗證建議 15
2.4 系統工程師最佳實踐 17
2.5 軟件與系統的關係 19

第3章 系統安全性評估語境中的軟件 20
3.1 航空器與系統安全性評估過程概覽 20
3.1.1 安全性工作計劃 21
3.1.2 功能危險評估 21
3.1.3 系統功能危險評估 22
3.1.4 初步航空器安全性評估 22
3.1.5 初步系統安全性評估 22
3.1.6 共因分析 23
3.1.7 航空器安全性評估和系統安全性評估 24
3.2 開發保證 24
3.2.1 開發保證等級 25
3.3 軟件如何置於安全性過程 26
3.3.1 軟件的獨特性 26
3.3.2 軟件開發保證 26
3.3.3 其他觀點 28
3.3.4 在系統安全性過程關注軟件的建議 28

第三部分使用DO-178C開發安全關鍵軟件
第4章 DO-178C及支持文件概覽 32
4.1 DO-178歷史 32
4.2 DO-178C和DO-278A核心文件 34
4.2.1 DO-278A與DO-178C的不同 39
4.2.2 DO-178C附件A的目標表概覽 39
4.3 DO-330:軟件工具鑑定考慮 43
4.4 DO-178C技術補充 43
4.4.1 DO-331:基於模型的開發補充 43
4.4.2 DO-332:面向對象技術補充 44
4.4.3 DO-333:形式化方法補充 44
4.5 DO-248C:支持材料 44

第5章 軟件策劃 46
5.1 引言 46
5.2 一般策劃建議 46
5.3 5個軟件計劃 49
5.3.1 軟件合格審定計劃 49
5.3.2 軟件開發計劃 50
5.3.3 軟件驗證計劃 52
5.3.4 軟件配置管理計劃 54
5.3.5 軟件質量保證計劃 56
5.4 3個開發標準 57
5.4.1 軟件需求標準 58
5.4.2 軟件設計標準 58
5.4.3 軟件編碼標準 59
5.5 工具鑑定計劃 60
5.6 其他計劃 60
5.6.1 項目管理計劃 60
5.6.2 需求管理計劃 60
5.6.3 測試計劃 60

第6章 軟件需求 61
6.1 引言 61
6.2 定義需求 61
6.3 良好的需求的重要性 62
6.3.1 原因1:需求是軟件開發的基礎 62
6.3.2 原因2:好的需求節省時間和金錢 63
6.3.3 原因3:好的需求對安全性至關重要 64
6.3.4 原因4:好的需求對滿足客戶需要是必需的 64
6.3.5 原因5:好的需求對測試很重要 64
6.4 軟件需求工程師 65
6.5 軟件需求開發概覽 66
6.6 收集和分析軟件需求的輸入 67
6.6.1 需求收集活動 67
6.6.2 需求分析活動 68
6.7 編寫軟件需求 69
6.7.1 任務1:確定方法 69
6.7.2 任務2:確定軟件需求文檔格式 70
6.7.3 任務3:將軟件功能劃分為子系統和/或特徵 70
6.7.4 任務4:確定需求優先級 71
6.7.5 避免滑下的斜坡 71
6.7.6 任務5:編檔需求 72
6.7.7 任務6:提供系統需求的反饋 77
6.8 驗證(評審)需求 77
6.8.1 同行評審推薦實踐 78
6.9 管理需求 81
6.9.1 需求管理基礎 81
6.9.2 需求管理工具 81
6.10 需求原型 83
6.11 可追踪性 83
6.11.1 可追踪性的重要性和好處 84
6.11.2 雙向可追踪性 84
6.11.3 DO-178C和可追踪性 85
6.11.4 可追踪性挑戰 86

第7章 軟件設計 88
7.1 軟件設計概覽 88
7.1.1 軟件體系結構 88
7.1.2 軟件低層需求 89
7.1.3 設計打包 90
7.2 設計方法 90
7.2.1 基於結構的設計(傳統) 90
7.2.2 面向對象的設計 91
7.3 良好設計的特性 92
7.4 設計驗證 95

第8章 軟件實現:編碼與集成 97
8.1 引言 97
8.2 編碼 97
8.2.1 DO-178C編碼指南概覽 97
8.2.2 安全關鍵軟件中使用的語言 98
8.2.3 選擇一種語言和編譯器 100
8.2.4 編程的一般建議 102
8.2.5 代碼相關的特別話題 109
8.3 驗證源代碼 110
8.4 開發集成 111
8.4.1 構建過程 111
8.4.2 加載過程 112
8.5 驗證開發集成 112

第9章 軟件驗證 113
9.1 引言 113
9.2 驗證的重要性 113
9.3 獨立性與驗證 114
9.4 評審 115
9.4.1 軟件計劃評審 115
9.4.2 軟件需求、設計和代碼評審 115
9.4.3 測試資料評審 115
9.4.4 其他資料項評審 116
9.5 分析 116
9.5.1 最壞情況執行時間分析 117
9.5.2 內存餘量分析 117
9.5.3 鏈接和內存映像分析 118
9.5.4 加載分析 118
9.5.5 中斷分析 118
9.5.6 數學分析 119
9.5.7 錯誤和警告分析 119
9.5.8 分區分析 119
9.6 軟件測試 119
9.6.1 軟件測試的目的 120
9.6.2 DO-178C軟件測試指南概覽 121
9.6.3 測試策略綜述 123
9.6.4 測試策劃 126
9.6.5 測試開發 128
9.6.6 測試執行 130
9.6.7 測試報告 132
9.6.8 測試可追踪性 132
9.6.9 回歸測試 132
9.6.10?易測試性 133
9.6.11?驗證過程中的自動化 133
9.7 驗證的驗證 134
9.7.1 測試規程評審 135
9.7.2 測試結果的評審 135
9.7.3 需求覆蓋分析 136
9.7.4 結構覆蓋分析 136
9.8 問題報告 142
9.9 驗證過程建議 145

第10章 軟件配置管理 148
10.1 引言 148
10.1.1 什麼是軟件配置管理 148
10.1.2 為什麼需要軟件配置管理 148
10.1.3 誰負責實現軟件配置管理 149
10.1.4 軟件配置管理涉及什麼 150
10.2 軟件配置管理活動 150
10.2.1 配置標識 150
10.2.2 基線 151
10.2.3 可追踪性 151
10.2.4 問題報告 151
10.2.5 變更控制和評審 154
10.2.6 配置狀態記錄 155
10.2.7 發布 156
10.2.8 歸檔和提取 156
10.2.9 資料控制類別 157
10.2.10?加載控制 158
10.2.11?軟件生命週期環境控制 159
10.3 特別的軟件配置管理技能 159
10.4 軟件配置管理資料 160
10.4.1 軟件配置管理計劃 160
10.4.2 問題報告 160
10.4.3 軟件生命週期環境配置索引 160
10.4.4 軟件配置索引 160
10.4.5 軟件配置管理記錄 161
10.5 軟件配置管理陷阱 161
10.6 變更影響分析 163

第11章 軟件質量保證 166
11.1 引言:軟件質量和軟件質量保證 166
11.1.1 定義軟件質量 166
11.1.2 高質量軟件的特性 166
11.1.3 軟件質量保證 167
11.1.4 常見質量過程和產品問題的例子 168
11.2 有效和無效的軟件質量保證的特徵 169
11.2.1 有效的軟件質量保證 169
11.2.2 無效的軟件質量保證 170
11.3 軟件質量保證活動 170

第12章 合格審定聯絡 174
12.1 什麼是合格審定聯絡 174
12.2 與合格審定機構的溝通 174
12.2.1 與合格審定機構協調的最佳實踐 175
12.3 軟件完成總結 177
12.4 介入階段審核 178
12.4.1 介入階段審核概覽 178
12.4.2 軟件作業輔助概覽 179
12.4.3 使用軟件作業輔助 181
12.4.4 對審核者的一般建議 181
12.4.5 對被審核者的一般建議 186
12.4.6 介入階段審核細節 188
12.5 合格審定飛行試驗之前的軟件成熟度 195

第四部分 工具鑑定和DO-178C補充
第13章 DO-330和軟件工具鑑定 198
13.1 引言 198
13.2 確定工具鑑定需要和等級(DO-178C的12.2節) 199
13.3 鑑定一個工具(DO-330概覽) 202
13.3.1 DO-330的需要 202
13.3.2 DO-330工具鑑定過程 203
13.4 工具鑑定特別話題 210
13.4.1 FAA規定8110.49 210
13.4.2 工具確定性 211
13.4.3 額外的工具鑑定考慮 211
13.4.4 工具鑑定陷阱 212
13.4.5 DO-330和DO-178C補充 214
13.4.6 DO-330用於其他領域 214

第14章 DO-331和基於模型的開發與驗證 215
14.1 引言 215
14.2 基於模型開發的潛在好處 216
14.3 基於模型開發的潛在風險 218
14.4 DO-331概覽 221
14.5 合格審定機構對DO-331的認識 225

第15章 DO-332和麵向對象技術及相關技術 226
15.1 面向對象技術介紹 226
15.2 OOT在航空中的使用 226
15.3 航空手冊中的OOT 227
15.4 FAA資助的OOT和結構覆蓋研究 227
15.5 DO-332概覽 228
15.5.1 策劃 228
15.5.2 開發 228
15.5.3 驗證 228
15.5.4 脆弱性 229
15.5.5 類型安全 229
15.5.6 相關技術 230
15.5.7 常見問題 230
15.6 OOT建議 230
15.7 結論 230

第16章 DO-333和形式化方法 231
16.1 形式化方法介紹 231
16.2 什麼是形式化方法 232
16.3 形式化方法的潛在好處 233
16.4 形式化方法的挑戰 234
16.5 DO-333概覽 235
16.5.1 DO-333的目的 235
16.5.2 DO-333與DO-178C的比較 236
16.6 其他資源 238

第五部分 特別專題
第17章 未覆蓋代碼(無關代碼、死代碼和非激活代碼) 240
17.1 引言 240
17.2 無關代碼和死代碼 240
17.2.1 避免無關代碼和死代碼的晚發現 241
17.2.2 評價無關代碼或死代碼 242
17.3 非激活代碼 243
17.3.1 策劃 245
17.3.2 開發 245
17.3.3 驗證 246

第18章 外場可加載軟件 247
18.1 引言 247
18.2 什麼是外場可加載軟件 247
18.3 外場可加載軟件的好處 247
18.4 外場可加載軟件的挑戰 248
18.5 開發和加載外場可加載軟件 248
18.5.1 開發支持外場加載的系統 248
18.5.2 開發外場可加載軟件 249
18.5.3 加載外場可加載軟件 249
18.5.4 修改外場可加載軟件 250
18.6 總結 250

第19章 用戶可修改軟件 251
19.1 引言 251
19.2 什麼是用戶可修改軟件 251
19.3 UMS例子 252
19.4 為UMS設計系統 252
19.5 修改和維護UMS 254

第20章 實時操作系統 256
20.1 引言 256
20.2 什麼是RTOS 256
20.3 為什麼使用RTOS 257
20.4 RTOS內核及其支持軟件 258
20.4.1 RTOS內核 258
20.4.2 應用編程接口 258
20.4.3 主板支持包 259
20.4.4 設備驅動 260
20.4.5 支持庫 260
20.5 安全關鍵系統中使用的RTOS的特性 260
20.5.1 確定性 260
20.5.2 可靠的性能 260
20.5.3 硬件兼容 261
20.5.4 環境兼容 261
20.5.5 容錯 261
20.5.6 健康監控 261
20.5.7 可審定 262
20.5.8 可維護 262
20.5.9 可複用 262
20.6 安全關鍵系統中使用的RTOS的功能 262
20.6.1 多任務 262
20.6.2 有保證和確定性的可調度性 263
20.6.3 確定性的任務間通信 264
20.6.4 可靠的內存管理 265
20.6.5 中斷處理 265
20.6.6 鉤子函數 265
20.6.7 健壯性檢查 266
20.6.8 文件系統 266
20.6.9 健壯分區 266
20.7 需考慮的RTOS問題 266
20.7.1 要考慮的技術問題 267
20.7.2 要考慮的合格審定問題 269
20.8 RTOS相關的其他話題 271
20.8.1 ARINC 653概覽 271
20.8.2 工具支持 273
20.8.3 開源RTOS 274
20.8.4 多核處理器、虛擬化和虛擬機管理器 274
20.8.5 保密性 275
20.8.6 RTOS選擇問題 275

第21章 軟件分區 276
21.1 引言 276
21.1.1 分區:保護的一個子集 276
21.1.2 DO-178C和分區 277
21.1.3 健壯分區 277
21.2 共享內存(空間分區) 279
21.3 共享中央處理器(時間分區) 279
21.4 共享輸入/輸出 280
21.5 一些與分區相關的挑戰 281
21.5.1 直接內存訪問 281
21.5.2 高速緩存 281
21.5.3 中斷 282
21.5.4 分區間通信 282
21.6 分區的建議 282

第22章 配置數據 287
22.1 引言 287
22.2 術語和例子 287
22.3 DO-178C關於參數數據項的指南總結 289
22.4 建議 289

第23章 航空數據 293
23.1 引言 293
23.2 DO-200A:航空數據處理標準 293
23.3 FAA諮詢通告AC 20-153A 296
23.4 用於處理航空數據的工具 297
23.5 與航空數據相關的其他工業文件 298
23.5.1 DO-201A:航空信息標準 298
23.5.2 DO-236B:航空系統性能最低標準:區域導航要求的導航性能 298
23.5.3 DO-272C:機場地圖信息的用戶需求 298
23.5.4 DO-276A:地形和障礙數據的用戶需求 298
23.5.5 DO-291B:地形、障礙和機場地圖數據互換標準 298
23.5.6 ARINC 424:導航系統數據庫標準 299
23.5.7 ARINC 816-1:機場地圖數據庫的嵌入式互換格式 299

第24章 軟件復用 300
24.1 引言 300
24.2 設計可複用構件 301
24.3 復用先前開發的軟件 304
24.3.1 為在民用航空產品中使用而評價PDS 305
24.3.2 復用未使用DO-178[]開發的PDS 308
24.3.3 COTS軟件的額外考慮 310
24.4 產品服役歷史 311
24.4.1 產品服役歷史的定義 311
24.4.2 使用產品服役歷史尋求置信度的困難 311
24.4.3 使用產品服役歷史聲明置信度時考慮的因素 312

第25章 逆向工程 313
25.1 引言 313
25.2 什麼是逆向工程 313
25.3 逆向工程的例子 314
25.4 逆向工程要考慮的問題 314
25.5 逆向工程的建議 315

第26章 外包和離岸外包軟件生命週期活動 321
26.1 引言 321
26.2 外包的原因 322
26.3 外包的挑戰和風險 322
26.4 克服挑戰和風險的建議 325
26.5 總結 331
附錄A 活動轉換準則舉例 332
附錄B 實時操作系統關注點 338
附錄C 為安全關鍵系統選擇實時操作系統時考慮的問題 341
附錄D 軟件服役歷史問題 344
縮略語 348
參考文獻 353
推薦讀物 365