de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

介紹

這個C4模型,由西蒙·布朗開發,提供了一種結構化的軟體架構圖示方法,包含四個不同的層級,逐步深入探討軟體系統的架構。每個層級提供獨特的視角,並在記錄與溝通軟體架構方面發揮特定作用。讓我們來探討C4模型的四個層級:

1. 系統環境圖

範圍:單一軟體系統。

主要元素:在範圍內的軟體系統。

支援元素:人員(例如使用者、角色、身份、人物設定)以及軟體系統(外部依賴)直接與在範圍內的軟體系統相連。

目標對象:所有人士,無論是技術或非技術背景,無論是軟體開發團隊內部或外部。

目的:系統環境圖提供了一個軟體系統架構的初步高階視圖。它作為架構文件的起點,提供系統在其更廣泛環境中的整體視角。在此圖中,軟體系統以中央方框呈現,周圍是其使用者及其他互動的外部系統。重點在於人員與軟體系統,而非技術細節,例如技術或通訊協定。

建議大多數團隊使用: 是。

主要特徵:

  • 提供系統的鳥瞰視角。
  • 強調系統與使用者/外部系統之間的互動。
  • 非常適合與非技術利益相關者溝通。
  • 細節層級被有意地保持在低水平。

2. 容器圖

範圍:單一軟體系統。

主要元素:在範圍內的軟體系統中的容器(例如伺服器端網頁應用程式、單頁應用程式、資料庫等)。

支援元素:與容器直接相連的人員與軟體系統。

目標受眾:軟體開發團隊內外的技術人員,包括軟體架構師、開發人員以及運營/支援人員。

目的:容器圖深入探討軟體系統,著重於其高階結構以及責任在各容器間的分配。容器代表可獨立執行或部署的單元,例如網頁應用程式或資料庫。此圖也突顯主要的技術選擇,並說明容器之間如何進行通訊。這是一項對開發人員及支援/運營人員都非常有用的工具。

建議大多數團隊使用: 是。

主要特徵:

  • 聚焦於軟體系統的架構。
  • 呈現容器及其互動關係。
  • 強調技術選擇。
  • 適合技術相關利害關係人。
  • 不涉及部署相關的細節,例如叢集或負載平衡。

3. 元件圖

範圍:單一容器。

主要元素:所涵蓋容器內的元件。

支援元素:容器(在所涵蓋的軟體系統內)以及與元件直接相連的人員與軟體系統。

目標受眾:軟體架構師與開發人員。

目的:元件圖提供容器內部結構的詳細視圖。它將容器分解為主要的結構性構建模塊,稱為元件。這些元件負責容器內的特定任務,並與技術與實作細節相關聯。此圖對於需要理解容器架構細節的軟體架構師與開發人員特別有幫助。

建議大多數團隊使用:否,僅在能帶來價值時才建立元件圖,並考慮自動化產生長期保存的文件。

主要特徵:

  • 著重於容器的內部結構。
  • 識別元件、其責任與實作細節。
  • 針對技術相關利害關係人。
  • 並非總是必要,僅在能為文件增添價值時才應審慎使用。

4. 程式碼圖

範圍:單一組件。

主要元素:特定組件內的詳細程式碼與技術產物。

支援元素:組件(在範圍內的容器中)、容器(在範圍內的軟體系統中),以及與組件直接連接的人與軟體系統。

目標受眾:高度技術性的個人,通常是開發人員以及深度參與程式碼庫的人。

目的:C4模型的最後一層,即程式碼圖,進一步放大,提供對特定組件程式碼庫的深入視圖。此圖深入探討組件內的實際原始碼、類別結構與技術實作細節。對於需要針對特定組件進行開發或理解其內部運作的開發人員而言,特別實用。

建議多數團隊使用:實際上很少使用。通常不會製作程式碼圖,因為其所提供的細節層級通常已在程式碼文件與開發環境中涵蓋。

關鍵特徵:

  • 著重於實際原始碼與技術產物。
  • 提供組件實作的極其詳細視圖。
  • 主要針對從事程式碼工作的開發人員。
  • 由於其細節層級過高,實際上很少使用,因為這些資訊通常已在程式碼庫本身中可取得。

結論

C4模型的四個層級提供了一個結構化的層級架構,用於記錄與溝通軟體架構,從系統上下文圖的高階概覽開始,逐步深入至程式碼圖中的實際程式碼。這些圖表針對不同受眾,從需要整體視角的非技術利益相關者,到需要深入程式碼層級洞察的高技術開發人員。透過運用C4模型,軟體架構師與開發團隊能有效傳達複雜的架構設計,並促進組織內外更好的理解與合作。