本書從實(shí)用的角度,介紹軟件工程的基礎(chǔ)知識(shí)和技術(shù)方法,力求做到結(jié)合實(shí)際、注重應(yīng)用、便于教學(xué),體現(xiàn)內(nèi)容的新穎性和系統(tǒng)性。
本書內(nèi)容包括軟件工程概述,可行性研究與軟件工程開(kāi)發(fā)計(jì)劃,需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),軟件實(shí)現(xiàn),軟件維護(hù),面向?qū)ο蠓椒、UML及應(yīng)用,WebApp軟件工程,軟件重用和再工程,軟件工程管理,實(shí)例網(wǎng)上商品競(jìng)拍系統(tǒng)。
歷經(jīng)市場(chǎng)考驗(yàn),第3次改版更新,深受讀者喜愛(ài);
根據(jù)技術(shù)的發(fā)展增補(bǔ)軟件逆向工程、軟件再工程等新內(nèi)容,與時(shí)俱進(jìn);
深入淺出、詳略適當(dāng)、理論和實(shí)際相結(jié)合、易于理解。
陸惠恩 復(fù)旦大學(xué)數(shù)學(xué)系計(jì)算數(shù)學(xué)專業(yè)(計(jì)算機(jī)系計(jì)算機(jī)軟件專業(yè)前身)1968屆畢業(yè)。從事高校計(jì)算機(jī)軟件專業(yè)教學(xué)三十余年、指導(dǎo)學(xué)生畢業(yè)設(shè)計(jì)二十多年,有豐富的教學(xué)、科研實(shí)際經(jīng)驗(yàn)。編寫《軟件工程》教材多年,書中有不少實(shí)例有利于讀者對(duì)內(nèi)容的理解和掌握,并根據(jù)計(jì)算機(jī)軟件工程發(fā)展的情況更新了教材的內(nèi)容,因而所編寫的教材深受廣大高校師生的歡迎。
第 1章 軟件工程概述 001
1.1 軟件工程的產(chǎn)生 001
1.1.1 軟件生產(chǎn)的發(fā)展 001
1.1.2 軟件危機(jī) 002
1.2 軟件工程 003
1.2.1 軟件工程的定義 004
1.2.2 軟件工程學(xué)的主要內(nèi)容 004
1.2.3 軟件工程的基本原理 007
1.3 軟件生命周期 007
1.4 軟件過(guò)程模型 008
1.4.1 瀑布模型 009
1.4.2 快速原型模型 010
1.4.3 增量模型 011
1.4.4 噴泉模型 012
1.4.5 統(tǒng)一過(guò)程模型 013
本章小結(jié) 014
習(xí)題1 015
第 2章 可行性研究與軟件工程開(kāi)發(fā)計(jì)劃 016
2.1 軟件定義與可行性研究 016
2.1.1 軟件定義 016
2.1.2 可行性研究 018
2.2 軟件工程開(kāi)發(fā)計(jì)劃的制訂 019
2.2.1 軟件工程項(xiàng)目概述和實(shí)施計(jì)劃 019
2.2.2 Gantt圖 020
2.2.3 工程網(wǎng)絡(luò)圖 021
2.2.4 軟件工程開(kāi)發(fā)計(jì)劃的復(fù)審 024
本章小結(jié) 025
習(xí)題2 025
第3章 需求分析 027
3.1 需求分析的任務(wù) 027
3.1.1 確定目標(biāo)系統(tǒng)的具體要求 028
3.1.2 建立目標(biāo)系統(tǒng)的邏輯模型 030
3.2 結(jié)構(gòu)化分析步驟 030
3.2.1 進(jìn)行調(diào)查研究 030
3.2.2 分析和描述系統(tǒng)的邏輯模型 031
3.2.3 對(duì)需求分析進(jìn)行復(fù)審 031
3.3 需求分析的圖形工具 032
3.3.1 實(shí)體-聯(lián)系圖 033
3.3.2 數(shù)據(jù)流圖 034
3.3.3 狀態(tài)轉(zhuǎn)換圖 037
3.3.4 IPO圖 038
3.4 數(shù)據(jù)字典 039
3.4.1 數(shù)據(jù)字典的內(nèi)容 039
3.4.2 數(shù)據(jù)字典使用的符號(hào) 040
3.4.3 數(shù)據(jù)字典與圖形工具 042
3.5 軟件需求分析舉例 042
3.5.1 系統(tǒng)管理 042
3.5.2 商品信息管理 043
3.5.3 商品供銷存管理 043
3.5.4 商品銷售管理系統(tǒng)的數(shù)據(jù)流圖 044
3.5.5 數(shù)據(jù)字典 044
3.6 需求分析文檔 045
3.6.1 軟件需求規(guī)格說(shuō)明書 045
3.6.2 用戶手冊(cè)編寫提示 046
3.6.3 編寫需求分析文檔的步驟 046
本章小結(jié) 047
習(xí)題3 047
第4章 概要設(shè)計(jì) 049
4.1 概要設(shè)計(jì)步驟 049
4.1.1 軟件結(jié)構(gòu)設(shè)計(jì) 049
4.1.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及數(shù)據(jù)庫(kù)設(shè)計(jì) 050
4.1.3 系統(tǒng)接口設(shè)計(jì) 051
4.1.4 測(cè)試方案設(shè)計(jì) 051
4.2 軟件結(jié)構(gòu)設(shè)計(jì)的基本原理 051
4.2.1 模塊與模塊化 051
4.2.2 模塊的耦合和內(nèi)聚 054
4.2.3 軟件結(jié)構(gòu)設(shè)計(jì)的優(yōu)化規(guī)則 057
4.3 軟件結(jié)構(gòu)設(shè)計(jì)的圖形工具 058
4.3.1 層次圖 058
4.3.2 結(jié)構(gòu)圖 059
4.4 概要設(shè)計(jì)方法 060
4.4.1 結(jié)構(gòu)化方法 060
4.4.2 面向數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)方法 063
4.5 概要設(shè)計(jì)文檔與復(fù)審 066
4.5.1 概要設(shè)計(jì)說(shuō)明書 066
4.5.2 概要設(shè)計(jì)復(fù)審 067
4.5.3 數(shù)據(jù)庫(kù)設(shè)計(jì)說(shuō)明書 067
本章小結(jié) 068
習(xí)題4 068
第5章 詳細(xì)設(shè)計(jì) 070
5.1 過(guò)程設(shè)計(jì) 070
5.1.1 流程圖 071
5.1.2 盒圖 075
5.1.3 PAD 076
5.1.4 判定表 078
5.1.5 判定樹(shù) 078
5.1.6 過(guò)程設(shè)計(jì)語(yǔ)言 079
5.2 用戶界面設(shè)計(jì) 081
5.2.1 用戶界面設(shè)計(jì)問(wèn)題 081
5.2.2 用戶界面設(shè)計(jì)過(guò)程 082
5.2.3 用戶界面設(shè)計(jì)的基本原則 082
5.2.4 用戶界面設(shè)計(jì)指南 083
5.3 數(shù)據(jù)代碼設(shè)計(jì) 085
5.3.1 數(shù)據(jù)代碼設(shè)計(jì)原則 085
5.3.2 代碼種類 086
5.3.3 數(shù)據(jù)代碼設(shè)計(jì)方法 088
5.4 數(shù)據(jù)輸入 輸出設(shè)計(jì) 088
5.4.1 數(shù)據(jù)輸入設(shè)計(jì) 088
5.4.2 數(shù)據(jù)輸出設(shè)計(jì) 089
5.5 數(shù)據(jù)安全設(shè)計(jì) 089
5.6 詳細(xì)設(shè)計(jì)文檔與復(fù)審 090
5.6.1 詳細(xì)設(shè)計(jì)說(shuō)明書 090
5.6.2 操作手冊(cè) 091
5.6.3 詳細(xì)設(shè)計(jì)的復(fù)審 092
本章小結(jié) 092
習(xí)題5 092
第6章 軟件實(shí)現(xiàn) 094
6.1 結(jié)構(gòu)化程序設(shè)計(jì) 094
6.2 選擇程序設(shè)計(jì)語(yǔ)言 095
6.3 程序設(shè)計(jì)風(fēng)格 097
6.4 程序設(shè)計(jì)質(zhì)量評(píng)價(jià) 099
6.5 程序設(shè)計(jì)文檔 099
6.6 軟件測(cè)試目標(biāo)和原則 100
6.6.1 軟件測(cè)試目標(biāo) 100
6.6.2 軟件測(cè)試原則 100
6.7 軟件測(cè)試方法 101
6.7.1 靜態(tài)分析與動(dòng)態(tài)測(cè)試 101
6.7.2 黑盒法與白盒法 102
6.8 軟件測(cè)試步驟 102
6.8.1 模塊測(cè)試 102
6.8.2 集成測(cè)試 103
6.8.3 程序?qū)彶闀?huì)和人工運(yùn)行 104
6.8.4 確認(rèn)測(cè)試 104
6.8.5 平行運(yùn)行 105
6.9 設(shè)計(jì)測(cè)試方案 105
6.9.1 等價(jià)類劃分法 106
6.9.2 邊界值分析法 106
6.9.3 錯(cuò)誤推測(cè)法 107
6.9.4 邏輯覆蓋法 107
6.9.5 實(shí)用測(cè)試策略 110
6.10 軟件調(diào)試、驗(yàn)證與確認(rèn) 111
6.10.1 軟件調(diào)試 111
6.10.2 軟件驗(yàn)證 112
6.10.3 軟件確認(rèn) 112
6.11 軟件測(cè)試計(jì)劃和分析報(bào)告 113
本章小結(jié) 114
習(xí)題6 115
第7章 軟件維護(hù) 119
7.1 軟件維護(hù)過(guò)程 119
7.1.1 軟件維護(hù)的種類 119
7.1.2 軟件維護(hù)的困難 120
7.1.3 軟件維護(hù)的實(shí)施 121
7.1.4 軟件維護(hù)的副作用 123
7.2 軟件的可維護(hù)性 123
7.2.1 影響可維護(hù)性的因素 124
7.2.2 可維護(hù)性的度量 124
7.2.3 提高軟件的可維護(hù)性 125
本章小結(jié) 126
習(xí)題7 126
第8章 面向?qū)ο蠓椒、UML及應(yīng)用 128
8.1 面向?qū)ο蠓椒ǜ攀?128
8.1.1 面向?qū)ο蠓椒ǖ闹饕獌?yōu)點(diǎn) 129
8.1.2 面向?qū)ο蠓椒ǖ闹饕拍?130
8.2 UML概述 132
8.2.1 UML的發(fā)展 132
8.2.2 UML的設(shè)計(jì)目標(biāo) 133
8.2.3 UML的內(nèi)容 133
8.2.4 UML的擴(kuò)展機(jī)制 134
8.3 UML圖 135
8.3.1 用例圖 136
8.3.2 類圖 137
8.3.3 對(duì)象圖 141
8.3.4 狀態(tài)圖 141
8.3.5 順序圖 143
8.3.6 活動(dòng)圖 144
8.3.7 協(xié)作圖 144
8.3.8 構(gòu)件圖 145
8.3.9 部署圖 145
8.4 面向?qū)ο蠓治?146
8.4.1 面向?qū)ο蠓治鲞^(guò)程 146
8.4.2 面向?qū)ο蠓治鲈瓌t 147
8.5 建立對(duì)象模型 148
8.5.1 確定對(duì)象和類 148
8.5.2 確定類的相互關(guān)系 149
8.5.3 劃分主題 150
8.6 建立動(dòng)態(tài)模型 152
8.6.1 編寫腳本 153
8.6.2 設(shè)計(jì)用戶界面 154
8.6.3 畫順序圖或活動(dòng)圖 154
8.6.4 畫狀態(tài)圖 154
8.7 建立功能模型 155
8.8 面向?qū)ο笤O(shè)計(jì) 156
8.8.1 系統(tǒng)設(shè)計(jì) 157
8.8.2 對(duì)象設(shè)計(jì) 160
8.8.3 面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則和啟發(fā)式規(guī)則 161
8.9 面向?qū)ο笙到y(tǒng)的實(shí)現(xiàn) 162
8.9.1 選擇程序設(shè)計(jì)語(yǔ)言 162
8.9.2 面向?qū)ο蟪绦蛟O(shè)計(jì) 163
8.10 面向?qū)ο蟮臏y(cè)試 163
8.10.1 面向?qū)ο鬁y(cè)試策略 164
8.10.2 面向?qū)ο蟮臏y(cè)試步驟 165
8.11 UML的應(yīng)用 169
8.11.1 UML模型 169
8.11.2 UML視圖 171
8.11.3 UML使用準(zhǔn)則 171
8.11.4 UML的應(yīng)用領(lǐng)域 172
本章小結(jié) 173
習(xí)題8 173
第9章 WebApp軟件工程 175
9.1 Web的特性 175
9.2 網(wǎng)絡(luò)系統(tǒng)的層次結(jié)構(gòu) 177
9.2.1 二層C S結(jié)構(gòu) 177
9.2.2 三層C S結(jié)構(gòu) 178
9.2.3 四層C S結(jié)構(gòu) 180
9.2.4 B S結(jié)構(gòu) 180
9.3 客戶端使用的技術(shù) 182
9.3.1 HTML 182
9.3.2 腳本語(yǔ)言 182
9.3.3 Applet 183
9.3.4 AJAX 183
9.4 網(wǎng)絡(luò)服務(wù)器端使用的技術(shù) 184
9.4.1 Servlet 184
9.4.2 JSP 186
9.5 WebApp的設(shè)計(jì)模式 186
9.5.1 觀察者模式 187
9.5.2 組合模式 188
9.5.3 工廠方法模式和策略模式 189
9.5.4 模型-視圖-控制器模式 190
9.5.5 裝飾者模式 191
9.6 WebApp的設(shè)計(jì) 192
9.6.1 WebApp的特點(diǎn)及應(yīng)用類型 192
9.6.2 WebApp的需求分析 193
9.6.3 WebApp需求分析過(guò)程 196
9.6.4 WebApp設(shè)計(jì)過(guò)程 198
9.6.5 WebApp體系結(jié)構(gòu)設(shè)計(jì) 202
9.6.6 WebApp導(dǎo)航設(shè)計(jì) 203
9.7 WebApp測(cè)試 204
9.7.1 WebApp測(cè)試過(guò)程概述 205
9.7.2 WebApp內(nèi)容測(cè)試 205
9.7.3 WebApp界面測(cè)試 206
9.7.4 WebApp導(dǎo)航測(cè)試 207
9.7.5 WebApp配置測(cè)試 207
9.7.6 WebApp安全性測(cè)試 207
9.7.7 WebApp性能測(cè)試 208
本章小結(jié) 208
習(xí)題9 209
第 10章 軟件重用和再工程 210
10.1 可重用的軟件成分 210
10.2 軟件重用過(guò)程 211
10.2.1 軟件重用過(guò)程的模型 211
10.2.2 開(kāi)發(fā)可重用的軟件構(gòu)件 213
10.2.3 分類和檢索軟件構(gòu)件 213
10.2.4 軟件重用環(huán)境 214
10.3 軟件逆向工程 215
10.4 軟件再工程 216
本章小結(jié) 217
習(xí)題10 217
第 11章 軟件工程管理 218
11.1 軟件工程管理概述 218
11.2 軟件開(kāi)發(fā)成本估算 219
11.2.1 軟件開(kāi)發(fā)成本估算方法 219
11.2.2 代碼行技術(shù)和任務(wù)估算技術(shù) 220
11.2.3 COCOMO2模型 221
11.2.4 程序環(huán)行復(fù)雜度的度量 223
11.3 軟件工程人員組織 224
11.4 軟件配置管理 226
11.5 軟件質(zhì)量保證 228
11.5.1 軟件質(zhì)量的特性 229
11.5.2 軟件質(zhì)量保證措施 230
11.6 軟件開(kāi)發(fā)風(fēng)險(xiǎn)管理 231
11.6.1 軟件開(kāi)發(fā)風(fēng)險(xiǎn)的分類 231
11.6.2 軟件開(kāi)發(fā)風(fēng)險(xiǎn)的識(shí)別 232
11.6.3 軟件開(kāi)發(fā)風(fēng)險(xiǎn)的預(yù)測(cè) 232
11.6.4 處理軟件開(kāi)發(fā)風(fēng)險(xiǎn)的策略 233
11.7 軟件工程標(biāo)準(zhǔn)與軟件工程文檔 235
11.7.1 軟件工程標(biāo)準(zhǔn) 235
11.7.2 軟件工程文檔的編寫 236
本章小結(jié) 238
習(xí)題11 238
第 12章 實(shí)例網(wǎng)上商品競(jìng)拍系統(tǒng) 239
12.1 問(wèn)題定義和可行性研究 239
12.1.1 問(wèn)題定義 239
12.1.2 可行性研究 239
12.2 需求分析和概要設(shè)計(jì) 240
12.2.1 系統(tǒng)角色的功能設(shè)計(jì) 240
12.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì) 242
12.2.3 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 243
12.2.4 網(wǎng)絡(luò)設(shè)計(jì) 244
12.3 模塊設(shè)計(jì) 245
12.3.1 注冊(cè)登錄 245
12.3.2 用戶信息管理 245
12.3.3 拍賣商品管理 246
12.3.4 拍賣業(yè)務(wù)管理 247
12.4 軟件測(cè)試 248
本章小結(jié) 250
習(xí)題12 250
附錄A 部分習(xí)題參考答案 251
附錄B 試題類型舉例 257
參考文獻(xiàn) 258