Frameworks = (components + patterns)
Ralph E. Johnson · Communications of the ACM · 1997
Frameworks are an object-oriented reuse technique. They share many characteristics with reuse techniques in general, and object-oriented reuse techniques in particular. Although they have been used successfully for some time, and are an important part of the culture of long-time object-oriented developers, they are not well understood outside the object-oriented community and are often misused. Moreover, there is confusion about whether frameworks are large-scale patterns, or whether they are another kind of component. Even the definitions of frameworks vary. The definition we use most is "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 instances interact. The ideal reuse technology provides components that can be easily connected to make a new system. The software developer does not have to know how the component is implemented, and it is easy for the developer to learn how to use it. The resulting system will be efficient, easy to maintain, and reliable.