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

解法パターン解説


インタフェースと実装の分離

説明

外部から利用される手続きと、内部の実装を分離することです。インターフェースを守っていれば、内部の実装は変更しても問題ありません。

 

インタフェースは、関数の場合は関数ヘッダで定義しています。

ファイルやコンポーネントでは、公開関数の集合体がインタフェースになります。

ポート付きの構造図を使うことで、ポートでインタフェース定義することができます。

良いコード

関数の関数ヘッダに,引数と戻り値の記載があり,その通りに実装的できていること。

ファイル単位では,ヘッダファイルに

だめなコード

ポイント

設計スキル

提供インタフェースを意識して設計実装すること大切です。

モジュールのインタフェースを定義して保全すること」

 

備考

単方向依存

「上位が下位のサービスを利用する」という単方向依存にします。

上位が「指示」を出して、下位が「報告」するという「レベル化の設計」を行います。

上位が下位の情報を集めて、処理の流れを作ってはいけません。上位が「何でも屋」になってしまいます。

プラットフォーム化

コンポーネント単位のインタフェース定義することでプラットフォーム化できます。

大規模な粒度で内部の関数呼び出し集合をAPIセットとして定義します。

AtScopeでコンポーネント間のインタフェースを列挙できます。

プロダクトライン開発

複数機種一括開発での、変動点の設計実装もできます。

単方向依存を意識することで、置換可能になります。

機種ごとの違いを変動点として定義して、置換することでプロダクトライン開発ができます。