Object-Oriented Enterprise and Application Frameworks are designed to reduce the complexity and cost of enterprise systems and applications therefore have become strategic assets for organizations across all business sectors. Evidence of this is reflected in the many enterprise and application frameworks of flexible and extensible products. A framework views an application fragment as a set of objects that interact to accomplish a set of domain functions. A framework includes three sets: - a set of framework participants; - a set of relationships between the framework participants; and - a set of interaction scenarios between the framework participants. The structure of frameworks typically reflects the idea of inversion of control. Instead of the application-specific code calling reusable code, we have reusable code calling application-specific code, and knowing when that application-specific code will be called, we can put in it whatever it is that we want done in certain situations. A framework does not expose all of its internals, but only those parts that need to be customized by the framework user to adapt it to their needs.