軟件全方位缺陷檢測技術

李必信、王璐璐、廖力、孔祥龍、周穎

  • 出版商: 清華大學
  • 出版日期: 2025-12-01
  • 售價: $414
  • 語言: 簡體中文
  • ISBN: 7302704422
  • ISBN-13: 9787302704423
  • 相關分類: Unit Test 單元測試
  • 下單後立即進貨 (約4週~6週)

  • 軟件全方位缺陷檢測技術-preview-1
  • 軟件全方位缺陷檢測技術-preview-2
  • 軟件全方位缺陷檢測技術-preview-3
  • 軟件全方位缺陷檢測技術-preview-4
  • 軟件全方位缺陷檢測技術-preview-5
  • 軟件全方位缺陷檢測技術-preview-6
  • 軟件全方位缺陷檢測技術-preview-7
軟件全方位缺陷檢測技術-preview-1

商品描述

"本書系統介紹軟件缺陷檢測的理論、方法與實踐,全面覆蓋軟件質量保障的核心技術。不僅涵蓋傳統靜態與動態檢測技術,還結合人工智能、自動化等前沿趨勢,探討智能化缺陷預測與自動化檢測的實現路徑。本書通過理論解析、技術對比與實踐案例,幫助讀者構建多維度、全流程的缺陷防控體系,特別適用於軍事、金融、醫療、工業軟件等高可靠性領域的質量保障工作。 全書共15章,從軟件全生命周期質量保障體系出發,深入剖析缺陷產生的本質,並詳細講解11類主流缺陷檢測技術,包括軟件評審、程序分析、軟件度量、軟件測試、軟件仿真、軟件缺陷預測、形式化驗證、軟件監控、知識驅動軟件缺陷檢測、智能化軟件缺陷檢測及標準和規範依從性檢查。 本書適合作為高等院校計算機、軟件工程專業高年級本科生、研究生的教材,同時可供軟件工程研究人員、質量保障工程師及軟件開發人員閱讀,助力讀者掌握缺陷檢測關鍵技術,提升軟件質量與可靠性。 "

目錄大綱

目錄

第1章引言1

1.1概述1

1.1.1什麼是軟件1

1.1.2軟件的兩種類型1

1.1.3什麼是軟件開發3

1.2軟件工程發展簡史3

1.2.1軟件開發早期階段3

1.2.2軟件工程理論體系形成和發展階段4

1.2.3軟件工程豐富和發展階段5

1.2.4軟件工程智能化自動化階段6

1.3軟件過程8

1.3.1慣例過程模型8

1.3.2敏捷過程模型8

1.3.3DevOps8

1.4軟件工程核心關註點9

1.5本書寫作動機10

1.6推薦閱讀10

1.7思考練習題11

第2章軟件全生命周期質量保障12

2.1概述12

2.2軟件質量12

2.2.1軟件質量的定義12

2.2.2外部質量和內部質量13

2.3典型的軟件質量模型14

2.3.1ISO/IEC 25010質量模型14

2.3.2ISO/IEC 9126質量模型15

2.3.3Boehm質量模型17

2.3.4McCall質量模型172.3.5SQOOSS質量模型18

2.4軟件質量保障問題19

2.4.1軟件開發後期階段軟件質量保障19

2.4.2軟件開發早期階段軟件質量保障20

2.4.3全生命周期軟件質量保障20

2.5軟件質量與軟件缺陷23

2.5.1軟件缺陷對軟件質量的影響23

2.5.2軟件全生命周期缺陷檢測方法24

2.6軟件質量保障方法26

2.6.1先驗方法和後驗方法26

2.6.2定性方法和定量方法26

2.6.3靜態方法和動態方法26

2.7推薦閱讀27

2.8思考練習題27

目錄〖3〗第3章軟件缺陷理解28

3.1概述28

3.2軟件缺陷產生原因30

3.2.1參與者方面的原因30

