現(xiàn)代軟件工程:如何高效構(gòu)建軟件
定 價(jià):79.8 元
- 作者:[美]戴維·法利(DavidFarley)
- 出版時(shí)間:2023/6/1
- ISBN:9787115599582
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開本:128開
本書探討了軟件工程的真正含義,匯集了一些重要的軟件開發(fā)基本原則,將它們緊密結(jié)合成一個(gè)一致的模型,旨在幫助讀者有效、快速地構(gòu)建軟件。全書共4個(gè)部分:第1部分探討軟件工程的真正含義,以及如何將工程的原則和原理應(yīng)用到軟件開發(fā)中;第2部分講述運(yùn)用科學(xué)思想優(yōu)化軟件開發(fā)過程的方法,包括迭代式、增量式工作,獲得并利用快速、高質(zhì)量的反饋,采用實(shí)驗(yàn)性和經(jīng)驗(yàn)主義的科學(xué)方法;第3部分介紹管理軟件復(fù)雜性的方法,深入探討模塊化、內(nèi)聚力、關(guān)注點(diǎn)分離、信息隱藏和抽象、管理耦合等原則;第4部分介紹支持軟件工程的工具,以及一些貫穿本書的軟件開發(fā)理念,包括可測(cè)試性、可部署性、速度、控制變量、持續(xù)交付等。
(1)持續(xù)交付先驅(qū)戴維·法利全新力作。曾與耶斯·亨布爾(JezHumble)共同撰寫了獲Jolt大獎(jiǎng)的圖書《持續(xù)交付:發(fā)布可靠軟件的系統(tǒng)方法》。
(2)改進(jìn)復(fù)雜軟件系統(tǒng)的工程實(shí)踐指南。糾正人們對(duì)軟件工程的傳統(tǒng)認(rèn)知誤區(qū),闡述生產(chǎn)力和創(chuàng)造力在軟件工程中缺一不可的辯證關(guān)系;跳出特定的工具或技術(shù),抽象、提煉、連貫為一套具有普適性、基礎(chǔ)性的現(xiàn)代軟件工程思想和范式;以實(shí)用有效的方法為重點(diǎn),講解科學(xué)原理、工程技術(shù)如何應(yīng)用于軟件開發(fā)。
(3)廣泛適用于各類軟件開發(fā)團(tuán)隊(duì)。書中提及的“道法術(shù)器”,對(duì)于初創(chuàng)公司或大型企業(yè)都適用,促進(jìn)軟件組織更加可靠、有效、高質(zhì)量地構(gòu)建軟件,交付業(yè)務(wù)價(jià)值,激發(fā)創(chuàng)新活力。
(4)國(guó)家衛(wèi)星氣象中心風(fēng)云四號(hào)氣象衛(wèi)星地面系統(tǒng)副總設(shè)計(jì)師 楊磊、中國(guó)信息通信研究院云計(jì)算與大數(shù)據(jù)研究所副總工程師陳屹力等業(yè)界學(xué)者、實(shí)踐者親筆推薦。
戴維·法利(David Farley)是持續(xù)交付的先驅(qū)、思想領(lǐng)袖,也是持續(xù)交付、DevOps、測(cè)試驅(qū)動(dòng)開發(fā)和軟件開發(fā)領(lǐng)域的專家。
從現(xiàn)代計(jì)算的早期開始,戴維曾擔(dān)任過程序員、軟件工程師、系統(tǒng)架構(gòu)師和成功團(tuán)隊(duì)的核心,他掌握了計(jì)算機(jī)和軟件開發(fā)的基本原理,并形成了開創(chuàng)性的方法,改變了開發(fā)人員和團(tuán)隊(duì)的工作方式。他挑戰(zhàn)了傳統(tǒng)的思維方式,帶領(lǐng)團(tuán)隊(duì)開發(fā)了世界top級(jí)的軟件。
戴維是獲Jolt大獎(jiǎng)的《持續(xù)交付:發(fā)布可靠軟件的系統(tǒng)方法》一書的作者之一,是一位受歡迎的會(huì)議演講者,并在YouTube上運(yùn)營(yíng)著廣受歡迎的“持續(xù)交付”頻道,主題是軟件工程。他建立了世界上速度快的金融交易所之一,是行為驅(qū)動(dòng)開發(fā)的先驅(qū),是《反應(yīng)式宣言》的作者之一,并憑借LMAX Disruptor獲得了杜克開源軟件獎(jiǎng)。
戴維熱衷于通過咨詢、YouTube 頻道和培訓(xùn)課程分享他的專業(yè)知識(shí),幫助世界各地的開發(fā)團(tuán)隊(duì)改進(jìn)軟件的設(shè)計(jì),提高軟件的質(zhì)量和可靠性。
序 ——特麗莎·吉(Trisha Gee),開發(fā)技術(shù)推廣工程師和Java 擁護(hù)者
第 1部分 什么是軟件工程?
第 1章 簡(jiǎn)單介紹 3
1.1 工程——科學(xué)的實(shí)際應(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è)計(jì)工程,而非生產(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 測(cè)量的可重復(fù)性和準(zhǔn)確性 23
2.10 工程、創(chuàng)造和工藝 25
2.11 為什么我們所做的不是軟件工程 27
2.12 權(quán)衡 28
2.13 進(jìn)步的錯(cuò)覺 28
2.14 從工藝到工程的旅程 29
2.15 只有工藝還不夠 30
2.16 是時(shí)候反思了? 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 迭代式工作的實(shí)際優(yōu)勢(shì) 47
4.2 迭代作為防御性設(shè)計(jì)策略 49
4.3 計(jì)劃的誘惑 51
4.4 迭代式工作的實(shí)用性 56
4.5 小結(jié) 58
第5章 反饋 59
5.1 反饋重要性的實(shí)例 60
5.2 編碼中的反饋 63
5.3 集成中的反饋 64
5.4 設(shè)計(jì)中的反饋 66
5.5 架構(gòu)中的反饋 68
5.6 傾向于早期反饋 70
5.7 產(chǎn)品設(shè)計(jì)中的反饋 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è)計(jì) 82
6.6 小結(jié) 84
第7章 經(jīng)驗(yàn)主義 85
7.1 立足于現(xiàn)實(shí) 86
7.2 區(qū)分經(jīng)驗(yàn)主義與實(shí)驗(yàn)性 87
7.3 “我知道那個(gè)bug!” 87
7.4 避免自我欺騙 89
7.5 創(chuàng)造符合我們論點(diǎn)的現(xiàn)實(shí) 90
7.6 以現(xiàn)實(shí)為指導(dǎo) 93
7.7 小結(jié) 94
第8章 實(shí)驗(yàn)性 95
8.1 “實(shí)驗(yàn)性”是什么意思? 96
8.2 反饋 97
8.3 假設(shè) 99
8.4 度量 100
8.5 控制變量 101
8.6 自動(dòng)化測(cè)試作為實(shí)驗(yàn) 102
8.7 將測(cè)試的實(shí)驗(yàn)結(jié)果置于環(huán)境中 103
8.8 實(shí)驗(yàn)范圍 105
8.9 小結(jié) 106
第3部分 優(yōu)化管理復(fù)雜性
第9章 模塊化 109
9.1 模塊化的標(biāo)志 111
9.2 低估優(yōu)秀設(shè)計(jì)的重要性 111
9.3 可測(cè)試性的重要性 113
9.4 可測(cè)試性設(shè)計(jì)提高模塊化 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è)計(jì)的基礎(chǔ) 127
10.2 內(nèi)聚力的基本降低 128
10.3 上下文很重要 131
10.4 高性能軟件 134
10.5 與耦合的聯(lián)系 135
10.6 測(cè)試驅(qū)動(dòng)開發(fā)推動(dòng)高內(nèi)聚力 136
10.7 如何實(shí)現(xiàn)內(nèi)聚軟件 136
10.8 內(nèi)聚力差的代價(jià) 139
10.9 人類系統(tǒng)中的內(nèi)聚力 140
10.10 小結(jié) 140
第 11章 關(guān)注點(diǎn)分離 141
11.1 依賴注入 145
11.2 分離本質(zhì)復(fù)雜性和偶然復(fù)雜性 146
11.3 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的重要性 149
11.4 可測(cè)試性 151
11.5 端口和適配器 151
11.6 何時(shí)采用端口和適配器 154
11.7 什么是API 155
11.8 使用測(cè)試驅(qū)動(dòng)開發(fā)推動(dòng)關(guān)注點(diǎn)分離 156
11.9 小結(jié) 157
第 12章 信息隱藏和抽象 158
12.1 抽象或信息隱藏 158
12.2 是什么導(dǎo)致了“大泥球” 159
12.3 組織和文化問題 159
12.4 技術(shù)問題和設(shè)計(jì)問題 162
12.5 對(duì)過度設(shè)計(jì)的恐懼 165
12.6 通過測(cè)試改進(jìn)抽象 168
12.7 抽象的力量 169
12.8 抽象泄漏 170
12.9 選擇適當(dāng)?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 耦合的代價(jià) 181
13.2 擴(kuò)展 182
13.3 微服務(wù) 183
13.4 解耦可能意味著更多的代碼 185
13.5 松耦合不是重要的類型 187
13.6 傾向于松耦合 188
13.7 這與關(guān)注點(diǎn)分離有何不同? 189
13.8 DRY 太過于簡(jiǎn)單化 190
13.9 異步作為松耦合的工具 192
13.10 松耦合設(shè)計(jì) 193
13.11 人類系統(tǒng)中的松耦合 194
13.12 小結(jié) 196
第4部分 支持軟件工程的工具
第 14 章 工程學(xué)科的工具 199
14.1 什么是軟件開發(fā)? 200
14.2 可測(cè)試性作為工具 202
14.3 測(cè)量點(diǎn) 205
14.4 實(shí)現(xiàn)可測(cè)試性的問題 205
14.5 如何提高可測(cè)試性 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é)果與機(jī)制 222
15.4 持久且普遍適用 224
15.5 工程學(xué)科的基礎(chǔ) 227
15.6 小結(jié) 227