本書從實用的角度,介紹軟件工程的基礎(chǔ)知識和軟件工程技術(shù)方法。本書的編寫力求做到結(jié)合實際、注重應(yīng)用、便于教學(xué),體現(xiàn)內(nèi)容的新穎性和系統(tǒng)性。
本書內(nèi)容包括軟件工程概述,可行性研究與軟件開發(fā)計劃,需求分析,概要設(shè)計,詳細(xì)設(shè)計,軟件實現(xiàn),軟件維護(hù),面向?qū)ο蠓椒▽W(xué)與UML,面向?qū)ο蠹夹g(shù)與UML應(yīng)用,WebApp軟件工程,軟件重用和再工程,軟件工程管理等。每章都有小結(jié),并配有適量的例題和習(xí)題,有些例題貫穿于各章,按軟件工程的各個階段分別就這些例題的實際處理方法、步驟等進(jìn)行介紹,可作為實踐環(huán)節(jié)的樣例,有助于讀者學(xué)習(xí)和掌握有關(guān)知識。
第1章 概述 1
1.1 軟件工程的產(chǎn)生 1
1.1.1 軟件生產(chǎn)的發(fā)展 1
1.1.2 軟件危機(jī) 2
1.2 軟件工程 4
1.2.1 軟件工程定義 4
1.2.2 軟件工程學(xué)的內(nèi)容 4
1.2.3 軟件工程的基本原理 7
1.3 軟件生命周期 7
1.4 軟件過程模型 9
1.4.1 瀑布模型 9
1.4.2 快速原型模型 10
1.4.3 增量模型 11
1.4.4 噴泉模型 12
1.4.5 統(tǒng)一過程 13
本章小結(jié) 14
習(xí)題1 15
第2章 可行性研究與軟件開發(fā)計劃 16
2.1 軟件定義與可行性研究 16
2.1.1 軟件定義 16
2.1.2 可行性研究 18
2.2 軟件工程開發(fā)計劃的制定 19
2.2.1 軟件工程項目概述和實施計劃 20
2.2.2 Gantt圖 20
2.2.3 工程網(wǎng)絡(luò)圖 21
2.2.4 軟件工程開發(fā)計劃的復(fù)審 25
2.2.5 軟件工程開發(fā)計劃實例 26
本章小結(jié) 31
習(xí)題2 31
第3章 需求分析 32
3.1 需求分析的任務(wù) 32
3.1.1 確定目標(biāo)系統(tǒng)的具體要求 33
3.1.2 建立目標(biāo)系統(tǒng)的邏輯模型 35
3.2 結(jié)構(gòu)化分析步驟 35
3.2.1 進(jìn)行調(diào)查研究 35
3.2.2 分析和描述系統(tǒng)的邏輯模型 36
3.2.3 需求分析的復(fù)審 37
3.3 需求分析圖形工具 38
3.3.1 實體—關(guān)系圖 38
3.3.2 數(shù)據(jù)流圖 40
3.3.3 狀態(tài)轉(zhuǎn)換圖 42
3.3.4 IPO圖 43
3.4 數(shù)據(jù)字典 44
3.4.1 數(shù)據(jù)字典的內(nèi)容 44
3.4.2 數(shù)據(jù)字典使用的符號 45
3.4.3 數(shù)據(jù)字典與圖形工具 47
3.5 軟件需求分析舉例 48
3.5.1 系統(tǒng)管理 48
3.5.2 商品信息管理 48
3.5.3 商品供銷存管理 49
3.5.4 商品銷售數(shù)據(jù)流圖 50
3.5.5 數(shù)據(jù)字典 50
3.6 需求分析文檔 51
3.6.1 軟件需求規(guī)格說明 51
3.6.2 用戶手冊編寫提示 52
3.6.3 編寫需求分析文檔的步驟 52
本章小結(jié) 53
習(xí)題3 53
第4章 概要設(shè)計 55
4.1 概要設(shè)計步驟 55
4.1.1 軟件結(jié)構(gòu)設(shè)計 55
4.1.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計及數(shù)據(jù)庫設(shè)計 56
4.1.3 系統(tǒng)接口設(shè)計 57
4.1.4 設(shè)計測試方案 57
4.2 軟件結(jié)構(gòu)設(shè)計的基本原理 57
4.2.1 模塊與模塊化 57
4.2.2 模塊的耦合和內(nèi)聚 60
4.2.3 軟件結(jié)構(gòu)設(shè)計優(yōu)化準(zhǔn)則 63
4.3 軟件結(jié)構(gòu)設(shè)計的圖形工具 64
4.3.1 層次圖 64
4.3.2 結(jié)構(gòu)圖 66
4.4 概要設(shè)計方法 67
4.4.1 結(jié)構(gòu)化方法 67
4.4.2 面向數(shù)據(jù)結(jié)構(gòu)設(shè)計方法 69
4.5 概要設(shè)計文檔與復(fù)審 73
4.5.1 概要設(shè)計說明書 73
4.5.2 概要設(shè)計復(fù)審 74
4.5.3 數(shù)據(jù)庫設(shè)計說明書 74
本章小結(jié) 75
習(xí)題4 75
第5章 詳細(xì)設(shè)計 77
5.1 過程設(shè)計 77
5.1.1 流程圖 78
5.1.2 盒圖 82
5.1.3 PAD 84
5.1.4 判定表 85
5.1.5 判定樹 86
5.1.6 過程設(shè)計語言 86
5.2 用戶界面設(shè)計 88
5.2.1 用戶界面設(shè)計問題 88
5.2.2 用戶界面設(shè)計過程 90
5.2.3 用戶界面設(shè)計的基本原則 90
5.2.4 用戶界面設(shè)計指南 90
5.3 數(shù)據(jù)代碼設(shè)計 92
5.3.1 數(shù)據(jù)代碼設(shè)計原則 93
5.3.2 代碼種類 93
5.3.3 數(shù)據(jù)代碼設(shè)計方法 95
5.4 數(shù)據(jù)輸入 輸出設(shè)計 96
5.4.1 輸入設(shè)計 96
5.4.2 輸出設(shè)計 96
5.5 數(shù)據(jù)安全設(shè)計 97
5.6 詳細(xì)設(shè)計文檔與復(fù)審 98
5.6.1 詳細(xì)設(shè)計說明書 98
5.6.2 操作手冊編寫提示 99
5.6.3 詳細(xì)設(shè)計的復(fù)審 100
本章小結(jié) 100
習(xí)題5 100
第6章 軟件實現(xiàn) 102
6.1 結(jié)構(gòu)化程序設(shè)計 102
6.2 選擇程序設(shè)計語言 103
6.3 程序設(shè)計風(fēng)格 105
6.4 程序設(shè)計質(zhì)量評價 106
6.5 程序設(shè)計文檔 107
6.6 軟件測試目標(biāo)和原則 107
6.6.1 軟件測試目標(biāo) 107
6.6.2 軟件測試原則 108
6.7 軟件測試方法 108
6.7.1 靜態(tài)分析與動態(tài)測試 109
6.7.2 黑盒法與白盒法 109
6.8 軟件測試步驟 110
6.8.1 模塊測試 110
6.8.2 集成測試 110
6.8.3 程序?qū)彶闀腿斯み\(yùn)行 111
6.8.4 確認(rèn)測試 112
6.8.5 平行運(yùn)行 113
6.9 設(shè)計測試方案 113
6.9.1 等價類劃分法 113
6.9.2 邊界值分析法 114
6.9.3 錯誤推測法 115
6.9.4 邏輯覆蓋法 115
6.9.5 實用測試策略 118
6.10 軟件調(diào)試、驗證與確認(rèn) 119
6.10.1 軟件調(diào)試 119
6.10.2 軟件驗證 120
6.10.3 軟件確認(rèn) 121
6.11 軟件測試計劃和分析報告 121
本章小結(jié) 122
習(xí)題6 123
第7章 軟件維護(hù) 127
7.1 軟件維護(hù)過程 127
7.1.1 軟件維護(hù)的種類 127
7.1.2 軟件維護(hù)的困難 128
7.1.3 軟件維護(hù)的實施 129
7.1.4 軟件維護(hù)的副作用 131
7.2 軟件的可維護(hù)性 131
7.2.1 決定可維護(hù)性的因素 132
7.2.2 可維護(hù)性的度量 132
7.2.3 提高軟件的可維護(hù)性 133
本章小結(jié) 134
習(xí)題7 134
第8章 面向?qū)ο蠓椒▽W(xué)與UML 136
8.1 面向?qū)ο蠓椒ǜ攀?136
8.1.1 面向?qū)ο蠓椒▽W(xué)的主要優(yōu)點(diǎn) 137
8.1.2 面向?qū)ο蟮母拍?138
8.2 UML概述 140
8.2.1 UML的發(fā)展 140
8.2.2 UML設(shè)計目標(biāo)和內(nèi)容 141
8.2.3 UML的語義 142
8.2.4 UML的擴(kuò)展機(jī)制 143
8.3 UML圖 144
8.3.1 用例圖 144
8.3.2 類圖和包 145
8.3.3 對象圖 150
8.3.4 狀態(tài)圖 150
8.3.5 順序圖 152
8.3.6 活動圖 152
8.3.7 協(xié)作圖 153
8.3.8 構(gòu)件圖 154
8.3.9 部署圖 154
本章小結(jié) 155
習(xí)題8 156
第9章 面向?qū)ο蠹夹g(shù)與UML應(yīng)用 157
9.1 面向?qū)ο蠓治?157
9.1.1 面向?qū)ο蠓治鲞^程 157
9.1.2 面向?qū)ο蠓治鲈瓌t 158
9.2 建立對象模型 158
9.2.1 確定對象和類 159
9.2.2 確定類的相互關(guān)系 159
9.2.3 劃分主題 161
9.3 建立動態(tài)模型 163
9.3.1 編寫腳本 164
9.3.2 設(shè)計用戶界面 164
9.3.3 畫UML順序圖或活動圖 165
9.3.4 畫狀態(tài)轉(zhuǎn)換圖 165
9.4 建立功能模型 166
9.5 面向?qū)ο笤O(shè)計 167
9.5.1 系統(tǒng)設(shè)計 168
9.5.2 對象設(shè)計 171
9.5.3 面向?qū)ο笤O(shè)計的準(zhǔn)則和啟發(fā)式規(guī)則 172
9.6 面向?qū)ο笙到y(tǒng)的實現(xiàn) 173
9.6.1 選擇程序設(shè)計語言 173
9.6.2 面向?qū)ο蟪绦蛟O(shè)計 174
9.7 面向?qū)ο蟮臏y試 174
9.7.1 面向?qū)ο鬁y試策略 175
9.7.2 面向?qū)ο蟮臏y試步驟 177
9.8 UML的應(yīng)用 180
9.8.1 UML模型 181
9.8.2 UML視圖 182
9.8.3 UML使用準(zhǔn)則 183
9.8.4 UML的應(yīng)用領(lǐng)域 184
9.9 統(tǒng)一過程 184
9.9.1 RUP的開發(fā)模式 185
9.9.2 RUP的特點(diǎn) 186
9.9.3 RUP的要素 186
9.10 Rational Rose 187
9.10.1 Rational Rose簡介 187
9.10.2 Rational Rose的界面 189
9.10.3 Rational Rose模型的4個視圖 189
9.10.4 Rational Rose的使用 191
本章小結(jié) 191
習(xí)題9 192
第10章 WebApp軟件工程 194
10.1 網(wǎng)頁軟件的特性 194
10.2 網(wǎng)絡(luò)系統(tǒng)的層次結(jié)構(gòu) 196
10.2.1 二層C S結(jié)構(gòu) 196
10.2.2 三層C S結(jié)構(gòu) 197
10.2.3 四層C S結(jié)構(gòu) 199
10.2.4 B S結(jié)構(gòu) 199
10.3 客戶端層可用的技術(shù) 201
10.3.1 基本HTML 201
10.3.2 腳本語言 202
10.3.3 Applet 203
10.3.4 AJAX 203
10.4 網(wǎng)絡(luò)服務(wù)器層使用的技術(shù) 204
10.4.1 Servlet 204
10.4.2 JSP 205
10.5 WebApp的設(shè)計模式 206
10.5.1 觀察者模式 206
10.5.2 組合模式 208
10.5.3 工廠方法模式和策略模式 209
10.5.4 模型—視圖—控制器模式 210
10.5.5 裝飾者模式 211
10.6 WebApp的設(shè)計 212
10.6.1 WebApp的特點(diǎn)及應(yīng)用類型 212
10.6.2 WebApp的需求分析 213
10.6.3 WebApp需求分析過程 217
10.6.4 WebApp設(shè)計過程 219
10.6.5 WebApp體系結(jié)構(gòu)設(shè)計 223
10.6.6 WebApp導(dǎo)航設(shè)計 224
10.7 WebApp測試 226
10.7.1 WebApp測試過程概述 226
10.7.2 WebApp內(nèi)容測試 226
10.7.3 WebApp界面測試 227
10.7.4 WebApp導(dǎo)航測試 228
10.7.5 WebApp配置測試 228
10.7.6 WebApp安全性測試 229
10.7.7 WebApp性能測試 229
本章小結(jié) 230
習(xí)題10 231
第11章 軟件重用和再工程 232
11.1 可重用的軟件成分 232
11.2 軟件重用過程 233
11.2.1 軟件重用過程模型 233
11.2.2 開發(fā)可重用的軟件構(gòu)件 235
11.2.3 分類和檢索軟件構(gòu)件 236
11.2.4 軟件重用環(huán)境 236
11.3 軟件逆向工程 237
11.4 軟件再工程 238
本章小結(jié) 239
習(xí)題11 240
第12章 軟件工程管理 241
12.1 軟件工程管理概述 241
12.2 軟件規(guī)模估算 242
12.2.1 軟件開發(fā)成本估算方法 242
12.2.2 代碼行技術(shù)和任務(wù)估算技術(shù) 243
12.2.3 COCOMO2模型 244
12.2.4 程序環(huán)行復(fù)雜程度的度量 246
12.3 軟件工程人員組織 247
12.4 軟件配置管理 249
12.5 軟件質(zhì)量保證 252
12.5.1 軟件質(zhì)量的特性 252
12.5.2 軟件質(zhì)量保證措施 253
12.6 軟件開發(fā)風(fēng)險管理 254
12.6.1 軟件開發(fā)風(fēng)險的分類 254
12.6.2 軟件開發(fā)風(fēng)險的識別 255
12.6.3 軟件開發(fā)風(fēng)險的預(yù)測 256
12.6.4 處理軟件開發(fā)風(fēng)險的策略 257
12.7 軟件工程標(biāo)準(zhǔn)與軟件工程文檔 258
12.7.1 軟件工程標(biāo)準(zhǔn) 258
12.7.2 軟件工程文檔的編寫 260
12.8 CASE技術(shù) 262
本章小結(jié) 263
習(xí)題12 264
附錄A 部分習(xí)題參考答案 265
附錄B 試題類型舉例 271
參考文獻(xiàn) 273