UML Definition: A micro-architecture that provides an extensible template for applications within a specific domain.
(General) the part of an overall system architecture into which variable components can fit
(Object Technology) a set of cooperating object classes that make up a reusable design for a specific class of software or function. Such a framework is typically customized to a particular application by creating application-specific subclasses of the abstract classes in the framework. Apple's MacApp is an example of a framework for a complete Macintosh application. Taligent's CommonPoint Application System is a framework consisting of a collection of frameworks. Each of these frameworks is a group of C++ classes that operate together to implement some function.
A looser use of framework in object technology is to refer to a Tool Kit.
From RalphJohnson's Framework Home Page at: http://st-www.cs.uiuc.edu/users/johnson/frameworks.html
A framework is a reusable design expressed as a set of abstract classes and the way their instances collaborate. It is a reusable design for all or part of a software system; a user interface framework only provides a design for the user interface of a system, while MacApp, the "Macintosh Application Framework" provides a design for the entire application. By definition, a framework is an object-oriented design. It doesn't have to be implemented in an object-oriented language, though it usually is. Large-scale reuse of object-oriented libraries requires frameworks. The framework provides a context for the components in the library to be reused.
A definition of an object-oriented software framework is given in Gamma And Helm:
A framework is a set of cooperating classes that make up a reusable design for a specific class of software. A framework provides architectural guidance by partitioning the design into abstract classes and defining their responsibilities and collaborations. A developer customizes a framework to a particular application by subclassing and composing instances of framework classes.
... [a framework] dictates the architecture of your application. It will define the overall structure, its partitioning into classes and objects, the key responsibilities thereof, how the classes and objects collaborate, and the thread of control. A framework predefines these design parameters so that you, the application designer/implementer, can concentrate on the specifics of your application. The framework captures the design decisions that are common to its application domain. Frameworks thus emphasize design reuse over code reuse, though a framework will usually include concrete subclasses you can put to work immediately.
A Framework As A Product For Developers, as expressed by Shai Ben Yehuda in his paper Pattern Language for Framework Construction at http://jerry.cs.uiuc.edu/~plop/plop97/Proceedings/shai.pdf
A framework is mainly a product for developers used as an integrated development environment that facilitates, supports, guides, confines, and helps the developers in building applications in a well defined domain. A framework is an environment built to reduce development costs, maintenance costs, and implementation costs.
Framework Evolution Patterns: http://st-www.cs.uiuc.edu/users/droberts/evolve.html
A Pattern Language for Framework Construction: http://jerry.cs.uiuc.edu/~plop/plop97/Proceedings/shai.pdf
I have one field I want the user can't leave without entering info in it, except when the user is exiting the field to click on the "Cancel" button... how can I get that behavior?
The solution to this issue is called a framework. Even if all it does is manage validations and canceling, the idea is the same: some code that will apply to this issue, regardless of the specific validation.
There are other things that will cause a framework: an ON SHUTDOWN that cleans up open forms, wanting all of your data access to be done consistently so you build a class that you can use to manage your data access, the list is huge.
And perhaps a big one: "framework's help you work around deficiencies in the environment you are working in." For instance, in VFP sortable and search able girds – users expect them, but VFP doesn't provide it, framework does. This covers workarounds to bugs too.
Once you accept that, then you can decide if you are going to write your own, or go get a 3rd party one.
The only way to avoid a framework is to deliberately do the same task different each time you code it.
See Category Frameworks.
See also VFP Framework Road Map Not Invented Here Syndrome
Contributors Carl Karsten
( Topic last updated: 2006.05.10 01:44:18 PM )