Java Reference
In-Depth Information
Although framework requirements are generally defined by an indepen-
dent standards body (e.g. CORBA), a software vendor (e.g. Microsoft's MFC,
COM and DCOM, FASTech's FACTORYworks, IBM's San Francisco Project,
Philips' New York Project) or a systems engineering group (e.g. Motorola's
CIM Baseline), at one time or other, every developer or development team
has created a framework. Such frameworks often manifest themselves as
undocumented or loosely documented standards for developing an appli-
cation (or applications).
Framework scope
Although the design principles underlying frameworks are largely inde-
pendent of the application domain, we have found it useful to classify frame-
works by their scope as follows:
Service frameworks are plug-and-play software components that offer
domain-independent functionalities such as service discovery, service
configuration and data filtering. They can be easily customized for a very
specific application.
Middleware integration frameworks (Bernstein 1996) enhance the
ability of software developers to modularize, reuse and extend their
system infrastructure to work seamlessly in a distributed and hetero-
geneous environment where application interoperability is a major
concern. Common examples include message-oriented middleware and
ORB frameworks.
Enterprise application frameworks (Fayad, Hamu and Brugali 2000) are
structured collections of software components conceived for specific
application domains: they solve most of the design and implementation
problems common to the applications in that domain and are frequently
built on top of a middleware framework. They address broad application
domains (such as telecommunications, manufacturing, avionics and
financial engineering) and are the cornerstone of enterprise business
Framework customization
Frameworks can be classified by the techniques used to customize them in
concrete applications, which range along a continuum from white-box, grey-
box to black-box frameworks.
White-box frameworks rely heavily on OO language features such as
inheritance and dynamic binding in order to achieve extensibility. Existing
functionality is reused and extended by (1) inheriting from framework base
classes and (2) overriding predefined hook methods using design patterns
such as the Template Method (Gamma et al . 1995).
Search WWH ::

Custom Search