What is a Framework?

An object-oriented abstract design for a particular kind of application, also called a framework, consists of an abstract class for each major component.

One important characteristic of a framework is that the methods defined by the user to tailor the framework will often be called from within the framework itself, rather than from the user's application code. The framework often plays the role of the main program in coordinating and sequencing application activity. This inversion of control gives frameworks the power to serve as extensible skeletons. The methods supplied by the user tailor the generic algorithms defined in the framework for a particular application.

A constructivist definition of Framework:
A framework is a reusable design of all or part of a system that is represented by a set of abstract classes and the way their instances interact.

A plain definition of Framework:
A framework is the skeleton of an application that can be customized by an application developer.

Examples of Frameworks are
OLE/ActiceX, ASP.NET WebForm, JUnit, can you suggest more examples?

Component library definition:
Similar objects must be implemented for each problem the framework solves.
These objects are the concrete subclasses of the abstract classes that make up the framework.
The component library can be created by accumulating all of the concrete classes created for the various applications derived from the framework.

Toolkits definition:
An object-oriented application construction environment, or toolkit, is a collection of high level tools that allow a user to interact with an application framework to configure and construct new applications. All toolkits are based on one or more frameworks.

Examples of Toolkits are
Visual Studio WinForm designer and editor, can you suggest more examples?

Other keywords: white-box framework, black-box framework, hot spots, pluggable objects

Source: Ralph E. Johnson

Tags :   |  |  |

Print | posted @ Sunday, July 18, 2010 5:38 PM

Comments have been closed on this topic.