軟件架構實踐(原書第4版) Software Architecture in Practice, 4/e

Bass, Len, Clements, Paul, Kazman, Rick 譯 周樂

商品描述

自第3版出版以來,計算機領域發生了很大變化。
一些之前沒有被考慮的質量屬性在許多架構師的日常實踐中變得重要。
我們正在構建不同種類的系統,並且以不同於十年前的方式構建它們。
現在的系統通常構建在雲中的虛擬化資源之上,移動性越來越強,移動性帶來的機遇和挑戰也越來越多。
因此,第4版全面更新了有關移動、雲、能源管理、DevOps、量子計算等方面的內容。
通過本書,你將了解:架構如何影響技術環境(並受其影響)、項目生命週期、業務概要和實踐。
如何通過架構來利用已驗證的模式、接口和實踐去優化質量。移動、雲、機器學習和量子計算的架構。
設計越來越重要的屬性,如能源效率和安全性。
如何通過發現架構的重大影響、使用DevOps和部署流水線以及管理架構債來擴展系統。
架構在組織中的作用,以便提供更多價值。

作者簡介

Len Bass
是一位獲獎作者和講演者,擁有超過50年的高級軟件經驗,
其中包括在卡內基-梅隆大學軟件工程研究所(SEI)的25年。
目前在卡內基-梅隆大學兼職講授DevOps。

目錄大綱

