Frameworks offer several advantages. Besides the fact that reuse of architecture design amounts to a standardization of the application structure, adapting a framework to produce specific applications implies a significant reduction in the size of the source code that has to be written by the application programmer. Mature frameworks allow a reduction of up to 90% (Weinand et al., 1989; Fayad et al., 1999a, b, c) compared to software written with the support of a conventional function library.
More good news is that framework-centered software development is not restricted to specific domains, such as graphic user interfaces (GUIs). Actually, frameworks are well-suited to almost any commercial or technical domain. To name just a few: process control systems, and commercial systems such as web-based software, reservation systems, and banking software.
The bad news is that framework development requires an extraordinary amount of development effort. The costs of developing a framework are significantly higher than the costs of developing a specific application. If similar applications already exist, they have to be studied carefully to come up with an appropriate generic semi-finished system the framework for the particular domain. Adaptations of the resulting framework lead to an iterative redesign. So frameworks represent a long-term investment that pays off only if similar applications are developed again and again in a given domain.
Framework development and reuse is currently at odds with the project culture that tries to optimize the development of specific software solutions as opposed to generic ones. As this book focuses on the technical aspects of framework development, we refer to the discussion of organizational issues by Goldberg and Rubin (1995). Nevertheless, selected hints and guidelines taken from several framework projects can support the framework development and adaptation process. Chapter 7 completes the book by presenting hints and guidelines that have proved to be useful in practice and that are relevant to the UML-F profile.
It takes a considerable effort to learn and understand a framework. The application developer can neither use a black-box nor white-box framework without knowing the basics of the functionality and interactions that the framework provides. This makes it essential to not only provide a high quality framework, but also a straightforward way to learn it. Standard UML does not offer notational elements tailored for that purpose. The extensions summarized as UML-F profile support framework development and adaptation. The UML-F profile focuses on pinpointing a framework's variation points.
So-called 'cookbooks' document frameworks and support their adaptations. They contain a set of recipes that provide step-by-step guidelines for typical adaptations together with sample source code. Chapter 5 discusses how cookbooks can benefit from the UML-F profile.