軟體系統設計 - High Level Design & Low Level Design

·

1 min read

高階設計和低階設計就像是一棟房子的藍圖和施工圖,它們共同為軟體開發提供了清晰的指引,通過理解這兩個概念,你可以更好地參與到軟體開發的過程中。

藍圖和施工圖是相輔相成的,藍圖提供了整體的規劃,施工圖則將規劃具體化。

  • 高階設計為整個軟體系統定下了基調

  • 低階設計則將這個基調具體實現

實例比喻:蓋房子

  • HLD: 繪製房屋的初步藍圖,決定格局、樓層、主要空間 (廚房、浴室、客廳) 的位置。

  • LLD: 將藍圖轉化為詳細的施工圖,包括材料選用、尺寸、配線、水管等細節。

高階設計 (High-Level Design, HLD)

軟體系統的「藍圖」,提供整體架構、主要元件、互動方式的概觀。

重點:

  • 抽象性: 關注整體,不深入細節。

  • 模組化: 將系統拆分成可管理、可重複使用的元件。

  • 可擴展性: 確保系統能應付未來資料量或使用者增加。

  • 靈活性: 允許隨著需求變化進行調整。

關鍵要素:

  • 系統架構

  • 功能需求

  • 非功能需求 (效能、安全性、可擴展性等)

低階設計 (Low-Level Design, LLD)

將「藍圖」轉化為「施工圖」,提供詳細的實作細節。

重點:

  • 細節性: 明確定義演算法、資料結構、介面等。

  • 最佳化: 提升系統效能與資源使用率。

  • 清晰性: 提供開發者易於理解的明確指示。

  • 一致性: 確保整個專案的設計與程式碼風格一致。

關鍵要素:

  • 元件層級設計

  • 資料結構與演算法

  • 資料庫設計

HLD 與 LLD 的關係

  • 互補性: HLD 為 LLD 建立基礎,LLD 也可能反饋修正 HLD。

  • 合作: 架構師、設計師、開發者之間的溝通與合作至關重要。

何時使用 HLD 與 LLD

HLD:

  • 專案初期:建立基礎、架構、範圍。

  • 敏捷環境:因應變化需求。

  • 複雜系統:定義多個元件的互動。

LLD:

  • 進階階段:從規劃進入實際開發。

  • 特殊元件:設計演算法、資料結構等。

  • 效能關鍵系統:優化效能與資源使用。

結論

  • HLD 與 LLD 都是軟體開發流程中不可或缺的環節。

  • HLD 提供策略性概覽,LLD 提供詳細的實作路徑圖。

  • 根據專案階段、複雜度、需求、團隊能力選擇適當的設計方法。

  • 平衡使用 HLD 與 LLD,確保順暢的開發流程、一致性、並交付健壯且可擴展的軟體解決方案。