BioBhasha® is first of the its kind Object Oriented Biological Application Framework
Definition to Object Oriented Application Frameworks :
-
Frameworks are application generators that are directly related to a specific domain, i.e., a family of related problems.
-
A framework is a reusable, ``semi-complete'' application that can be specialized to produce custom applications
Importance:
-
Object oriented frameworks (hereafter simply 'frameworks') are a cornerstone of modern software engineering.
-
Object-oriented (OO) application frameworks are a promising technology for reifying proven software designs and implementations in order to reduce the cost and improve the quality of software.
-
Framework development is rapidly gaining acceptance due to its ability to promote reuse of design and source code.
-
In contrast to earlier OO reuse techniques based on class libraries, frameworks are targeted for particular business units (such as data processing or cellular communications) and application domains (such as user interfaces or real-time avionics).
An Example:
-
As an example, consider building a Graphical User Interface (GUI) tool kit. We might choose to design and implement a single tool kit. On the other hand, if we design the tool kit as a framework, our single design will enable us to generate a collection of tool kits for a variety of GUI applications. Frameworks must generate applications for an entire domain. Consequently, there must be points of flexibility that can be customized to suit the application. For example, one point of extensibility might be the algorithm used to draw graphical elements.
Benefits:
The primary benefits of OO application frameworks stem from the modularity, reusability, extensibility, and inversion of control they provide to developers, as described below:
- Modularity -- Frameworks enhance modularity by encapsulating volatile implementation details behind stable interfaces. Framework modularity helps improve software quality by localizing the impact of design and implementation changes. This localization reduces the effort required to understand and maintain existing software.
- Reusability -- The stable interfaces provided by frameworks enhance reusability by defining generic components that can be reapplied to create new applications. Framework reusability leverages the domain knowledge and prior effort of experienced developers in order to avoid re-creating and re-validating common solutions to recurring application requirements and software design challenges. Reuse of framework components can yield substantial improvements in programmer productivity, as well as enhance the quality, performance, reliability and interoperability of software.
- Extensibility -- A framework enhances extensibility by providing explicit hook methods [Pree:94] that allow applications to extend its stable interfaces. Hook methods systematically decouple the stable interfaces and behaviors of an application domain from the variations required by instantiations of an application in a particular context. Framework extensibility is essential to ensure timely customization of new application services and features.
- Inversion of control -- The run-time architecture of a framework is characterized by an ``inversion of control.'' This architecture enables canonical application processing steps to be customized by event handler objects that are invoked via the framework's reactive dispatching mechanism. When events occur, the framework's dispatcher reacts by invoking hook methods on pre-registered handler objects, which perform application-specific processing on the events. Inversion of control allows the framework (rather than each application) to determine which set of application-specific methods to invoke in response to external events (such as window messages arriving from end-users or packets arriving on communication ports).
The above excerpts are from the following websites:
- http://www.acm.org/crossroads/xrds7-4/frameworks.html
- http://www.cse.wustl.edu/~schmidt/CACM-frameworks.html
- http://st-www.cs.uiuc.edu/users/johnson/frameworks.html
- http://personal.cis.strath.ac.uk/~murray/frameworks.html
Bibliography of OOFs
http://www.ide.hk-r.se/~michaelm/fwpages/fwbibl.html