3.2.2技術方面的原因30

3.2.3管理方面的原因31

3.2.4環境方面的原因31

3.3軟件缺陷類型31

3.3.1從軟件開發過程的角度分類32

3.3.2從軟件產品的角度分類34

3.3.3從用戶需求的角度分類37

3.4軟件缺陷相關的幾個問題38

3.4.1缺陷嚴重性問題38

3.4.2缺陷處理的優先級問題38

3.4.3缺陷修復代價問題39

3.4.4缺陷狀態跟蹤問題39

3.4.5缺陷管理問題40

3.5為什麼需要缺陷檢測40

3.6全方位軟件缺陷檢測技術41

3.6.1全方位內涵41

3.6.2全方位缺陷檢測技術42

3.7推薦閱讀42

3.8思考練習題43

第4章軟件評審44

4.1概述44

4.2軟件評審過程45

4.3軟件評審需求45

4.3.1軟件開發過程評審需求46

4.3.2軟件管理過程評審需求46

4.4典型的軟件評審方法47

4.4.1技術評審48

4.4.2管理評審49

4.4.3同行評審49

4.4.4走查50

4.4.5結構化走查51

4.4.6代碼走查51

4.4.7審查52

4.4.8代碼審查53

4.4.9代碼審計54

4.4.10代碼閱讀56

4.5案例分析57

4.5.1代碼走查案例57

4.5.2代碼審查案例59

4.6軟件評審技術的發展歷程60

4.7推薦閱讀60

4.8思考練習題61

第5章程序分析62

5.1概述62

5.2控制流分析63

5.2.1什麼是控制流分析63

5.2.2控制流圖構造64

5.2.3過程內控制流分析65

5.2.4過程間控制流分析66

5.2.5過程內控制流分析和過程間控制流分析比較68

5.3數據流分析69

5.3.1什麼是數據流分析69

5.3.2數據流圖構造69

5.3.3過程內數據流分析70

5.3.4過程間數據流分析73

5.3.5過程內數據流分析和過程間數據流分析比較74

5.4抽象解釋75

5.5符號執行76

5.6汙點分析77

5.7關系分析78

5.7.1關聯關系78

5.7.2泛化特化關系79

5.7.3聚集關系和組合關系79

5.8依賴分析80

5.8.1控制依賴分析80

5.8.2數據依賴分析80

5.8.3程序依賴圖81

5.8.4程序切片81

5.9因果分析82

5.9.1因果圖82

5.9.2因果圖分析83

5.10修改影響分析84

5.10.1什麼是修改影響分析84

5.10.2靜態修改影響分析84

5.10.3動態修改影響分析85

5.10.4靜態CIA和動態CIA比較86

5.11修改傳播分析88

5.11.1什麼是修改傳播分析88

5.11.2修改傳播分析方法88

5.12程序分析工具及應用89

5.13程序分析技術的發展歷程91

5.14推薦閱讀91

5.15思考練習題92

第6章軟件度量93

6.1概述93

6.2軟件項目度量94

6.2.1軟件規模度量94

6.2.2軟件成本度量97

6.2.3顧客滿意度度量方法100

6.2.4信息熵度量100

6.2.5軟件進度度量102

6.3軟件過程度量104

6.3.1軟件過程度量的定性方法105

6.3.2軟件過程度量的定量方法106

6.4軟件產品度量108

6.4.1軟件產品結構度量108

6.4.2軟件產品質量度量111

6.5軟件團隊度量112

6.5.1效能與產出112

6.5.2協作與溝通112

6.5.3技能與成長112

6.5.4健康與文化112

6.6軟件度量技術的發展歷程113

6.7推薦閱讀114

6.8思考練習題114

第7章軟件測試115

7.1概述115

7.1.1軟件測試定義115

7.1.2開發者測試116

7.1.3用戶測試119

7.1.4第三方測試119

7.2典型軟件測試過程119

