內容簡介
軟體質量保證與軟體測試技術在過去的幾十年中一直是軟體開發的重要課題,基於數學知識的軟體質量與軟體測試方面的研究更是一個全新的研究領域。本書收集了作者在這方面的多篇論文,也收集了這一領域知名專家的研究成果,並對這些成果進行再探索,形成了自己的見解,內容包括:緒論,主要包括軟體危機、軟體工程的基本概念,軟體質量、軟體測試技術的國內外研究現狀及發展趨勢;軟體生命周期及軟體開發過程的研究現狀;軟體質量保證方法分析;軟體質量管理;軟體測試的基本概念及測試技術探索,主要包括軟體可靠性測試的基本概念及常用方法;蒙特卡羅方法和馬爾可夫鏈;蒙特卡羅方法和馬爾可夫鏈模型在軟體可靠性測試中的套用;測試策略問題的討論;網路安全技術的背景與探索。
本書結構合理,集中講述了在軟體質量保證與軟體測試技術方面的探索成果,適合從事軟體質量保證與軟體測試的技術人員與有關院校師生學習參考。
目錄
第1 章 緒論……………………………………………………………………………… 1
1. 1 軟體的發展……………………………………………………………………… 1
1. 2 軟體的基本概念………………………………………………………………… 3
1. 2. 1 軟體的特點……………………………………………………………… 4
1. 2. 2 軟體的分類……………………………………………………………… 5
1. 2. 3 軟體構件………………………………………………………………… 6
1. 2. 4 軟體套用的分類…………………………………………………………… 6
1. 2. 5 軟體技術的發展趨勢……………………………………………………… 7
1. 3 軟體工程………………………………………………………………………… 9
1. 3. 1 軟體危機………………………………………………………………… 10
1. 3. 2 軟體工程的定義及其研究內容………………………………………… 11
1. 3. 3 軟體工程的作用………………………………………………………… 14
1. 3. 4 軟體工程技術發展歷程………………………………………………… 15
1. 3. 5 軟體工程的基本原理…………………………………………………… 16
1. 4 軟體可靠性的研究現狀及軟體測試的發展方向……………………………… 18
1. 4. 1 軟體可靠性……………………………………………………………… 18
1. 4. 2 軟體可靠性的研究……………………………………………………… 19
1. 4. 3 軟體可靠性工程………………………………………………………… 20
1. 4. 4 軟體測試技術的發展方向……………………………………………… 21
1. 5 軟體開發工具簡介……………………………………………………………… 21
1. 5. 1 CASE 工具的作用與分類………………………………………………… 21
1. 5. 2 幾種常用的CASE 工具簡介…………………………………………… 23
第2 章 軟體生命周期與軟體過程的研究現狀……………………………………… 26
2. 1 軟體生命周期…………………………………………………………………… 26
2. 1. 1 軟體生命周期的概念…………………………………………………… 26
2. 1. 2 生命周期法的工作流程………………………………………………… 27
2. 2 軟體開發過程模型……………………………………………………………… 28
2. 2. 1 瀑布模型………………………………………………………………… 28
2. 2. 2 原型模型………………………………………………………………… 30
2. 2. 3 快速套用開發模型……………………………………………………… 32
2. 2. 4 螺旋模型………………………………………………………………… 33
2. 2. 5 增量模型………………………………………………………………… 34
2. 2. 6 並發過程模型…………………………………………………………… 35
2. 2. 7 基於構件的開發模型…………………………………………………… 35
2. 2. 8 形式化方法模型………………………………………………………… 36
2. 2. 9 第四代技術……………………………………………………………… 36
2. 3 UML 代表著軟體建模的發展趨勢…………………………………………… 37
2. 3. 1 UML 的現狀……………………………………………………………… 37
2. 3. 2 UML 概述………………………………………………………………… 38
2. 3. 3 常用的UML 圖…………………………………………………………… 40
2. 4 統一過程………………………………………………………………………… 47
2. 4. 1 軟體生命周期中的各個階段…………………………………………… 49
2. 4. 2 RUP 的核心工作流……………………………………………………… 50
2. 5 軟體可行性研究………………………………………………………………… 51
2. 6 軟體工程實踐中的項目管理…………………………………………………… 53
2. 6. 1 項目管理概述…………………………………………………………… 53
2. 6. 2 人員的組織與管理……………………………………………………… 54
2. 6. 3 項目計畫………………………………………………………………… 55
2. 6. 4 風險管理………………………………………………………………… 55
2. 6. 5 軟體質量保證…………………………………………………………… 58
第3 章 軟體質量保證方法分析……………………………………………………… 60
3. 1 開發環境的創建………………………………………………………………… 60
3. 2 軟體生命過程的度量…………………………………………………………… 64
3. 2. 1 軟體開發過程的度量和開發過程改進方法……………………………… 65
3. 2. 2 項目度量………………………………………………………………… 66
3. 3 軟體測量………………………………………………………………………… 67
3. 3. 1 面向規模的度量………………………………………………………… 67
3. 3. 2 面向功能的度量………………………………………………………… 68
3. 3. 3 擴展的功能點度量……………………………………………………… 69
3. 4 調和不同的度量方法…………………………………………………………… 71
3. 5 軟體質量度量…………………………………………………………………… 72
3. 5. 1 影響質量因素的概述…………………………………………………… 72
3. 5. 2 測量質量………………………………………………………………… 72
3. 5. 3 缺陷排除效率…………………………………………………………… 73
3. 5. 4 在軟體過程中集成度量………………………………………………… 74
3. 6 開發軟體的估算………………………………………………………………… 75
3. 6. 1 軟體開發範圍…………………………………………………………… 75
3. 6. 2 軟體開發所需的資源…………………………………………………… 75
3. 6. 3 開發軟體項目的估算…………………………………………………… 77
3. 7 估算模型………………………………………………………………………… 79
3. 7. 1 估算模型的結構………………………………………………………… 79
3. 7. 2 COCOMO 模型…………………………………………………………… 80
3. 7. 3 軟體方程式……………………………………………………………… 81
3. 8 軟體複審………………………………………………………………………… 82
3. 8. 1 軟體缺陷對成本的影響………………………………………………… 82
3. 8. 2 正式技術複審…………………………………………………………… 83
3. 9 軟體質量的量化………………………………………………………………… 85
3. 9. 1 量化的步驟……………………………………………………………… 85
3. 9. 2 SQA 計畫………………………………………………………………… 86
3. 9. 3 SQA 計畫的數據化……………………………………………………… 87
第4 章 軟體質量管理…………………………………………………………………… 89
4. 1 軟體質量保證…………………………………………………………………… 89
4. 1. 1 軟體質量屬性…………………………………………………………… 89
4. 1. 2 軟體質量保證體系與實施……………………………………………… 90
4. 2 軟體能力成熟度模型(CMM) ………………………………………………… 93
4. 2. 1 CMM 的產生……………………………………………………………… 94
4. 2. 2 CMM 內容簡介…………………………………………………………… 95
4. 2. 3 CMM 的套用…………………………………………………………… 103
4. 3 個體軟體過程………………………………………………………………… 107
4. 4 幾種軟體質量度量標準的分析與比較……………………………………… 110
第5 章 軟體測試的基本概念及測試技術探索……………………………………… 114
5. 1 軟體測試概念………………………………………………………………… 114
5. 1. 1 軟體缺陷典型案例分析………………………………………………… 114
5. 1. 2 軟體測試的基本概念…………………………………………………… 115
5. 1. 3 軟體測試的目標和原則………………………………………………… 116
5. 2 傳統測試方法分類及測試用例……………………………………………… 119
5. 2. 1 測試方法分類…………………………………………………………… 119
5. 2. 2 測試用例……………………………………………………………… 121
5. 3 黑盒測試及其測試用例設計………………………………………………… 122
5. 3. 1 等價類劃分法…………………………………………………………… 122
5. 3. 2 邊界值分析法…………………………………………………………… 124
5. 3. 3 錯誤推測法…………………………………………………………… 124
5. 4 白盒測試及其測試用例設計………………………………………………… 124
5. 4. 1 靜態白盒分析———代碼審查…………………………………………… 125
5. 4. 2 動態白盒測試…………………………………………………………… 126
5. 5 軟體測試策略………………………………………………………………… 133
5. 5. 1 測試流程與組織………………………………………………………… 133
5. 5. 2 測試計畫……………………………………………………………… 136
5. 5. 3 單元測試……………………………………………………………… 137
5. 5. 4 集成測試……………………………………………………………… 141
5. 5. 5 確認測試……………………………………………………………… 143
5. 5. 6 系統測試……………………………………………………………… 145
5. 5. 7 測試分析報告…………………………………………………………… 146
5. 6 面向對象的基本概念………………………………………………………… 146
5. 6. 1 面向對象的軟體開發…………………………………………………… 147
5. 6. 2 面向對象技術對傳統測試的影響……………………………………… 148
5. 7 面向對象的測試策略與步驟………………………………………………… 149
5. 7. 1 測試策略與測試層次…………………………………………………… 149
5. 7. 2 測試步驟……………………………………………………………… 150
5. 8 當今軟體測試前沿理論及常用的測試工具………………………………… 153
5. 8. 1 當今軟體測試前沿理論………………………………………………… 153
5. 8. 2 幾種常用的測試工具…………………………………………………… 155
第6 章 蒙特卡羅方法及馬爾可夫鏈………………………………………………… 158
6. 1 蒙特卡羅方法………………………………………………………………… 158
6. 1. 1 蒙特卡羅方法概述……………………………………………………… 158
6. 1. 2 蒙特卡羅方法的基本思想……………………………………………… 159
6. 2 蒙特卡羅方法的基本概念…………………………………………………… 161
6. 3 蒙特卡羅方法的套用………………………………………………………… 164
6. 3. 1 蒙特卡羅方法在仿真方面的套用……………………………………… 164
6. 3. 2 利用蒲豐投針實驗計算圓周率π 的值………………………………… 164
6. 4 馬爾可夫鏈…………………………………………………………………… 167
6. 4. 1 馬爾可夫鏈的基本思想………………………………………………… 167
6. 4. 2 馬爾可夫鏈的基本概念………………………………………………… 168
6. 5 馬爾可夫鏈的套用…………………………………………………………… 169
6. 5. 1 科學中的套用…………………………………………………………… 169
6. 5. 2 人力資源中的套用……………………………………………………… 169
6. 5. 3 馬爾可夫模型案例分析………………………………………………… 170
第7 章 蒙特卡羅方法和馬爾可夫鏈模型在軟體可靠性測試中的套用………… 176
7. 1 馬爾可夫鏈模型在軟體可靠性測試結果分析中的套用…………………… 176
7. 1. 1 馬爾可夫鏈的分析……………………………………………………… 176
7. 1. 2 基於馬爾可夫鏈模型的測試結果評判準則…………………………… 177
7. 2 基於蒙特卡羅方法的測試模型……………………………………………… 178
7. 2. 1 測試模型……………………………………………………………… 178
7. 2. 2 測試策略……………………………………………………………… 179
7. 2. 3 測試策略的套用………………………………………………………… 180
7. 3 幾種測試用例的生成方法研究……………………………………………… 186
7. 3. 1 基於無理數產生的測試用例產生方法………………………………… 186
7. 3. 2 基於數據倉庫的數據挖掘方法………………………………………… 190
7. 3. 3 基於Gibbs 抽樣的測試用例生成技術研究…………………………… 193
7. 3. 4 基於粗糙集的不完備信息系統統計評判填補方法…………………… 195
7. 3. 5 基於馬爾可夫鏈的測試用例生成方法………………………………… 199
7. 4 幾種軟體系統可靠性中的最佳化問題研究…………………………………… 204
7. 4. 1 一種軟體系統可靠性最佳化的方法……………………………………… 204
7. 4. 2 一種最佳化軟體可靠性測試費用的模型………………………………… 208
7. 4. 3 軟體可靠性測試中不確定性問題的研究……………………………… 211
7. 4. 4 基於貝葉斯方法的配置管理研究……………………………………… 214
第8 章 測試策略問題的討論………………………………………………………… 218
8. 1 完全測試模型………………………………………………………………… 218
8. 2 單元測試……………………………………………………………………… 219
8. 2. 1 單元測試的問題………………………………………………………… 219
8. 2. 2 單元測試規程…………………………………………………………… 221
8. 3 集成測試……………………………………………………………………… 222
8. 3. 1 自頂向下集成…………………………………………………………… 222
8. 3. 2 自底向上集成…………………………………………………………… 223
8. 3. 3 回歸測試……………………………………………………………… 223
8. 3. 4 關於集成測試的討論…………………………………………………… 224
8. 3. 5 集成測試文檔…………………………………………………………… 224
8. 4 確認測試和系統測試………………………………………………………… 225
8. 4. 1 確認測試……………………………………………………………… 225
8. 4. 2 系統測試……………………………………………………………… 226
8. 5 調試的技巧…………………………………………………………………… 228
8. 5. 1 調試過程……………………………………………………………… 228
8. 5. 2 調試方法……………………………………………………………… 229
8. 6 面向對象測試………………………………………………………………… 230
8. 6. 1 測試概念的延伸………………………………………………………… 231
8. 6. 2 OOA 和OOD 模型的測試……………………………………………… 231
8. 7 面向對象的測試策略………………………………………………………… 232
8. 8 面向對象的測試用例設計…………………………………………………… 234
8. 8. 1 OO 概念的測試用例設計的含義……………………………………… 234
8. 8. 2 傳統測試用例設計方法的可用性……………………………………… 234
8. 8. 3 基於故障的測試………………………………………………………… 234
8. 8. 4 OO 編程對測試的影響………………………………………………… 235
8. 8. 5 測試用例和類層次……………………………………………………… 236
8. 8. 6 基於場景的測試設計…………………………………………………… 236
8. 8. 7 測試表層結構和深層結構……………………………………………… 237
8. 9 類級別的測試方法…………………………………………………………… 238
8. 10 維護與再生工程……………………………………………………………… 240
8. 10. 1 軟體維護……………………………………………………………… 240
8. 10. 2 軟體維護中的一些問題……………………………………………… 242
8. 10. 3 再生工程……………………………………………………………… 244
8. 11 國內測試策略套用狀況分析………………………………………………… 246
8. 11. 1 開發者對代碼質量管理的狀況……………………………………… 246
8. 11. 2 開發者對軟體測試的方法和工具…………………………………… 247
第9 章 網路安全技術的背景與探索………………………………………………… 251
9. 1 網路安全概念………………………………………………………………… 251
9. 1. 1 網路安全定義…………………………………………………………… 251
9. 1. 2 網路安全體系結構……………………………………………………… 252
9. 2 網路黑客攻擊及預防………………………………………………………… 253
9. 2. 1 網路黑客……………………………………………………………… 253
9. 2. 2 預防措施……………………………………………………………… 254
9. 3 防火牆技術…………………………………………………………………… 263
9. 3. 1 防火牆的基本知識……………………………………………………… 263
9. 3. 2 防火牆的配置結構……………………………………………………… 264
9. 3. 3 防火牆的基本類型……………………………………………………… 264
9. 3. 4 防火牆的基本技術……………………………………………………… 266
9. 3. 5 防火牆的安全策略……………………………………………………… 267
9. 3. 6 防火牆的局限性………………………………………………………… 268
9. 4 虛擬專用網(VPN)技術……………………………………………………… 268
9. 4. 1 VPN 的概念…………………………………………………………… 269
9. 4. 2 VPN 的基本技術……………………………………………………… 271
9. 4. 3 VPN 的安全策略……………………………………………………… 271
9. 5 網路入侵檢測………………………………………………………………… 272
9. 5. 1 入侵檢測系統的功能…………………………………………………… 272
9. 5. 2 入侵檢測系統的類型…………………………………………………… 273
9. 5. 3 入侵檢測的主要技術…………………………………………………… 273
9. 5. 4 入侵檢測系統的實現原理……………………………………………… 274
9. 6 一種混合入侵檢測系統設計與研究………………………………………… 275
9. 6. 1 引言…………………………………………………………………… 275
9. 6. 2 系統的總體結構設計…………………………………………………… 276
9. 6. 3 系統的檢測分析引擎…………………………………………………… 278
9. 6. 4 系統檢測分析引擎的分組交換檢測機制及系統性能分析…………… 279
9. 6. 5 基於分組交換檢測機制的Snort 系統的改進…………………………… 280
9. 7 網路安全防範………………………………………………………………… 280
9. 7. 1 安全防範策略制定原則………………………………………………… 281
9. 7. 2 網路安全防範體系結構………………………………………………… 282
9. 7. 3 風險管理……………………………………………………………… 284
9. 7. 4 災難恢復……………………………………………………………… 285
9. 8 客戶/伺服器系統的設計……………………………………………………… 286
9. 8. 1 客戶/伺服器系統的結構及特點……………………………………… 286
9. 8. 2 對客戶/伺服器系統的軟體工程……………………………………… 291
9. 8. 3 Web 客戶/伺服器模型………………………………………………… 294
9. 9 客戶/伺服器系統的測試問題………………………………………………… 297
參考文獻………………………………………………………………………………… 300