本文分享自華為云社區《架構可視化支撐系統演進探索》,原文作者:無名小溪,
隨著軟體系統的規模和復雜度日益增長,軟體的生命周期越來越長,軟體開發的很大一部分作業集中于維護和改造現有的軟體系統,實踐研究表明,軟體資源預算的50%~80%消耗在對現有系統的維護上,而軟體維護者理解程式源代碼的時間要占整個軟體維護的47%~62%,軟體維護已經成為軟體工程面臨的重要課題之一,而正確和全面地理解軟體系統是對軟體進行維護的前提,通過架構逆向分析,提供可視化能力,為軟體系統的維護和演化可以提供有效支撐,
本文分享借助軟體架構可視化輔助系統演進的幾個探索:輔助理解現有系統、分析不合理依賴、看護現有架構、支撐架構演進,
1、架構可視化輔助理解現有系統
當新的專案成員加入專案,面對大量代碼,如何快速理解、掌握,是否有啥工具可以借助,提高效率?
經過探索,通過在IDE中,提供架構可視化視圖,展示系統的架構依賴,通過代碼與架構圖的雙向關聯,實作編輯代碼時,自動高亮對應的架構元素,雙擊架構圖中的元素,快速關聯、跳轉到對應的代碼,實作代碼和架構圖的實時聯動(Simon Brown的架構即代碼理念),幫助開發人員更好的理解代碼,
架構元素間,通過連線,展示之間的依賴關系,線上,通過數字表示耦合的數量,點擊連線,可以展示、查看耦合的細節,

2、架構可視化分析不合理依賴
當系統在演程序序中腐化,產生不合理的依賴,架構的分層不再清晰,閱讀和理解將變得極其困難,新特性開發、問題單修改變得困難重重,你在做UI修改的時候,可能影響到業務邏輯,對業務邏輯的變更,可能對資料庫代碼或其他元素造成影響,
基于生成的可視化架構,通過經典設計理念符合度分析,可以幫架構師、開發人員發現一些設計壞味道,比如是否存在回圈依賴、跨層依賴、反向依賴等,為重構活動提供參考,提高重構效率,
以回圈依賴為例,通過連線追蹤,可以清晰看到產生回圈依賴的架構元素、呼叫系列,通過環中各連線的數字,能夠快速識別環薄弱點(數字越小,耦合度越低),作為可能的消除回圈依賴的切入點,重點開展分析,

3、架構可視化看護現有架構
對于良好的架構設計,如何保障在進度緊張的版本交付周期內,不因為開發人員對架構的不充分理解,而對良好的架構設計造成破壞?
在前面可視化架構的基礎上,通過對架構的依賴關系的合法性(設計約束)進行打標簽,標注哪些架構依賴是允許的,哪些是不允許的,當開發人員在編碼的程序中,出現違反架構設計約束的情況,架構視圖立刻出現紅線預警,同時給出告警資訊,從代碼產生的源頭上防止架構腐化,

4、架構可視化支撐架構演進
基于架構可視化,記錄架構的演進路徑,通過不同時期的架構對比,可以清晰回溯架構的整個演程序序,對架構的腐化分析很有幫助,
如下圖,我們對一個系統的V4、V5版本架構進行對比,可以清晰看到BrowserValidity在V5中洗掉了,同時,通過線條的不同顏色,區分哪些耦合關系是在V4、V5兩個版本都存在,哪些耦合關系只存在于V4,哪些耦合關系只存在于V5,
通過切換、對比不同時期、不同版本的架構圖,可以清晰看到架構的演程序序,并回溯程序中架構變更原因和思考,

從已經探索的實踐看,架構可視化對軟體系統,特別是大型軟體系統的健康演進很有幫助,上面的探索,深度上尚淺,待進一步摸索,同時,廣度上,也還有很多探索的空間,比如基于架構可視化,呈現架構熱點,歡迎大家一起探討!
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/274034.html
標籤:其他
上一篇:安裝搭建LAMP架構
