Frameworks are specialized for a narrow range of applications; each model o
f interaction is domain-specific, e.g., designed to solve a narrow set of p
roblems. Frameworks evolve over long periods of time. A framework is more t
han a class hierarchy. It is a miniature application complete with a dynami
c as well as a static structure. It is a generic application and can be reu
sed as the basis for many other applications. This topic has captured a gre
at deal of attention in recent years, since frameworks leverage, in practic
al terms, capital-intensive software investment through reuse, and higher-l
evel application programming interfaces, so that applications can be develo
ped many times faster.
Despite dramatic increases in computing power, the design and implementatio
n of complex software remains hard. Moreover, the growing heterogeneity of
hardware/software architectures and diversity of operating system and commu
nication platforms make it difficult to reuse existing algorithms, detailed
designs, interfaces, or implementations directly. The emerging focus on ob
ject-oriented enterprise and application frameworks (OOAFs) in the OO commu
nity offers software developers both a new vehicle for reuse and a way of c
apturing the essence of successful architectures, components, policies, ser
vices, and programming mechanisms. By providing reusable skeletons on which
to build new applications, frameworks can save countless hours and thousan
ds (even millions) of dollars in development costs. Currently, OOAFs are a
very important issue for the software industry and academia because softwar
e systems are becoming increasingly complex. I believe that OOAFs will be a
t the core of the technology of the twenty-first century.