本書對軟件工程的基本理論進行系統(tǒng)的介紹,并且用一個具體的實例貫穿全書,對具體知識點配有豐富的例題,這種理論與實踐相結(jié)合的方式極大地方便了讀者對抽象、枯燥的軟件工程理論的理解和掌握。
本書共分11章,按照軟件生命周期的流程組織各章內(nèi)容,同時覆蓋了結(jié)構(gòu)化開發(fā)方法和面向?qū)ο箝_發(fā)方法,具體內(nèi)容包括軟件工程概述、可行性研究、需求分析、概要設計、詳細設計、編碼、測試、維護、軟件項目管理、面向?qū)ο蠓椒ㄅcUML建模以及面向?qū)ο蠓治雠c設計。
本書可以作為高等院校軟件工程課程的教材,也可以作為從事軟件開發(fā)與測試工作以及其他相關(guān)工程技術(shù)工作的人員的參考書。
本書循序漸進地對軟件工程的基本理論進行了通俗易懂的講解,并配有微課視頻。
本書用一個具體的實例貫穿全書,對具體知識點配有豐富的例題,這種理論與實踐相結(jié)合的方式 極大地方便了讀者對抽象、枯燥的軟件工程理論的理解和掌握。
隨著軟件工程相關(guān)技術(shù)和方法的迅猛發(fā)展,它們對軟件設計、開發(fā)及維護工作起到了重要的指導與推動作用。為適應我國軟件工程的教學工作,編者在多年軟件開發(fā)以及軟件工程教學實踐的基礎上,參閱多種國內(nèi)外最新版本的教材,編寫了本書。本書可以作為高等院校本科生的教材,也可以為相關(guān)行業(yè)的工程技術(shù)人員提供有益的參考。
本書在第2版的基礎上對教材中的個別錯誤進行了修改,內(nèi)容安排與第2版一致,循序漸進地對軟件工程的基本理論進行了通俗易懂的講解,并增加了微課視頻。本書最大的特點是理論與實踐相結(jié)合,全書通過一個實例貫穿始終,把軟件工程的基本理論和方法系統(tǒng)、全面地講解清楚。這種方法克服了過去重理論輕實踐的內(nèi)容組織方式,大大方便了讀者的理解。具體而言,本書11章內(nèi)容之間的關(guān)系如下頁圖所示。
本書有配套的教學課件,讀者可從清華大學出版社網(wǎng)站(www.tup.com.cn)下載。由于編者水平有限,書中難免存在不足之處,懇請專家和讀者批評指正。
編者
2024年2月
第1章軟件工程概述1
1.1軟件1
1.1.1軟件的定義1
1.1.2軟件的特點2
1.1.3軟件的分類2
1.2軟件危機與軟件工程5
1.2.1軟件危機5
1.2.2軟件工程6
1.2.3軟件工程的基本內(nèi)容7
1.2.4軟件工程的基本原則7
1.3軟件生命周期與軟件開發(fā)模型8
1.3.1軟件生命周期8
1.3.2軟件開發(fā)模型9
1.4軟件開發(fā)方法17
1.4.1結(jié)構(gòu)化開發(fā)方法17
1.4.2面向?qū)ο箝_發(fā)方法20
1.5CASE工具與環(huán)境22
1.5.1Sybase PowerDesigner22
1.5.2Rational Rose23
1.5.3Microsoft Visio24
1.6軟件工程的演變與發(fā)展24
1.6.1軟件發(fā)展的新階段和新問題24
1.6.2軟件工程的發(fā)展25
小結(jié)25
習題26\軟\件\工\程\理\論\與\實\踐\(第3版·微課版)\/目錄/ 第2章可行性研究27
2.1可行性研究的含義27
2.2可行性研究的任務和步驟28
2.2.1可行性研究的任務28
2.2.2可行性研究的步驟29
2.3可行性研究的要素31
2.3.1經(jīng)濟可行性31
2.3.2技術(shù)可行性31
2.3.3社會環(huán)境可行性32
2.4成本效益分析32
2.4.1成本估計方法概述32
2.4.2成本估計34
2.4.3度量效益的方法34
2.5方案選擇與決策36
2.6可行性研究實例《學生教材購銷系統(tǒng)》可行性研究報告36
小結(jié)45
習題45
第3章需求分析47
3.1需求分析的基本概念47
3.1.1軟件需求的定義和特點 47
3.1.2需求分析的目標和任務48
3.1.3需求分析的原則50
3.2需求獲取的方法50
3.2.1用戶訪談50
3.2.2問卷調(diào)查50
3.2.3專題討論會51
3.2.4快速建立軟件原型52
3.3需求建模方法53
3.3.1數(shù)據(jù)流圖53
3.3.2數(shù)據(jù)字典57
3.3.3層次方框圖60
3.3.4Warnier圖61
3.3.5ER圖61
3.3.6狀態(tài)轉(zhuǎn)換圖64
3.4需求驗證65
3.4.1需求驗證的內(nèi)容66
3.4.2需求驗證的方法67
3.5需求分析實例《學生教材購銷系統(tǒng)》需求規(guī)格說明書67
3.5.1《學生教材購銷系統(tǒng)》非功能性需求68
3.5.2《學生教材購銷系統(tǒng)》功能性需求77
小結(jié)86
習題86
第4章概要設計87
4.1概要設計概述87
4.2概要設計的主要內(nèi)容88
4.2.1概要設計的任務和過程88
4.2.2軟件體系結(jié)構(gòu)設計89
4.2.3數(shù)據(jù)庫設計94
4.3概要設計的原則98
4.3.1模塊化98
4.3.2耦合99
4.3.3內(nèi)聚101
4.3.4啟發(fā)規(guī)則103
4.3.5面向?qū)ο笤O計模式103
4.4概要設計的工具104
4.4.1層次方框圖104
4.4.2IPO圖104
4.4.3HIPO圖105
4.5概要設計實例《學生教材購銷系統(tǒng)》概要設計說明書105
小結(jié)113
習題114
第5章詳細設計116
5.1詳細設計的內(nèi)容與原則116
5.1.1詳細設計的內(nèi)容116
5.1.2詳細設計的原則117
5.2數(shù)據(jù)代碼設計的工具117
5.2.1程序流程圖118
5.2.2NS 圖119
5.2.3PAD120
5.2.4PDL122
5.2.5判定表和判定樹123
5.2.6詳細設計工具的選擇125
5.3人機界面設計125
5.4程序結(jié)構(gòu)復雜性的定量度量127
5.4.1McCabe方法127
5.4.2Halstead方法129
5.5詳細設計實例《學生教材購銷系統(tǒng)》詳細設計說明書130
小結(jié)140
習題140
第6章編碼143
6.1程序設計語言143
6.1.1程序設計語言的分類143
6.1.2程序設計語言的特點146
6.1.3程序設計語言的選擇148
6.2編程風格150
6.3程序效率156
6.3.1程序效率準則156
6.3.2算法對效率的影響156
6.4編碼實例分析《學生教材購銷系統(tǒng)》編碼規(guī)范說明157
小結(jié)169
習題170
第7章測試172
7.1軟件測試概述172
7.1.1軟件測試的定義172
7.1.2軟件測試的對象173
7.1.3軟件測試的準則173
7.1.4軟件測試的方法174
7.2軟件測試過程 175
7.2.1單元測試175
7.2.2集成測試177
7.2.3系統(tǒng)測試179
7.2.4確認測試180
7.3白盒測試180
7.4黑盒測試184
7.5調(diào)試過程、技術(shù)與原則188
7.5.1調(diào)試過程188
7.5.2調(diào)試技術(shù)188
7.5.3調(diào)試原則190
7.6測試實例《學生教材購銷系統(tǒng)》測試報告190
小結(jié)195
習題196
第8章維護197
8.1軟件維護概述197
8.1.1軟件維護的分類197
8.1.2軟件維護的特點198
8.2維護任務的實施199
8.2.1維護組織200
8.2.2維護報告200
8.2.3維護過程201
8.3軟件的可維護性201
8.3.1軟件可維護性的定義201
8.3.2影響軟件可維護性的因素201
8.3.3提高軟件可維護性的方法202
8.4軟件維護的副作用204
8.4.1修改代碼的副作用204
8.4.2修改數(shù)據(jù)的副作用205
8.4.3修改文檔的副作用205
8.5軟件再工程205
8.6維護實例《學生教材購銷系統(tǒng)》軟件維護報告206
小結(jié)211
習題211
第9章軟件項目管理212
9.1軟件項目管理概述212
9.2軟件進度計劃管理214
9.2.1軟件進度計劃管理概述214
9.2.2軟件進度計劃編制方法216
9.2.3軟件進度計劃控制218
9.3軟件質(zhì)量管理219
9.3.1軟件質(zhì)量219
9.3.2軟件質(zhì)量保證措施222
9.3.3能力成熟度模型223
9.4軟件成本管理227
9.4.1軟件成本分析227
9.4.2軟件成本估計228
9.4.3軟件成本控制229
9.5配置管理232
9.5.1配置管理概述232
9.5.2配置管理的組織232
9.5.3配置管理的主要活動235
9.6人力資源管理238
9.6.1軟件項目人力資源的特征238
9.6.2人力資源管理的主要內(nèi)容238
9.6.3人員的組織與分工239
9.7軟件項目管理實例《學生教材購銷系統(tǒng)》項目管理方案242
小結(jié)251
習題251
第10章面向?qū)ο蠓椒ㄅcUML建模254
10.1面向?qū)ο蠓椒ǜ攀?54
10.1.1面向?qū)ο蠓椒ǖ暮x254
10.1.2面向?qū)ο蟮能浖こ?56
10.1.3面向?qū)ο蟮幕靖拍詈吞卣?60
10.2統(tǒng)一建模語言267
10.2.1模型的建立267
10.2.2UML的特點與應用272
10.2.3UML提供的常用圖274
10.3用例圖275
10.4狀態(tài)圖277
10.5活動圖278
10.6類圖280
10.7對象圖286
10.8順序圖286
10.9協(xié)作圖287
10.10組件圖288
10.11部署圖288
10.12使用PowerDesigner進行建模289
10.12.1PowerDesigner的安裝289
10.12.2PowerDesigner的功能290
10.12.3PowerDesigner的運行界面292
小結(jié)294
習題294
第11章面向?qū)ο蠓治雠c設計296
11.1面向?qū)ο蠓治?96
11.1.1面向?qū)ο蠓治龅倪^程與原則296
11.1.2確定對象與類300
11.1.3確定屬性303
11.1.4定義服務304
11.1.5對象間的通信308
11.2面向?qū)ο笤O計314
11.2.1面向?qū)ο笤O計的概念314
11.2.2面向?qū)ο笤O計的準則及啟發(fā)規(guī)則315
11.2.3面向?qū)ο笤O計的方法317
11.3使用PowerDesigner畫《學生教材購銷系統(tǒng)》的9種圖318
11.3.1《學生教材購銷系統(tǒng)》的用例圖318
11.3.2《學生教材購銷系統(tǒng)》的類圖319
11.3.3《學生教材購銷系統(tǒng)》的對象圖322
11.3.4《學生教材購銷系統(tǒng)》的狀態(tài)圖322
11.3.5《學生教材購銷系統(tǒng)》的活動圖322
11.3.6《學生教材購銷系統(tǒng)》的順序圖322
11.3.7《學生教材購銷系統(tǒng)》的協(xié)作圖324
11.3.8《學生教材購銷系統(tǒng)》的組件圖325
11.3.9《學生教材購銷系統(tǒng)》的部署圖325
小結(jié)326
習題326
參考文獻327