重點摘要#
- 架構圖(30,000 英尺視角)和原始碼(地面視角)都無法充分傳達軟體品質
- 我們缺少的是介於兩者之間的 1,000 英尺視角
- 這個視角聚合大量數據和多種指標,在正確的層級提供資訊
- 使用工具從原始碼自動產生視覺化,讓品質評估更客觀
詳細內容#
作為架構師,我們想知道正在開發的軟體品質如何。品質有一個明顯的外部面向 – 軟體對使用者應該有價值;但也有一個更難以捉摸的內部面向,與設計的清晰度、我們理解、維護和擴展軟體的難易度有關。被問到定義時,我們常說「我看到就知道了」。但我們如何才能看到品質?
兩個極端視角的不足#
- 30,000 英尺視角(架構圖):小方塊代表整個系統,線條之間可以代表任何東西 – 依賴關係、資料流、共享資源。這個視角太高層
- 地面視角(原始碼):提供了太多資訊,無法看到結構
兩個視角都無法充分傳達軟體品質。我們需要的是介於兩者之間的視角。
1,000 英尺視角#
這個視角在正確的層級提供資訊:
- 聚合大量數據和多種指標,如方法數量、類別扇出、圈複雜度等
- 實際的視覺呈現取決於品質的特定面向
- 可以是依賴關係圖、顯示類別層級指標的長條圖,或關聯多個輸入值的多維度視圖
工具的必要性#
手動建立和維護這些視圖是不切實際的。我們需要能從唯一的真實來源 – 原始碼 – 自動產生這些視圖的工具。
一些有用的工具和方法:
- 設計結構矩陣(Design Structure Matrix):有商業工具可用
- 結合小型工具提取數據和指標,配合通用視覺化套件
- 將 checkstyle 的輸出載入試算表來繪製圖表
- 使用 InfoViz 工具套件呈現樹狀圖
- 使用 GraphViz 繪製依賴關係圖
視覺化帶來的好處#
有了適當的視覺化,軟體品質評估變得更客觀:
- 可以與類似系統進行比較
- 可以比較同一系統的不同版本來觀察趨勢
- 比較不同子系統的視圖可以突出異常值
- 一個平衡的樹狀結構可能代表成功的類別層次
- 大多數時候,一個非常簡單的關係成立:如果看起來好,它可能就是好的
投資建立你的 1,000 英尺視角工具鏈。它能讓你從主觀的品質判斷轉向更客觀的評估。
— By Erik Doernenburg