Why use a framework


While working with the C2 architecture I realized the real purpose of using a framework. By definition, a framework is "a structure for supporting or enclosing something else". That is, a structure that allows us to do things such as using messages as communication between components (as in C2) or implementing implicit invocation (as in MachII) when the underlying language does not provide native facilities for that.

It is not only to be able to rapidly develop an application. Rather, it is to be able to use an architectural style to inherit all its advantages: modularity, anticipation of change, abstraction, low coupling, and high cohesion (all the properties that styles aim at). That, in turn, allows us to develop more quickly because the style put us constraints and we have some predefined configurations of component arrangement. We also achieve faster development by means of using proven patterns and reusing components. We could achieve the same results by applying other styles (as long as the language allows us) and skipping the framework.

So why use a framework? Because I am lazy and I don't want to have to think so much about how to realize a style or pattern. And by using a framework correctly, I get a free ride to a well organized application and I can focus on other things.