• Patterns serve as guidelines for programmers, and models of computation as the underlying
principles.
•A third element is a framework, which enforces the patterns and implements the models of
computation.
•A framework
is a set of constraints on
components and their
interaction, and a set of benefits that derive from those constraints.