Frameworks capture the commonalities in design and implementation
between a family of related applications and are typically expressed
in a general purpose object-oriented lan guage. Software engineers use
frameworks to reduce the cost of building complex applica
tions. Although the task of using a framework to build an application
is error-prone, few techniques and tools exist to aid the
engineer. This paper characterizes the operations of in stantiation,
extension and refinement used to build applications from frameworks
and ex plores how these operations are supported by one common
language-level tool, namely the static typing policies (and associated
tools) of common object-oriented languages. We found that both
conservative contravariant and covariant static typing policies were
effec tive in supporting the operations of framework instantiation and
framework extension. However, both policies were ineffective at
supporting the operation of framework refine ment. Although it does
not support the refinement operation itself, covariance is sufficient
ly expressive to support the instantiation of a properly refined
framework. This result pro vides a basis for defining and building
tools to support the effective use and evolution of frameworks in
software engineering environments.
Back to Gail Murphy's Selected
Publications Page
Last modified: June 28, 1996
Gail Murphy