Saturday, July 22, 2006

フレームワークとは?


  • フレームワークとは、特定のソフトウェア問題を解決するクラスやインターフェースの集まり であり

  • それらのクラスやインターフェースは、何らかの抽象概念を表す。

  • フレームワークは、ハイレベルのパターン、つまりアーキテクチャを構成しており、これにより、上の抽象概念を表現するクラスやインターフェースの相互作用を定義している。


フレームワークをアプリケーション開発に使用する場合、そのアプリケーションはフレームワークが解決する『特定のソフトウェア問題』に合致していなくてはならない。つまり、アプリケーションはフレームワークが提供するアーキテクチャに相応しいものでなければならない。その場合に、フレームワークが構成しているアーキテクチャを再利用できるということだ(アーキテクチャの再利用)。

アプリケーション開発者は、アプリケーションの特定の機能を実現するために、フレームワークを構成している抽象概念を拡張・実装することができる。したがって、これらの抽象概念を表現しているクラスやインターフェースは、フレームワークを拡張する拡張点とよぶことができる。

いうなれば、フレームワークとは、不完全なアプリケーション であって、アプリケーション開発者は、その不完全な部分を補うことでアプリケーションを開発する。フレームワークが提供する部分は再利用することができるので、その分、負担が軽減するというわけだ。

ライブラリとの違いは何か?ライブラリにはアーキテクチャは含まれない。これが大きな違いだ。

フレームワークはアーキテクチャを含んでおり、アプリケーションはそのアーキテクチャを再利用する。アーキテクチャは抽象概念の相互作用を定義しており、アプリケーションが拡張した抽象概念は、そのアーキテクチャにしたがって制御されることになる。

ライブラリの場合はアプリケーションのコードからライブラリが呼ばれるのに対して、フレームワークでは、フレームワークからアプリケーションのコードが呼ばれる。このことを 制御の反転 とよぶ。

2 comments:

Anonymous said...

eh.. nice thoughts :))

Anonymous said...

hm. amazing thread..