軟件架構(gòu)實(shí)踐(英文版·原書第4版)
定 價(jià):139 元
叢書名:架構(gòu)師書庫
- 作者:[美]倫·巴斯[美]保羅·克萊門茨[美]瑞克·凱茲曼
- 出版時(shí)間:2022/2/1
- ISBN:9787111699156
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.5
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
三位著名的軟件架構(gòu)師的新版著作,闡述了軟件架構(gòu)師如何管理和優(yōu)化現(xiàn)有體系結(jié)構(gòu),轉(zhuǎn)換它們以解決新問題,并構(gòu)建可重用的體系結(jié)構(gòu),使之成為戰(zhàn)略業(yè)務(wù)資產(chǎn)。更新了移動(dòng),云,能源管理,DevOps,量子計(jì)算等新內(nèi)容
當(dāng)開始編寫本書第4版時(shí),我們遇到的個(gè)問題是:架構(gòu)還重要嗎?隨著云基礎(chǔ)設(shè)施、微服務(wù)、框架和每個(gè)可能想象的領(lǐng)域以及質(zhì)量屬性參考架構(gòu)的興起,人們可能會(huì)認(rèn)為不再需要架構(gòu)知識(shí)了。今天的架構(gòu)師需要做的就是從豐富的工具和基礎(chǔ)設(shè)施備選方案中選一個(gè),再將它們實(shí)例化并加以配置,一個(gè)架構(gòu)就完成了。
我們過去(以及現(xiàn)在)非常肯定架構(gòu)仍然重要。為此,我們采訪了一些架構(gòu)師(他們?cè)卺t(yī)療保健、汽車、社交媒體、航空、國防、金融、電子商務(wù)等領(lǐng)域工作),他們誰也沒有被教條的偏見所左右。他們的回答證實(shí)了我們的信念,即架構(gòu)在今天和20多年前我們編寫第1版時(shí)一樣重要。
讓我們來研究一下架構(gòu)仍然重要的原因。,新需求的增長速度多年來一直在加快,甚至現(xiàn)在還在繼續(xù)加快。在客戶和業(yè)務(wù)需求以及競(jìng)爭壓力的驅(qū)動(dòng)下,今天的架構(gòu)師面臨著不斷增加的特性需求和永無休止的待修復(fù)bug。如果架構(gòu)師不注意系統(tǒng)的模塊化(而且請(qǐng)記住微服務(wù)不是的),系統(tǒng)很快就將拋錨—難以理解、變更、調(diào)試和修改,并拖累業(yè)務(wù)。
第二,當(dāng)系統(tǒng)的抽象級(jí)別在增加時(shí)(我們可以并且確實(shí)經(jīng)常使用許多復(fù)雜巧妙的服務(wù),而不用關(guān)心它們是如何實(shí)現(xiàn)的),我們創(chuàng)建的系統(tǒng)的復(fù)雜性也在以同樣快的速度增加。這像一場(chǎng)軍備競(jìng)賽,而架構(gòu)師并沒有獲勝!架構(gòu)一直致力于馴服復(fù)雜性,而這一點(diǎn)在短期內(nèi)是不會(huì)消失的。
說到提高抽象級(jí)別,基于模型的系統(tǒng)工程(Model-Based Systems Engineering,MBSE)在過去10年的時(shí)間里已經(jīng)成為工程領(lǐng)域的一股強(qiáng)大力量。MBSE是一種形式化的支持系統(tǒng)設(shè)計(jì)的建模應(yīng)用。國際系統(tǒng)工程理事會(huì)(International Council on Systems Engineering,INCOSE)將MBSE列為“轉(zhuǎn)型賦能者”之一,它是整個(gè)系統(tǒng)工程學(xué)科的基礎(chǔ)。模型是對(duì)一個(gè)可以被推理的概念或結(jié)構(gòu)進(jìn)行圖形化、數(shù)學(xué)化或物理化表示。INCOSE正試圖將工程領(lǐng)域從基于文檔的思維轉(zhuǎn)向基于模型的思維,其中結(jié)構(gòu)模型、行為模型、性能模型等都被持續(xù)用于更好、更快、更便宜地構(gòu)建系統(tǒng)。MBSE本身已經(jīng)超出了本書的范圍,但是我們不得不注意到正在被建模的是架構(gòu)。那誰建立模型呢?回答是:架構(gòu)師。
第三,信息系統(tǒng)世界的飛速增長(以及前所未有的員工流動(dòng)率)意味著,在任何現(xiàn)實(shí)世界的系統(tǒng)中,沒有人了解一切。僅僅聰明和努力是不夠的。
第四,盡管工具可以自動(dòng)完成我們過去人工做的許多事情(例如Kubernetes中所有的編排、部署和管理功能),但我們?nèi)匀恍枰斫馑蕾嚨倪@些系統(tǒng)的質(zhì)量屬性,并在把系統(tǒng)組合到一起時(shí)理解突現(xiàn)的質(zhì)量屬性。大多數(shù)質(zhì)量屬性(如性能、防護(hù)性、可用性、安全性等)都容易受到“短板”問題的影響,而這些短板只有在聯(lián)調(diào)系統(tǒng)時(shí)才會(huì)出現(xiàn)并影響我們。如果沒有指路之手來避免災(zāi)難,聯(lián)調(diào)很可能會(huì)失敗。那只指路之手屬于架構(gòu)師,不論他們的頭銜是什么。
考慮到這些因素,我們覺得確實(shí)需要這本書。
但有必要推出第4版嗎?當(dāng)然有必要!這應(yīng)該是非常明顯的。自上一版出版以來,計(jì)算機(jī)領(lǐng)域發(fā)生了很大變化。一些之前沒有被考慮的質(zhì)量屬性在許多架構(gòu)師的日常實(shí)踐中變得重要。隨著軟件繼續(xù)滲透到社會(huì)的各個(gè)方面,對(duì)許多系統(tǒng)來說,安全性考慮已經(jīng)變得至關(guān)重要,如軟件控制駕駛的汽車。同樣,十年前,能源效率是少數(shù)架構(gòu)師考慮的質(zhì)量屬性,但現(xiàn)在必須注意它,從對(duì)能源有強(qiáng)烈需求的大型數(shù)據(jù)中心到我們周圍的小型(甚至很小的)電池驅(qū)動(dòng)的移動(dòng)和物聯(lián)網(wǎng)設(shè)備。此外,考慮到我們比以往任何時(shí)候都更多地利用現(xiàn)有的組件來構(gòu)建系統(tǒng),可集成性的質(zhì)量屬性正在消耗我們?cè)絹碓蕉嗟淖⒁饬Α?br/>后,我們正在構(gòu)建不同種類的系統(tǒng),并且以不同于10年前的方式構(gòu)建它們,F(xiàn)在的系統(tǒng)通常構(gòu)建在云中的虛擬化資源之上,它們需要提供并依賴顯式接口。此外,它們的移動(dòng)性越來越強(qiáng),移動(dòng)性帶來的機(jī)遇和挑戰(zhàn)也越來越多。因此,在這個(gè)版本中,我們?cè)黾恿岁P(guān)于虛擬化、接口、移動(dòng)性和云的章節(jié)。
如你所見,我們說服了自己。希望我們同樣說服了你,你會(huì)發(fā)現(xiàn)第4版對(duì)你的書架是一個(gè)有用的補(bǔ)充。
部分 入門介紹
第1章 什么是軟件架構(gòu)1
1.1 什么是軟件架構(gòu),什么不是軟件架構(gòu)2
1.2 架構(gòu)結(jié)構(gòu)與視圖5
1.3 什么是“好的”架構(gòu)19
1.4 總結(jié)21
1.5 進(jìn)一步閱讀21
1.6 問題討論22
第2章 軟件架構(gòu)的重要性25
2.1 抑制或支持系統(tǒng)的質(zhì)量屬性26
2.2 關(guān)于變更的推理和管理27
2.3 預(yù)測(cè)系統(tǒng)質(zhì)量28
2.4 利益相關(guān)者之間的溝通28
2.5 早期設(shè)計(jì)決策31
2.6 實(shí)現(xiàn)約束31
2.7 對(duì)組織結(jié)構(gòu)的影響32
2.8 賦能增量開發(fā)33
2.9 成本和進(jìn)度估算33
2.10 可轉(zhuǎn)移、可重用模型34
2.11 架構(gòu)允許合并獨(dú)立開發(fā)的元素34
2.12 限制設(shè)計(jì)方案的術(shù)語35
2.13 培訓(xùn)的基礎(chǔ)36
2.14 總結(jié)36
2.15 進(jìn)一步閱讀37
2.16 問題討論37
第二部分 質(zhì)量屬性
第3章 理解質(zhì)量屬性39
3.1 功能性40
3.2 質(zhì)量屬性注意事項(xiàng)41
3.3 明確質(zhì)量屬性需求:質(zhì)量屬性場(chǎng)景42
3.4 通過架構(gòu)模式和戰(zhàn)術(shù)實(shí)現(xiàn)質(zhì)量屬性45
3.5 用戰(zhàn)術(shù)設(shè)計(jì)46
3.6 分析質(zhì)量屬性的設(shè)計(jì)決策:基于戰(zhàn)術(shù)的調(diào)查問卷48
3.7 總結(jié)49
3.8 進(jìn)一步閱讀49
3.9 問題討論50
第4章 可用性51
4.1 可用性通用場(chǎng)景53
4.2 可用性戰(zhàn)術(shù)55
4.3 基于戰(zhàn)術(shù)的可用性調(diào)查問卷62
4.4 可用性模式66
4.5 進(jìn)一步閱讀68
4.6 問題討論69
第5章 可部署性71
5.1 持續(xù)部署72
5.2 可部署性75
5.3 可部署性通用場(chǎng)景76
5.4 可部署性戰(zhàn)術(shù)78
5.5 基于戰(zhàn)術(shù)的可部署性調(diào)查問卷80
5.6 可部署性模式81
5.7 進(jìn)一步閱讀87
5.8 問題討論87
第6章 能源效率89
6.1 能源效率通用場(chǎng)景90
6.2 能源效率戰(zhàn)術(shù)92
6.3 基于戰(zhàn)術(shù)的能源效率調(diào)查問卷95
6.4 模式97
6.5 進(jìn)一步閱讀98
6.6 問題討論99
第7章 可集成性101
7.1 評(píng)估架構(gòu)的可集成性102
7.2 可集成性通用場(chǎng)景104
7.3 可集成性戰(zhàn)術(shù)105
7.4 基于戰(zhàn)術(shù)的可集成性調(diào)查問卷110
7.5 模式112
7.6 進(jìn)一步閱讀114
7.7 問題討論115
第8章 可修改性117
8.1 可修改性通用場(chǎng)景120
8.2 可修改性戰(zhàn)術(shù)121
8.3 基于戰(zhàn)術(shù)的可修改性調(diào)查問卷125
8.4 模式126
8.5 進(jìn)一步閱讀130
8.6 問題討論131
第9章 性能133
9.1 性能通用場(chǎng)景134
9.2 性能戰(zhàn)術(shù)137
9.3 基于戰(zhàn)術(shù)的性能調(diào)查問卷145
9.4 性能模式146
9.5 進(jìn)一步閱讀149
9.6 問題討論150
第10章 安全性151
10.1 安全性通用場(chǎng)景154
10.2 安全性戰(zhàn)術(shù)156
10.3 基于戰(zhàn)術(shù)的安全性調(diào)查問卷160
10.4 安全性模式163
10.5 進(jìn)一步閱讀165
10.6 問題討論166
第11章 防護(hù)性169
11.1 防護(hù)性通用場(chǎng)景170
11.2 防護(hù)性戰(zhàn)術(shù)172
11.3 基于戰(zhàn)術(shù)的防護(hù)性調(diào)查問卷176
11.4 防護(hù)性模式179
11.5 進(jìn)一步閱讀180
11.6 問題討論180
第12章 可測(cè)試性183
12.1 可測(cè)試性通用場(chǎng)景186
12.2 可測(cè)試性戰(zhàn)術(shù)187
12.3 基于戰(zhàn)術(shù)的可測(cè)試性調(diào)查問卷192
12.4 可測(cè)試性模式192
12.5 進(jìn)一步閱讀194
12.6 問題討論195
第13章 易用性197
13.1 易用性通用場(chǎng)景198
13.2 易用性戰(zhàn)術(shù)200
13.3 基于戰(zhàn)術(shù)的易用性調(diào)查問卷202
13.4 易用性模式203
13.5 進(jìn)一步閱讀205
13.6 問題討論205
第14章 使用其他質(zhì)量屬性207
14.1 其他質(zhì)量屬性207
14.2 是否使用標(biāo)準(zhǔn)質(zhì)量屬性清單209
14.3 處理“X能力”:引入新的QA212
14.4 進(jìn)一步閱讀215
14.5 問題討論215
第三部分 架構(gòu)解決方案
第15章 軟件接口217
15.1 接口的概念218
15.2 設(shè)計(jì)一個(gè)接口222
15.3 接口文檔編制228
15.4 總結(jié)230
15.5 進(jìn)一步閱讀230
15.6 問題討論231
第16章 虛擬化233
16.1 共享資源234
16.2 虛擬機(jī)235
16.3 虛擬機(jī)映像238
16.4 容器239
16.5 容器和虛擬機(jī)241
16.6 容器可移植性242
16.7 Pod242
16.8 無服務(wù)器架構(gòu)243
16.9 總結(jié)244
16.10 進(jìn)一步閱讀245
16.11 問題討論245
第17章 云和分布式計(jì)算247
17.1 云基礎(chǔ)248
17.2 云中失效251
17.3 使用多個(gè)實(shí)例提高性能和可用性253
17.4 總結(jié)261
17.5 進(jìn)一步閱讀262
17.6 問題討論262
第18章 移動(dòng)系統(tǒng)263
18.1 能源264
18.2 網(wǎng)絡(luò)連通性266
18.3 傳感器和執(zhí)行器267
18.4 資源268
18.5 生命周期270
18.6 總結(jié)273
18.7 進(jìn)一步閱讀274
18.8 問題討論275
第四部分 可擴(kuò)展架構(gòu)實(shí)踐
第19章 架構(gòu)上的重要需求277
19.1 從需求文檔中收集ASR278
19.2 通過訪