Skip to content

Software Frameworks

June 4, 2011

Introduction

Definition: “A framework is mainly a product for developers used as an integrated development environment that facilitates, supports, guides, confines, and helps the developers in building application in a well defined domain.” Shai Ben-Yehuda.

A Framework is a package of software libraries that abstracts computer software by wrapping them in a well-defined and reusable application programming interface (API). In other words low level API are abstracted with high level API so that programmers comfortably deal with integrated and managed low level features without understanding their peculiarities and still keeping their code standardized and correct. However, frameworks contain key distinguishing features that separate them from normal libraries.

For example, a web application framework may provide user session management, data storage, and a templating system. A desktop application framework may provide user interface functionality and widgets (common GUI elements). Almost all frameworks control at least some aspect of an application’s flow of execution.

Why Frameworks

  • Frameworks are for conceptual integrity
  • Reducing/Abstracting complexity
  • Reducing development time and effort
  • Reduce possibility of bugs and errors
  • Control the behavior for standardization

Features

Software frameworks have these distinguishing features that separate them from libraries or normal user applications:

  1. Inversion of control – The overall program’s flow of control is not dictated by the caller, but by the framework.
  2. Default behavior – A framework has a default behavior, which must actually be some useful behavior and not a series of no-ops.
  3. Extensibility – A framework can be extended by the user usually by selective overriding or specialized by user code providing specific functionality.
  4. Non-modifiable framework code – The framework code, in general, is not allowed to be modified. Users can extend the framework, but not modify its code.

Types

Following are some of the types of frameworks that we find in our development works:

  • Development: Eclipse. .NET, Java Development Kit, Mac’s Cocoa (AppKit and Foundation Kit)
  • Application runtime: Mac’s Cocoa Runtime, Windows Common Language Runtime, Android, Java Runtime Environment
  • Web Application: Apache-PHP
  • Security: RSBAC, GFAC, FLASK
  • Many others for specific application domain

Fundamentally, there are two kinds of frameworks:

  • A full-stack framework provides a single set of components, covering the entire spectrum of features needed to build the application. They ensure that the components work well with one another. Examples are Android, Django and Zend frameworks.
  • A glue framework provides a set of adapters and interface code. They are suppose to handle many different components at any part of the software stack. They ensure that the adapters will work well with any possible combinations of components. Examples are FLASK, GFAC, TurboGears, Twisted and Pylons.

There will always be framework developers who prefer the full-stack and there will always be framework developers who prefer glue. There will also always be developers in each camp. There will always be frameworks that can either be glue or full stack depending on the need.

There is no perfect framework. There are only different frameworks that suit different kinds of needs.

Bibliography

  1. http://en.wikipedia.org/wiki/Software_framework
  2. http://docforge.com/wiki/Framework
  3. http://www.b-list.org/weblog/2007/feb/19/python-framework-design/
  4. http://c2.com/cgi/wiki?SoftwareFramework
Advertisements
No comments yet

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: