天天看點

架構可視化支撐系統演進探索

摘要:本文分享借助軟體架構可視化輔助系統演進的幾個探索:輔助了解現有系統、分析不合理依賴、看護現有架構、支撐架構演進。

随着軟體系統的規模和複雜度日益增長,軟體的生命周期越來越長,軟體開發的很大一部分工作集中于維護和改造現有的軟體系統,實踐研究表明,軟體資源預算的50%~80%消耗在對現有系統的維護上,而軟體維護者了解程式源代碼的時間要占整個軟體維護的47%~62%。軟體維護已經成為軟體工程面臨的重要課題之一,而正确和全面地了解軟體系統是對軟體進行維護的前提,通過架構逆向分析,提供可視化能力,為軟體系統的維護和演化可以提供有效支撐。

本文分享借助軟體架構可視化輔助系統演進的幾個探索:輔助了解現有系統、分析不合理依賴、看護現有架構、支撐架構演進。

當新的項目成員加入項目,面對大量代碼,如何快速了解、掌握,是否有啥工具可以借助,提高效率?

經過探索,通過在IDE中,提供架構可視化視圖,展示系統的架構依賴,通過代碼與架構圖的雙向關聯,實作編輯代碼時,自動高亮對應的架構元素,輕按兩下架構圖中的元素,快速關聯、跳轉到對應的代碼,實作代碼和架構圖的實時關聯(Simon Brown的架構即代碼理念),幫助開發人員更好的了解代碼。

架構元素間,通過連線,展示之間的依賴關系,線上,通過數字表示耦合的數量,點選連線,可以展示、檢視耦合的細節。

架構可視化支撐系統演進探索

當系統在演進過程中腐化,産生不合理的依賴,架構的分層不再清晰,閱讀和了解将變得極其困難。新特性開發、問題單修改變得困難重重,你在做UI修改的時候,可能影響到業務邏輯,對業務邏輯的變更,可能對資料庫代碼或其他元素造成影響。

基于生成的可視化架構,通過經典設計理念符合度分析,可以幫架構師、開發人員發現一些設計壞味道,比如是否存在循環依賴、跨層依賴、反向依賴等。為重構活動提供參考,提高重構效率。

以循環依賴為例,通過連線追蹤,可以清晰看到産生循環依賴的架構元素、調用系列,通過環中各連線的數字,能夠快速識别環薄弱點(數字越小,耦合度越低),作為可能的消除循環依賴的切入點,重點開展分析。

架構可視化支撐系統演進探索

對于良好的架構設計,如何保障在進度緊張的版本傳遞周期内,不因為開發人員對架構的不充分了解,而對良好的架構設計造成破壞?

在前面可視化架構的基礎上,通過對架構的依賴關系的合法性(設計限制)進行打标簽,标注哪些架構依賴是允許的,哪些是不允許的。當開發人員在編碼的過程中,出現違反架構設計限制的情況,架構視圖立刻出現紅線預警,同時給出告警資訊,從代碼産生的源頭上防止架構腐化。

架構可視化支撐系統演進探索

基于架構可視化,記錄架構的演進路徑,通過不同時期的架構對比,可以清晰回溯架構的整個演進過程,對架構的腐化分析很有幫助。

如下圖,我們對一個系統的V4、V5版本架構進行對比,可以清晰看到BrowserValidity在V5中删除了。同時,通過線條的不同顔色,區分哪些耦合關系是在V4、V5兩個版本都存在,哪些耦合關系隻存在于V4,哪些耦合關系隻存在于V5。

通過切換、對比不同時期、不同版本的架構圖,可以清晰看到架構的演進過程,并回溯過程中架構變更原因和思考。

架構可視化支撐系統演進探索

從已經探索的實踐看,架構可視化對軟體系統,特别是大型軟體系統的健康演進很有幫助。上面的探索,深度上尚淺,待進一步摸索,同時,廣度上,也還有很多探索的空間,比如基于架構可視化,呈現架構熱點,歡迎大家一起探讨!

 本文分享自華為雲社群《架構可視化支撐系統演進探索》,原文作者:無名小溪。

點選關注,第一時間了解華為雲新鮮技術~