Saturday, September 13, 2008

WTF is a software Framework?

Let me start this by saying that I am no expert in the subject and have no pretension as such. I am just a regular Jose (Joe) writing my understanding of the subject from a dumb down point of view.

What is a Framework

A framework is basically a frame that a developer will add functionality to solve a certain problem. A framework contains the little bits that need not be handled by “plumbing code” such as page navigation, database insertion and the like depending on the framework being used.

Unlike a library where the functions are called by the application, in the case of a framework it is the application that is called by the framework. A good example of a framework is Ruby on Rails aka RoR aka Rails. Rails will handle most database transactions and view transactions leaving the developer to concentrate on the business processes.

IoC

To further distinguish a library, which usually requires the usage or inclusion or importation of certain package or header, from a framework there is this term the is called Inversion of Control or IoC which means that the control structure is reversed. To simply put it in a library the developer writes code to control the functionality of the library in a framework the developer writes code that will be controlled and used by the framework.

Frameworks Frameworks Frameworks

There are so many frameworks out there both “free” and non-free that can be utilized to solve a particular problem. There are frameworks that tackle only a a certain area such as display or database interaction while others are complete packages. It would be up to the developer to select which tool would be most fitting.

Advantage of a Framework

The advantage of a framework is that generally the developer is insulated from the tedious coding of some plumbing code such as page navigation, session handling or data handling and manipulation. The developer can now concentrate on business rules and the like.

Disadvantage of a framework

Two words “learning curve”

No comments: