ソフトウェアアーキテクチャ博物館 AtMuseum 

解法パターン解説


疎結合

説明

モジュール間の結合を弱くする。

モジュールとは,関数/ファイル/コンポーネントの粒度があります。

結合度の教科書には,関数単位での説明されている場合が多いですが、

ファイル粒度やコンポーネント粒度も基本は同じく疎結合にしましょう。

関数間の結合度

主に、引数や戻り値、そしてグローバル変数の結びつきです。

 

ファイルやコンポーネントでの結合度

関数粒度の結合度に加えて、順序性の結合を考慮します。

初期化ー処理ー終了という順序性や、

処理1ー処理2ー処理3という順序を,利用側も把握する必要があり,結合度は強くなります。

但し,順序性を意識せずに使えるようにインタフェース定義をすれば,結合度は弱くなります。

共変性

結合度は、片方が変わると、その相手も同時に変える必要があります。

関数単位の場合は、関数プロトタイプで宣言インタフェース定義し、

ファイルやコンポーネントであれば、関数呼び出し集合をインタフェース定義します。

提供インタフェースを定義して、それらの要求インタフェースを同時に修正していきます。

ファイル単位の提供インタフェースは、公開関数プロトタイプ宣言一式になります。部品化していればヘッダファイルで定義できます。

提供インタフェースと要求インタフェースの合わせこみは、粒度の大きなアーキテクチャ設計の原則です。

 

ポイント

疎結合とは

モジュール間の引き渡すデータが、プリミティブなデータやまとまりのある構造体であれば、疎結合になります。

複数データを束ねて渡す場合は、利用先で同種データ群を取り出して利用すれば疎結合です。

密結合とは

モジュール間の引き渡すデータがフラグで合ったり、異種の詰込みの場合は密結合です。

また、グローバルデータをモジュール間でやり取りしている場合も密結合になります。

備考

お勧めセミナー

凝集度と結合度

ソースコードの例で凝集度と結合度を知ることができます。

アーキテクチャ改善

コンポーネント粒度のインタフェース改善ができます。