軟體工程基礎(第2版)

軟體工程基礎(第2版)

《軟體工程基礎(第2版)》是2003年清華大學出版社出版的圖書。本書通過嚴格的形式化方法和非形式化方法闡述了軟體工程原則和方法的重要性,有選擇地介紹了軟體工程基礎:強調並確定了適用於整個軟體生命期的基本原則,全面深入地介紹了這些基本原則在軟體設計、規範、驗證、軟體生產過程和管理活動中的運用;書中提供了大量的練習和案例分析,既有助於理解書中介紹的理論知識,又可以讓讀者親身體驗如何應對複雜的現實問題。

圖書簡介

本書可以作為大專院校計算機科學系和計算機工程系的本科生和研究生教材,也可以作為計算機軟體人員和計算機用戶的參考書。

圖書目錄

第1章軟體工程概述/1

1.1軟體工程的發展歷程1

1.1.1軟體危機1

1.1.2軟體危機出現的原因3

1.1.3軟體工程的發展4

1.2軟體工程的概念5

1.2.1軟體工程的定義5

1.2.2軟體工程的目標6

1.2.3軟體工程的實施原則8

1.2.4軟體工程的基本原理9

1.3軟體與軟體過程10

1.3.1軟體的概念11

軟體工程基礎(第2版) 軟體工程基礎(第2版)

1.3.2軟體的分類12

1.3.3軟體生命周期13

1.3.4軟體過程15

1.4軟體過程模型16

1.4.1瀑布模型16

1.4.2原型模型17

1.4.3增量模型18

1.4.4螺旋模型19

1.4.5噴泉模型20

1.4.6敏捷過程模型20

1.4.74GT過程模型22

1.4.8基於構件的開發模型23

1.4.9Rational統一建模過程24

1.4.10微軟解決框架過程模型25

1.5軟體開發方法26

1.5.1結構化開發方法27

1.5.2面向對象開發方法27〖1〗軟體工程基礎(第2版)目錄[3]〖3〗1.6案例描述28

1.6.1簡歷信息自動獲取和查詢系統28

1.6.2試卷自動生成系統29

1.7本章小結30

習題31

第2章軟體需求工程/33

2.1軟體需求的基本概念33

2.1.1需求分析的任務33

2.1.2需求分析的原則34

2.1.3需求分析的內容35

2.2需求工程的過程36

2.2.1需求工程中的參與人員36

2.2.2可行性研究37

2.2.3需求工程過程中的活動39

2.2.4需求工程的管理40

2.3需求獲取技術41

2.4結構化需求分析和建模43

2.4.1結構化需求分析概述44

2.4.2面向數據的數據建模44

2.4.3面向數據流的功能建模46

2.4.4面向狀態轉換的行為建模50

2.4.5數據字典51

2.4.6加工邏輯53

2.5案例——“簡歷自動獲取和查詢系統”的需求建模54

2.5.1數據建模——ER圖描述54

2.5.2功能建模——數據流圖55

2.5.3行為建模——狀態轉換圖56

2.5.4數據字典57

2.5.5加工邏輯——PDL語言的描述57

2.6需求評審58

2.6.1軟體需求規格說明文檔58

2.6.2需求評審標準及需求驗證61

2.6.3需求變更管理63

2.7本章小結64

習題64

第3章軟體設計基礎/66

3.1軟體設計概述66

3.1.1軟體設計與軟體需求66

3.1.2軟體設計的任務67

3.1.3軟體設計的原則69

3.2軟體體系結構設計70

3.2.1體系結構設計概述70

3.2.2以數據為中心的數據倉庫模型70

3.2.3客戶端/伺服器模式的分散式結構71

3.2.4層次模型73

3.2.5管道與過濾器模型74

3.3模組化設計75

3.3.1軟體模組化與分解75

3.3.2抽象76

3.3.3信息隱藏76

3.3.4模組獨立性77

3.3.5啟發式規則79

3.4界面設計82

3.4.1界面設計的任務82

3.4.2界面設計的原則83

3.4.3界面設計的特性84

3.4.4MVC模型84

3.5軟體設計評審85

