Classification of OO framework (Andrej Krajnc)
1, some definitions:
- a framework is a reusable design of all or part of a system that is represented by a set of abstract classes and the way their instance interact.
- a framework is a skeleton of an application that can be customized by an application developer.
2, how frameworks compare to other oo reuse techinques ?( component, class libraries, patterns )
- vs. component: framework are generally consisted of more components, are more customizable and more complex interface than components.
- vs. class libraries: framework provide reuse at a high level of abstration .
- vs. patterns: patterns are more abstract than frameworks.
3,problems:
- design , reusing and combination of framework are hard.
- a framework becomes a large and tightly coupled collection of classes that breaks sound moduliarization principles and is difficult to combine with other similar frameworks;
4, Framelet: are small frameworks which have a clearly defined simple interface , do not assume main control of an application and are easier manage, understand and specialize.it might be a pragmatic compromise between design patterns and application frameworks.
5, history:
- the first widely used one, write in Simula in the 1960's.
- Smalltalk , MVC
- MacApp
- Et++
- CommonPoint, HotDraw, ACE, JAWS, MFC, OWL,
- COM/DCOM, CORBA, EJB/RMI, .NET
- frameworks in Java:
6, Classifications:
- By Johnson and Foote[1988]: Whitebox framework and Blackbox framework.
- Fayad, SChmidt and Johnson[1999]: Graybox framework, grassbox framework
- application framework( GUI, database etc), domain framework( banking, insurance?etc )?and support frameworks( utilities : distribute computing, file access?etc ).
- Fayad and Schmidt[1997]: systgem infrastructure framework, middleware integragtion frameworks and enterprise applecation frameworks .
A, Extensibility, whitebox, blackbox,graybox,glassbox
B,Scope, system infrastucture, middleware integration, domain, enterprise and business collaboration frameworks
C,Approach: Object oriented, component oriented, service oriented and aspect oriented