重點摘要#

  • 架構圖(30,000 英尺視角)和原始碼(地面視角)都無法充分傳達軟體品質
  • 我們缺少的是介於兩者之間的 1,000 英尺視角
  • 這個視角聚合大量數據和多種指標,在正確的層級提供資訊
  • 使用工具從原始碼自動產生視覺化,讓品質評估更客觀

詳細內容#

作為架構師,我們想知道正在開發的軟體品質如何。品質有一個明顯的外部面向 – 軟體對使用者應該有價值;但也有一個更難以捉摸的內部面向,與設計的清晰度、我們理解、維護和擴展軟體的難易度有關。被問到定義時,我們常說「我看到就知道了」。但我們如何才能看到品質?

兩個極端視角的不足#

  • 30,000 英尺視角(架構圖):小方塊代表整個系統,線條之間可以代表任何東西 – 依賴關係、資料流、共享資源。這個視角太高層
  • 地面視角(原始碼):提供了太多資訊,無法看到結構

兩個視角都無法充分傳達軟體品質。我們需要的是介於兩者之間的視角。

1,000 英尺視角#

這個視角在正確的層級提供資訊:

  • 聚合大量數據和多種指標,如方法數量、類別扇出、圈複雜度
  • 實際的視覺呈現取決於品質的特定面向
  • 可以是依賴關係圖、顯示類別層級指標的長條圖,或關聯多個輸入值的多維度視圖

工具的必要性#

手動建立和維護這些視圖是不切實際的。我們需要能從唯一的真實來源 – 原始碼 – 自動產生這些視圖的工具。

一些有用的工具和方法:

  • 設計結構矩陣(Design Structure Matrix):有商業工具可用
  • 結合小型工具提取數據和指標,配合通用視覺化套件
  • 將 checkstyle 的輸出載入試算表來繪製圖表
  • 使用 InfoViz 工具套件呈現樹狀圖
  • 使用 GraphViz 繪製依賴關係圖

視覺化帶來的好處#

有了適當的視覺化,軟體品質評估變得更客觀:

  • 可以與類似系統進行比較
  • 可以比較同一系統的不同版本來觀察趨勢
  • 比較不同子系統的視圖可以突出異常值
  • 一個平衡的樹狀結構可能代表成功的類別層次
  • 大多數時候,一個非常簡單的關係成立:如果看起來好,它可能就是好的

投資建立你的 1,000 英尺視角工具鏈。它能讓你從主觀的品質判斷轉向更客觀的評估。

— By Erik Doernenburg