There's a Wiki page on it:
Wikipedia - Software Framework.
Which proposes:
Wikipedia wrote:a software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software
and
Wikipedia wrote:Frameworks contain key distinguishing features that separate them from normal libraries:
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.default behavior: A framework has a default behavior. This default behavior must be some useful behavior and not a series of no-ops.extensibility: A framework can be extended by the user usually by selective overriding or specialized by user code to provide specific functionality.non-modifiable framework code: The framework code, in general, is not supposed to be modified, while accepting user-implemented extensions. In other words, users can extend the framework, but should not modify its code.