Software reuse has been in practice ever since the software engineering field evolved. However, most initial effort, from say, the late 60s to the 90s was small-grained, leveraged few opportunities and led to reuse of subroutines, modules and eventually objects and components as well. It was only after the emergence of concepts such as frameworks that the technology enablers for making larger components reusable became available. Today, software reuse is quite common but still has some way to go.
A framework can be regarded as a set of classes that embodies an abstract design for solutions to a family of related problems. It can also be thought of as a design and implementation for an application in a given domain. A good framework for software development may include programming languages, standardized libraries, and tools that form the part of any development process.
Managing code complexity and promoting code reuse are some of the main goals of a framework, besides reducing development time by making the code easy to create, maintainable and extensible by different teams. Application frameworks are available for a variety of technologies and environments and each software development framework has its own value.
What is important is how easily they allow software development and how long it takes developers new to the project to get up to speed with using the framework. Hence, generally speaking, frameworks that use industry standard patterns and underlying system framework code are safer bets. Some questions to ask when choosing a framework:
- Does the framework handle most things that are common to applications of the kind you wish to develop?
- Does the framework have a strong user community to back it?
- How much does the framework cost?
- How steep is the learning curve for the framework?
Often the underlying system frameworks are very similar-as most applications require a similar set of core functionality (e.g. validation, security/authorization/authentication, string manipulation, logging, etc). Since frameworks provide a lot of this out the box, they give developers a head start and prevent re-inventing the wheel.
Typically, frameworks provide more value for projects of a larger size. As a project gets bigger, the functionality of the software also increases, which in turn adds on to the complexity of the project. This can be managed and decreased by a software development framework.
While there is no dispute that frameworks have their advantages, there are some downsides to them as well. A single framework may not always suffice to the satisfaction of the development team. For example, they may find that they need three different frameworks – one for the UI, one for persistence (datastores) and one for data encryption. Each of these frameworks may have their own dependencies and to enable all the three of them to work together would require extra coding effort.
Hence, choosing a framework that integrates well with other development frameworks or better still, opting for some of the latest frameworks that are designed for components and services of any type to work together (and in which you can configure different application frameworks and access them in your development environment) may be the way to get the most out of a development framework.
Read the entire digest contents


"Online communities, iterative methodologies and software scalability" with Andres Camacho - Vice President of Engineering at Vinfolio 