第一部分入門介紹
第1章什麼是軟件架構1
1.1 什麼是軟件架構,什麼不是軟件架構2
1.2 架構結構與視圖5
1.3 什麼是“好的”架構19
1.4 總結21
1.5 進一步閱讀21
1.6 問題討論22
第2章軟件架構的重要性25
2.1 抑製或支持系統的質量屬性26
2.2 關於變更的推理和管理27
2.3 預測系統質量28
2.4 利益相關者之間的溝通28
2.5 早期設計決策31
2.6 實現約束31
2.7 對組織結構的影響32
2.8 賦能增量開發33
2.9 成本和進度估算33
2.10 可轉移、可重用模型34
2.11 架構允許合併獨立開發的元素34
2.12 限制設計方案的術語35
2.13 培訓的基礎36
2.14 總結36
2.15 進一步閱讀37
2.16 問題討論37
第二部分質量屬性
第3章理解質量屬性39
3.1 功能性40
3.2 質量屬性注意事項41
3.3 明確質量屬性需求:質量屬性場景42
3.4 通過架構模式和戰術實現質量屬性45
3.5 用戰術設計46
3.6 分析質量屬性的設計決策:基於戰術的調查問卷48
3.7 總結49
3.8 進一步閱讀49
3.9 問題討論50
第4章可用性51
4.1 可用性通用場景53
4.2 可用性戰術55
4.3 基於戰術的可用性調查問卷62
4.4 可用性模式66
4.5 進一步閱讀68
4.6 問題討論69
第5章可部署性71
5.1 持續部署72
5.2 可部署性75
5.3 可部署性通用場景76
5.4 可部署性戰術78
5.5 基於戰術的可部署性調查問卷80
5.6 可部署性模式81
5.7 進一步閱讀87
5.8 問題討論87
第6章能源效率89
6.1 能源效率通用場景90
6.2 能源效率戰術92
6.3 基於戰術的能源效率調查問卷95
6.4 模式97
6.5 進一步閱讀98
6.6 問題討論99
第7章可集成性101
7.1 評估架構的可集成性102
7.2 可集成性通用場景104
7.3 可集成性戰術105
7.4 基於戰術的可集成性調查問卷110
7.5 模式112
7.6 進一步閱讀114
7.7 問題討論115
第8章可修改性117
8.1 可修改性通用場景120
8.2 可修改性戰術121
8.3 基於戰術的可修改性調查問卷125
8.4 模式126
8.5 進一步閱讀130
8.6 問題討論131
第9章性能133
9.1 性能通用場景134
9.2 性能戰術137
9.3 基於戰術的性能調查問卷145
9.4 性能模式146
9.5 進一步閱讀149
9.6 問題討論150
第10章安全性151
10.1 安全性通用場景154
10.2 安全性戰術156
10.3 基於戰術的安全性調查問卷160
10.4 安全性模式163
10.5 進一步閱讀165
10.6 問題討論166
第11章防護性169
11.1 防護性通用場景170
11.2 防護性戰術172
11.3 基於戰術的防護性調查問卷176
11.4 防護性模式179
11.5 進一步閱讀180
11.6 問題討論180
第12章可測試性183
12.1 可測試性通用場景186
12.2 可測試性戰術187
12.3 基於戰術的可測試性調查問卷192
12.4 可測試性模式192
12.5 進一步閱讀194
12.6 問題討論195
第13章易用性197
13.1 易用性通用場景198
13.2 易用性戰術200
13.3 基於戰術的易用性調查問卷202
13.4 易用性模式203
13.5 進一步閱讀205
13.6 問題討論205
第14章使用其他質量屬性207
14.1 其他質量屬性207
14.2 是否使用標準質量屬性清單209
14.3 處理“X能力”:引入新的QA 212
14.4 進一步閱讀215
14.5 問題討論215
第三部分架構解決方案
第15章軟件接口217
15.1 接口的概念218
15.2 設計一個接口222
15.3 接口文檔編制228
15.4 總結230
15.5 進一步閱讀230
15.6 問題討論231
第16章虛擬化233
16.1 共享資源234
16.2 虛擬機235
16.3 虛擬機映像238
16.4 容器239
16.5 容器和虛擬機241
16.6 容器可移植性242
16.7 Pod 242
16.8 無服務器架構243
16.9 總結244
16.10 進一步閱讀245
16.11 問題討論245
第17章云和分佈式計算247
17.1 雲基礎248
17.2 雲中失效251
17.3 使用多個實例提高性能和可用性253
17.4 總結261
17.5 進一步閱讀262
17.6 問題討論262
第18章移動系統263
18.1 能源264
18.2 網絡連通性266
18.3 傳感器和執行器267
18.4 資源268
18.5 生命週期270
18.6 總結273
18.7 進一步閱讀274
18.8 問題討論275
第四部分可擴展架構實踐
第19章架構上的重要需求277
19.1 從需求文檔中收集ASR 278
19.2 通過訪談利益相關者收集ASR 279
19.3 通過理解業務目標收集ASR 282
19.4 在工具樹中捕獲ASR 284
19.5 發生了變化286
19.6 總結286
19.7 進一步閱讀287
19.8 問題討論287
第20章設計架構289
20.1 屬性驅動的設計289
20.2 ADD步驟292
20.3 ADD步驟4的進一步說明:選擇一個或多個設計概念295
20.4 ADD步驟5的進一步說明:生成結構298
20.5 ADD步驟6的進一步說明:在設計過程中創建初步文檔301
20.6 ADD步驟7的進一步說明:對當前設計進行分析並審查迭代目標和設計目的實現情況304
20.7 總結306
20.8 進一步閱讀306
20.9 問題討論307
第21章架構評估309
21.1 評估作為一項降低風險的活動309
21.2 主要的評估活動310
21.3 誰能執行評估311
21.4 環境因素312
21.5 架構權衡分析方法313
21.6 輕量級架構評估324
21.7 總結326
21.8 進一步閱讀327
21.9 問題討論327
第22章記錄一個架構329
22.1 架構文檔的用途和受眾330
22.2 符號331
22.3 視圖332
22.4 合併視圖339
22.5 記錄的行為340
22.6 視圖以外345
22.7 記錄基本原理346
22.8 架構利益相關者347
22.9 實際問題350
22.10 總結353
22.11 進一步閱讀353
22.12 問題討論354
第23章管理架構債355
23.1 確定是否存在架構債問題356
23.2 發現熱點358
23.3 示例362
23.4 自動化363
23.5 總結364
23.6 進一步閱讀364
23.7 問題討論365
第五部分架構和組織
第24章架構師在項目中的角色367
24.1 架構師和項目經理367
24.2 增量架構和利益相關者369
24.3 架構和敏捷開發370
24.4 架構和分佈式開發373
24.5 總結376
24.6 進一步閱讀376
24.7 問題討論377
第25章架構能力379
25.1 個人能力:架構師的職責、技能和知識379
25.2 軟件架構組織的能力386
25.3 成為更好的架構師387
25.4 總結388
25.5 進一步閱讀388
25.6 問題討論389
第六部分結論
第26章展望未來:量子計算391
26.1 單量子位392
26.2 量子隱形傳態394
26.3 量子計算和加密394
26.4 其他算法395
26.5 潛在應用396
26.6 最後的想法397
26.7 進一步閱讀398
參考資料399