雷達(dá)嗶嗶嗶 - #4-ArchUnit

1. 推薦度:

ASSESS[2018.05 ]

2. 所屬象限:

Tools

3. 關(guān)注問題:

  • 如何在Java系統(tǒng)架構(gòu)下,應(yīng)用架構(gòu)適應(yīng)度函數(shù)(Architectural fitness function),來驅(qū)動(dòng)架構(gòu)演進(jìn)?
  • 如何在Java系統(tǒng)架構(gòu)下,做系統(tǒng)演進(jìn)后架構(gòu)守護(hù),減緩系統(tǒng)腐化?

4. 解讀:

在上一期我們介紹了架構(gòu)適應(yīng)度函數(shù)(Architectural fitness function),也提到了ArchUnit,這期就來詳細(xì)介紹一下。

ARCHUNIT是用來檢查架構(gòu)特征的Java測試庫,比如包與類的依賴關(guān)系、注解驗(yàn)證、甚至層級(jí)一致性。它可以在你現(xiàn)有的測試方案中,以單元測試的方式運(yùn)行,但目前只能用于Java架構(gòu)。

ArchUnit測試套件可以合并到C(I 持續(xù)集成)環(huán)境或部署流水線,使我們很容易地以演進(jìn)式架構(gòu)的方式實(shí)現(xiàn)適應(yīng)度函數(shù)。

我們來看看ArchUnit都能做些什么:

  • Package Dependency Checks


  • Class Dependency Checks


  • Class and Package Containment Checks


  • Inheritance Checks


  • Annotation Checks


  • Layer Checks


  • Cycle Checks


想要了解更多,可以移步【官方用戶指南】

最后不得不說一下,架構(gòu)優(yōu)劣不取決于是否遵循某一個(gè)標(biāo)準(zhǔn),而是應(yīng)該取決于能否支撐業(yè)務(wù)的需要。約束越強(qiáng),反而會(huì)導(dǎo)致靈活度降低,架構(gòu)就會(huì)越加僵硬,缺少適應(yīng)性,產(chǎn)生冗余。

所以工具本身只是賦予了我們約束架構(gòu)的能力。但是能否正確地使用這種能力通過Fitness Function和演進(jìn)式架構(gòu)來促進(jìn)架構(gòu)對于業(yè)務(wù)的匹配度和適應(yīng)度;還是截然相反的錯(cuò)誤地濫用這種能力成為所謂的管理手段或是技術(shù)上的噱頭,最終導(dǎo)致系統(tǒng)架構(gòu)僵化,無法支撐業(yè)務(wù)需要,決定權(quán)還是在我們架構(gòu)師手中。

不要過度神話工具,也不要讓工具替我們背鍋,工具只是工具,工具本身沒有對錯(cuò)。

5. 工具:

ArchUnit

6. 延展閱讀:

ArchUnit | Technology Radar | ThoughtWorks
雷達(dá)嗶嗶嗶 - #3-Architectural fitness function - 簡書

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

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

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