雷達(dá)嗶嗶嗶 - #3-Architectural fitness function

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)用的測試如下:

6. 延展閱讀:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容