軟件工程(第4版)

張海藩 呂雲翔 編著

  • 出版商: 人民郵電
  • 出版日期: 2021-11-01
  • 定價: $270
  • 售價: 8.5$229
  • 語言: 簡體中文
  • 頁數: 336
  • ISBN: 7115326533
  • ISBN-13: 9787115326539
  • 下單後立即進貨 (約4週~6週)

  • 軟件工程(第4版)-preview-1
軟件工程(第4版)-preview-1

商品描述

本書是軟件工程領域的經典教材。全書由5 篇(16 章) 構成,第 1 篇( 第 1、2 章) 講述軟件工程與軟件過程;第 2 篇講述傳統方法學( 第3 ~ 5 章),包括結構化分析、設計與實現;第3 篇講述面向對象方法學( 第6 ~ 10 章),包括面向對象的概念、模型、分析、設計、實現,同時介紹了統一建模語言UML; 第4 篇講述軟件項目管理( 第 11 ~ 14 章),包括軟件項目的計劃、組織和控制, 軟件維護與軟件文檔;第5 篇講述軟件工程的課題( 第 15、16 章),包括形式化方法和軟件重用。

目錄大綱

目 錄

第 1篇 軟件工程與軟件過程

第 1章 軟件工程概述 1

1.1 軟件危機與軟件工程的起源 1

1.1.1 電腦系統的發展歷程 1

1.1.2 軟件危機介紹 2

1.1.3 產生軟件危機的原因 2

1.1.4 消除軟件危機的途徑 4

1.2 軟件工程 5

1.2.1 什麽是軟件工程 5

1.2.2 軟件工程的基本原理 5

1.3 軟件工程包含的領域 7

小結 9

習題 9

第 2章 軟件過程 11

2.1 軟件生命周期的基本任務 11

2.2 瀑布模型 14

2.3 快速原型模型 16

2.4 增量模型 17

2.5 螺旋模型 18

2.6 噴泉模型 19

2.7 Rational統一過程 20

2.7.1 **佳實踐 21

2.7.2 RUP的十大要素 22

2.7.3 RUP生命周期 24

2.8 敏捷過程與極限編程 26

2.8.1 敏捷過程概述 26

2.8.2 極限編程 27

2.9 能力成熟度模型 29

2.9.1 能力成熟度模型的結構 29

2.9.2 能力成熟度等級 30

2.9.3 關鍵過程域 31

2.9.4 應用CMM 32

小結 32

習題 33

第 2篇 傳統方法學

第3章 結構化分析 35

3.1 概述 35

3.2 與用戶溝通的方法 36

3.2.1 訪談 36

3.2.2 簡易的應用規格說明技術 37

3.2.3 軟件原型 38

3.3 分析建模與規格說明 39

3.3.1 分析建模 39

3.3.2 軟件需求規格說明 39

3.4 實體—關系圖 41

3.5 數據流圖 42

3.5.1 數據流圖符號 43

3.5.2 例子 44

3.5.3 命名 46

3.6 狀態轉換圖 47

3.6.1 狀態 47

3.6.2 事件 47

3.6.3 符號 48

3.6.4 例子 48

3.7 數據字典 49

3.8 結構化分析實例 51

3.8.1 問題陳述 51

3.8.2 問題定義 51

3.8.3 可行性研究 52

3.8.4 需求分析 57

小結 62

習題 63

第4章 結構化設計 67

4.1 結構化設計與結構化分析的關系 67

4.2 軟件設計的概念和原理 68

4.2.1 模塊化 68

4.2.2 抽象 70

4.2.3 逐步求精 70

4.2.4 信息隱藏 71

4.3 模塊獨立 72

4.3.1 耦合 72

4.3.2 內聚 73

4.4 啟發規則 74

4.5 表示軟件結構的圖形工具 76

4.5.1 層次圖和HIPO圖 76

4.5.2 結構圖 78

4.6 面向數據流的設計方法 79

4.6.1 概念 79

4.6.2 變換分析 80

4.6.3 事務分析 85

4.6.4 設計優化 86

4.7 人—機界面設計 87

4.7.1 人—機界面設計問題 87

4.7.2 人—機界面設計過程 88

4.7.3 界面設計指南 89

4.8 過程設計 91

4.9 過程設計的工具 92

4.9.1 程序流程圖 93

4.9.2 盒圖(N-S圖) 93

4.9.3 PAD圖 94