3.5.1軟體設計規格說明文檔85

3.5.2軟體設計評審標準89

3.5.3軟體設計驗證90

3.6本章小結91

習題92

第4章結構化設計方法/93

4.1結構化設計方法概述93

4.2面向數據流的設計方法94

4.2.1層次圖和結構圖94

4.2.2變換分析法96

4.2.3事務分析法100

4.2.4混合分析法101

4.3面向數據的設計方法102

4.3.1Jackson圖102

4.3.2Jackson系統開發方法103

4.4案例——“簡歷自動獲取和查詢系統”的數據流設計方法106

4.4.1用變換分析法進行設計106

4.4.2用事務分析法進行設計107

4.4.3兩種方法的比較108

4.5結構化詳細設計的工具109

4.5.1程式流程圖109

4.5.2盒圖(NS圖)110

4.5.3問題分析圖(PAD圖)111

4.5.4判定樹113

4.5.5判定表113

4.5.6詳細設計工具的比較114

4.6本章小結115

習題116

第5章軟體實現/118

5.1程式設計語言118

5.1.1程式設計語言的分類118

5.1.2程式設計語言的特性119

5.1.3選擇程式設計語言120

5.2程式設計風格122

5.2.1程式編排和組織的準則122

5.2.2程式設計的效率126

5.3代碼復用127

5.4代碼評審129

5.5本章小結132

習題133

第6章軟體測試/136

6.1軟體測試基礎136

6.1.1軟體測試概念136

6.1.2軟體測試過程模型137

6.1.3軟體測試原則139

6.1.4軟體測試在軟體開發各階段的工作流程141

6.1.5軟體測試信息流143

6.1.6軟體測試技術分類143

6.2白盒測試145

6.2.1邏輯覆蓋145

6.2.2循環測試148

6.2.3路徑測試149

6.3黑盒測試152

6.3.1等價類劃分152

6.3.2邊界值分析154

6.3.3錯誤推測法154

6.3.4因果圖法155

6.4白盒測試和黑盒測試的比較157

6.5軟體測試策略158

6.5.1單元測試158

6.5.2集成測試161

6.5.3確認測試164

6.5.4系統測試165

6.6調試167

6.6.1軟體調試過程167

6.6.2軟體調試方法168

6.7軟體測試報告169

6.7.1軟體測試說明169

6.7.2軟體測試報告170

6.8本章小結171

習題172

第7章UML統一建模語言/174

7.1UML的發展174

7.1.1UML的產生174

7.1.2UML的構成175

7.1.3UML的特點176

7.2面向對象的基本概念176

7.3UML視圖182

7.4UML的圖和模型元素183

7.4.1用例圖183

7.4.2類圖185

7.4.3包圖186

7.4.4狀態圖187

7.4.5活動圖187

7.4.6順序圖189

7.4.7協作圖190

7.4.8構件圖191

7.4.9配置圖192

7.5UML的關係192

7.5.1關聯關係193

7.5.2泛化關係196

7.5.3依賴關係199

7.5.4實現關係200

7.6UML的通用機制200

7.6.1修飾201

7.6.2注釋201

7.6.3規格說明201

7.6.4擴展機制202

7.7基於UML的軟體過程203

7.8本章小結205

習題206

第8章面向對象分析/207

8.1面向對象分析概述207

8.1.1傳統軟體過程中的不足207

8.1.2面向對象的特點208

8.1.3面向對象分析的基本過程209

8.1.4面向對象分析的3類模型209

8.1.5靜態模型的5個層次210

8.2建立功能模型(用例模型)211

8.2.1識別參與者212

8.2.2識別用例212

8.2.3識別用例間關係214

8.2.4用例描述文檔215

8.3建立靜態模型(對象模型)216

8.3.1識別類與對象216

8.3.2劃分主題218

8.3.3確定結構219

8.3.4確定屬性220

8.3.5確定服務221

8.3.6類圖描述文檔221

8.3.7包圖描述文檔222

8.4建立動態模型223

8.4.1建立順序圖及其描述文檔223

8.4.2建立狀態圖及其描述文檔225