7.2.1測試需求分析120

7.2.2測試計劃制訂120

7.2.3測試設計121

7.2.4測試開發121

7.2.5測試執行與測試結果驗證121

7.2.6測試評估122

7.2.7測試報告生成123

7.3常見的軟件測試類型123

7.3.1結構化測試123

7.3.2功能測試125

7.3.3性能測試125

7.3.4安全性測試126

7.3.5可靠性測試127

7.3.6兼容性測試127

7.3.7健壯性測試128

7.3.8標準符合度測試128

7.3.9GUI測試129

7.4軟件測試有效策略129

7.4.1靜態測試與動態測試結合130

7.4.2白盒測試與黑盒測試結合130

7.4.3內部測試與外部測試結合131

7.4.4局部測試與整體測試結合132

7.4.5正面測試與負面測試結合132

7.5幾個典型的軟件測試方法133

7.5.1組合測試133

7.5.2隨機測試133

7.5.3蛻變測試134

7.5.4演化測試134

7.5.5變異測試135

7.6軟件測試的幾個核心問題136

7.6.1測試用例生成問題136

7.6.2測試預言問題136

7.6.3測試充分性問題137

7.7軟件測試技術的發展歷程137

7.8推薦閱讀138

7.9思考練習題139

第8章軟件仿真140

8.1概述140

8.1.1連續系統仿真141

8.1.2離散系統仿真141

8.1.3混合系統仿真141

8.2軟件系統功能性仿真和非功能性仿真142

8.2.1軟件系統功能性仿真142

8.2.2軟件系統非功能性仿真143

8.3典型軟件仿真場景145

8.3.1軟件架構仿真146

8.3.2軟件接口仿真146

8.3.3模塊設計仿真147

8.3.4數據結構仿真148

8.3.5數據庫設計仿真148

8.3.6外部調用仿真149

8.3.7算法設計仿真149

8.4典型的軟件仿真方法150

8.4.1軟件原型仿真150

8.4.2模型仿真151

8.4.3數學仿真153

8.5軟件系統仿真技術的發展歷程155

8.6推薦閱讀156

8.7思考練習題157

第9章軟件缺陷預測158

9.1概述158

9.2軟件缺陷預測的一般過程159

9.2.1數據收集與處理159

9.2.2特征提取與選擇161

9.2.3模型構建與訓練161

9.2.4模型評估與優化161

9.3軟件缺陷預測類型162

9.3.1版本內缺陷預測162

9.3.2跨版本缺陷預測164

9.3.3項目內缺陷預測169

9.3.4跨項目缺陷預測172

9.3.5公司內缺陷預測179

9.3.6跨公司缺陷預測180

9.3.7行業內缺陷預測183

9.3.8跨行業缺陷預測183

9.4缺陷預測的典型應用184

9.4.1出錯傾向性預測184

9.4.2缺陷分布預測185

9.4.3缺陷數量預測187

9.4.4缺陷類型預測188

9.4.5缺陷嚴重性預測189

9.5典型應用案例190

9.5.1項目內缺陷預測案例190

9.5.2跨項目缺陷預測案例192

9.6軟件缺陷預測技術的發展歷程193

9.7推薦閱讀194

9.8思考練習題195

第10章形式化驗證196

10.1概述196

10.2典型的形式化驗證技術197

10.2.1等效性檢驗198

10.2.2定理證明200

10.2.3模型檢驗203

10.3典型應用207

10.4形式化驗證技術的發展歷程208

10.5推薦閱讀209

10.6思考練習題210

第11章軟件監控211

11.1概述211

11.2軟件開發過程監控212

11.2.1項目進度表212

11.2.2需求跟蹤212

11.3軟件運行階段監控216

11.3.1代碼插樁216

11.3.2日誌分析219

11.3.3執行軌跡跟蹤220

11.3.4路徑剖析223

11.3.5觀察者模式224