4.9.4 判定表 95

4.9.5 判定樹 96

4.9.6 過程設計語言 97

4.10 面向數據結構的設計方法 97

4.10.1 Jackson圖 98

4.10.2 改進的Jackson圖 99

4.10.3 Jackson方法 99

小結 103

習題 104

第5章 結構化實現 106

5.1 編碼 107

5.1.1 選擇程序設計語言 107

5.1.2 編碼風格 108

5.2 軟件測試基礎 110

5.2.1 測試目標 110

5.2.2 黑盒測試和白盒測試 110

5.2.3 測試準則 111

5.2.4 流圖 111

5.3 邏輯覆蓋 112

5.4 控制結構測試 115

5.4.1 基本路徑測試 115

5.4.2 條件測試 117

5.4.3 數據流測試 119

5.4.4 循環測試 120

5.5 黑盒測試技術 121

5.5.1 等價劃分 121

5.5.2 邊界值分析 123

5.5.3 錯誤推測 124

5.6 測試策略 124

5.6.1 測試步驟 125

5.6.2 單元測試 125

5.6.3 集成測試 127

5.6.4 確認測試 130

5.7 調試 131

5.7.1 調試過程 131

5.7.2 調試途徑 132

5.8 軟件可靠性 133

5.8.1 基本概念 134

5.8.2 估算平均無故障時間的方法 134

小結 136

習題 137

第3篇 面向對象方法學

第6章 面向對象方法學導論 140

6.1 面向對象程序設計實例 140

6.1.1 用對象分解取代功能分解 140

6.1.2 設計類等級 142

6.1.3 定義屬性和服務 143

6.2 面向對象方法學概述 144

6.2.1 面向對象方法學的要點 144

6.2.2 面向對象的軟件過程 146

6.3 面向對象方法學的主要優點 146

6.4 面向對象的概念 149

6.4.1 對象 150

6.4.2 其他概念 152

6.5 面向對象建模 155

6.6 對象模型 156

6.6.1 表示類的符號 156

6.6.2 表示關系的符號 158

6.7 動態模型 162

6.8 功能模型 163

6.9 3種模型之間的關系 163

小結 164

習題 164

第7章 面向對象分析 166

7.1 分析過程 166

7.1.1 概述 166

7.1.2 3個子模型與5個層次 167

7.2 需求陳述 168

7.2.1 書寫要點 168

7.2.2 例子 168

7.3 建立對象模型 169

7.3.1 確定類與對象 170

7.3.2 確定關聯 171

7.3.3 劃分主題 174

7.3.4 確定屬性 174

7.3.5 識別繼承關系 176

7.3.6 反復修改 177

7.4 建立動態模型 179

7.4.1 編寫腳本 179

7.4.2 設想用戶界面 180

7.4.3 畫事件跟蹤圖 181

7.4.4 畫狀態圖 182

7.4.5 審查動態模型 184

7.5 建立功能模型 184

7.6 定義服務 186

7.7 面向對象分析實例 186

7.7.1 需求陳述 187

7.7.2 建立對象模型 187

7.7.3 建立動態模型 188

7.7.4 建立功能模型 190

7.7.5 進一步完善 190

小結 191

習題 192

第8章 面向對象設計 194

8.1 面向對象設計的準則 194

8.2 啟發規則 196

8.3 系統分解 197

8.3.1 子系統之間的兩種交互方式 198

8.3.2 組織系統的兩種方案 199

8.3.3 設計系統的拓撲結構 199

8.4 設計問題域子系統 199

8.5 設計人—機交互子系統 201

8.5.1 設計人—機交互界面的準則 201

8.5.2 設計人—機交互子系統的策略 202

8.6 設計任務管理子系統 203

8.6.1 分析並發性 203

8.6.2 設計任務管理子系統 204

8.7 設計數據管理子系統 205

8.7.1 選擇數據存儲管理模式 205

8.7.2 設計數據管理子系統 206

8.7.3 例子 207

8.8 設計類中的服務 208

8.8.1 確定類中應有的服務 208

8.8.2 設計實現服務的方法 208

8.9 設計關聯 209

8.10 設計優化 210

8.10.1 確定優先級 210

8.10.2 提高效率的幾項技術 211

8.10.3 調整繼承關系 212

8.11 面向對象分析與設計實例 213

8.11.1 面向對象分析 214

8.11.2 面向對象設計 215

