內容簡介
本書著重討論以下核心內容,並層層遞進,逐步深入。
首先解釋了什麼是
軟體架構,為什麼它很重要,以及如何以規範和有效的方式設計、實現、分析、
演進和管理它。
其次系統闡述如何使用架構來應對需求和系統規模的加速增長,以及如何管理新增的
質量屬性。
最後講解如何利用架構最佳化關鍵質量屬性(包括
性能、
可修改性、防護性、
可用性、
互操作性、
可測試性、易用性、可部署性等),如何管理和最佳化現有架構,如何將它們用於解決新問題並構建成可作為戰略資產的可重用架構。
圖書目錄
第一部分 入門介紹
第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
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