內容簡介
《軟體工程》以
軟體開發過程為主線,系統地介紹了
軟體工程的基本原理、概念和技術方法。全書分16章,包括基本概念、軟體計畫、軟體需求分析、軟體設計、程式編碼、軟體測試、軟體維護、軟體復用、面向對象的軟體工程、軟體質量保證、軟體的技術度量、軟體開發工具與環境、軟體工程管理、軟體過程管理、基於構件的軟體工程(CBSE)和套用Web工程,每章後面都附有習題供讀者練習之用。本書的編寫基於中國軟體工程學科教程的要求,結合作者多年的教學和科研實踐並參考了同類文獻,包含了軟體工程學科的重要分支。本書體系完整,可作為本科生或研究生軟體工程課程的教材或參考書,也可供對該學科感興趣的讀者閱讀
圖書目錄
第1章概述1
1.1計算機系統的開發過程1
1.2軟體及其分類3
1.3軟體工程的由來和發展4
1.4軟體的生命周期6
1.5軟體生存期模型7
1.6小結13
第2章軟體計畫15
2.1確定軟體範圍15
2.2軟體開發中的資源需求15
2.3軟體成本估算17
2.3.3面向對象項目的估算30
2.3.4自行開發或購買的決策31
2.4軟體開發進度的安排32
2.4.1甘特圖32
2.4.2PERT圖33
2.4.3兩種圖的結合34
2.5小結36
第3章軟體需求分析41
3.1需求分析的任務41
3.2需求規約說明書42
3.3結構化需求分析方法44
3.3.1數據流圖44
3.3.2數據詞典50
3.3.3功能說明52
3.4原型化需求分析方法55
3.4.1原型開發的分類56
3.4.2快速原型技術58
3.4.3用戶界面開發61
3.5面向對象方法62
3.5.1Coad/Yourdon方法62
3.5.2Booch方法63
3.5.3Rumbaugh的OMT方法63
3.5.4Jacobson方法63
3.5.5UML方法64
3.6小結67
第4章軟體設計70
4.1軟體設計的任務70
4.1.1概要設計70
4.1.2詳細設計71
4.1.3軟體設計的目標和準則71
4.2軟體設計的概念和原則71
4.2.1軟體體系結構71
4.2.2軟體結構中的若干概念72
4.2.3軟體的模組化73
4.3軟體概要設計76
4.3.1充分理解SRS,確定設計策略76
4.3.2模組化準則77
4.3.3模組設計中的具體方法77
4.3.4概要設計文檔80
4.4軟體詳細設計81
4.4.1圖示工具81
4.4.2表格工具85
4.4.3語言工具85
4.4.4工具的比較85
4.4.5程式複雜性的度量87
4.4.6詳細設計文檔89
4.5結構化設計方法91
4.5.1軟體結構圖92
4.5.2從DFD導出軟體結構圖92
4.5.3軟體設計的評判98
4.6面向數據結構的設計方法100
4.6.1Jackson方法101
4.6.2LCP方法105
4.7面向對象的設計方法107
4.7.1OOD基本概念108
4.7.2OOD任務110
4.7.3Coad與Yourdon的OOD方法113
4.7.4層次化OOD方法114
4.8其他設計方法116
4.8.1面向方面程式設計116
4.8.2面向Agent的設計方法117
4.8.3泛型程式設計117
4.8.4面向構件的技術118
4.8.5敏捷方法118
4.8.6Rational統一過程118
4.8.7功能驅動開發模式118
4.8.8極端編程119
4.9小結119
第5章程式編碼124
5.1程式設計語言的分類124
5.1.1第一代語言--機器語言時代124
5.1.2第二代語言--彙編語言時代124
5.1.3第三代語言--高級語言時代124
5.1.4第四代語言--非過程語言時代125
5.2編碼風格125
5.2.1語句結構125
5.2.2源程式文檔化127
5.2.3數據說明128
5.2.4輸入和輸出129
5.3面向對象的程式語言130
5.3.1Smalltalk130
5.3.2Eiffel130
5.3.3SDL130
5.3.4C++131
5.3.5面向對象的Pascal131
5.3.6Java131
5.3.7C#131
5.4小結132
第6章軟體測試133
6.1軟體測試基礎133
6.1.1測試目標133
6.1.2測試原則133
6.1.3可測試性134
6.2測試步驟和策略134
6.2.1軟體測試過程與開發過程的對應關係134
6.2.2測試信息流135
6.2.3單元測試135
6.2.4集成測試136
6.2.5確認測試141
6.2.6系統測試142
6.3測試用例設計143
6.3.1概述143
6.3.2邏輯覆蓋144
6.3.3等價類劃分147
6.3.4邊界值分析148
6.3.5劃分測試與隨機測試148
6.3.6錯誤推測法148
6.3.7因果圖法149
6.3.8人工測試149
6.3.9調試150
6.4軟體可靠性151
6.4.1可靠性和可用性152
6.4.2影響軟體可靠性的因素152
6.4.3軟體可靠性模型153
6.4.4軟體可靠性工程155
6.5面向對象的測試155
6.5.1OO軟體測試策略155
6.5.2OO類測試方法156
6.5.3繼承層次的測試158
6.6小結160
第7章軟體維護163
7.1軟體維護的概念163
7.1.1改正性維護164
7.1.2適應性維護164
7.1.3完善性維護164
7.1.4預防性維護164
7.2軟體的可維護性164
7.2.1可理解性165
7.2.2可測試性165
7.2.3可修改性165
7.2.4可靠性166
7.2.5可移植性166
7.2.6可使用性166
7.2.7效率166
7.3提高可維護性的方法166
7.3.1提供完整和一致的文檔167
7.3.2建立明確的軟體質量目標和優先權167
7.3.3使用現代化的開發技術和工具168
7.3.4進行明確的質量保證審查168
7.3.5選擇可維護性好的程式設計語言169
7.3.6採用軟體維護的新方法169
7.4軟體再工程170
7.4.1業務過程再工程170
7.4.2軟體再工程過程模型171
7.4.3逆向工程172
7.4.4軟體重構173
7.4.5正向工程174
7.4.6再工程經濟學174
7.5小結175
習題7175第8章軟體復用177
8.1軟體復用概念177
8.1.1軟體復用的類型177
8.1.2軟體復用的粒度178
8.1.3軟體復用機會的識別179
8.2領域工程181
8.2.1領域分析181
8.2.2領域特徵182
8.3可復用構件的建造及復用183
8.3.1構件應具有的特徵183
8.3.2領域構件的設計框架184
8.3.3幾種流行的構件技術184
8.3.4建立可復用的構件庫186
8.3.5軟體構件的復用187
8.3.6基於Agent的軟體復用188
8.3.7基於復用的數據挖掘系統189
8.4面向對象的軟體復用技術190
8.4.1復用技術對OO方法的支持190
8.4.2OO軟體復用技術191
8.5小結192
習題8193第9章面向對象的軟體工程194
9.1面向對象的基本概念194
9.1.1對象195
9.1.2類196
9.1.3訊息、方法和變數197
9.1.4面向對象的基本特徵198
9.2面向對象建模及統一建模語言UML203
9.2.1面向對象建模203
9.2.2統一建模語言UML204
9.2.3UML模型208
9.2.4UML的擴展機制216
9.2.5UML建模工具219
9.3面向對象的軟體需求分析及設計220
9.3.1常用的面向對象軟體工程方法220
9.3.2基於UML的軟體分析與設計222
9.4面向對象的軟體需求分析方法及其在圖書館系統的套用223
9.4.1系統需求224
9.4.2用面向對象方法進行系統需求分析224
9.5基於UML的網路管理平台的分析與設計228
9.5.1系統開發過程228
9.5.2系統的實現231
9.6小結232
習題9233第10章軟體質量保證235
10.1軟體質量的概念235
10.2軟體質量保證236
10.2.1SQA活動236
10.2.2軟體可靠性與軟體質量保證237
10.2.3軟體質量檢驗與軟體質量保證238
10.3軟體複審238
10.3.1軟體錯誤的危害性238
10.3.2軟體複審與審核計畫239
10.3.3正式技術複審239
10.4統計質量保證240
10.5ISO9000質量標準242
10.5.1ISO9000簡介242
10.5.2ISO9000認證標準243
10.5.3我國對ISO9000標準的使用246
10.6軟體質量預測模型及套用247
10.6.1軟體質量度量和質量預測模型的關係247
10.6.2廣義回歸神經網路結構及特點248
10.6.3軟體質量預測模型的套用249
10.7小結250
習題10251第11章軟體的技術度量252
11.1軟體技術度量概述252
11.1.1軟體技術度量要解決的問題252
11.1.2軟體技術度量考慮的軟體質量因素252
11.1.3軟體技術度量的原則256
11.2軟體分析模型的度量256
11.2.1基於功能點的度量256
11.2.2基於原語的度量--Bang度量258
11.2.3SRS質量的度量259
11.3軟體設計模型的度量259
11.3.1體系結構設計度量259
11.3.2構件級度量262
11.3.3界面設計度量265
11.4原始碼度量266
11.4.1Halstead度量方法266
11.4.2Thayer複雜性度量266
11.5軟體測試的度量267
11.5.1測試過程S曲線267
11.5.2缺陷追蹤和管理268
11.5.3外包軟體驗收測試中的度量268
11.6軟體維護的度量269
11.6.1UKSMA和NESMA標準269
11.6.2軟體維護的度量269
11.7面向對象的度量270
11.7.1面向對象度量方法270
11.7.2面向對象系統中考慮結構因素的類的內聚度量274
11.8小結276
習題11276第12章軟體開發工具與環境279
12.1軟體開發工具279
12.2軟體開發環境280
12.2.1軟體開發環境的組成280
12.2.2軟體開發環境的分類281
12.3計算機輔助軟體工程282
12.3.1CASE環境283
12.3.2軟體開發CASE工具簡介283
12.4小結289
習題12289第13章軟體工程管理290
13.1軟體工程文化290
13.1.1軟體文化概念290
13.1.2軟體項目的五要素291
13.1.3肯定開發者的成就292
13.1.4不斷學習新知識292
13.1.5尋找卓越的需求293
13.1.6質量文化293
13.1.7方法、測量和工具294
13.2現代人件295
13.2.1團隊開發295
13.2.2程式設計師個人對軟體系統的影響296
13.2.3工作組織297
13.3軟體工程36計302
13.3.1方法篇302
13.3.2設計篇305
13.3.3實現篇306
13.3.4管理篇308
13.4軟體風險分析與管理309
13.4.1軟體風險及分類309
13.4.2風險預測310
13.4.3風險的緩解、監控和管理312
13.5軟體配置管理314
13.5.1軟體配置314
13.5.2配置標識315
13.5.3里程碑與變更控制315
13.5.4配置狀態登錄316
13.5.5配置審查316
13.6軟體工程標準化317
13.6.1軟體工程標準化的意義317
13.6.2軟體工程標準化的研究內容317
13.6.3軟體工程國家標準318
13.7軟體的智慧財產權保護319
13.7.1軟體智慧財產權的法律保護319
13.7.2計算機軟體是著作權法保護的客體320
13.7.3軟體著作權人享有的專有權利321
13.7.4軟體著作權的登記323
13.8小結323
習題13324第14章軟體過程管理326
14.1軟體能力成熟度模型326
14.1.1CMM的必要性326
14.1.2CMM的提出與發展327
14.1.3CMM的作用328
14.2CMM的主要內容329
14.2.1CMM的專業術語329
14.2.2CMM的內容330
14.2.3CMM的內部結構332
14.3CMM各級之間的關係336
14.3.1評估軟體企業的CMM級別337
14.3.2從初始級向可重複級過渡337
14.3.3從可重複級向已定義級過渡338
14.3.4向可管理級和最佳化級過渡338
14.4CMM實施的人員構成和組織機構的劃分339
14.4.1人員的構成339
14.4.2組織機構的劃分340
14.5個體軟體過程342
14.5.1PSP概述342
14.5.2PSP的設計原則343
14.5.3PSP進化的框架343
14.5.4PSP的套用345
14.5.5PSP的擴展--團隊軟體過程347
14.6小結349
習題14349第15章基於構件的軟體工程351
15.1基本概念351
15.1.1CBSE過程351
15.1.2領域工程352
15.1.3基於構件的開發352
15.1.4CBSE經濟學354
15.1.5軟構件的可測試性355
15.2可復用構件的分類與查詢357
15.2.1主要的分類方法357
15.2.2基於刻面的檢索358
15.3基於構件的軟體重用成熟度359
15.3.1重用成熟度359
15.3.2構件重用與軟體成熟度的關係360
15.4構件技術套用361
15.4.1CORBA構件模型CCM361
15.4.2基於構件技術的移動通信監控系統362
15.4.3構件技術在電力信息化中的套用363
15.4.4基於演化構件的軟體開發364
15.4.5基於復用技術的仿真系統軟體364
15.5小結367
習題15368第16章套用Web工程369
16.1Web工程369
16.1.1基於Web的系統及套用的特點369
16.1.2WebApp工程的層次371
16.1.3Web工程過程371
16.1.4Web工程的最佳實踐373
16.2WebApp項目計畫374
16.2.1表述WebApp項目374
16.2.2制定WebApp項目計畫376
16.2.3組建Web工程團隊377
16.2.4Web工程的項目管理378
16.3WebApp分析382
16.3.1WebApp的需求分析382
16.3.2WebApp的分析模型385
16.3.3內容模型385
16.3.4互動模型387
16.3.5功能模型388
16.3.6配置模型389
16.3.7關係導航分析390
16.4WebApp設計392
16.4.1Web工程設計392
16.4.2WebApp界面設計395
16.4.3美學設計399
16.4.4內容設計400
16.4.5體系結構設計400
16.4.6導航設計403
16.4.7構件級設計404
16.4.8超媒體設計模式404
16.4.9面向對象的超媒體設計方法405
16.5WebApp測試406
16.5.1WebApp測試概念406
16.5.2WebApp測試過程408
16.5.3WebApp測試策略409
16.6小結411
習題16413
參考文獻415