アーキテクチャ図を書くときにいつも粒度に迷っていたが、C4モデルという技法があることを知ったので、調べてみた。
ソフトウェアアーキテクチャのモデル化技法の一つ。
C4はContext、Containers、Components、Codeの略で、システムをこれらの要素に分解することでソフトウェアアーキテクチャを記述する。
C4モデルは抽象度の高い順に以下の4つのビューを提供する。
レベルが上がるほどシステムの内部構造が詳細になる。
ソフトウェアシステム単位での図。ソフトウェアシステムとは1つ以上のコンテナを含むもので、ユーザーに価値を提供する構成要素のこと。(ex. アプリケーション、製品、サービスなど)
システムの外部との関係および境界を示し、外部のシステムやユーザーとのインターフェースを表現する。
対象のソフトウェアシステムを構成するコンテナの構成を示す図。コンテナはソフトウェアシステム全体が機能するために実行されている要素のこと。(ex. アプリケーションやデータストア)
ソフトウェアアーキテクチャの高レベルな構成と責務を表現する
対象のコンテナを構成するコンポーネントの構成を示す図。コンポーネントはコンテナ内で実行される要素のこと。(ex. クラス、モジュール、サービス)
コンポーネント自身の責務と実装の詳細を表現する。
コンポーネント内部のコードを示す図。コード図はUMLやER図などの詳細な図を指す。
コードレベルの詳細を表現する。
原点であるc4model.com - The C4 model for visualising software architecture Context, Containers, Components, and Codeを熟読して書くのが良さそう。
かなり分かりやすく説明がされているので、これを参照しながら書くと良さそう。
アーキテクチャ図の粒度についての認識を合わせる難しさもこれで解消できるような気がする。
もっと早く知っておきたかった技法だった。アーキテクチャ図を書くときに粒度に迷うことが多かったが、C4モデルを使うことで明確な基準に従って図を書くことができそう。