Object-Oriented Application Frameworks

Object-Oriented Application Frameworks

October 1997/Vol. 40, No. 10 | Mohamed E. Fayad and Douglas C. Schmidt, Guest Editors
Object-oriented application frameworks are a promising technology for reifying proven software designs and implementations to reduce the cost and improve the quality of software. A framework is a reusable, “semi-complete” application that can be specialized to produce custom applications. Unlike earlier OO reuse techniques based on class libraries, frameworks are targeted for particular business units and application domains. Frameworks like MacApp, ET++, Interviews, ACE, Microsoft’s MFC and DCOM, JavaSoft’s RMI, and implementations of OMG’s CORBA play an increasingly important role in contemporary software development. The primary benefits of OO application frameworks stem from the modularity, reusability, extensibility, and inversion of control they provide to developers. Frameworks enhance modularity by encapsulating volatile implementation details behind stable interfaces. Framework modularity helps improve software quality by localizing the impact of design and implementation changes, which reduces the effort required to understand and maintain existing software. The stable interfaces provided by frameworks enhance reusability by defining generic components that can be reapplied to create new applications. Framework reusability leverages the domain knowledge and prior effort of experienced developers in order to avoid re-creating and revalidating common solutions to recurring application requirements and software design challenges. Reuse of framework components can yield substantial improvements in programmer productivity, as well as enhancing the quality, performance, reliability and interoperability of software. A framework enhances extensibility by providing explicit hook methods that allow applications to extend its stable interfaces. Hook methods systematically decouple the stable interfaces and behaviors of an application domain from the variations required by instantiations of an application in a particular context. Framework extensibility is essential to ensure timely customization of new application services and features. The run-time architecture of a framework is characterized by an inversion of control. This architecture enables canonical application processing steps to be customized by event handler objects that are invoked via the framework's reactive dispatching mechanism. When events occur, the framework's dispatcher reacts by invoking hook methods on pre-registered handler objects, which perform application-specific processing on the events. Inversion of control allows the framework (rather than each application) to determine which set of application-specific methods to invoke in response to external events. Application frameworks are classified by their scope, such as system infrastructure frameworks, middleware integration frameworks, and enterprise application frameworks. System infrastructure frameworks simplify the development of portable and efficient system infrastructure. Middleware integration frameworks are commonly used to integrate distributed applications and components. Enterprise application frameworks address broad application domains and are the cornerstone of enterprise business activities. Frameworks can also be classified by the techniques used to extend them, which range from white-box frameworks to black-box frameworks. White-box frameworks rely heavily on OO language features like inheritance and dynamic binding. Black-box frameworks support extensibility by defining interfaces for components that can be plugged into the framework via object composition. When used in conjunction with patterns, class libraries, and components, OO application frameworks can significantly increase software quality and reduce development effort. However,Object-oriented application frameworks are a promising technology for reifying proven software designs and implementations to reduce the cost and improve the quality of software. A framework is a reusable, “semi-complete” application that can be specialized to produce custom applications. Unlike earlier OO reuse techniques based on class libraries, frameworks are targeted for particular business units and application domains. Frameworks like MacApp, ET++, Interviews, ACE, Microsoft’s MFC and DCOM, JavaSoft’s RMI, and implementations of OMG’s CORBA play an increasingly important role in contemporary software development. The primary benefits of OO application frameworks stem from the modularity, reusability, extensibility, and inversion of control they provide to developers. Frameworks enhance modularity by encapsulating volatile implementation details behind stable interfaces. Framework modularity helps improve software quality by localizing the impact of design and implementation changes, which reduces the effort required to understand and maintain existing software. The stable interfaces provided by frameworks enhance reusability by defining generic components that can be reapplied to create new applications. Framework reusability leverages the domain knowledge and prior effort of experienced developers in order to avoid re-creating and revalidating common solutions to recurring application requirements and software design challenges. Reuse of framework components can yield substantial improvements in programmer productivity, as well as enhancing the quality, performance, reliability and interoperability of software. A framework enhances extensibility by providing explicit hook methods that allow applications to extend its stable interfaces. Hook methods systematically decouple the stable interfaces and behaviors of an application domain from the variations required by instantiations of an application in a particular context. Framework extensibility is essential to ensure timely customization of new application services and features. The run-time architecture of a framework is characterized by an inversion of control. This architecture enables canonical application processing steps to be customized by event handler objects that are invoked via the framework's reactive dispatching mechanism. When events occur, the framework's dispatcher reacts by invoking hook methods on pre-registered handler objects, which perform application-specific processing on the events. Inversion of control allows the framework (rather than each application) to determine which set of application-specific methods to invoke in response to external events. Application frameworks are classified by their scope, such as system infrastructure frameworks, middleware integration frameworks, and enterprise application frameworks. System infrastructure frameworks simplify the development of portable and efficient system infrastructure. Middleware integration frameworks are commonly used to integrate distributed applications and components. Enterprise application frameworks address broad application domains and are the cornerstone of enterprise business activities. Frameworks can also be classified by the techniques used to extend them, which range from white-box frameworks to black-box frameworks. White-box frameworks rely heavily on OO language features like inheritance and dynamic binding. Black-box frameworks support extensibility by defining interfaces for components that can be plugged into the framework via object composition. When used in conjunction with patterns, class libraries, and components, OO application frameworks can significantly increase software quality and reduce development effort. However,
Reach us at info@study.space
[slides and audio] Object-oriented application frameworks