小結 220

習題 220

第9章 面向對象實現 222

9.1 程序設計語言 222

9.1.1 面向對象語言的優點 222

9.1.2 面向對象語言的技術特點 223

9.1.3 選擇面向對象語言 226

9.2 程序設計風格 226

9.2.1 提高可重用性 227

9.2.2 提高可擴充性 228

9.2.3 提高健壯性 229

9.3 測試策略 229

9.3.1 面向對象的單元測試 230

9.3.2 面向對象的集成測試 230

9.3.3 面向對象的確認測試 230

9.4 設計測試用例 230

9.4.1 測試類的方法 231

9.4.2 集成測試方法 232

小結 234

習題 234

第 10章 統一建模語言 236

10.1 概述 236

10.1.1 UML的產生和發展 236

10.1.2 UML的系統結構 237

10.1.3 UML的圖 238

10.1.4 UML的應用領域 239

10.2 靜態建模機制 240

10.2.1 用例 240

10.2.2 類圖和對象圖 244

10.3 動態建模機制 245

10.3.1 消息 245

10.3.2 狀態圖 246

10.3.3 順序圖 247

10.3.4 協作圖 248

10.3.5 活動圖 249

10.4 描述物理架構的機制 249

10.4.1 邏輯架構和物理架構 250

10.4.2 構件圖 250

10.4.3 部署圖 250

10.5 使用和擴展UML 252

10.5.1 使用UML的準則 252

10.5.2 擴展UML的機制 253

小結 253

習題 254

第4篇 軟件項目管理

第 11章 計劃 257

11.1 度量軟件規模 257

11.1.1 代碼行技術 257

11.1.2 功能點技術 258

11.2 工作量估算 260

11.2.1 靜態單變量模型 260

11.2.2 動態多變量模型 260

11.2.3 COCOMO2模型 261

11.3 進度計劃 263

11.3.1 基本原則 264

11.3.2 估算軟件開發時間 264

11.3.3 Gantt圖 265

11.3.4 工程網絡 266

11.3.5 估算進度 267

11.3.6 關鍵路徑 269

11.3.7 機動時間 269

小結 270

習題 271

第 12章 組織 273

12.1 民主製程序員組 273

12.2 主程序員組 274

12.3 現代程序員組 276

12.4 軟件項目組 277

12.4.1 3種組織方式 277

12.4.2 4種組織範型 279

小結 279

習題 279

第 13章 控制 281

13.1 風險管理 281

13.1.1 軟件風險分類 281

13.1.2 風險識別 282

13.1.3 風險預測 286

13.1.4 處理風險的策略 287

13.2 質量保證 289

13.2.1 軟件質量 289

13.2.2 軟件質量保證措施 290

13.3 配置管理 292

13.3.1 軟件配置 292

13.3.2 軟件配置管理過程 294

小結 299

習題 299

第 14章 軟件維護與軟件文檔 301

14.1 軟件維護 301

14.1.1 軟件維護的過程 301

14.1.2 軟件維護的分類 303

14.1.3 軟件的可維護性 303

14.1.4 軟件維護的副作用 304

14.2 軟件文檔 305

小結 307

習題 307

第5篇 課題

第 15章 形式化方法 309

15.1 概述 309

15.1.1 非形式化方法的缺點 309

15.1.2 軟件開發過程中的數學 310

15.1.3 應用形式化方法的準則 310

15.2 有窮狀態機 311

15.2.1 基本概念 311

15.2.2 電梯問題 312

15.2.3 評論 314

15.3 Petri網 315

15.3.1 基本概念 315

15.3.2 應用實例 316

15.4 Z語言 317

15.4.1 簡介 318

15.4.2 評論 319

小結 320

習題 320

第 16章 軟件重用 322

16.1 可重用的軟件成分 322

16.2 軟件重用過程 323

16.2.1 構件組裝模型 323

16.2.2 類構件 324

16.2.3 重用過程模型 325

16.3 領域工程 326

16.3.1 分析過程 326

16.3.2 領域特徵 327

16.3.3 結構建模和結構點 328

16.4 開發可重用的構件 328

16.4.1 為了重用的分析與設計 328

16.4.2 基於構件的開發 329

16.5 分類和檢索構件 330

16.5.1 描述可重用的構件 330

16.5.2 重用環境 332

16.6 軟件重用的效益 333

小結 334

習題 334

參考文獻 335