A software framework is a concrete or conceptual platform where common code with generic functionality can be selectively specialized or overridden by developers or users. Frameworks take the form of libraries, where a well-defined application program interface (API) is reusable anywhere within the software under development.
Certain features make a framework different from other library forms, including the following:
Default Behavior: Before customization, a framework behaves in a manner specific to the user’s action.
Inversion of Control: Unlike other libraries, the global flow of control within a framework is employed by the framework rather than the caller.
Extensibility:A user can extend the framework by selectively replacing default code with user code.
Non-modifiable Framework Code: A user can extend the framework but not modify the code.
The purpose of software framework is to simplify the development environment, allowing developers to dedicate their efforts to the project requirements, rather than dealing with the framework’s mundane, repetitive functions and libraries. For example, rather than creating a VoIP application from scratch, a developer using a prepared framework can concentrate on adding user-friendly buttons and menus, or integrating VoIP with other functions.