1. 推薦度:
TRIAL[ 2017.11 | 2018.05 ]
2. 所屬象限:
Techniques
3. 關(guān)注問題:
- 技術(shù)架構(gòu)腐化帶來的系統(tǒng)響應(yīng)度降低,可維護(hù)性下降,技術(shù)債纏身。
- 而盲目優(yōu)化或是單純的技術(shù)驅(qū)動的架構(gòu)優(yōu)化又往往偏離初衷,容易過度優(yōu)化,不但沒有解決之前的問題,還會引入新的問題。
- 那……如何度量技術(shù)架構(gòu)的好與壞?如何拿捏技術(shù)架構(gòu)演進(jìn)的度?如何用目標(biāo)驅(qū)動的方式做技術(shù)架構(gòu)的持續(xù)演進(jìn)?如何衡量技術(shù)架構(gòu)演進(jìn)的成果?如何進(jìn)行架構(gòu)守護(hù)?
4. 解讀:
Architectural fitness function(適應(yīng)度函數(shù))借鑒自進(jìn)化計(jì)算,被用來衡量方案對滿足目標(biāo)的適合度。
當(dāng)定義演進(jìn)式算法時(shí),算法設(shè)計(jì)者會尋求更優(yōu)解,而適應(yīng)度函數(shù)則定義了在此上下文中“更優(yōu)”的含義。
將適應(yīng)度函數(shù)應(yīng)用于軟件架構(gòu),則為系統(tǒng)的架構(gòu)演進(jìn)提供了一個(gè)度量的目標(biāo),開啟了“【目標(biāo)(測試)驅(qū)動架構(gòu)演進(jìn)】”的新時(shí)代。
記住,如果你無法為系統(tǒng)演進(jìn),架構(gòu)升級優(yōu)化定義出度量的Metrics,并通過Fitness Function寫一個(gè)測試出來驅(qū)動和可視化你的架構(gòu)演進(jìn)成果。那就表明你還沒有想清楚架構(gòu)演進(jìn)要解決的問題,就先不要開始!
《演進(jìn)式架構(gòu)》一書定義了架構(gòu)適應(yīng)度函數(shù)的概念,為衡量架構(gòu)特征提供了一個(gè)客觀全面的方法,包括已有的驗(yàn)證標(biāo)準(zhǔn),比如單元測試、業(yè)務(wù)指標(biāo)、監(jiān)控等等。

Building Evolutionary Architectures
感興趣的可以了解一下。
5. 工具:
-
ArchUnit:一個(gè)可以測試Java系統(tǒng)架構(gòu)本身的測試工具,例如所有的Service只能被Controller或是Service調(diào)用的測試如下:
