- Allow for cleaner separation of layers
- Automatically apply certain well established design patterns
- Externally configurable
- Structured to support plug-and-play of components
From what I have seen, frameworks come with the following types of costs and benefits.
Costs
- Costs associated with the learning curve. These can be recurring as more resources are ramped onto a project or as resources are periodically cycled through maintaining a product
- Costs associated with conflicting life-cycles of the product being developed and the development framework. These involve either upgrading the framework to its newer version or replacing it with another framework
- Savings on account of increased productivity
- Savings on account of decreased number of bugs. There is a direct correlation between the number of lines of code written and the number of associated bugs
- Savings on account of increased product life, mainly attributed to slower degradation of the core product architecture over time
- Savings on account of quicker time to market