摘要:本文分享藉助軟件架構可視化輔助系統演進的幾個探索:輔助理解現有系統、分析不合理依賴、看護現有架構、支撐架構演進。
隨着軟件系統的規模和複雜度日益增加,軟件的生命週期愈來愈長,軟件開發的很大一部分工做集中於維護和改造現有的軟件系統,實踐研究代表,軟件資源預算的50%~80%消耗在對現有系統的維護上,而軟件維護者理解程序源代碼的時間要佔整個軟件維護的47%~62%。軟件維護已經成爲軟件工程面臨的重要課題之一,而正確和全面地理解軟件系統是對軟件進行維護的前提,經過架構逆向分析,提供可視化能力,爲軟件系統的維護和演化能夠提供有效支撐。數據庫
本文分享藉助軟件架構可視化輔助系統演進的幾個探索:輔助理解現有系統、分析不合理依賴、看護現有架構、支撐架構演進。架構
當新的項目成員加入項目,面對大量代碼,如何快速理解、掌握,是否有啥工具能夠藉助,提升效率?工具
通過探索,經過在IDE中,提供架構可視化視圖,展現系統的架構依賴,經過代碼與架構圖的雙向關聯,實現編輯代碼時,自動高亮對應的架構元素,雙擊架構圖中的元素,快速關聯、跳轉到對應的代碼,實現代碼和架構圖的實時聯動(Simon Brown的架構即代碼理念),幫助開發人員更好的理解代碼。編碼
架構元素間,經過連線,展現之間的依賴關係,線上,經過數字表示耦合的數量,點擊連線,能夠展現、查看耦合的細節。架構設計
當系統在演進過程當中腐化,產生不合理的依賴,架構的分層再也不清晰,閱讀和理解將變得極其困難。新特性開發、問題單修改變得困難重重,你在作UI修改的時候,可能影響到業務邏輯,對業務邏輯的變動,可能對數據庫代碼或其餘元素形成影響。設計
基於生成的可視化架構,經過經典設計理念符合度分析,能夠幫架構師、開發人員發現一些設計壞味道,好比是否存在循環依賴、跨層依賴、反向依賴等。爲重構活動提供參考,提升重構效率。3d
以循環依賴爲例,經過連線追蹤,能夠清晰看到產生循環依賴的架構元素、調用系列,經過環中各連線的數字,可以快速識別環薄弱點(數字越小,耦合度越低),做爲可能的消除循環依賴的切入點,重點開展分析。orm
對於良好的架構設計,如何保障在進度緊張的版本交付週期內,不由於開發人員對架構的不充分理解,而對良好的架構設計形成破壞?blog
在前面可視化架構的基礎上,經過對架構的依賴關係的合法性(設計約束)進行打標籤,標註哪些架構依賴是容許的,哪些是不容許的。當開發人員在編碼的過程當中,出現違反架構設計約束的狀況,架構視圖馬上出現紅線預警,同時給出告警信息,從代碼產生的源頭上防止架構腐化。生命週期
基於架構可視化,記錄架構的演進路徑,經過不一樣時期的架構對比,能夠清晰回溯架構的整個演進過程,對架構的腐化分析頗有幫助。
以下圖,咱們對一個系統的V四、V5版本架構進行對比,能夠清晰看到BrowserValidity在V5中刪除了。同時,經過線條的不一樣顏色,區分哪些耦合關係是在V四、V5兩個版本都存在,哪些耦合關係只存在於V4,哪些耦合關係只存在於V5。
經過切換、對比不一樣時期、不一樣版本的架構圖,能夠清晰看到架構的演進過程,並回溯過程當中架構變動緣由和思考。
從已經探索的實踐看,架構可視化對軟件系統,特別是大型軟件系統的健康演進頗有幫助。上面的探索,深度上尚淺,待進一步摸索,同時,廣度上,也還有不少探索的空間,好比基於架構可視化,呈現架構熱點,歡迎你們一塊兒探討!
本文分享自華爲雲社區《架構可視化支撐系統演進探索》,原文做者:無名小溪。