ソフトウェアアーキテクチャ博物館AtMuseum 解法パターン解説


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

説明

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

 

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

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

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

ポイント

単方向依存

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

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

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

 

プラットフォーム化

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

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

 

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

 

プロダクトライン開発

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

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

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