MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

わかりやすいソフトウェアドキュメントのためのC4モデル


ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ

目次

 

はじめに

ソフトウェアの図を書くときに、

いつも抽象度をどのようにすればいいか、

悩むことがあるのですが、色々調べていたら、

C4モデルという考え方があることを知ったので、

そちらを調べたときのメモです。

 

C4モデルとは?

C4モデルはこちらの記事で提案されている、

www.infoq.com

c4model.com

 

ソフトウェアのアーキテクチャを、

  1. Context

  2. Containers

  3. Component

  4. Code

の4つレベルのの解像度で図示する方法です。

 

Level 1: System Context Diagram

ユースケース図に近いですが、どんなユーザが、どんなシステムを

どのように使うかを図示したものです。

最も解像度が粗く、

エンジニア以外の人にも理解できる抽象度でシステムを図示します。

 

Level 2: Container (Process) diagram

コンテナやプロセス(アプリケーション)毎にシステム全体を図示します。

DBなども別のアプリとして図示します。

それぞれのアプリ間がどのような情報をやり取りするかも記述します。

 

Level 3: Component Diagram

各アプリの中のコンポーネント(モジュール)間の関係を表す図です。

 

Level 4: Code Diagram

いわゆるUMLのクラス図などです。

ただ、このレベルの図はIDEで自動生成できるので、

C4モデルを提案した記事では

このレベルの図の作成を手動で実施することは進めていません。

 

C4モデルで図を書くときに注意すべきこと

提案者は下記のようなことを注意点としてあげています。

  • 図と言いながらも、ちゃんと説明を文章で書くこと

  • 特に箱や線の意味、各要素の名前や種類などをちゃんと書くこと

  • 図全体にもちゃんとタイトルをつけること

  • C4の図を考えるときは、まずLevel1の抽象度が高い部分から考えること

 

参考資料

ja.wikipedia.org

blog.recruit.co.jp

zenn.dev

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com


ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com