現(xiàn)代軟件工程 如何高效構(gòu)建軟件
鏈接:https://pan.baidu.com/s/1by9C4Jafrb8Jlk0YXc1YaQ?pwd=eu3y?
提取碼:eu3y

本書探討了軟件工程的真正含義,匯集了一些重要的軟件開發(fā)基本原則,將它們緊密結(jié)合成一個一致的模型,旨在幫助讀者有效、快速地構(gòu)建軟件。全書共4個部分:第1部分探討軟件工程的真正含義,以及如何將工程的原則和原理應(yīng)用到軟件開發(fā)中;第2部分講述運用科學(xué)思想優(yōu)化軟件開發(fā)過程的方法,包括迭代式、增量式工作,獲得并利用快速、高質(zhì)量的反饋,采用實驗性和經(jīng)驗主義的科學(xué)方法;第3部分介紹管理軟件復(fù)雜性的方法,深入探討模塊化、內(nèi)聚力、關(guān)注點分離、信息隱藏和抽象、管理耦合等原則;第4部分介紹支持軟件工程的工具,以及一些貫穿本書的軟件開發(fā)理念,包括可性、可部署性、速度、控制變量、持續(xù)交付等。

?
目錄
序 ——特麗莎·吉(Trisha Gee),開發(fā)技術(shù)推廣工程師和Java 擁護者
第 1部分 什么是軟件工程?
第 1章 簡單介紹? 3
1.1 工程——科學(xué)的實際應(yīng)用? 3
1.2 軟件工程的定義? 4
1.3 重新定義“軟件工程”? 6
1.4 軟件工程的誕生? 7
1.5 范式轉(zhuǎn)移? 9
1.6 小結(jié)? ?10
第 2章 什么是工程?? 11
2.1 生產(chǎn)不是我們的問題? 12
2.2 設(shè)計工程,而非生產(chǎn)工程? 12
2.3 工程學(xué)的初步定義? 17
2.4 工程不等于代碼? 18
2.5 為什么工程很重要?? 20
2.6 “工藝”的極限? 20
2.7 精度和可伸縮性? 21
2.8 管理復(fù)雜性? 22
2.9 測量的可重復(fù)性和*性? 23
2.10 工程、創(chuàng)造和工藝 25
2.11 為什么我們所做的不是軟件工程? 27
2.12 權(quán)衡? 28
2.13 進步的錯覺 28
2.14 從工藝到工程的旅程 29
2.15 只有工藝還不夠 30
2.16 是時候反思了?? 30
2.17 小結(jié)? 32
第3章 工程方法的基本原理 33
3.1 變革的行業(yè)? 33
3.2 度量的重要性 35
3.3 應(yīng)用穩(wěn)定性和吞吐量 37
3.4 軟件工程學(xué)科的基礎(chǔ) 38
3.5 學(xué)習(xí)* 39
3.6 管理復(fù)雜性的* 40
3.7 小結(jié)? 41
第 2部分 優(yōu)化學(xué)習(xí)
第4章 迭代式工作? 45
4.1 迭代式工作的實際優(yōu)勢? 47
4.2 迭代作為防御性設(shè)計策略? 49
4.3 計劃的誘惑? 51
4.4 迭代式工作的實用性? 56
4.5 小結(jié)? 58
第5章 反饋? 59
5.1 反饋重要性的實例 60
5.2 編碼中的反饋 63
5.3 集成中的反饋 64
5.4 設(shè)計中的反饋 66
5.5 架構(gòu)中的反饋 68
5.6 傾向于早期反饋? 70
5.7 產(chǎn)品設(shè)計中的反饋? 71
5.8 組織和文化中的反饋? 72
5.9 小結(jié)? 74
第6章 增量主義? 75
6.1 模塊化的重要性? 76
6.2 組織增量主義? 77
6.3 增量主義工具? 79
6.4 限制變更的影響? 80
6.5 增量式設(shè)計? 82
6.6 小結(jié)? 84
第7章 經(jīng)驗主義? 85
7.1 立足于現(xiàn)實? 86
7.2 區(qū)分經(jīng)驗主義與實驗性? 87
7.3 “我知道那個bug!”? 87
7.4 避免自我欺騙 89
7.5 創(chuàng)造符合我們論點的現(xiàn)實 90
7.6 以現(xiàn)實為指導(dǎo) 93
7.7 小結(jié)? 94
第8章 實驗性 95
8.1 “實驗性”是什么意思?? 96
8.2 反饋? 97
8.3 假設(shè)? 99
8.4 度量? 100
8.5 控制變量 101
8.6 自動化作為實驗 102
8.7 將的實驗結(jié)果置于環(huán)境中 103
8.8 實驗范圍 105
8.9 小結(jié)? 106
第3部分 優(yōu)化管理復(fù)雜性
第9章 模塊化? 109
9.1 模塊化的標志? 111
9.2 低估*設(shè)計的重要性? 111
9.3 可性的重要性? 113
9.4 可性設(shè)計提高模塊化? 114
9.5 服務(wù)和模塊化? 120
9.6 可部署性和模塊化? 121
9.7 不同規(guī)模的模塊化? 123
9.8 人類系統(tǒng)中的模塊化? 124
9.9 小結(jié)? ?126
第 10章 內(nèi)聚力? 127
10.1 模塊化和內(nèi)聚力:設(shè)計的基礎(chǔ)? 127
10.2 內(nèi)聚力的基本降低? 128
10.3 上下文很重要? 131
10.4 高性能軟件 134
10.5 與耦合的聯(lián)系 135
10.6驅(qū)動開發(fā)推動高內(nèi)聚力 136
10.7 如何實現(xiàn)內(nèi)聚軟件 136
10.8 內(nèi)聚力差的代價 139
10.9 人類系統(tǒng)中的內(nèi)聚力 140
10.10 小結(jié) 140
第 11章 關(guān)注點分離 141
11.1 依賴注入 145
11.2 分離本質(zhì)復(fù)雜性和偶然復(fù)雜性 146
11.3 領(lǐng)域驅(qū)動設(shè)計的重要性 149
11.4 可性 151
11.5 端口和適配器 151
11.6 何時采用端口和適配器? 154
11.7 什么是API? ?155
11.8 使用驅(qū)動開發(fā)推動關(guān)注點分離? 156
11.9 小結(jié)? 157
第 12章 信息隱藏和抽象? 158
12.1 抽象或信息隱藏? 158
12.2 是什么導(dǎo)致了“大泥球”? ?159
12.3 組織和文化問題? 159
12.4 技術(shù)問題和設(shè)計問題? 162
12.5 對過度設(shè)計的恐懼? 165
12.6 通過改進抽象? 168
12.7 抽象的力量? 169
12.8 抽象泄漏? 170
12.9 選擇適當?shù)某橄? 172
12.10 問題領(lǐng)域的抽象? 174
12.11 抽象偶然復(fù)雜性? 175
12.12 隔離第三方系統(tǒng)和代碼? 178
12.13 總是傾向于隱藏信息 179
12.14 小結(jié) 180
第 13章 管理耦合 181
13.1 耦合的代價 181
13.2 擴展 182
13.3 微服務(wù) 183
13.4 解耦可能意味著更多的代碼 185
13.5 松耦合不是*重要的類型 187
13.6 傾向于松耦合 188
13.7 這與關(guān)注點分離有何不同? 189
13.8 DRY 太過于簡單化 190
13.9 異步作為松耦合的工具 192
13.10 松耦合設(shè)計 193
13.11 人類系統(tǒng)中的松耦合 194
13.12 小結(jié) 196
第4部分 支持軟件工程的工具
第 14 章 工程學(xué)科的工具? 199
14.1 什么是軟件開發(fā)?? 200
14.2 可性作為工具? 202
14.3 測量點? 205
14.4 實現(xiàn)可性的問題? 205
14.5 如何提高可性? 209
14.6 可部署性? 210
14.7 速度? 212
14.8 控制變量? 213
14.9 持續(xù)交付? 214
14.10 支持工程的通用工具 215
14.11 小結(jié) 216
第 15章 現(xiàn)代軟件工程師 217
15.1 工程作為人類過程 219
15.2 數(shù)字化顛覆性組織 220
15.3 結(jié)果與機制 222
15.4 持久且普遍適用 224
15.5 工程學(xué)科的基礎(chǔ) 227
15.6 小結(jié) 227