軟體工程導論(第2版)

軟體工程導論(第2版)

《軟體工程導論(第2版)》是2008年9月1日清華大學出版社出版的圖書。

圖書簡介

本書是為計算機專業的本科生編寫的軟體工程教科書。它在一個軟體工程學總體的框架下來一一介紹軟體工程所涉及的重要的話題,章節的編排遵循一個軟體產品的生命周期中所要進行的所有活動的順序。首先概述了軟體工程的概念,包括一些重要的生命周期模型以及軟體項目管理的技術和概念。接下來詳述了軟體項目的需求分析、設計、建模及編碼和測試等內容。最後描述了軟體的質量管理、維護、復用等問題;同時也解釋了近年來發展起來的CASE工具的基本概念。

目錄

第1章概述 1

1.1軟體工程學科——發展和影響 2

1.1.1工程學科藝術的發展 2

1.1.2軟體危機的一個解決方案 3

1.2程式與軟體產品 4

1.3為什麼研究軟體工程 5

1.4軟體工程的出現 5

1.4.1早期計算機編程 6

1.4.2高級語言編程 6

1.4.3基於流程控制的設計 6

1.4.4面向數據結構的設計 8

1.4.5面向數據流的設計 8

1.4.6面向對象的設計 9

1.4.7其他發展 9

1.5軟體開發實踐中的重要變化 10

1.6計算機系統工程 11

1.7小結 12

1.8練習 12

第2章軟體生命周期模型 15

2.1為什麼使用生命周期 16

2.1.1為什麼要記錄一個生命周期模型 16

2.1.2階段出入標準 16

2.2經典瀑布模型 17

2.2.1可行性研究 18

2.2.2需求分析和說明 19

2.2.3設計 20

2.2.4編碼和單元測試 21

2.2.5集成和系統測試 22

2.2.6維護 22

2.3疊代瀑布模型 22

2.4原型模型 24

2.5進化模型 26

2.6螺旋模型 27

2.7不同生命周期模型的比較 28

2.8小結 29

2.9練習 30

第3章軟體項目管理 33

3.1軟體項目經理的職責 33

3.1.1軟體項目經理的工作職責 33

3.1.2軟體項目經理所必需的...

3.2項目規劃 34

3.3項目規模估算的度量 36

3.3.1代碼行(LOC) 36

3.3.2功能點度量 37

3.4項目估算方法 39

3.4.1經驗估算法 39

3.4.2啟發式方法 40

3.4.3分析估算法 40

3.5經驗估算法 40

3.5.1專家判斷法 41

3.5.2Delphi成本估算 41

3.6COCOMO——一種啟發式估算法 41

3.6.1基本COCOMO模型 42

3.6.2中等COCOMO模型 45

3.6.3完整COCOMO模型 45

3.7HALSTEAD的軟體科學——一種分析技術 46

3.7.1標準C語言的運算符和運算元 47

3.7.2長度和辭彙 47

3.7.3程式量 47

3.7.4潛在最小量 47

3.7.5工作量和時間 48

3.7.6長度估算 48

3.8人員配置級別估算 50

3.8.1Norden的工作 50

3.8.2Putnam的工作 50

3.8.3時間表改變對於成本的影響 51

3.8.4Jensen模型 52

3.9調度 52

3.9.1工作分解結構 53

3.9.2活動網路和關鍵路徑方法 54

3.9.3Gantt圖 55

3.9.4PERT圖 56

3.9.5項目監測和控制 57

3.10組織和團隊結構 57

3.10.1組織結構 58

3.10.2團隊結構 59

3.11人員配置 61

3.12風險管理 62

3.12.1風險識別 63

3.12.2風險評估 63

3.12.3風險遏制 63

3.13軟體組態管理 64

3.13.1軟體組態管理的必要性 65

3.13.2組態管理活動 65

3.13.3原始碼控制系統(SCCS)和RCS 67

3.14雜項計畫 67

3.15小結 68

3.16練習 68

第4章需求分析和規約 73

