4章アーキテクチャ上の結合
アーキテクチャに関して頻繁に議論にあがるものに結合がある。結合とは、アーキテクチャの要素がどのようにつながり、依存しているかということだ。多くのアーキテクトは、結合を必要悪だとして非難する。しかし、他のコンポーネントに依存(結合)することなしに複雑なソフトウェアの構築は困難だ。進化的アーキテクチャは、適切な結合、すなわち、最小のオーバーヘッドで最大の利益をもたらすために結合すべきアーキテクチャの次元を特定する方法に注目する。
4.1 モジュール性
はじめに、アーキテクチャに関する議論の中で使い古されてきた一般用語をいくつか紐解いておこう。プラットフォームが異なれば、コードを再利用する仕組みも異なる。しかし、いずれのプラットフォームであっても、関連するコードをモジュールとしてまとめてグループ化する何らかの方法はサポートしている。モジュール性とは、関連するコードの論理的なグループ化を表すものだ。次にモジュールは異なる物理方式でパッケージされる可能性がある。コンポーネントは、モジュールを物理的にパッケージする方法だ。モジュールは論理的なグループ化を意味し、コンポーネントは物理的な分割方法を意味する。
開発者は、プラクティスに基づいてコンポーネントをさらに細分化することが有効であることに気が付いた。この開発プラクティスには、ビルドやデプロイへの考慮も含まれている。ライブラリという種類のコンポーネントは、呼び出し側のコードと同じメモリアドレス内で実行され、言語機能の呼び出しメカニズムによって呼び出し側とやり取りする。ライブラリは一般にコンパイル時の依存関係だ。大抵の複雑なアプリケーションは様々なコンポーネントで構成されるため、ライブラリに関する大抵の懸念はアプリケーションアーキテクチャに存在することになる。他の種類のコンポーネントに ...