實用軟件工程(第4版)
第
1
章章
目 錄 STYLEREF "標題 1,章,章名,實例名稱" \* MERGEFORMAT
第1章 概述 1
1.1 軟件工程的產生 1
1.1.1 軟件工程發展史 1
1.1.2 軟件危機 2
1.2 軟件工程學 4
1.2.1 什么是軟件 4
1.2.2 什么是軟件工程 4
1.2.3 軟件工程學的內容 4
1.2.4 軟件過程 7
1.2.5 軟件工程的基本原理 7
1.3 軟件生命周期 7
1.3.1 軟件生命周期的定義 7
1.3.2 軟件生命周期劃分階段的原則 8
1.3.3 軟件生命周期各階段的任務 8
1.4 軟件開發模型 9
1.4.1 瀑布模型 9
1.4.2 快速原型模型 11
1.4.3 增量模型 12
1.4.4 噴泉模型 13
1.4.5 螺旋模型 14
1.4.6 統一過程 15
小結 16
習題1 17
第2章 軟件計劃 19
2.1 軟件問題定義及可行性研究 19
2.1.1 軟件問題定義 19
2.1.2 可行性研究 20
2.1.3 制訂項目開發計劃 21
2.2 需求分析的任務 22
2.2.1 確定目標系統的具體要求 22
2.2.2 建立目標系統的邏輯模型 24
2.2.3 軟件需求規格說明 24
2.2.4 修正系統開發計劃 25
2.2.5 制訂初步的系統測試計劃 25
2.2.6 編寫初步的用戶手冊 25
2.2.7 編寫數據要求說明書 26
2.3 需求分析步驟 27
2.3.1 進行調查研究 27
2.3.2 分析和描述系統的邏輯模型 27
2.3.3 復審 28
2.4 實體-關系圖 28
2.4.1 實體 29
2.4.2 屬性 29
2.4.3 關系 29
2.5 數據流圖 30
2.5.1 數據流圖的基本符號 30
2.5.2 數據流圖的附加符號 31
2.5.3 畫數據流圖的步驟 32
2.5.4 幾點注意事項 32
2.6 狀態轉換圖 35
2.7 數據字典 36
2.7.1 數據字典的內容 36
2.7.2 數據字典使用的符號 37
2.7.3 數據字典與圖形工具 38
2.8 需求分析的其他圖形工具 38
2.8.1 層次圖 39
2.8.2 Warnier圖 39
2.8.3 IPO圖 40
2.9 軟件計劃階段文檔 40
2.9.1 軟件計劃階段文檔的編寫步驟 40
2.9.2 軟件計劃實例 41
小結 46
習題2 46
第3章 結構化設計 48
3.1 軟件設計步驟 48
3.1.1 概要設計步驟 48
3.1.2 詳細設計的基本任務 50
3.2 軟件結構設計 51
3.2.1 軟件結構設計的基本原理 51
3.2.2 模塊化 53
3.2.3 模塊獨立性 54
3.2.4 模塊設計啟發規則 58
3.3 軟件結構設計的圖形工具 59
3.3.1 層次圖(或HIPO圖) 59
3.3.2 結構圖 60
3.4 面向數據流的設計方法 61
3.5 過程設計工具 63
3.5.1 流程圖 63
3.5.2 盒圖 67
3.5.3 PAD圖 69
3.5.4 判定表 70
3.5.5 判定樹 71
3.5.6 過程設計語言 71
3.6 系統人機界面設計 72
3.6.1 人機界面設計問題 72
3.6.2 人機界面設計過程 73
3.6.3 評估界面設計的標準 73
3.6.4 界面設計指南 73
3.7 數據代碼設計 75
3.7.1 代碼設計的目的 75
3.7.2 代碼設計的原則 75
3.7.3 代碼種類 76
3.7.4 代碼設計方法 78
3.8 面向數據結構的設計方法 78
3.9 軟件設計文檔 82
3.9.1 概要設計說明書 82
3.9.2 數據庫設計說明書 83
3.9.3 詳細設計說明書 84
3.9.4 操作手冊編寫提示 85
小結 86
習題3 86
第4章 軟件編碼和軟件測試 89
4.1 結構化程序設計 89
4.1.1 程序設計語言的選擇 89
4.1.2 程序設計風格 91
4.2 軟件測試目標 93
4.3 軟件測試方法 94
4.3.1 靜態分析與動態測試 94
4.3.2 黑盒法與白盒法 94
4.4 軟件測試步驟 95
4.4.1 模塊測試 95
4.4.2 集成測試 95
4.4.3 程序審查會和人工運行 96
4.4.4 確認測試 97
4.4.5 平行運行 97
4.5 設計軟件測試方案 98
4.5.1 等價類劃分法 98
4.5.2 邊界值分析法 99
4.5.3 錯誤推測法 99
4.5.4 邏輯覆蓋法 99
4.5.5 程序環形復雜度的度量 102
4.5.6 因果圖法 105
4.5.7 用基本路徑覆蓋法設計測試用例 107
4.6 軟件測試原則和策略 110
4.6.1 軟件測試原則 110
4.6.2 實用測試策略 111
4.7 軟件調試、驗證與確認 111
4.7.1 軟件調試 111
4.7.2 軟件驗證 112
4.7.3 軟件確認 112
4.8 軟件測試文檔 113
小結 114
習題4 114
第5章 軟件維護 118
5.1 軟件維護的種類、過程和副作用 118
5.1.1 軟件維護的種類 118
5.1.2 軟件維護的特點 119
5.1.3 軟件維護的過程 120
5.1.4 軟件維護的副作用 123
5.2 軟件的可維護性 124
5.2.1 決定可維護性的因素 124
5.2.2 可維護性的度量 124
5.2.3 如何提高軟件的可維護性 125
小結 126
習題5 126
第6章 面向對象方法學與UML 128
6.1 面向對象方法概述 128
6.1.1 面向對象方法學的要素和優點 129
6.1.2 面向對象方法的概念 130
6.2 UML概述 133
6.2.1 UML的發展 133
6.2.2 UML的內容 133
6.3 UML圖 135
6.3.1 用例圖 135
6.3.2 類圖和包 137
6.3.3 對象圖 141
6.3.4 狀態圖 142
6.3.5 順序圖 143
6.3.6 活動圖 144
6.3.7 協作圖 144
6.3.8 構件圖 145
6.3.9 部署圖 145
6.4 UML的應用 147
6.4.1 UML模型 147
6.4.2 UML視圖 148
6.4.3 UML使用準則 150
6.4.4 UML的擴展機制 151
6.4.5 UML的應用領域 152
小結 153
習題6 153
第7章 面向對象軟件設計與實現 155
7.1 面向對象分析 155
7.1.1 面向對象分析過程 155
7.1.2 面向對象分析原則 156
7.2 建立對象模型 157
7.2.1 建立對象模型的基本方法 157
7.2.2 確定對象和類 158
7.2.3 確定類的相互關系 159
7.2.4 劃分主題 162
7.3 建立動態模型 164
7.4 建立功能模型 167
7.5 面向對象設計 169
7.5.1 系統設計 169
7.5.2 對象設計 172
7.5.3 面向對象設計的準則 173
7.5.4 面向對象設計的啟發規則 174
7.6 面向對象系統的實現 174
7.6.1 選擇程序設計語言 174
7.6.2 面向對象程序設計風格 175
7.6.3 面向對象實現的人員分工 177
7.7 面向對象的測試 177
7.7.1 面向對象的測試策略 177
7.7.2 面向對象的測試步驟 179
7.8 面向對象方法實例 183
7.8.1 面向對象分析實例 183
7.8.2 面向對象的設計實例 188
小結 193
習題7 193
第8章 軟件工程技術的發展 196
8.1 CASE技術 196
8.2 軟件工具 198
8.2.1 軟件工具的功能 198
8.2.2 軟件工具的性能 199
8.2.3 軟件工具的分類 199
8.3 軟件開發環境 200
8.4 軟件重用 202
8.4.1 可重用的軟件成分 202
8.4.2 軟件重用過程模型 203
8.4.3 開發可重用的軟件構件 204
8.4.4 分類和檢索軟件構件 205
8.5 RUP 206
8.6 Rational Rose簡介 208
8.6.1 Rational Rose 界面 210
8.6.2 Rational Rose模型的4個視圖 211
8.6.3 Rational Rose的使用 212
8.7 幾種軟件構件模型比較 213
8.7.1 CORBA 213
8.7.2 COM+/DCOM 214
8.7.3 JavaBean 214
8.7.4 三種構件模型的分析比較 216
8.7.5 軟件構架技術 217
小結 218
習題8 218
第9章 軟件工程管理 219
9.1 軟件工程管理概述 219
9.2 軟件規模估算 220
9.2.1 軟件開發成本估算方法 220
9.2.2 代碼行技術 221
9.2.3 功能點技術 222
9.2.4 COCOMOⅡ模型 223
9.3 進度計劃 225
9.3.1 Gantt圖 225
9.3.2 工程網絡技術 226
9.4 人員組織 228
9.5 軟件配置管理 231
9.6 軟件質量保證 233
9.6.1 軟件質量的特性 233
9.6.2 軟件質量保證措施 234
9.7 軟件開發風險管理 235
9.7.1 軟件開發風險的分類 236
9.7.2 軟件開發風險的識別 237
9.7.3 軟件開發的風險預測 237
9.7.4 處理軟件開發風險的策略 239
9.8 軟件工程標準與軟件文檔 240
9.8.1 軟件工程標準 240
9.8.2 軟件文檔的編寫 242
小結 243
習題9 243
第10章 實例——軟件開發實例與軟件工程實踐環節 245
10.1 問題定義 245
10.2 可行性研究 245
10.2.1 技術可行性 246
10.2.2 經濟可行性 246
10.3 需求分析 246
10.4 概要設計 248
10.4.1 數據庫結構設計 248
10.4.2 系統結構設計 248
10.4.3 設計測試方案 249
10.5 詳細設計 250
10.5.1 系統界面設計 250
10.5.2 考前處理 251
10.5.3 輸入設計 251
10.5.4 成績處理 252
10.5.5 錄用過程設計 252
10.5.6 輸出設計 253
10.5.7 測試用例設計 253
10.6 程序設計提示 255
10.7 軟件測試 256
10.8 軟件工程實踐環節 256
10.8.1 軟件工程課程設計實驗指導書(供參考) 257
10.8.2 職工工資管理系統 258
10.8.3 某校醫療費管理系統 258
10.8.4 學生成績管理系統 259
10.8.5 患者監護系統 259
10.8.6 銀行儲蓄管理系統 260
10.8.7 旅館客房管理 260
10.8.8 辦公室管理系統 260
10.8.9 商品銷售管理系統 261
習題10 262
附錄A 部分習題解答 263
參考文獻 276_x00C_