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