ソフトウェアアーキテクチャ博物館AtMuseum 解法パターン解説
インタフェースと実装の分離
| 説明 | 外部から利用される手続きと、内部の実装を分離することです。インターフェースを守っていれば、内部の実装は変更しても問題ありません。
インタフェースは、関数の場合は関数ヘッダで定義しています。 ファイルやコンポーネントでは、公開関数の集合体がインタフェースになります。 ポート付きの構造図を使うことで、ポートでインタフェース定義することができます。 |
|---|---|
| ポイント | 単方向依存「上位が下位のサービスを利用する」という単方向依存にします。 上位が「指示」を出して、下位が「報告」するという「レベル化の設計」を行います。 上位が下位の情報を集めて、処理の流れを作ってはいけません。上位が「何でも屋」になってしまいます。
プラットフォーム化コンポーネント単位のインタフェース定義することでプラットフォーム化できます。 大規模な粒度で内部の関数呼び出し集合をAPIセットとして定義します。
AtScopeでコンポーネント間のインタフェースを列挙できます。
プロダクトライン開発複数機種一括開発での、変動点の設計実装もできます。 単方向依存を意識することで、置換可能になります。 機種ごとの違いを変動点として定義して、置換することでプロダクトライン開発ができます。 |