軟件架構(gòu)實(shí)踐(英文版·原書第4版)
定 價(jià):139 元
叢書名:架構(gòu)師書庫(kù)
- 作者:[美]倫·巴斯[美]保羅·克萊門茨[美]瑞克·凱茲曼
- 出版時(shí)間:2022/2/1
- ISBN:9787111699156
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.5
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
三位著名的軟件架構(gòu)師的新版著作,闡述了軟件架構(gòu)師如何管理和優(yōu)化現(xiàn)有體系結(jié)構(gòu),轉(zhuǎn)換它們以解決新問(wèn)題,并構(gòu)建可重用的體系結(jié)構(gòu),使之成為戰(zhàn)略業(yè)務(wù)資產(chǎn)。更新了移動(dòng),云,能源管理,DevOps,量子計(jì)算等新內(nèi)容
當(dāng)開(kāi)始編寫本書第4版時(shí),我們遇到的個(gè)問(wèn)題是:架構(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)就完成了。
我們過(guò)去(以及現(xiàn)在)非常肯定架構(gòu)仍然重要。為此,我們采訪了一些架構(gòu)師(他們?cè)卺t(yī)療保健、汽車、社交媒體、航空、國(guó)防、金融、電子商務(wù)等領(lǐng)域工作),他們誰(shuí)也沒(méi)有被教條的偏見(jiàn)所左右。他們的回答證實(shí)了我們的信念,即架構(gòu)在今天和20多年前我們編寫第1版時(shí)一樣重要。
讓我們來(lái)研究一下架構(gòu)仍然重要的原因。,新需求的增長(zhǎng)速度多年來(lái)一直在加快,甚至現(xiàn)在還在繼續(xù)加快。在客戶和業(yè)務(wù)需求以及競(jìng)爭(zhēng)壓力的驅(qū)動(dòng)下,今天的架構(gòu)師面臨著不斷增加的特性需求和永無(wú)休止的待修復(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)師并沒(méi)有獲勝!架構(gòu)一直致力于馴服復(fù)雜性,而這一點(diǎn)在短期內(nèi)是不會(huì)消失的。
說(shuō)到提高抽象級(jí)別,基于模型的系統(tǒng)工程(Model-Based Systems Engineering,MBSE)在過(guò)去10年的時(shí)間里已經(jīng)成為工程領(lǐng)域的一股強(qiáng)大力量。MBSE是一種形式化的支持系統(tǒng)設(shè)計(jì)的建模應(yīng)用。國(guó)際系統(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)。那誰(shuí)建立模型呢?回答是:架構(gòu)師。
第三,信息系統(tǒng)世界的飛速增長(zhǎng)(以及前所未有的員工流動(dòng)率)意味著,在任何現(xiàn)實(shí)世界的系統(tǒng)中,沒(méi)有人了解一切。僅僅聰明和努力是不夠的。
第四,盡管工具可以自動(dòng)完成我們過(guò)去人工做的許多事情(例如Kubernetes中所有的編排、部署和管理功能),但我們?nèi)匀恍枰斫馑蕾嚨倪@些系統(tǒng)的質(zhì)量屬性,并在把系統(tǒng)組合到一起時(shí)理解突現(xiàn)的質(zhì)量屬性。大多數(shù)質(zhì)量屬性(如性能、防護(hù)性、可用性、安全性等)都容易受到“短板”問(wèn)題的影響,而這些短板只有在聯(lián)調(diào)系統(tǒng)時(shí)才會(huì)出現(xiàn)并影響我們。如果沒(méi)有指路之手來(lái)避免災(zāi)難,聯(lián)調(diào)很可能會(huì)失敗。那只指路之手屬于架構(gòu)師,不論他們的頭銜是什么。
考慮到這些因素,我們覺(jué)得確實(shí)需要這本書。
但有必要推出第4版嗎?當(dāng)然有必要!這應(yīng)該是非常明顯的。自上一版出版以來(lái),計(jì)算機(jī)領(lǐng)域發(fā)生了很大變化。一些之前沒(méi)有被考慮的質(zhì)量屬性在許多架構(gòu)師的日常實(shí)踐中變得重要。隨著軟件繼續(xù)滲透到社會(huì)的各個(gè)方面,對(duì)許多系統(tǒng)來(lái)說(shuō),安全性考慮已經(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)有的組件來(lái)構(gòu)建系統(tǒng),可集成性的質(zhì)量屬性正在消耗我們?cè)絹?lái)越多的注意力。
后,我們正在構(gòu)建不同種類的系統(tǒng),并且以不同于10年前的方式構(gòu)建它們,F(xiàn)在的系統(tǒng)通常構(gòu)建在云中的虛擬化資源之上,它們需要提供并依賴顯式接口。此外,它們的移動(dòng)性越來(lái)越強(qiáng),移動(dòng)性帶來(lái)的機(jī)遇和挑戰(zhàn)也越來(lái)越多。因此,在這個(gè)版本中,我們?cè)黾恿岁P(guān)于虛擬化、接口、移動(dòng)性和云的章節(jié)。
如你所見(jiàn),我們說(shuō)服了自己。希望我們同樣說(shuō)服了你,你會(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 問(wèn)題討論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 賦能增量開(kāi)發(fā)33
2.9 成本和進(jìn)度估算33
2.10 可轉(zhuǎn)移、可重用模型34
2.11 架構(gòu)允許合并獨(dú)立開(kāi)發(fā)的元素34
2.12 限制設(shè)計(jì)方案的術(shù)語(yǔ)35
2.13 培訓(xùn)的基礎(chǔ)36
2.14 總結(jié)36
2.15 進(jìn)一步閱讀37
2.16 問(wèn)題討論37
第二部分 質(zhì)量屬性
第3章 理解質(zhì)量屬性39
3.1 功能性40
3.2 質(zhì)量屬性注意事項(xiàng)41
3.3 明確質(zhì)量屬性需求:質(zhì)量屬性場(chǎng)景42
3.4 通過(guò)架構(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)查問(wèn)卷48
3.7 總結(jié)49
3.8 進(jìn)一步閱讀49
3.9 問(wèn)題討論50
第4章 可用性51
4.1 可用性通用場(chǎng)景53
4.2 可用性戰(zhàn)術(shù)55
4.3 基于戰(zhàn)術(shù)的可用性調(diào)查問(wèn)卷62
4.4 可用性模式66
4.5 進(jìn)一步閱讀68
4.6 問(wèn)題討論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)查問(wèn)卷80
5.6 可部署性模式81
5.7 進(jìn)一步閱讀87
5.8 問(wèn)題討論87
第6章 能源效率89
6.1 能源效率通用場(chǎng)景90
6.2 能源效率戰(zhàn)術(shù)92
6.3 基于戰(zhàn)術(shù)的能源效率調(diào)查問(wèn)卷95
6.4 模式97
6.5 進(jìn)一步閱讀98
6.6 問(wèn)題討論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)查問(wèn)卷110
7.5 模式112
7.6 進(jìn)一步閱讀114
7.7 問(wèn)題討論115
第8章 可修改性117
8.1 可修改性通用場(chǎng)景120
8.2 可修改性戰(zhàn)術(shù)121
8.3 基于戰(zhàn)術(shù)的可修改性調(diào)查問(wèn)卷125
8.4 模式126
8.5 進(jìn)一步閱讀130
8.6 問(wèn)題討論131
第9章 性能133
9.1 性能通用場(chǎng)景134
9.2 性能戰(zhàn)術(shù)137
9.3 基于戰(zhàn)術(shù)的性能調(diào)查問(wèn)卷145
9.4 性能模式146
9.5 進(jìn)一步閱讀149
9.6 問(wèn)題討論150
第10章 安全性151
10.1 安全性通用場(chǎng)景154
10.2 安全性戰(zhàn)術(shù)156
10.3 基于戰(zhàn)術(shù)的安全性調(diào)查問(wèn)卷160
10.4 安全性模式163
10.5 進(jìn)一步閱讀165
10.6 問(wèn)題討論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)查問(wèn)卷176
11.4 防護(hù)性模式179
11.5 進(jìn)一步閱讀180
11.6 問(wèn)題討論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)查問(wèn)卷192
12.4 可測(cè)試性模式192
12.5 進(jìn)一步閱讀194
12.6 問(wèn)題討論195
第13章 易用性197
13.1 易用性通用場(chǎng)景198
13.2 易用性戰(zhàn)術(shù)200
13.3 基于戰(zhàn)術(shù)的易用性調(diào)查問(wèn)卷202
13.4 易用性模式203
13.5 進(jìn)一步閱讀205
13.6 問(wèn)題討論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 問(wèn)題討論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 問(wèn)題討論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ú)服務(wù)器架構(gòu)243
16.9 總結(jié)244
16.10 進(jìn)一步閱讀245
16.11 問(wèn)題討論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 問(wèn)題討論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 問(wèn)題討論275
第四部分 可擴(kuò)展架構(gòu)實(shí)踐
第19章 架構(gòu)上的重要需求277
19.1 從需求文檔中收集ASR278
19.2 通過(guò)訪