ソフトウェアフレームワーク
観点のひとつとしては、いわゆる「メインループ」あるいは「イベントループ」をアプリケーション側が持つか否か、という分類がある。メインループをアプリケーション側が持っていてそこから呼び出される形態のものがライブラリであり、一方フレームワークではメインループはフレームワーク側にあり、アプリケーションはそちら側から呼ばれるイベントハンドラによって駆動される(これについて「制御の反転」という語で説明されることがある)。
しかしこの分類は、両者を特徴づけるはっきりした分類というわけではない。アプリケーションのmain関数はランタイムライブラリ中のスタートアップルーチンから呼び出される。また、広く使われているようなフレームワークでは、たいていはメインループをアプリケーション側が持つことができるようなメカニズムが用意されている。
ソフトウェアフレームワークは、最終的にアプリケーションソフトウェアにリンクされるライブラリコードだけでなく、開発に必要となる各種プログラミングツールも含んでいることがある。また、統合開発環境 (IDE) に組み込まれたプロジェクトテンプレートやソースコードジェネレータを活用した自動プログラミングの仕組みが用意されていることもある。
↑ Riehle, Dirk (2000), Framework Design: A Role Modeling Approach, Swiss Federal Institute of Technology, http://www.riehle.org/computer-science/research/dissertation/diss-a4.pdf
↑ “Framework”. DocForge. 2008年12月15日閲覧。
↑ Vlissides, J M; Linton, M A (1990), “Unidraw: a framework for building domain-specific graphical editors”, ACM Transactions of Information Systems 8 (3): 237-268
↑ Johnson, R E (1992), “Documenting frameworks using patterns”, Proceedings of The Conference on Object Oriented Programming Systems Languages and Applications (ACM Press): 63-76
↑ Gachet, A (2003), “Software Frameworks for Developing Decision Support Systems - A New Component in the Classification of DSS Development Tools”, Journal of Decision Systems 12 (3): 271-281
↑ Pree, W (1994), “Meta Patterns-A Means For Capturing the Essentials of Reusable Object-Oriented Design”, Proceedings of the 8th European Conference on Object-Oriented Programming (Springer-Verlag): 150-162
↑ Javaなどではインタフェースの場合もあり、その場合は「インタフェースを実装した」となる
↑ Buschmann, F (1996), Pattern-Oriented Software Architecture Volume 1: A System of Patterns. Chichester, Wiley, ISBN 0471958697