軟件工程案例教程 :軟件項目開發(fā)實踐 第4版
定 價:69 元
叢書名:高等院校軟件工程學(xué)科系列教材
- 作者:韓萬江姜立新
- 出版時間:2023/4/1
- ISBN:9787111722663
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.5
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書以一個貫穿始終的軟件項目案例為基礎(chǔ),講述了軟件項目開發(fā)中需求分析、概要設(shè)計、詳細設(shè)計、編碼、測試、交付以及維護等各個過程中涉及的理論、方法、技術(shù)、提交的產(chǎn)品和文檔等。本書注重實效、系統(tǒng)、全面,通過貫穿始終案例的講述可以讓學(xué)習(xí)者在短時間內(nèi)掌握軟件項目開發(fā)的基本知識、基本過程,并有效提高實踐能力。
前 言
黨的二十大報告將實施科教興國戰(zhàn)略,強化現(xiàn)代化建設(shè)人才支撐,放在重要的戰(zhàn)略位置,是對教育科技人才重要性的充分強調(diào)。黨的二十大報告作出教育、科技、人才“三位一體”的戰(zhàn)略部署,賦予了高等教育新的歷史使命和時代課題。本書同樣擔(dān)負此歷史的重任,黨的二十大報告在科教人才戰(zhàn)略中排在位的就是辦好人民滿意的教育,因此編者的宗旨是編寫出讓讀者滿意的教材。
本書第1版于2005年2月出版,十幾年來,每4~5年修訂一版,目前是第4版。前3版得到了廣大讀者的好評,被眾多高校選為教材,作者也收到很多反饋,其中既有熱情的贊揚,也有中肯的建議,在此深表感謝。我們參考了很多同行的建議,同時結(jié)合近年對軟件工程技術(shù)發(fā)展的研究,以及多年教學(xué)和項目實踐的經(jīng)驗,對第3版進行了全面修訂。第4版的主要更新包括:結(jié)合軟件工程技術(shù)的發(fā)展,重新梳理了軟件工程理論和技術(shù),全書貫穿傳統(tǒng)軟件工程技術(shù)與敏捷化軟件工程技術(shù)的對比,總結(jié)了軟件開發(fā)實踐的過程、經(jīng)驗和方法;重新甄選了可以反映敏捷化開發(fā)的項目案例,并對這些案例進行精心整理。本書是理論與實踐相結(jié)合的典范,每章都有對應(yīng)的項目案例展示和分析,并且提供案例文檔。通過對軟件工程中的需求分析、概要設(shè)計、詳細設(shè)計、編程、測試、產(chǎn)品交付、維護等過程的學(xué)習(xí),讀者可以掌握軟件開發(fā)的基本流程,同時結(jié)合每章的案例分析,讀者能夠更加深入地理解軟件開發(fā)實踐過程,并在短時間內(nèi)提高軟件開發(fā)技能。本書通過貫穿始終的案例,將理論與實踐相結(jié)合,可以幫助讀者快速掌握軟件開發(fā)的核心技能。后,附錄1說明了軟件工程項目開發(fā)過程中的主要文檔,同時結(jié)合教材案例介紹了通過自動化平臺生成統(tǒng)一化項目文檔的過程。附錄2結(jié)合黨的二十大報告精神,將思政案例融入教材,實現(xiàn)嵌入式思政。
本書是一本系統(tǒng)化、有針對性且有實效的書籍,對從事軟件項目開發(fā)以及希望學(xué)習(xí)軟件開發(fā)的人員有非常好的指導(dǎo)作用。
本書由韓萬江、姜立新編著,同時對韓卓言、田怡凡、韓睿、邱雅穎、陳瓏崢、姜賀陽等為本書撰寫所做的貢獻表示感謝!
由于作者水平有限,書中難免有疏漏之處,誠請各位讀者批評指正,并希望你們將使用本書的體會和遇到的問題告訴我們,以便我們在下一版中進行完善。讀者可發(fā)郵件至casey_han@263.net。我們將一直保持初心,持續(xù)改進,不斷打磨精品,為廣大讀者奉獻有價值的資源。
韓萬江
2022年6月于北京
目 錄
前言
第1章 軟件工程之道1
1.1 軟件工程的背景1
1.1.1 軟件定義一切1
1.1.2 軟件工程的誕生2
1.1.3 軟件工程的本質(zhì)3
1.2 軟件工程知識體系4
1.3 軟件工程路線圖6
1.3.1 軟件項目開發(fā)路線圖9
1.3.2 軟件項目管理路線圖9
1.3.3 軟件過程改進路線圖10
1.4 軟件開發(fā)的傳統(tǒng)模型13
1.4.1 瀑布模型13
1.4.2 V模型14
1.4.3 原型模型14
1.4.4 增量式模型14
1.4.5 噴泉模型14
1.4.6 智能模型15
1.5 軟件開發(fā)的敏捷模型15
1.5.1 Scrum16
1.5.2 XP20
1.5.3 DevOps23
1.5.4 規(guī)模化敏捷模型24
1.6 軟件工程中的復(fù)用原則24
1.7 小結(jié)25
1.8 練習(xí)題25
第2章 軟件工程模型與方法27
2.1 軟件工程建模27
2.1.1 信息模型28
2.1.2 行為模型28
2.1.3 結(jié)構(gòu)模型28
2.1.4 統(tǒng)一建模語言—UML28
2.2 軟件工程方法30
2.2.1 面向過程(結(jié)構(gòu)化)方法32
2.2.2 面向?qū)ο蠓椒?4
2.2.3 數(shù)據(jù)建模方法37
2.2.4 形式化方法37
2.2.5 快速原型方法38
2.2.6 面向構(gòu)件方法38
2.2.7 面向代理方法39
2.2.8 敏捷開發(fā)方法41
2.2.9 模型驅(qū)動開發(fā)方法42
2.2.10 無代碼開發(fā)模式43
2.3 軟件工程方法對比44
2.4 軟件逆向工程44
2.5 基于容器技術(shù)的軟件工程化管理44
2.6 MSHD項目案例說明45
2.7 小結(jié)46
2.8 練習(xí)題46
第3章 軟件項目的需求分析48
3.1 軟件項目需求概述48
3.1.1 需求定義49
3.1.2 需求類型49
3.1.3 需求的重要性50
3.2 傳統(tǒng)需求工程50
3.2.1 需求獲取51
3.2.2 需求分析53
3.2.3 需求規(guī)格說明編寫54
3.2.4 需求驗證55
3.2.5 需求變更55
3.3 敏捷需求工程56
3.3.1 需求獲取56
3.3.2 需求建模57
3.3.3 需求變更58
3.4 傳統(tǒng)需求分析方法58
3.4.1 結(jié)構(gòu)化需求分析方法58
3.4.2 面向?qū)ο笮枨蠓治龇椒?1
3.5 敏捷需求分析73
3.5.1 影響地圖73
3.5.2 需求池74
3.5.3 用戶故事編寫74
3.5.4 用戶故事分解76
3.5.5 用戶故事的INVEST準(zhǔn)則76
3.5.6 用戶故事地圖78
3.6 需求的實例化78
3.6.1 BDD78
3.6.2 實例化需求80
3.7 需求分析的可視化工具81
3.7.1 IPO圖81
3.7.2 判斷矩陣81
3.7.3 功能列表82
3.8 原型設(shè)計工具83
3.8.1 Axure RP83
3.8.2 Balsamiq Mockups84
3.8.3 Prototype Composer84
3.8.4 GUI Design Studio84
3.9 需求規(guī)格說明文檔84
3.10 MSHD項目案例—需求分析87
3.10.1 MSHD用戶地圖87
3.10.2 MSHD用戶故事分解88
3.10.3 MSHD登錄系統(tǒng)Story88
3.10.4 MSHD響應(yīng)時間需求Story89
3.11 小結(jié)89
3.12 練習(xí)題89
第4章 軟件項目的概要設(shè)計92
4.1 軟件設(shè)計綜述92
4.1.1 軟件設(shè)計過程93
4.1.2 軟件設(shè)計的原則93
4.1.3 軟件設(shè)計的模式94
4.1.4 概要設(shè)計的定義96
4.2 軟件架構(gòu)設(shè)計96
4.2.1 單體架構(gòu)(H/T體系結(jié)構(gòu))97
4.2.2 客戶服務(wù)架構(gòu)98
4.2.3 分層架構(gòu)100
4.2.4 分布式架構(gòu)103
4.2.5 面向服務(wù)的架構(gòu)105
4.2.6 微服務(wù)架構(gòu)107
4.2.7 領(lǐng)域驅(qū)動設(shè)計108
4.2.8 整潔架構(gòu)115
4.2.9 插件架構(gòu)115
4.2.10 無服務(wù)架構(gòu)116
4.2.11 云原生架構(gòu)119
4.2.12 面向工作流引擎122
4.3 應(yīng)用程序框架124
4.3.1 前端框架125
4.3.2 后臺業(yè)務(wù)框架129
4.3.3 后臺數(shù)據(jù)框架134
4.3.4 應(yīng)用組合架構(gòu)136
4.3.5 Python Web應(yīng)用架構(gòu)137
4.3.6 基于技術(shù)中臺的設(shè)計139
4.4 模塊(構(gòu)件)設(shè)計140
4.4.1 模塊分解141
4.4.2 外部接口和內(nèi)部接口設(shè)計142
4.4.3 模塊的耦合度142
4.4.4 模塊的內(nèi)聚度143
4.5 數(shù)據(jù)模型設(shè)計145
4.5.1 數(shù)據(jù)庫的設(shè)計過程147
4.5.2 數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計147
4.5.3 數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計149
4.5.4 數(shù)據(jù)庫的物理結(jié)構(gòu)設(shè)計153
4.5.5 文件設(shè)計154
4.6 用戶界面設(shè)計155
4.7 結(jié)構(gòu)化設(shè)計方法156
4.7.1 變換流與事務(wù)流158
4.7.2 功能模塊劃分158
4.7.3 數(shù)據(jù)流映射為結(jié)構(gòu)圖160
4.7.4 輸入/輸出設(shè)計161
4.8 面向?qū)ο蟮脑O(shè)計方法161
4.8.1 對象和類162
4.8.2 基于UML的設(shè)計圖示163
4.8.3 面向?qū)ο笤O(shè)計步驟168
4.8.4 對象類設(shè)計實例171
4.9 敏捷設(shè)計176
4.9.1 腐化軟件的味道176
4.9.2 防止腐化的設(shè)計177
4.10 概要設(shè)計文檔標(biāo)準(zhǔn)178
4.11 MSHD項目案例—概要設(shè)計180
4.11.1 架構(gòu)設(shè)計181
4.11.2 模塊設(shè)計182
4.11.3 數(shù)據(jù)庫設(shè)計183
4.11.4 界面設(shè)計184
4.12 小結(jié)184
4.13 練習(xí)題185
第5章 軟件項目的詳細設(shè)計187
5.1 詳細設(shè)計的概念187
5.1.1 詳細設(shè)計的定義187
5.1.2 詳細設(shè)計的內(nèi)容188
5.2 詳細設(shè)計的表示工具188
5.2.1 程序流程圖188
5.2.2 N-S圖描述算法189
5.2.3 PAD描述算法190
5.2.4 決策表191
5.2.5 過程設(shè)計語言192
5.2.6 偽代碼193
5.3 結(jié)構(gòu)化詳細設(shè)計194
5.3.1 算法194
5.3.2 JSD方法194
5.3.3 Warnier方法197
5.3.4 結(jié)構(gòu)化詳細設(shè)計的例子198
5.4 面向?qū)ο笤敿氃O(shè)計200
5.4.1 類之間關(guān)系的詳細設(shè)計200
5.4.2 類的詳細設(shè)計201
5.4.3 包的設(shè)計204
5.4.4 面向?qū)ο笤敿氃O(shè)計的例子204
5.5 敏捷化的整潔設(shè)計209
5.5.1 整潔設(shè)計209
5.5.2 基于TDD的詳細設(shè)計209
5.6 詳細設(shè)計文檔210
5.7 MSHD項目案例—詳細設(shè)計211
5.8 小結(jié)215
5.9 練習(xí)題215
第6章 軟件項目的編程217
6.1 編程概述217
6.1.1 編程語言218
6.1.2 編程環(huán)境219
6.1.3 編程范式219
6.2 面向過程(結(jié)構(gòu)化)編程219
6.2.1 算法實現(xiàn)220
6.2.2 控制結(jié)構(gòu)220
6.2.3 編程過程規(guī)則222
6.3 面向?qū)ο缶幊?25
6.3.1 對象和類225
6.3.2 面向?qū)ο缶幊痰幕窘Y(jié)構(gòu)228
6.3.3 面向?qū)ο缶幊膛c面向
過程編程的對比229
6.4 聲明式編程230
6.5 編程模式與策略231
6.5.1 面向組件編程231
6.5.2 面向服務(wù)編程232
6.5.3 面向切面編程233
6.5.4 低代碼模式233
6.5.5 編程策略234
6.6 敏捷化編程實踐234
6.6.1 測試驅(qū)動開發(fā)234
6.6.2 重構(gòu)235
6.6.3 結(jié)對編程238
6.6.4 紅-綠-藍循環(huán)238
6.7 整潔代碼244
6.7.1 什么是整潔代碼244
6.7.2 整潔的命名244
6.7.3 整潔函數(shù)248
6.7.4 整潔注釋248
6.7.5 整潔對象和數(shù)據(jù)結(jié)構(gòu)249
6.7.6 整潔交付250
6.7.7 復(fù)用原則250
6.7.8 McCabe程序復(fù)雜度251
6.7.9 防御性編程252
6.7.10 編程標(biāo)準(zhǔn)和規(guī)范252
6.8 MSHD項目案例—編程過程
。ㄏ到y(tǒng)構(gòu)建)253
6.8.1 項目開發(fā)環(huán)境的建立253
6.8.2 編程標(biāo)準(zhǔn)和規(guī)范255
6.8.3 TDD&Refactor開發(fā)模式256
6.9 小結(jié)261
6.10 練習(xí)題261
第7章 軟件項目的測試263
7.1 軟件測試概述263
7.1.1 什么是軟件測試264
7.1.2 軟件測試技術(shù)綜述265
7.2 靜態(tài)測試266
7.2.1 文檔審查266
7.2.2 代碼檢查268
7.2.3 技術(shù)評審269
7.3 白盒測試方法介紹270
7.4 白盒測試方法——基于控制流
的測試270
7.4.1 語句覆蓋270
7.4.2 判定覆蓋271
7.4.3 條件覆蓋271
7.4.4 判定/條件覆蓋272
7.4.5 條件組合覆蓋272
7.4.6 路徑覆蓋272
7.4.7 ESTCA規(guī)則273
7.4.8 LCSAJ覆蓋274
7.4.9 MC/DC覆蓋274
7.5 白盒測試方法——基于數(shù)據(jù)流
的測試275
7.5.1 定義/使用測試275
7.5.2 程序片測試 277
7.6 白盒測試方法——變異測試279
7.7 黑盒測試方法280
7.7.1 邊界值分析280
7.7.2 等價類劃分281
7.7.3 規(guī)范導(dǎo)出法282
7.7.4 錯誤猜測法283
7.7.5 基于故障的測試方法283
7.7.6 因果圖法283
7.7.7 決策表法284
7.7.8 場景法286
7.8 其他測試技術(shù)290
7.8.1 回歸測試290
7.8.2 隨機測試290
7.8.3 探索性測試290
7.9 軟件測試級別292
7.9.1 單元測試292
7.9.2 集成測試294
7.9.3 系統(tǒng)測試296
7.9.4 驗收測試298
7.9.5 上線測試299
7.10 面向?qū)ο蟮臏y試299
7.10.1 面向?qū)ο蠓治龅臏y試299
7.10.2 面向?qū)ο笤O(shè)計的測試300
7.10.3 面向?qū)ο蟮膯卧獪y試300
7.10.4 面向?qū)ο蟮募蓽y試301
7.10.5 面向?qū)ο蟮南到y(tǒng)測試302
7.11 測試過程管理302
7.11.1 軟件測試計劃303
7.11.2 軟件測試設(shè)計304
7.11.3 軟件測試開發(fā)307
7.11.4 軟件測試執(zhí)行307
7.11.5 軟件測試跟蹤308
7.11.6 軟件測試評估與總結(jié)312
7.12 敏捷測試315
7.12.1 敏捷測試層次316
7.12.2 敏捷測試模型316
7.12.3 持續(xù)測試318
7.12.4 自動化測試319
7.13 軟件測試過程的文檔321
7.13.1 測試計劃文檔321
7.13.2 測試設(shè)計文檔322
7.13.3 軟件測試報告330
7.14 MSHD項目案例—軟件
測試過程332
7.14.1 單元測試333
7.14.2 接口測試333
7.14.3 UI測試337
7.14.4 探索性測試340
7.14.5 性能測試342
7.14.6 測試結(jié)論345