What kind of framework is that?
The word ``framework'' continually pops up in computer science
literature, particularly in the fields of software engineering and
distributed systems. The most essential aspect of its meaning is clear:
a framework is something which confers structure but not content.
Unfortunately, any given use of the word will usually have a more
specific intention -- but it's often unclear what kind of ``thing'' an
author is talking about, and what exactly the ``structure'' and
``content'' might be. Principally this is because authors often don't
define the term when they use it -- but even when they do, they can have
remarkably different definitions.
To document this problem, I've been collecting definitions of the
word ``framework'' for a while now. These include those given explicitly
and also those I've been able to infer. This page is likely to grow as
I find more.
- A calculus or set of conceptual definitions which may be used to reason
about real-world systems.
- Meyer, "Applying Design By Contract", IEEE Computer 25(10), October
1992.
- Nierstrasz and Achermann, "Supporting Compositional Styles for
Software Evolution", Proceedings International Symposium on Principles of
Software Evolution (ISPSE 2000), IEEE, Kanazawa, Japan, November 2000,
pp. 11-19.
- A re-usable design for an application or system, analogous to (but wider
in scope than) an abstract class definition. It might be completely
abstract, or might concretely define one or more program artifacts (such
as abstract classes). This is very similar to an architectural style,
but has a higher level of specificity: it must specify an application
domain, and how the objects of that domain are decomposed and modelled
as programmatic objects. It is also similar to a design pattern, but at
a higher level, since it specifies a very significant part of an entire
application or program. As such it may be regarded as a software
architecture template, or as a kind of highly-specified architectural
style.
- Ralph Johnson and Vincent Russo, "Reusing Object-Oriented Designs",
Technical Report UIUCDCS 91-1696, University of Illinois at Urbana-Champaign, May 1991.
- A software component (or connector, at the reader's preference))implementing an "inversion of control"
architectural style: it is the central within the architecture, and each
component connecting to it is passive with respect to it.
- A software architecture.
- (reported by) Councill and Heineman, "Definition of a Software
Component and its Elements", in Heineman and Councill (eds.)
"Component-Based Software Engineering", Addison Wesley, 2001.
- Unit of software deployment containing a library, its header files, documentation and useful related application data (images, localisations, etc.).
- Library used pervasively.
- Many sources, including .NET "framework"
- M. Aoyama, "New Age of Software Development", ICSE 1998
- A development tool.
-
Coarse-grained clump of components, composable as a single unit with the
other parts of a system.
- D. Kiely, "Are Components the Future of Software?", IEEE Computer
31(2), February 1998.
Content updated at Wed 6 Jun 21:14:33 BST 2007.
validate this page