Frameworks can improve developer efficiency in terms of productivity and improves the quality, reliability and robustness of new product. Developer productivity is enhanced by allowing developer to focus on unique requirements of their applications instead of spending time on application infrastructure. Sites and apps have been developed largely from scratch. This continuous rediscovery and reinvention of the same concept or code keep costs high and quality low. A framework is an integrated set of objects that provide reusable architecture for a set of related applications. It is powerful tool to reduce software cost and improves its quality, but they can be hard to understand, learn, use, debug and optimize. Developers complete apps by extending, customizing or reusing components in framework. Since a framework is semi-complete application, it enables large scale reuse of components and standalone functions.
A skeleton of an application into which developers plug-in their code and provides most of the common functionality.
— Addison-Wesley, 1995
Today’s competitive and fast paced technology requires successful websites and smart- phone apps having;
Extensibility: supports quick updates and address new requirements to be a part of emerging technological markets.
Flexibility: supports a range of traffic flows and end to end quality of service (QoS) requirements.
Portability: makes easier to port website of apps on different platforms.
Reliability: ensures that sites or apps are tolerant to faults.
Scalability: enables apps to have experience with many clients simultaneously.
Affordability: ensures the cost effectiveness of products.
So, we need frameworks to improve quality, consistency and usability. Furthermore, a framework allows even junior programmers to be productive in development with minimal guidance. Though framework is beneficial in many contexts but they are not silver bullets (magical solutions to complex problems). They don’t make developers free from responsibility for solving complete complex process of analysis, design, implementation, validation and deployment. Ultimately there is no alternative to human creativity, experience and judgment.