本書是軟件工程領(lǐng)域的經(jīng)典教材。全書由5篇(16章)構(gòu)成,第1篇(第1、2章)講述軟件工程與軟件過程;第2篇講述傳統(tǒng)方法學(xué)(第3~5章),包括結(jié)構(gòu)化分析、設(shè)計與實現(xiàn);第3篇講述面向?qū)ο蠓椒▽W(xué)(第6~10章),包括面向?qū)ο蟮母拍、模型、分析、設(shè)計、實現(xiàn),同時介紹了統(tǒng)一建模語言UML;第4篇講述軟件項目管理(第11~14章),包括軟件項目的計劃、組織和控制,軟件維護(hù)與軟件文檔;第5篇講述軟件工程的高級課題(第15、16章),包括形式化方法和軟件重用! ”緯鴥(nèi)容新穎、實例豐富,可以作為高等院!败浖こ獭闭n程的教材或教學(xué)參考書,也可以供程序員、軟件測試工程師、系統(tǒng)工程師以及軟件項目經(jīng)理等相關(guān)人員閱讀參考。
1.作者權(quán)威,教材經(jīng)典。2.配套建設(shè),教輔資源豐富。3.教材內(nèi)容與時俱進(jìn),教材習(xí)題遴選典型實用。
目 錄
第1篇 軟件工程與軟件過程
第1章 軟件工程概述 1
1.1 軟件危機(jī)與軟件工程的起源 1
1.1.1 計算機(jī)系統(tǒng)的發(fā)展歷程 1
1.1.2 軟件危機(jī)介紹 2
1.1.3 產(chǎn)生軟件危機(jī)的原因 2
1.1.4 消除軟件危機(jī)的途徑 4
1.2 軟件工程 5
1.2.1 什么是軟件工程 5
1.2.2 軟件工程的基本原理 5
1.3 軟件工程包含的領(lǐng)域 7
小結(jié) 9 目 錄
第1篇 軟件工程與軟件過程
第1章 軟件工程概述 1
1.1 軟件危機(jī)與軟件工程的起源 1
1.1.1 計算機(jī)系統(tǒng)的發(fā)展歷程 1
1.1.2 軟件危機(jī)介紹 2
1.1.3 產(chǎn)生軟件危機(jī)的原因 2
1.1.4 消除軟件危機(jī)的途徑 4
1.2 軟件工程 5
1.2.1 什么是軟件工程 5
1.2.2 軟件工程的基本原理 5
1.3 軟件工程包含的領(lǐng)域 7
小結(jié) 9
習(xí)題 9
第2章 軟件過程 11
2.1 軟件生命周期的基本任務(wù) 11
2.2 瀑布模型 14
2.3 快速原型模型 16
2.4 增量模型 17
2.5 螺旋模型 18
2.6 噴泉模型 19
2.7 Rational統(tǒng)一過程 20
2.7.1 最佳實踐 21
2.7.2 RUP的十大要素 22
2.7.3 RUP生命周期 24
2.8 敏捷過程與極限編程 26
2.8.1 敏捷過程概述 26
2.8.2 極限編程 27
2.9 能力成熟度模型 29
2.9.1 能力成熟度模型的結(jié)構(gòu) 29
2.9.2 能力成熟度等級 30
2.9.3 關(guān)鍵過程域 31
2.9.4 應(yīng)用CMM 32
小結(jié) 32
習(xí)題 33
第2篇 傳統(tǒng)方法學(xué)
第3章 結(jié)構(gòu)化分析 35
3.1 概述 35
3.2 與用戶溝通的方法 36
3.2.1 訪談 36
3.2.2 簡易的應(yīng)用規(guī)格說明技術(shù) 37
3.2.3 軟件原型 38
3.3 分析建模與規(guī)格說明 39
3.3.1 分析建!39
3.3.2 軟件需求規(guī)格說明 39
3.4 實體—關(guān)系圖 41
3.5 數(shù)據(jù)流圖 42
3.5.1 數(shù)據(jù)流圖符號 43
3.5.2 例子 44
3.5.3 命名 46
3.6 狀態(tài)轉(zhuǎn)換圖 47
3.6.1 狀態(tài) 47
3.6.2 事件 47
3.6.3 符號 48
3.6.4 例子 48
3.7 數(shù)據(jù)字典 49
3.8 結(jié)構(gòu)化分析實例 51
3.8.1 問題陳述 51
3.8.2 問題定義 51
3.8.3 可行性研究 52
3.8.4 需求分析 57
小結(jié) 62
習(xí)題 63
第4章 結(jié)構(gòu)化設(shè)計 67
4.1 結(jié)構(gòu)化設(shè)計與結(jié)構(gòu)化分析的關(guān)系 67
4.2 軟件設(shè)計的概念和原理 68
4.2.1 模塊化 68
4.2.2 抽象 70
4.2.3 逐步求精 70
4.2.4 信息隱藏 71
4.3 模塊獨立 72
4.3.1 耦合 72
4.3.2 內(nèi)聚 73
4.4 啟發(fā)規(guī)則 74
4.5 表示軟件結(jié)構(gòu)的圖形工具 76
4.5.1 層次圖和HIPO圖 76
4.5.2 結(jié)構(gòu)圖 78
4.6 面向數(shù)據(jù)流的設(shè)計方法 79
4.6.1 概念 79
4.6.2 變換分析 80
4.6.3 事務(wù)分析 85
4.6.4 設(shè)計優(yōu)化 86
4.7 人—機(jī)界面設(shè)計 87
4.7.1 人—機(jī)界面設(shè)計問題 87
4.7.2 人—機(jī)界面設(shè)計過程 88
4.7.3 界面設(shè)計指南 89
4.8 過程設(shè)計 91
4.9 過程設(shè)計的工具 92
4.9.1 程序流程圖 93
4.9.2 盒圖(N-S圖) 93
4.9.3 PAD圖 94
4.9.4 判定表 95
4.9.5 判定樹 96
4.9.6 過程設(shè)計語言 97
4.10 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法 97
4.10.1 Jackson圖 98
4.10.2 改進(jìn)的Jackson圖 99
4.10.3 Jackson方法 99
小結(jié) 103
習(xí)題 104
第5章 結(jié)構(gòu)化實現(xiàn) 106
5.1 編碼 107
5.1.1 選擇程序設(shè)計語言 107
5.1.2 編碼風(fēng)格 108
5.2 軟件測試基礎(chǔ) 110
5.2.1 測試目標(biāo) 110
5.2.2 黑盒測試和白盒測試 110
5.2.3 測試準(zhǔn)則 111
5.2.4 流圖 111
5.3 邏輯覆蓋 112
5.4 控制結(jié)構(gòu)測試 115
5.4.1 基本路徑測試 115
5.4.2 條件測試 117
5.4.3 數(shù)據(jù)流測試 119
5.4.4 循環(huán)測試 120
5.5 黑盒測試技術(shù) 121
5.5.1 等價劃分 121
5.5.2 邊界值分析 123
5.5.3 錯誤推測 124
5.6 測試策略 124
5.6.1 測試步驟 125
5.6.2 單元測試 125
5.6.3 集成測試 127
5.6.4 確認(rèn)測試 130
5.7 調(diào)試 131
5.7.1 調(diào)試過程 131
5.7.2 調(diào)試途徑 132
5.8 軟件可靠性 133
5.8.1 基本概念 134
5.8.2 估算平均無故障時間的方法 134
小結(jié) 136
習(xí)題 137
第3篇 面向?qū)ο蠓椒▽W(xué)
第6章 面向?qū)ο蠓椒▽W(xué)導(dǎo)論 140
6.1 面向?qū)ο蟪绦蛟O(shè)計實例 140
6.1.1 用對象分解取代功能分解 140
6.1.2 設(shè)計類等級 142
6.1.3 定義屬性和服務(wù) 143
6.2 面向?qū)ο蠓椒▽W(xué)概述 144
6.2.1 面向?qū)ο蠓椒▽W(xué)的要點 144
6.2.2 面向?qū)ο蟮能浖^程 146
6.3 面向?qū)ο蠓椒▽W(xué)的主要優(yōu)點 146
6.4 面向?qū)ο蟮母拍睢?49
6.4.1 對象 150
6.4.2 其他概念 152
6.5 面向?qū)ο蠼!?55
6.6 對象模型 156
6.6.1 表示類的符號 156
6.6.2 表示關(guān)系的符號 158
6.7 動態(tài)模型 162
6.8 功能模型 163
6.9 3種模型之間的關(guān)系 163
小結(jié) 164
習(xí)題 164
第7章 面向?qū)ο蠓治觥?66
7.1 分析過程 166
7.1.1 概述 166
7.1.2 3個子模型與5個層次 167
7.2 需求陳述 168
7.2.1 書寫要點 168
7.2.2 例子 168
7.3 建立對象模型 169
7.3.1 確定類與對象 170
7.3.2 確定關(guān)聯(lián) 171
7.3.3 劃分主題 174
7.3.4 確定屬性 174
7.3.5 識別繼承關(guān)系 176
7.3.6 反復(fù)修改 177
7.4 建立動態(tài)模型 179
7.4.1 編寫腳本 179
7.4.2 設(shè)想用戶界面 180
7.4.3 畫事件跟蹤圖 181
7.4.4 畫狀態(tài)圖 182
7.4.5 審查動態(tài)模型 184
7.5 建立功能模型 184
7.6 定義服務(wù) 186
7.7 面向?qū)ο蠓治鰧嵗?86
7.7.1 需求陳述 187
7.7.2 建立對象模型 187
7.7.3 建立動態(tài)模型 188
7.7.4 建立功能模型 190
7.7.5 進(jìn)一步完善 190
小結(jié) 191
習(xí)題 192
第8章 面向?qū)ο笤O(shè)計 194
8.1 面向?qū)ο笤O(shè)計的準(zhǔn)則 194
8.2 啟發(fā)規(guī)則 196
8.3 系統(tǒng)分解 197
8.3.1 子系統(tǒng)之間的兩種交互方式 198
8.3.2 組織系統(tǒng)的兩種方案 199
8.3.3 設(shè)計系統(tǒng)的拓?fù)浣Y(jié)構(gòu) 199
8.4 設(shè)計問題域子系統(tǒng) 199
8.5 設(shè)計人—機(jī)交互子系統(tǒng) 201
8.5.1 設(shè)計人—機(jī)交互界面的準(zhǔn)則 201
8.5.2 設(shè)計人—機(jī)交互子系統(tǒng)的策略 202
8.6 設(shè)計任務(wù)管理子系統(tǒng) 203
8.6.1 分析并發(fā)性 203
8.6.2 設(shè)計任務(wù)管理子系統(tǒng) 204
8.7 設(shè)計數(shù)據(jù)管理子系統(tǒng) 205
8.7.1 選擇數(shù)據(jù)存儲管理模式 205
8.7.2 設(shè)計數(shù)據(jù)管理子系統(tǒng) 206
8.7.3 例子 207
8.8 設(shè)計類中的服務(wù) 208
8.8.1 確定類中應(yīng)有的服務(wù) 208
8.8.2 設(shè)計實現(xiàn)服務(wù)的方法 208
8.9 設(shè)計關(guān)聯(lián) 209
8.10 設(shè)計優(yōu)化 210
8.10.1 確定優(yōu)先級 210
8.10.2 提高效率的幾項技術(shù) 211
8.10.3 調(diào)整繼承關(guān)系 212
8.11 面向?qū)ο蠓治雠c設(shè)計實例 213
8.11.1 面向?qū)ο蠓治觥?14
8.11.2 面向?qū)ο笤O(shè)計 215
小結(jié) 220
習(xí)題 220
第9章 面向?qū)ο髮崿F(xiàn) 222
9.1 程序設(shè)計語言 222
9.1.1 面向?qū)ο笳Z言的優(yōu)點 222
9.1.2 面向?qū)ο笳Z言的技術(shù)特點 223
9.1.3 選擇面向?qū)ο笳Z言 226
9.2 程序設(shè)計風(fēng)格 226
9.2.1 提高可重用性 227
9.2.2 提高可擴(kuò)充性 228
9.2.3 提高健壯性 229
9.3 測試策略 229
9.3.1 面向?qū)ο蟮膯卧獪y試 230
9.3.2 面向?qū)ο蟮募蓽y試 230
9.3.3 面向?qū)ο蟮拇_認(rèn)測試 230
9.4 設(shè)計測試用例 230
9.4.1 測試類的方法 231
9.4.2 集成測試方法 232
小結(jié) 234
習(xí)題 234
第10章 統(tǒng)一建模語言 236
10.1 概述 236
10.1.1 UML的產(chǎn)生和發(fā)展 236
10.1.2 UML的系統(tǒng)結(jié)構(gòu) 237
10.1.3 UML的圖 238
10.1.4 UML的應(yīng)用領(lǐng)域 239
10.2 靜態(tài)建模機(jī)制 240
10.2.1 用例 240
10.2.2 類圖和對象圖 244
10.3 動態(tài)建模機(jī)制 245
10.3.1 消息 245
10.3.2 狀態(tài)圖 246
10.3.3 順序圖 247
10.3.4 協(xié)作圖 248
10.3.5 活動圖 249
10.4 描述物理架構(gòu)的機(jī)制 249
10.4.1 邏輯架構(gòu)和物理架構(gòu) 250
10.4.2 構(gòu)件圖 250
10.4.3 部署圖 250
10.5 使用和擴(kuò)展UML 252
10.5.1 使用UML的準(zhǔn)則 252
10.5.2 擴(kuò)展UML的機(jī)制 253
小結(jié) 253
習(xí)題 254
第4篇 軟件項目管理
第11章 計劃 257
11.1 度量軟件規(guī)模 257
11.1.1 代碼行技術(shù) 257
11.1.2 功能點技術(shù) 258
11.2 工作量估算 260
11.2.1 靜態(tài)單變量模型 260
11.2.2 動態(tài)多變量模型 260
11.2.3 COCOMO2模型 261
11.3 進(jìn)度計劃 263
11.3.1 基本原則 264
11.3.2 估算軟件開發(fā)時間 264
11.3.3 Gantt圖 265
11.3.4 工程網(wǎng)絡(luò) 266
11.3.5 估算進(jìn)度 267
11.3.6 關(guān)鍵路徑 269
11.3.7 機(jī)動時間 269
小結(jié) 270
習(xí)題 271
第12章 組織 273
12.1 民主制程序員組 273
12.2 主程序員組 274
12.3 現(xiàn)代程序員組 276
12.4 軟件項目組 277
12.4.1 3種組織方式 277
12.4.2 4種組織范型 279
小結(jié) 279
習(xí)題 279
第13章 控制 281
13.1 風(fēng)險管理 281
13.1.1 軟件風(fēng)險分類 281
13.1.2 風(fēng)險識別 282
13.1.3 風(fēng)險預(yù)測 286
13.1.4 處理風(fēng)險的策略 287
13.2 質(zhì)量保證 289
13.2.1 軟件質(zhì)量 289
13.2.2 軟件質(zhì)量保證措施 290
13.3 配置管理 292
13.3.1 軟件配置 292
13.3.2 軟件配置管理過程 294
小結(jié) 299
習(xí)題 299
第14章 軟件維護(hù)與軟件文檔 301
14.1 軟件維護(hù) 301
14.1.1 軟件維護(hù)的過程 301
14.1.2 軟件維護(hù)的分類 303
14.1.3 軟件的可維護(hù)性 303
14.1.4 軟件維護(hù)的副作用 304
14.2 軟件文檔 305
小結(jié) 307
習(xí)題 307
第5篇 高級課題
第15章 形式化方法 309
15.1 概述 309
15.1.1 非形式化方法的缺點 309
15.1.2 軟件開發(fā)過程中的數(shù)學(xué) 310
15.1.3 應(yīng)用形式化方法的準(zhǔn)則 310
15.2 有窮狀態(tài)機(jī) 311
15.2.1 基本概念 311
15.2.2 電梯問題 312
15.2.3 評論 314
15.3 Petri網(wǎng) 315
15.3.1 基本概念 315
15.3.2 應(yīng)用實例 316
15.4 Z語言 317
15.4.1 簡介 318
15.4.2 評論 319
小結(jié) 320
習(xí)題 320
第16章 軟件重用 322
16.1 可重用的軟件成分 322
16.2 軟件重用過程 323
16.2.1 構(gòu)件組裝模型 323
16.2.2 類構(gòu)件 324
16.2.3 重用過程模型 325
16.3 領(lǐng)域工程 326
16.3.1 分析過程 326
16.3.2 領(lǐng)域特征 327
16.3.3 結(jié)構(gòu)建模和結(jié)構(gòu)點 328
16.4 開發(fā)可重用的構(gòu)件 328
16.4.1 為了重用的分析與設(shè)計 328
16.4.2 基于構(gòu)件的開發(fā) 329
16.5 分類和檢索構(gòu)件 330
16.5.1 描述可重用的構(gòu)件 330
16.5.2 重用環(huán)境 332
16.6 軟件重用的效益 333
小結(jié) 334
習(xí)題 334
參考文獻(xiàn) 335