ソフトウェアアーキテクチャ博物館AtMuseum
図面化してみよう


設計意図発掘ルールAtScopeで図面化

コードから図面を作る例を展示しますAtScopeというツールを使います。

3つの粒度で図面化

AtScopeは、関数/ファイル/フォルダという3つの粒度で構造図を出力するツールです。

フォルダ単位の図面はコンポーネント構造図と呼び、全体を俯瞰することができます。

アーキテクチャ設計の静的構造に相当します。

箱と線と配置で設計意図を表現

関数単位やファイル単位は、図面としては粒度が小さすぎることが多いです。

アーキテクチャ構造テンプレートに従ってフォルダ分けをして、そこにファイルを入れる、ことで、コンポーネント構造図を作ることができます。

 ※AtScopeでは、コンパイルできなくても、構造図を出力することができます

アーキテクチャ構造テンプレート:A2G配置

A2Gスタイルとは、中央がレイヤー化、左側に横断的関心、右側に異なるドメイン(UIや通信)を配置するルールです。

admin – biz – ctrl – drv – entty – facade – gndというフォルダを通リ、ファイルを入れていきます。

この配置にすることで、設計意図や改善点が「形」として表出します。

図面化してみましょう

C言語ソースコードの図面化

こちらのソースコードを図面化してみます。 図面化したEAファイルです。
静的構造図

左側がフォルダ単位のコンポーネント構造図、右側がファイル単位のファイル構造図です。

箱を移動することで設計意図が見えてきます。一度配置を決めれば次回からは「配置を保存」することで同じ形状で図面化できます。

緑色の箱は内部にサイクロマチック複雑度10超の関数があることを示しています。箱をダブルクリックすると関数を列挙します。サイクロマチック複雑度は「テスト支援」→「関数複雑度」をチェックしてください。

赤色の線は双方向依存を示しています。設計改善候補になります。

動的構造図

ファイルに"/* ATSTASK Main */とコメントすると、その単位で図面化します。

今回の例では、割込みから直接呼び出されているSonarとPwmが設計改善の対象になります。また周期実行で2つの周期が動いていることが分かります。

この例での設計実装PBLを提供しています。

新人研修での設計の意識付けや経験者の設計の再学習にお役立てください。

C++言語ソースコードの図面化

こちらのソースコードを図面化してみます。 図面化したEAファイルです。

EAでのスケルトン生成からの図面化手順はこちらです。

静的構造図

左側がネームスペース単位のコンポーネント構造図です。ネームスペースが未指定の場合はフォルダ名になります。

右側がクラス単位のファイル構造図です。今回の例では、アプリ層とドライバ層が直接関連していて、ミドル層が有りません。このまま大きくしていくと一筆書きコードになってしまうでしょう。

C/C++設計実装チュートリアル

このように書くと、このような図面が出ますという設計実装例です。

C言語の設計実装例

こちらのソースコードを図面化してみます。 図面化したEAファイルです。

左側がコンポーネント構造図、右側がファイル構造図です。

関数と変数の構造を設計し部品化(.hと.cのペア)したコードの図面です。

「販売(AutoSales)」が「取引(Dealing)」と「出荷(Shipment)」のサービスを使う、というレベル化の設計になっています。

構造化モデリング[静的]セミナーで習得できます。

C++での設計実装例

こちらのソースコードを図面化してみます。 図面化したEAファイルです。

左側がコンポーネント構造図、右側がファイル構造図です。

クラス設計してコミュニケーション図でメッセージ設計したコードの図面です。

オブジェクト指向モデリングセミナーで習得できます。

アーキテクチャ設計の失敗パターン

よくあるアーキテクチャ設計の失敗パターンです。

コンポーネント単位での全体構造がアーキテクチャの静的ビューになります。

両方ともレイヤー化が壊れています。

アーキテクチャ設計実践セミナーがお勧めです。