8.4.3建立協作圖及其描述文檔226

8.4.4建立活動圖及其描述文檔227

8.5本章小結229

習題229

第9章面向對象設計/231

9.1面向對象設計概述231

9.1.1面向對象分析與設計的關係231

9.1.2面向對象設計原則232

9.2精化類及類間關係233

9.2.1設計類的屬性233

9.2.2設計類的方法234

9.2.3設計類間泛化關係235

9.2.4設計關聯類236

9.3數據設計237

9.3.1基於關係資料庫的數據設計237

9.3.2基於其他方式的數據設計239

9.4人機互動設計240

9.5建立實現模型241

9.5.1構件圖及其描述文檔241

9.5.2配置圖及其描述文檔243

9.6設計模式簡介244

9.6.1概述244

9.6.2Singleton模式245

9.6.3Abstract Factory模式247

9.6.4Mediator模式249

9.6.5Adapter模式251

9.6.6Iterator模式253

9.6.7State模式256

9.7面向對象的測試258

9.7.1面向對象測試概述258

9.7.2面向對象的單元測試259

9.8本章小結261

習題262

第10章軟體維護/265

10.1軟體維護概述265

10.1.1軟體維護的任務265

10.1.2軟體維護的特點266

10.1.3軟體維護的分類266

10.2軟體維護過程267

10.2.1軟體維護方式268

10.2.2軟體維護管理的基本內容269

10.2.3維護中存在的問題273

10.2.4維護活動記錄274

10.3軟體的可維護性275

10.3.1可維護性因素275

10.3.2提高軟體的可維護性276

10.4逆向工程278

10.5本章小結280

習題281

第11章軟體項目管理/282

11.1軟體項目管理概述282

11.1.1軟體項目管理的特點和內容282

11.1.2軟體項目管理目標283

11.1.3軟體項目管理的4P觀點284

11.2軟體項目規模度量285

11.2.1代碼行技術286

11.2.2功能點計算287

11.2.3代碼行與功能點間的轉換290

11.3軟體項目估算291

11.3.1代碼行和功能點的其他估算模型291

11.3.2專家估算模型291

11.3.3Putnam模型292

11.3.4COCOMO模型292

11.3.5項目估算模型的小結295

11.4項目進度管理295

11.4.1項目進度控制295

11.4.2甘特圖296

11.4.3工程網路圖297

11.5項目風險管理298

11.5.1軟體風險概念299

11.5.2風險管理過程299

11.6項目質量管理302

11.6.1軟體質量因素303

11.6.2軟體質量保證活動307

11.6.3軟體質量保證計畫308

11.7軟體配置管理309

11.7.1軟體配置項310

11.7.2配置管理過程310

11.7.3軟體配置管理計畫313

11.8項目人員組織管理315

11.8.1團隊組織315

11.8.2團隊組織方式315

11.9軟體能力成熟度模型317

11.9.1基本概念317

11.9.2軟體能力成熟度模型等級319

11.9.3關鍵過程域319

11.10本章小結320

習題321

參考文獻/3231.6案例描述28

1.6.1簡歷信息自動獲取和查詢系統28

1.6.2試卷自動生成系統29

1.7本章小結30

習題31

第2章軟體需求工程/33

2.1軟體需求的基本概念33

2.1.1需求分析的任務33

2.1.2需求分析的原則34

2.1.3需求分析的內容35

2.2需求工程的過程36

2.2.1需求工程中的參與人員36

2.2.2可行性研究37

2.2.3需求工程過程中的活動39

2.2.4需求工程的管理40

2.3需求獲取技術41

2.4結構化需求分析和建模43

2.4.1結構化需求分析概述44

2.4.2面向數據的數據建模44

2.4.3面向數據流的功能建模46

2.4.4面向狀態轉換的行為建模50

2.4.5數據字典51

2.4.6加工邏輯53

2.5案例——“簡歷自動獲取和查詢系統”的需求建模54

2.5.1數據建模——ER圖描述54

2.5.2功能建模——數據流圖55

2.5.3行為建模——狀態轉換圖56

2.5.4數據字典57

