What is application framework?
An application framework is a software library that provides a basic structure to support the development of applications for a particular environment. An application framework serves as a skeleton support for building an application.
The intent in developing application frameworks is to alleviate the common problems of developing applications. This is achieved through the use of code that can be used across different modules of an application. Application frameworks are used not only in graphical user interface (GUI) development, but also in other areas such as web-based applications.
Application frameworks are not a recently developed idea. Some of the old application frameworks that are still in use today are the SmallTalk user interface framework, MacApp (for Macintosh), and Struts (for web-based Java applications).
Due to the desire to create GUIs in applications with less development effort, application frameworks have proven to be a good solution by providing a standard framework with an underlying predefined code structure. For example, MFC (Microsoft Foundation Classes) is an application framework used in the Windows environment to develop applications in the C ++ language. MFC has all the tools for automatic code generation for GUI controls in the framework.
An application framework is used as a tool to provide the structure and templates for creating an application. By using object-oriented techniques during the implementation of the framework, pre-existing classes can be used to easily build the applications. Advantages of using application frameworks are:
The componentization of the framework allows developers to use it bit by bit. This results in better allocation of developers based on their expertise, reduction in errors and lower development costs.
Code and design reusability helps using tested components, which increases quality.
Extensibility for adapting the framework to implement business requirements.
Simplicity is achieved through the encapsulation function, which controls access to components and provides data security.
Better code maintenance as all base code is centralized in a single place.
In addition to the code, the predefined interactions between different classes form a template in order to reduce the development effort. This provides a better entry point into software development and helps in rapid application development.