本書按照典型的軟件開發(fā)過程來組織內(nèi)容,旨在培養(yǎng)學(xué)生具備軟件工程思想及實際軟件開發(fā)的能力。全書共10章,主要內(nèi)容包括軟件工程的起源,軟件工程相關(guān)概念,軟件工程方法、過程和工具,軟件可行性研究及需求分析,軟件設(shè)計,軟件編碼及實現(xiàn),軟件測試與維護,面向?qū)ο蟮能浖こ蹋浖こ讨猩婕暗墓芾矸矫娴膬?nèi)容,如軟件規(guī)模估算、進度計劃、人員組織、軟件開發(fā)風險管理等,以及課程設(shè)計方面的內(nèi)容。本書可以作為普通高校計算機相關(guān)專業(yè)“軟件工程”課程的教材,也可以供學(xué)習(xí)軟件工程(包括參加計算機等級考試或相關(guān)專業(yè)自學(xué)考試)的讀者使用參考。
目 錄
第1章 軟件工程概述 1
1.1 軟件 1
1.1.1 軟件的概念及特點 1
1.1.2 軟件的分類 2
1.2 軟件危機 3
1.2.1 軟件危機的表現(xiàn)與原因 3
1.2.2 軟件危機的啟示 4
1.3 軟件工程 5
1.3.1 軟件工程的概念 5
1.3.2 軟件工程研究的內(nèi)容 5
1.3.3 軟件工程目標和原則 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 軟件過程模型實例 20
1.8 軟件開發(fā)方法 22
1.9 軟件工程工具 23
小結(jié) 25
習(xí)題 26
第2章 可行性研究及需求分析 28
2.1 可行性研究 28
2.1.1 項目立項概述 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)化分析實例 46
2.7 軟件開發(fā)計劃書編寫指南 49
2.8 需求規(guī)格說明書編寫指南 54
小結(jié) 59
習(xí)題 59
第3章 軟件設(shè)計 62
3.1 軟件設(shè)計的基本概念 62
3.1.1 軟件設(shè)計的意義和目標 62
3.1.2 軟件設(shè)計的原則 62
3.1.3 軟件設(shè)計的分類 66
3.2 結(jié)構(gòu)化軟件設(shè)計概述 67
3.3 結(jié)構(gòu)化設(shè)計與結(jié)構(gòu)化分析的關(guān)系 67
3.4 體系結(jié)構(gòu)設(shè)計 68
3.4.1 表示軟件結(jié)構(gòu)的圖形工具 68
3.4.2 面向數(shù)據(jù)流的設(shè)計方法 70
3.4.3 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法 72
3.5 接口設(shè)計 77
3.5.1 接口設(shè)計概述 77
3.5.2 界面設(shè)計 78
3.6 數(shù)據(jù)設(shè)計 79
3.7 過程設(shè)計 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è)計實例 85
3.9 軟件設(shè)計說明書編寫指南 88
小結(jié) 92
習(xí)題 93
第4章 軟件編程 95
4.1 編程語言 95
4.1.1 編程語言的發(fā)展與分類 95
4.1.2 選擇編程語言需考慮的因素 98
4.2 編程風格 99
4.3 軟件編程實例 103
小結(jié) 105
習(xí)題 105
第5章 軟件測試與維護 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è)計 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 驗收測試 136
5.11.1 驗收測試概述 136
5.11.2 驗收測試內(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 軟件測試實例 138
5.15 測試分析報告編寫指南 144
5.16 軟件維護 147
5.16.1 軟件維護的過程 147
5.16.2 軟件維護的分類 149
5.16.3 軟件的可維護性 150
5.16.4 軟件維護的副作用 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ū)ο蟮膶嵤┎襟E 159
6.2 統(tǒng)一建模語言(UML) 160
6.2.1 UML簡述 160
6.2.2 UML的特點 160
6.2.3 UML的應(yīng)用范圍 161
6.2.4 UML的圖 161
6.2.5 UML“4+1”視圖 162
6.3 靜態(tài)建模機制 163
6.3.1 用例圖 163
6.3.2 類圖和對象圖 165
6.3.3 包圖 169
6.4 動態(tài)建模機制 170
6.4.1 順序圖 170
6.4.2 協(xié)作圖 171
6.4.3 狀態(tài)圖 172
6.4.4 活動圖 173
6.5 描述物理架構(gòu)的機制 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ū)ο蠓治鰧嵗?190
小結(jié) 195
習(xí)題 195
第8章 面向?qū)ο笤O(shè)計與實現(xiàn) 197
8.1 面向?qū)ο笤O(shè)計與結(jié)構(gòu)化設(shè)計 197
8.2 面向?qū)ο笤O(shè)計與面向?qū)ο蠓治龅年P(guān)系 197
8.3 面向?qū)ο笤O(shè)計的過程與規(guī)則 197
8.3.1 面向?qū)ο笤O(shè)計的過程 197
8.3.2 面向?qū)ο笤O(shè)計的原則 199
8.4 面向?qū)ο笤O(shè)計的啟發(fā)規(guī)則 200
8.5 系統(tǒng)設(shè)計 200
8.5.1 系統(tǒng)分解 201
8.5.2 問題域子系統(tǒng)的設(shè)計 202
8.5.3 人機交互子系統(tǒng)的設(shè)計 205
8.5.4 任務(wù)管理子系統(tǒng)的設(shè)計 208
8.5.5 數(shù)據(jù)管理子系統(tǒng)的設(shè)計 209
8.6 對象設(shè)計 211
8.6.1 設(shè)計類中的服務(wù) 211
8.6.2 設(shè)計類的關(guān)聯(lián) 213
8.6.3 對象設(shè)計優(yōu)化 214
8.7 面向?qū)ο笤O(shè)計實例 217
8.8 面向?qū)ο髮崿F(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ā)進度計劃 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ā)風險管理 231
9.4.1 軟件開發(fā)風險 231
9.4.2 軟件開發(fā)風險管理 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 軟件工程標準與軟件文檔 240
9.7.1 軟件工程標準 240
9.7.2 軟件文檔 241
9.8 軟件過程能力成熟度模型 243
9.9 軟件項目管理 244
9.9.1 軟件項目管理概述 244
9.9.2 軟件項目管理與軟件工程的關(guān)系 245
9.10 軟件復(fù)用 245
小結(jié) 247
習(xí)題 248
第10章 課程設(shè)計 250
10.1 課程設(shè)計指導(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
參考文獻 349