11.3.6面向方面編程225

11.4軟件監控技術的發展歷程226

11.5推薦閱讀226

11.6思考練習題227

第12章知識驅動軟件缺陷檢測228

12.1概述228

12.2基本術語229

12.2.1數據、信息和知識229

12.2.2知識網絡、知識本體和知識圖譜229

12.2.3知識表示和知識推理232

12.3基於知識圖譜的缺陷檢測233

12.3.1知識圖譜構建和補全233

12.3.2基於模式匹配的缺陷檢測235

12.4典型缺陷檢測分析236

12.4.1遍歷map缺陷檢測236

12.4.2重入漏洞檢測239

12.5知識驅動軟件缺陷檢測技術的發展歷程242

12.6推薦閱讀243

12.7思考練習題244

第13章智能化軟件缺陷檢測245

13.1概述245

13.2智能化軟件缺陷檢測的典型方法246

13.2.1基於傳統機器學習的軟件缺陷檢測246

13.2.2基於深度學習的軟件缺陷檢測247

13.2.3基於大語言模型的軟件缺陷檢測248

13.3應用案例介紹250

13.3.1基於AI的測試用例生成250

13.3.2基於AI的測試用例排序252

13.3.3基於AI的靜態代碼缺陷檢測252

13.3.4基於圖神經網絡的龐氏合約檢測255

13.3.5基於大語言模型的日誌異常檢測260

13.4智能化軟件缺陷檢測技術的發展歷程265

13.5推薦閱讀265

13.6思考練習題266

第14章標準和規範依從性檢查268

14.1概述268

14.1.1常見術語解釋269

14.1.2標準的分類和等級劃分269

14.2軟件工程領域的標準270

14.2.1軟件工程標準體系簡介270

14.2.2軟件質量標準273

14.2.3軟件安全標準和規範277

14.2.4軟件安全保障規範279

14.3標準和規範依從性檢查方法282

14.4典型案例283

14.4.1視頻圖像信息的標準依從性檢查283

14.4.2網站信息無障礙標準依從性檢查284

14.5軟件質量標準化的發展歷程285

14.6推薦閱讀286

14.7思考練習題286

第15章缺陷檢測自動化287

15.1概述287

15.2缺陷檢測自動化的前提條件288

15.3自動化評審288

15.3.1何謂自動化評審288

15.3.2典型的評審工具288

15.4自動化程序分析291

15.4.1何謂自動化程序分析291

15.4.2典型程序分析工具291

15.5自動化軟件度量294

15.5.1何謂自動化軟件度量294

15.5.2典型軟件度量工具294

15.6自動化測試296

15.6.1何謂自動化測試297

15.6.2典型的測試工具297

15.7自動化仿真302

15.7.1何謂自動化仿真302

15.7.2典型的軟件仿真工具302

15.8自動化缺陷預測303

15.8.1何謂自動化缺陷預測303

15.8.2典型的缺陷預測工具304

15.9自動化監控305

15.9.1何謂自動化監控305

15.9.2典型的監控工具305

15.10自動化驗證307

15.10.1何謂自動化驗證307

15.10.2典型的形式化驗證工具307

15.11知識驅動軟件缺陷檢測自動化309

15.11.1何謂知識驅動軟件缺陷檢測自動化309

15.11.2典型的知識驅動軟件缺陷檢測工具310

15.12自動化智能化軟件缺陷檢測311

15.12.1何謂自動化智能化軟件缺陷檢測311

15.12.2典型的智能化缺陷檢測工具312

15.13自動化缺陷管理313

15.13.1何謂自動化缺陷管理313

15.13.2典型的缺陷管理工具314

15.14自動化缺陷報告生成314

15.14.1何謂自動化缺陷報告生成314

15.14.2缺陷報告生成工具315

15.15缺陷檢測自動化的發展歷程316

15.16推薦閱讀317

15.17思考練習題317

結語318