4.1需求收集和分析 74

4.2軟體需求規約(SRS) 75

4.2.1SRS文檔內容 76

4.2.2功能需求 77

4.2.3如何識別功能需求 78

4.2.4如何記錄功能需求 78

4.2.5可追蹤性 80

4.2.6好的SRS文檔的特徵 80

4.2.7差的SRS文檔的例子 81

4.2.8SRS文檔的組織 81

4.2.9表示複雜邏輯的技術 82

4.3形式系統開發技術 84

4.3.1什麼是形式技術 84

4.3.2模型與面向屬性的方法 85

4.3.3操作語義 85

4.3.4形式方法的優點和局限 86

4.4公理規約 87

4.5代數規約 88

4.5.1輔助函式 91

4.5.2結構規約 92

4.5.3代數規約的優劣 92

4.6可執行規約和4GL 92

4.7小結 93

4.8練習 93

第5章軟體設計 97

5.1什麼是一個優秀的軟體設計 98

5.2內聚和耦合 99

5.2.1內聚力的分類 100

5.2.2耦合的分類 101

5.3整齊排列 101

5.4軟體設計的方法 102

5.4.1面向功能的設計 103

5.4.2面向對象的設計 103

5.5面向對象的設計與面向功能的設計 103

5.6小結 105

5.7練習 105

第6章面向功能的軟體設計 107

6.1SA/SD方法總覽 107

6.2結構分析 108

6.3數據流程圖(DFD) 108

6.3.1用於構建DFD的原始符號 109

6.3.2與設計DFD相關的一些重要概念 109

6.3.3開發一個系統的DFD模型 112

6.3.4DFD模型的缺點 121

6.4將DFD技術擴展到實時系統 121

6.5結構設計 122

6.5.1流程圖與結構圖 123

6.5.2將一個DFD模型轉換為一個結構圖 123

6.6細節設計 126

6.7設計審查 127

6.8小結 127

6.9練習 127

第7章使用UML的對象建模 139

7.1面向對象的概念總覽 139

7.1.1基本機制 140

7.1.2關鍵概念 143

7.1.3相關的技術名詞 147

7.1.4OOD的優勢 147

7.2統一建模語言(UML) 148

7.3UML圖 150

7.4使用實例模型 151

7.4.1用例的表示 152

7.4.2為什麼開發用例圖 154

7.4.3如何識別一個系統的用例 155

7.4.4基本用例與真實用例 155

7.4.5用例之間的共有屬性的因子化 155

7.4.6用例包 157

7.5類圖 158

7.6互動圖 162

7.7活動圖 164

7.8狀態圖 165

7.9小結 166

7.10練習 167

第8章面向對象的軟體開發 169

8.1設計模式 170

8.2一個泛化的面向對象的分析和設計過程 172

8.2.1總覽 172

8.2.2用例模型開發 173

8.2.3域建模 174

8.2.4實體對象的識別 175

8.2.5Booch的對象識別方法 176

8.2.6互動建模 177

8.2.7CRC卡片 177

8.3例子 178

8.4OOD好壞的標準 183

8.5小結 184

8.6練習 185

第9章用戶界面設計 187

9.1一個良好用戶界面的特徵 187

9.2基本概念 189

9.2.1用戶指南和線上幫助 189

9.2.2基於模式的界面與無模式的界面 190

9.2.3圖形用戶界面(GUI)與基於文本的用戶界面 190

9.3用戶界面的種類 191

9.3.1基於命令語言的界面 191

9.3.2基於選單的界面 192

9.3.3直接操作界面 194

9.4基於組件的GUI開發 194

9.4.1視窗系統 194

9.4.2控制項類型 197

9.4.3X-Window/Motif概述 198

9.4.4X架構 198

9.4.5可視化編程 199

9.4.6基於組件的GUI的規模度量 200

9.5用戶界面設計方法 200

9.5.1用戶界面設計中的人類認知能力的暗示 200

9.5.2GUI設計方法 201