2.5.5加工邏輯——PDL語言的描述57

2.6需求評審58

2.6.1軟體需求規格說明文檔58

2.6.2需求評審標準及需求驗證61

2.6.3需求變更管理63

2.7本章小結64

習題64第3章軟體設計基礎/66

3.1軟體設計概述66

3.1.1軟體設計與軟體需求66

3.1.2軟體設計的任務67

3.1.3軟體設計的原則69

3.2軟體體系結構設計70

3.2.1體系結構設計概述70

3.2.2以數據為中心的數據倉庫模型70

3.2.3客戶端/伺服器模式的分散式結構71

3.2.4層次模型73

3.2.5管道與過濾器模型74

3.3模組化設計75

3.3.1軟體模組化與分解75

3.3.2抽象76

3.3.3信息隱藏76

3.3.4模組獨立性77

3.3.5啟發式規則79

3.4界面設計82

3.4.1界面設計的任務82

3.4.2界面設計的原則83

3.4.3界面設計的特性84

3.4.4MVC模型84

3.5軟體設計評審85

3.5.1軟體設計規格說明文檔85

3.5.2軟體設計評審標準90

3.5.3軟體設計驗證91

3.6本章小結92

習題93

第4章結構化設計方法/94

4.1結構化設計方法概述94

4.2面向數據流的設計方法95

4.2.1層次圖和結構圖95

4.2.2變換分析法97

4.2.3事務分析法101

4.2.4混合分析法102

4.3面向數據的設計方法103

4.3.1Jackson圖103

4.3.2Jackson系統開發方法104

4.4案例——“簡歷自動獲取和查詢系統”的數據流設計方法107

4.4.1用變換分析法進行設計107

4.4.2用事務分析法進行設計108

4.4.3兩種方法的比較109

4.5結構化詳細設計的工具110

4.5.1程式流程圖110

4.5.2盒圖(NS圖)111

4.5.3問題分析圖(PAD圖)112

4.5.4判定樹114

4.5.5判定表114

4.5.6詳細設計工具的比較115

4.6本章小結116

習題117

第5章軟體實現/119

5.1程式設計語言119

5.1.1程式設計語言的分類119

5.1.2程式設計語言的特性120

5.1.3選擇程式設計語言121

5.2程式設計風格123

5.2.1程式編排和組織的準則123

5.2.2程式設計的效率127

5.3代碼復用128

5.4代碼評審130

5.5本章小結133

習題134

第6章軟體測試/137

6.1軟體測試基礎137

6.1.1軟體測試概念137

6.1.2軟體測試過程模型138

6.1.3軟體測試原則140

6.1.4軟體測試在軟體開發各階段的工作流程142

6.1.5軟體測試信息流144

6.1.6軟體測試技術分類144

6.2白盒測試146

6.2.1邏輯覆蓋146

6.2.2循環測試149

6.2.3路徑測試150

6.3黑盒測試153

6.3.1等價類劃分153

6.3.2邊界值分析155

6.3.3錯誤推測法155

6.3.4因果圖法156

6.4白盒測試和黑盒測試的比較158

6.5軟體測設策略159

6.5.1單元測試159

6.5.2集成測試162

6.5.3確認測試165

6.5.4系統測試166

6.6調試168

6.6.1軟體調試過程168

6.6.2軟體調試方法169

6.7軟體測試報告170

6.7.1軟體測試說明170

6.7.2軟體測試報告171

6.8本章小結172

習題173

第7章UML統一建模語言/175

7.1UML的發展175

7.1.1UML的產生175

7.1.2UML的構成176

7.1.3UML的特點177

7.2面向對象的基本概念177

7.3UML視圖183

7.4UML的圖和模型元素184

7.4.1用例圖184

7.4.2類圖186

7.4.3包圖187

7.4.4狀態圖188

7.4.5活動圖188

7.4.6順序圖190

7.4.7協作圖191

7.4.8構件圖192

7.4.9配置圖193

7.5UML的關係193

7.5.1關聯關係194

7.5.2泛化關係197

7.5.3依賴關係200

7.5.4實現關係201

7.6UML的通用機制201

