ソフトウェアアーキテクチャ博物館 AtMuseum
解法パターン解説
疎結合
| 説明 | モジュール間の結合を弱くする。 モジュールとは,関数/ファイル/コンポーネントの粒度があります。 結合度の教科書には,関数単位での説明されている場合が多いですが、 ファイル粒度やコンポーネント粒度も基本は同じく疎結合にしましょう。 関数間の結合度主に、引数や戻り値、そしてグローバル変数の結びつきです。
ファイルやコンポーネントでの結合度関数粒度の結合度に加えて、順序性の結合を考慮します。 初期化ー処理ー終了という順序性や、 処理1ー処理2ー処理3という順序を,利用側も把握する必要があり,結合度は強くなります。 但し,順序性を意識せずに使えるようにインタフェース定義をすれば,結合度は弱くなります。 共変性結合度は、片方が変わると、その相手も同時に変える必要があります。 関数単位の場合は、関数プロトタイプで宣言インタフェース定義し、 ファイルやコンポーネントであれば、関数呼び出し集合をインタフェース定義します。 提供インタフェースを定義して、それらの要求インタフェースを同時に修正していきます。 ファイル単位の提供インタフェースは、公開関数プロトタイプ宣言一式になります。部品化していればヘッダファイルで定義できます。 提供インタフェースと要求インタフェースの合わせこみは、粒度の大きなアーキテクチャ設計の原則です。
|
|---|---|
| ポイント |
疎結合とはモジュール間の引き渡すデータが、プリミティブなデータやまとまりのある構造体であれば、疎結合になります。 複数データを束ねて渡す場合は、利用先で同種データ群を取り出して利用すれば疎結合です。 密結合とはモジュール間の引き渡すデータがフラグで合ったり、異種の詰込みの場合は密結合です。 また、グローバルデータをモジュール間でやり取りしている場合も密結合になります。 |
| 備考 | お勧めセミナー凝集度と結合度ソースコードの例で凝集度と結合度を知ることができます。 アーキテクチャ改善コンポーネント粒度のインタフェース改善ができます。
|
