現代軟體工程:如何高效構建軟體

現代軟體工程:如何高效構建軟體

《現代軟體工程:如何高效構建軟體》是一本2023年人民郵電出版社出版的圖書,作者是戴維·法利(David Farley)。

基本介紹

  • 中文名:現代軟體工程:如何高效構建軟體
  • 作者:戴維·法利(David Farley)
  • 出版時間:2023年6月
  • 出版社:人民郵電出版社
  • ISBN:9787115599582
內容簡介,圖書目錄,作者簡介,

內容簡介

本書探討了軟體工程的真正含義,匯集了一些重要的軟體開發基本原則,將它們緊密結合成一個一致的模型,旨在幫助讀者有效、快速地構建軟體。全書共4個部分:第1部分探討軟體工程的真正含義,以及如何將工程的原則和原理套用到軟體開發中;第2部分講述運用科學思想最佳化軟體開發過程的方法,包括疊代式、增量式工作,獲得並利用快速、高質量的反饋,採用實驗性和經驗主義的科學方法;第3部分介紹管理軟體複雜性的方法,深入探討模組化、內聚力、關注點分離、信息隱藏和抽象、管理耦合等原則;第4部分介紹支持軟體工程的工具,以及一些貫穿本書的軟體開發理念,包括可測試性、可部署性、速度、控制變數、持續交付等。

圖書目錄

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

作者簡介

戴維·法利(David Farley)是持續交付的先驅、思想領袖,也是持續交付、DevOps、測試驅動開發和軟體開發領域的專家。 從現代計算的早期開始,戴維曾擔任過程式設計師、軟體工程師、系統架構師和成功團隊的核心,他掌握了計算機和軟體開發的基本原理,並形成了開創性的方法,改變了開發人員和團隊的工作方式。他挑戰了傳統的思維方式,帶領團隊開發了世界top級的軟體。 戴維是獲Jolt大獎的《持續交付:發布可靠軟體的系統方法》一書的作者之一,是一位受歡迎的會議演講者,並在YouTube上運營著廣受歡迎的“持續交付”頻道,主題是軟體工程。他建立了世界上速度快的金融交易所之一,是行為驅動開發的先驅,是《反應式宣言》的作者之一,並憑藉LMAX Disruptor獲得了杜克開源軟體獎。 戴維熱衷於通過諮詢、YouTube 頻道和培訓課程分享他的專業知識,幫助世界各地的開發團隊改進軟體的設計,提高軟體的質量和可靠性。

相關詞條

熱門詞條

聯絡我們