9.5.3任務和對象建模 201

9.5.4選擇一個比喻 203

9.5.5互動設計和粗略布局 203

9.5.6用戶界面檢查 203

9.6小結 204

9.7練習 204

第10章編碼和測試 207

10.1編碼 207

10.2代碼複審 209

10.2.1代碼走查 209

10.2.2代碼檢查 210

10.2.3潔淨室測試 210

10.2.4軟體文檔 211

10.3測試 212

10.3.1什麼是測試 212

10.3.2驗證與確認 212

10.3.3測試用例的設計 212

10.4大型測試與小型測試 213

10.5單元測試 213

10.6黑盒測試 214

10.6.1等價類劃分 214

10.6.2邊界值分析 215

10.6.3黑盒測試集設計小結 215

10.7白盒測試 216

10.7.1語句覆蓋 216

10.7.2分支覆蓋 217

10.7.3條件覆蓋 217

10.7.4路徑覆蓋 217

10.7.5McCabe的圈複雜性度量 219

10.7.6基於數據流的測試 220

10.7.7變異測試 221

10.8調試 221

10.8.1調試方法 221

10.8.2調試指南 222

10.9程式分析工具 222

10.9.1靜態分析工具 222

10.9.2動態分析工具 223

10.10集成測試 223

10.11系統測試 225

10.11.1性能測試 225

10.11.2錯誤撒播 227

10.12和測試相關的一些一般問題 227

10.13小結 228

10.14練習 228

第11章軟體可靠性和質量管理 235

11.1軟體可靠性 235

11.1.1硬體與軟體可靠性 236

11.1.2可靠性度量 237

11.1.3可靠性增長建模 238

11.2統計測試 239

11.3軟體質量 240

11.4軟體質量管理體系 241

11.5ISO9000 242

11.5.1什麼是ISO9000認證 242

11.5.2軟體行業的ISO9000 242

11.5.3為什麼要得到ISO9000認證 243

11.5.4如何獲得ISO9000認證 243

11.5.5ISO9001需求概述 244

11.5.6ISO9001需求的顯著特徵 246

11.5.7ISO9000認證的缺點 246

11.6SEI能力成熟度模型 246

11.6.1ISO9000和SEI/CMM的比較 248

11.6.2SEICMM是否適用於小型組織 248

11.7個體軟體過程(PSP) 249

11.8六西格瑪 250

11.9小結 251

11.10練習 251

第12章計算機輔助軟體工程 255

12.1CASE及其範圍 255

12.2CASE環境 255

12.3軟體生命周期中的CASE支持 257

12.3.1原型支持 257

12.3.2結構分析和設計 258

12.3.3代碼生成 258

12.3.4測試CASE生成器 258

12.4CASE工具的其他特徵 258

12.4.1硬體和環境需求 259

12.4.2文檔支持 259

12.4.3項目管理 259

12.4.4外部界面 259

12.4.5逆向工程支持 259

12.4.6數據詞典界面 260

12.4.7教程和幫助 260

12.5朝著第二代CASE工具前進 260

12.6一個CASE環境的架構 260

12.7小結 261

12.8練習 261

第13章軟體維護 263

13.1軟體維護的特徵 263

13.1.1軟體維護的類型 263

13.1.2軟體發展的特徵 264

13.1.3與軟體維護相關的特殊問題 264

13.2軟體逆向工程 265

13.3軟體維護過程模型 266

13.4維護成本的估測 268

13.5小結 269

13.6練習 269

第14章軟體復用 271

14.1什麼能夠復用 271

14.2為什麼這么久以來幾乎沒有復用 272

14.3復用程式中的基本問題 272

14.4一個復用方法 273

14.4.1域分析 273

14.4.2組件分類 274

14.4.3搜尋 274

14.4.4數據倉庫維護 275

14.4.5無修改的復用 275

14.5組織級別的復用 276

14.6小結 277

14.7練習 278

參考文獻 279

相關詞條

熱門詞條

聯絡我們