ArchUnit,架構守護神 | 雷達嗶嗶嗶

雷達描述:

ArchUnit是一個基於 Java 的測試庫,用於檢查代碼的結構特性,如包和類的依賴關係、註解驗證,甚至還能檢查代碼分層是否一致。我們很喜歡 ArchUnit 的地方是,它可以在現有的測試環境中以單元測試的方式運行,儘管只支持基於 Java 的架構。在CI環境或部署流水線中集成ArchUnit 測試套件,可以方便地在演進式架構中實現架構適應度函數。

位置

2018年11月第19期技術雷達(11.14正式發佈,文末可訂閱),工具象限,建議試驗

目標受衆:

系統架構師,技術管理者,開發人員

關注問題:

  • 如何在Java系統架構下,應用架構適應度函數(Architectural fitness function)來驅動架構演進?
  • 如何在Java系統架構下,做系統演進後架構守護,減緩系統再次腐化?

解讀:

在上一期我們介紹了架構適應度函數(Architectural fitness function),也提到了ArchUnit,這期就來詳細介紹一下。

ArchUnit是用來檢查架構特徵的Java測試庫,比如包與類的依賴關係、註解、甚至是調用層級一致性。它可以附加在現有的測試方案中,以單元測試的方式運行,但目前只能用於Java架構。

ArchUnit測試套件可以合併到持續集成環境及部署流水線中,使我們可以更容易地利用架構適應度函數實現演進式架構。我們來看看ArchUnit都能做些什麼:

  • Package Dependency Checks
  • Class Dependency Checks
  • Class and Package Containment Checks
  • Inheritance Checks
  • Annotation Checks
  • Layer Checks
  • Cycle Checks

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

最後不得不說一下,架構優劣不取決於是否遵循某一個標準,而是應該取決於能否支撐業務的需要。約束越強,靈活度越低,架構就會越加僵硬,缺少適應性,產生冗餘。

所以工具本身只是賦予了我們約束架構的能力。但是能否正確地使用這種能力通過Fitness Function和演進式架構來促進架構對於業務的匹配度和適應度;還是截然相反的錯誤地濫用這種能力成爲所謂的管理手段或是技術上的噱頭,最終導致系統架構僵化,無法支撐業務需要,決定權還是在我們架構師手中。

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

工具:

ArchUnit

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章