Software framework

A software framework, in computer programming, is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality. Frameworks are a special case of software libraries in that they are reusable abstractions of code wrapped in a well-defined API, yet they contain some key distinguishing features that separate them from normal libraries.

Software frameworks have these distinguishing features that separate them from libraries or normal user applications:


 * 1) inversion of control: In a framework, unlike in libraries or normal user applications, the overall program's flow of control is not dictated by the caller, but by the framework.
 * 2) default behavior: A framework has a default behavior. This default behavior must actually be some useful behavior and not a series of no-ops.
 * 3) extensibility" A framework can be extended by the user usually by selective overriding or specialized by user code providing specific functionality.
 * 4) non-modifiable framework code: The framework code, in general, is not allowed to be modified. Users can extend the framework, but not modify its code.