7.6.1修飾202

7.6.2注釋202

7.6.3規格說明202

7.6.4擴展機制203

7.7基於UML的軟體過程204

7.8本章小結206

習題207

第8章面向對象分析/208

8.1面向對象分析概述208

8.1.1傳統軟體過程中的不足208

8.1.2面向對象的特點209

8.1.3面向對象分析的基本過程210

8.1.4面向對象分析的3類模型210

8.1.5靜態模型的5個層次211

8.2建立功能模型(用例模型)212

8.2.1識別參與者213

8.2.2識別用例213

8.2.3識別用例間關係215

8.2.4用例描述文檔216

8.3建立靜態模型(對象模型)217

8.3.1識別類與對象217

8.3.2劃分主題219

8.3.3確定結構220

8.3.4確定屬性221

8.3.5確定服務222

8.3.6類圖描述文檔222

8.3.7包圖描述文檔223

8.4建立動態模型224

8.4.1建立順序圖及其描述文檔224

8.4.2建立狀態圖及其描述文檔226

8.4.3建立協作圖及其描述文檔227

8.4.4建立活動圖及其描述文檔228

8.5本章小結230

習題230

第9章面向對象設計/232

9.1面向對象設計概述232

9.1.1面向對象分析與設計的關係232

9.1.2面向對象設計原則233

9.2精化類及類間關係234

9.2.1設計類的屬性234

9.2.2設計類的方法235

9.2.3設計類間泛化關係236

9.2.4設計關聯類237

9.3數據設計238

9.3.1基於關係資料庫的數據設計238

9.3.2基於其他方式的數據設計240

9.4人機互動設計241

9.5建立實現模型242

9.5.1構件圖及其描述文檔242

9.5.2配置圖及其描述文檔244

9.6設計模式簡介245

9.6.1概述245

9.6.2Singleton模式246

9.6.3Abstract Factory模式248

9.6.4Mediator模式250

9.6.5Adapter模式252

9.6.6Iterator模式254

9.6.7State模式257

9.7面向對象的測試259

9.7.1面向對象測試概述259

9.7.2面向對象的單元測試260

9.8本章小結262

習題263

第10章軟體維護/266

10.1軟體維護概述266

10.1.1軟體維護的任務266

10.1.2軟體維護的特點267

10.1.3軟體維護的分類267

10.2軟體維護過程268

10.2.1軟體維護方式269

10.2.2軟體維護管理的基本內容270

10.2.3維護中存在的問題274

10.2.4維護活動記錄275

10.3軟體的可維護性276

10.3.1可維護性因素276

10.3.2提高軟體的可維護性277

10.4逆向工程279

10.5本章小結281

習題282

第11章軟體項目管理/283

11.1軟體項目管理概述283

11.1.1軟體項目管理的特點和內容283

11.1.2軟體項目管理目標284

11.1.3軟體項目管理的4P觀點285

11.2軟體項目規模度量286

11.2.1代碼行技術287

11.2.2功能點計算288

11.2.3代碼行與功能點間的轉換291

11.3軟體項目估算292

11.3.1代碼行和功能點的其他估算模型292

11.3.2專家估算模型292

11.3.3Putnam模型293

11.3.4COCOMO模型293

11.3.5項目估算模型的小結296

11.4項目進度管理296

11.4.1項目進度控制296

11.4.2甘特圖297

11.4.3工程網路圖298

11.5項目風險管理299

11.5.1軟體風險概念300

11.5.2風險管理過程300

11.6項目質量管理303

11.6.1軟體質量因素304

11.6.2軟體質量保證活動308

11.6.3軟體質量保證計畫309

11.7軟體配置管理310

11.7.1軟體配置項311

11.7.2配置管理過程311

11.7.3軟體配置管理計畫314

11.8項目人員組織管理316

11.8.1團隊組織316

11.8.2團隊組織方式316

11.9軟體能力成熟度模型318

11.9.1基本概念318

11.9.2軟體能力成熟度模型等級320

11.9.3關鍵過程域320

11.10本章小結321

習題322

參考文獻/324

相關詞條

熱門詞條

聯絡我們