| The Concept The highest common abstraction level among a number of similar 
                  products or applications to be captured in terms of general 
                  concepts and structures.  This creates a generic design that can be instantiated for 
                  each existing product as well as for products to be developed 
                  and marketed in the future.  Frameworks are ideally suited for capturing the commonalities 
                  in a product family. The bulk of the functionality can be captured 
                  in the framework, which is maintained as a single system.  Each product is an instantiation of the framework, where the 
                  amount of unique code is proportional only the amount of specific 
                  features in that product and not to its total complexity.  An object-oriented framework can be seen 
                  as a class library which is built on a systematic and extensive 
                  use of polymorphism or dynamic binding. That is easier said 
                  than done and the established development methods offer little 
                  support for framework design. But new method elements, such 
                  as patterns and contracts, are beginning to appear as valuable 
                  contributions to the evolution of OO methods.  A framework is a reusable design for 
                  a specific category of applications, expressed as a set of cooperating 
                  classes.  A software framework is a reusable mini-architecture 
                  that provides the generic structure and behavior for a family 
                  of software abstractions, along with a context of memes/metaphors 
                  which specifies their collaboration and use within a given domain. 
                   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.  |