Framework is in a nutshell, "a half finished application". A framework only implements the common functionality used in all applications, and the application-specific functionality is not implemented. Usually the application-specific functionality is implemented by sub-classing the already supplied classes from the framework.
The benefits of the frameworks are summarized below. Because of these advantages, using a framework to develop applications (particularly web applications), has become common practice.
- By using the framework as a base for the part of the application that requires advanced knowledge, and leaving the design and analysis to the developer, the foundation is laid out and the effort can be put in the more essential part of the application. In this way the amount of code to be written is reduced and the productivity is increased Homogeneous development
- When a framework is used to develop an application, the development must be done in accordande to the framework, maintaining the same level of quality. Shorter test process
- There is no need for making unit tests for the framework. Improved maintenance
- By using a framework is easier to understand the big picture of the application, making easier the maintenance.
However useful the frameworks are, they have the following disadvantages:
Step learning curve
- To understand all of the framework is difficult. If the form of use is not explained clearly, or when we want to make a change in the framework, we need to understand how the framework works in detail. To develop a good framework is very difficult
- For a framework to be used in many applications, we need to know the common functionality. However, to determine the common functionality is difficult. And to make this common functionality easy to use by many different applications is even more difficult. Adding non supported functionality to the framework is difficult
- The application-specific functionality can be achieved by sub-classing the classes provided by the framework. However, if we want to change the functionality of the framework, we need to modify the framework itself. When developing with a framework making a change that is supported is easy, but making a change that was not foreseen can be very difficult. Tho cost of understanding can be very high. To develop a framework easy to extend is very difficult.
In the framework group we do research to solve this problems. Recently me are doing research about frameworks for Web applications.