ABSTRACT

Chapter Summary In this chapter, the reader learns about model-based design of extensible, adaptable programs. Models encode the problem domain semantics. At the conceptual level, models can be expressed in a variety of forms, for example, as Unified Modeling Language (UML) class diagrams. At the program level, models are stored in data structures (e.g., tables) and play the role of parameters driving operation of generic programs. Along with information hiding, model-based techniques are a powerful means of realizing design for change [20]. We illustrate model-based design with examples of static program analyzers (SPAs), reverse engineering, and project-support environment. Although our examples are from the domain of software tools, model-based techniques can be applied to improve maintainability of programs in any application domain.