本書按照典型的軟件開發(fā)過程來組織內(nèi)容,旨在培養(yǎng)學(xué)生具備軟件工程思想及實(shí)際軟件開發(fā)的能力。全書共10章,主要內(nèi)容包括軟件工程的起源,軟件工程相關(guān)概念,軟件工程方法、過程和工具,軟件可行性研究及需求分析,軟件設(shè)計(jì),軟件編碼及實(shí)現(xiàn),軟件測試與維護(hù),面向?qū)ο蟮能浖こ,軟件工程中涉及的管理方面的?nèi)容,如軟件規(guī)模估算、進(jìn)度計(jì)劃、人員組織、軟件開發(fā)風(fēng)險管理等,以及課程設(shè)計(jì)方面的內(nèi)容。本書可以作為普通高校計(jì)算機(jī)相關(guān)專業(yè)“軟件工程”課程的教材,也可以供學(xué)習(xí)軟件工程(包括參加計(jì)算機(jī)等級考試或相關(guān)專業(yè)自學(xué)考試)的讀者使用參考。
呂云翔,任職于北京航空航天大學(xué),具有多年的軟件開發(fā)、項(xiàng)目管理、計(jì)算機(jī)教學(xué)經(jīng)驗(yàn)。
目 錄
第1章 軟件工程概述 1
1.1 軟件 1
1.1.1 軟件的概念及特點(diǎn) 1
1.1.2 軟件的分類 2
1.2 軟件危機(jī) 3
1.2.1 軟件危機(jī)的表現(xiàn)與原因 3
1.2.2 軟件危機(jī)的啟示 4
1.3 軟件工程 5
1.3.1 軟件工程的概念 5
1.3.2 軟件工程研究的內(nèi)容 5
1.3.3 軟件工程目標(biāo)和原則 6
1.3.4 軟件工程知識體系 7
1.3.5 軟件工程的發(fā)展 8
1.4 軟件過程概述 9
1.5 軟件生命周期 10
1.5.1 軟件生命周期的概念 10
1.5.2 傳統(tǒng)軟件生命周期的各個階段 10
1.6 軟件過程模型 11
1.6.1 瀑布模型 12
1.6.2 快速原型模型 12
1.6.3 增量模型 13
1.6.4 螺旋模型 14
1.6.5 噴泉模型 14
1.6.6 基于組件的開發(fā)模型 15
1.6.7 統(tǒng)一軟件開發(fā)過程模型 16
1.6.8 敏捷過程與極限編程 17
1.6.9 幾種模型之間的關(guān)系 19
1.6.10 選擇軟件過程模型 20
1.7 軟件過程模型實(shí)例 20
1.8 軟件開發(fā)方法 22
1.9 軟件工程工具 23
小結(jié) 25
習(xí)題 26
第2章 可行性研究及需求分析 28
2.1 可行性研究 28
2.1.1 項(xiàng)目立項(xiàng)概述 28
2.1.2 可行性研究的內(nèi)容 28
2.1.3 可行性研究的步驟 29
2.2 需求分析 30
2.2.1 需求分析的任務(wù) 30
2.2.2 需求分析的步驟 31
2.2.3 需求管理 33
2.2.4 需求分析的常用方法 34
2.3 結(jié)構(gòu)化分析概述 34
2.4 結(jié)構(gòu)化分析方法 35
2.4.1 功能建模 36
2.4.2 數(shù)據(jù)建模 39
2.4.3 行為建模 40
2.4.4 數(shù)據(jù)字典 42
2.4.5 加工規(guī)格說明 43
2.5 結(jié)構(gòu)化分析圖形工具 44
2.5.1 層次方框圖 44
2.5.2 Warnier圖 45
2.5.3 IPO圖 46
2.6 結(jié)構(gòu)化分析實(shí)例 46
2.7 軟件開發(fā)計(jì)劃書編寫指南 49
2.8 需求規(guī)格說明書編寫指南 54
小結(jié) 59
習(xí)題 59
第3章 軟件設(shè)計(jì) 62
3.1 軟件設(shè)計(jì)的基本概念 62
3.1.1 軟件設(shè)計(jì)的意義和目標(biāo) 62
3.1.2 軟件設(shè)計(jì)的原則 62
3.1.3 軟件設(shè)計(jì)的分類 66
3.2 結(jié)構(gòu)化軟件設(shè)計(jì)概述 67
3.3 結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系 67
3.4 體系結(jié)構(gòu)設(shè)計(jì) 68
3.4.1 表示軟件結(jié)構(gòu)的圖形工具 68
3.4.2 面向數(shù)據(jù)流的設(shè)計(jì)方法 70
3.4.3 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法 72
3.5 接口設(shè)計(jì) 77
3.5.1 接口設(shè)計(jì)概述 77
3.5.2 界面設(shè)計(jì) 78
3.6 數(shù)據(jù)設(shè)計(jì) 79
3.7 過程設(shè)計(jì) 81
3.7.1 程序流程圖 81
3.7.2 N-S圖 82
3.7.3 PAD圖 83
3.7.4 結(jié)構(gòu)化語言 84
3.8 結(jié)構(gòu)化設(shè)計(jì)實(shí)例 85
3.9 軟件設(shè)計(jì)說明書編寫指南 88
小結(jié) 92
習(xí)題 93
第4章 軟件編程 95
4.1 編程語言 95
4.1.1 編程語言的發(fā)展與分類 95
4.1.2 選擇編程語言需考慮的因素 98
4.2 編程風(fēng)格 99
4.3 軟件編程實(shí)例 103
小結(jié) 105
習(xí)題 105
第5章 軟件測試與維護(hù) 107
5.1 軟件測試的基本概念 107
5.1.1 軟件測試的原則 107
5.1.2 軟件測試模型 108
5.2 軟件測試的分類 110
5.3 測試用例 112
5.3.1 測試用例編寫 112
5.3.2 測試用例設(shè)計(jì) 112
5.3.3 測試用例場景 112
5.4 軟件測試方法 113
5.5 黑盒測試 113
5.5.1 等價類劃分法 114
5.5.2 邊界值分析法 116
5.5.3 錯誤推測法 116
5.5.4 因果圖法 117
5.5.5 決策表法 119
5.5.6 場景法 120
5.5.7 黑盒測試選擇 122
5.6 白盒測試 122
5.6.1 代碼檢查法 122
5.6.2 靜態(tài)結(jié)構(gòu)分析法 123
5.6.3 程序插樁技術(shù) 123
5.6.4 邏輯覆蓋法 123
5.6.5 基本路徑法 125
5.6.6 白盒測試方法選擇 127
5.6.7 白盒測試與黑盒測試比較 127
5.7 軟件測試的一般步驟 128
5.8 單元測試 128
5.8.1 單元測試概述 128
5.8.2 單元測試內(nèi)容 129
5.8.3 單元測試方法 129
5.9 集成測試 130
5.9.1 集成測試概述 130
5.9.2 集成測試分析 130
5.9.3 集成測試策略 131
5.10 系統(tǒng)測試 134
5.10.1 系統(tǒng)測試概述 134
5.10.2 系統(tǒng)測試類型 134
5.11 驗(yàn)收測試 136
5.11.1 驗(yàn)收測試概述 136
5.11.2 驗(yàn)收測試內(nèi)容 136
5.11.3 α測試和β測試 136
5.12 回歸測試 137
5.13 軟件調(diào)試 138
5.13.1 調(diào)試過程 138
5.13.2 調(diào)試途徑 138
5.14 軟件測試實(shí)例 138
5.15 測試分析報(bào)告編寫指南 144
5.16 軟件維護(hù) 147
5.16.1 軟件維護(hù)的過程 147
5.16.2 軟件維護(hù)的分類 149
5.16.3 軟件的可維護(hù)性 150
5.16.4 軟件維護(hù)的副作用 151
5.16.5 軟件再工程技術(shù) 152
小結(jié) 153
習(xí)題 154
第6章 面向?qū)ο蠓椒ㄅcUML 157
6.1 面向?qū)ο蟮能浖こ谭椒?157
6.1.1 面向?qū)ο蟮幕靖拍?157
6.1.2 面向?qū)ο蟮能浖こ谭椒ǖ奶卣髋c優(yōu)勢 158
6.1.3 面向?qū)ο蟮膶?shí)施步驟 159
6.2 統(tǒng)一建模語言(UML) 160
6.2.1 UML簡述 160
6.2.2 UML的特點(diǎn) 160
6.2.3 UML的應(yīng)用范圍 161
6.2.4 UML的圖 161
6.2.5 UML“4+1”視圖 162
6.3 靜態(tài)建模機(jī)制 163
6.3.1 用例圖 163
6.3.2 類圖和對象圖 165
6.3.3 包圖 169
6.4 動態(tài)建模機(jī)制 170
6.4.1 順序圖 170
6.4.2 協(xié)作圖 171
6.4.3 狀態(tài)圖 172
6.4.4 活動圖 173
6.5 描述物理架構(gòu)的機(jī)制 174
6.5.1 構(gòu)件圖 174
6.5.2 部署圖 175
小結(jié) 175
習(xí)題 176
第7章 面向?qū)ο蠓治?179
7.1 面向?qū)ο蠓治龇椒?179
7.1.1 面向?qū)ο蠓治鲞^程 179
7.1.2 面向?qū)ο蠓治鲈瓌t 180
7.2 面向?qū)ο蠼?181
7.2.1 建立對象模型 182
7.2.2 建立動態(tài)模型 186
7.2.3 建立功能模型 189
7.2.4 3種模型之間的關(guān)系 190
7.3 面向?qū)ο蠓治鰧?shí)例 190
小結(jié) 195
習(xí)題 195
第8章 面向?qū)ο笤O(shè)計(jì)與實(shí)現(xiàn) 197
8.1 面向?qū)ο笤O(shè)計(jì)與結(jié)構(gòu)化設(shè)計(jì) 197
8.2 面向?qū)ο笤O(shè)計(jì)與面向?qū)ο蠓治龅年P(guān)系 197
8.3 面向?qū)ο笤O(shè)計(jì)的過程與規(guī)則 197
8.3.1 面向?qū)ο笤O(shè)計(jì)的過程 197
8.3.2 面向?qū)ο笤O(shè)計(jì)的原則 199
8.4 面向?qū)ο笤O(shè)計(jì)的啟發(fā)規(guī)則 200
8.5 系統(tǒng)設(shè)計(jì) 200
8.5.1 系統(tǒng)分解 201
8.5.2 問題域子系統(tǒng)的設(shè)計(jì) 202
8.5.3 人機(jī)交互子系統(tǒng)的設(shè)計(jì) 205
8.5.4 任務(wù)管理子系統(tǒng)的設(shè)計(jì) 208
8.5.5 數(shù)據(jù)管理子系統(tǒng)的設(shè)計(jì) 209
8.6 對象設(shè)計(jì) 211
8.6.1 設(shè)計(jì)類中的服務(wù) 211
8.6.2 設(shè)計(jì)類的關(guān)聯(lián) 213
8.6.3 對象設(shè)計(jì)優(yōu)化 214
8.7 面向?qū)ο笤O(shè)計(jì)實(shí)例 217
8.8 面向?qū)ο髮?shí)現(xiàn) 221
8.9 面向?qū)ο蟮能浖䴗y試 221
小結(jié) 224
習(xí)題 224
第9章 軟件工程管理 226
9.1 軟件估算 226
9.1.1 軟件估算的概念 226
9.1.2 軟件估算的方法 227
9.1.3 軟件估算的原則與技巧 228
9.2 軟件開發(fā)進(jìn)度計(jì)劃 229
9.2.1 Gantt圖 229
9.2.2 PERT圖 229
9.3 軟件開發(fā)人員組織 230
9.3.1 民主制程序員組 230
9.3.2 主程序員組 230
9.3.3 現(xiàn)代程序員組 231
9.4 軟件開發(fā)風(fēng)險管理 231
9.4.1 軟件開發(fā)風(fēng)險 231
9.4.2 軟件開發(fā)風(fēng)險管理 232
9.5 軟件質(zhì)量保證 233
9.5.1 軟件質(zhì)量的基本概念 233
9.5.2 軟件質(zhì)量保證的措施 235
9.6 軟件配置管理概述 235
9.6.1 軟件配置管理術(shù)語 235
9.6.2 配置管理的過程 238
9.6.3 配置管理的角色劃分 239
9.7 軟件工程標(biāo)準(zhǔn)與軟件文檔 240
9.7.1 軟件工程標(biāo)準(zhǔn) 240
9.7.2 軟件文檔 241
9.8 軟件過程能力成熟度模型 243
9.9 軟件項(xiàng)目管理 244
9.9.1 軟件項(xiàng)目管理概述 244
9.9.2 軟件項(xiàng)目管理與軟件工程的關(guān)系 245
9.10 軟件復(fù)用 245
小結(jié) 247
習(xí)題 248
第10章 課程設(shè)計(jì) 250
10.1 課程設(shè)計(jì)指導(dǎo) 250
10.2 案例――“Web Publishing System” 255
10.2.1 Software Project Plan 255
10.2.2 Software Requirements Specification 263
10.2.3 Software Design Specification 284
10.2.4 Software Testing Report 313
小結(jié) 324
習(xí)題 324
附錄A 詞匯與縮略語 325
附錄B 案例――Web Publishing System(通過掃描二維碼獲取中文文檔和源代碼) 330
附錄C 部分習(xí)題參考答案 331
參考文獻(xiàn) 349