The use of well-designed class libraries and frameworks is a key element of object-oriented software development. However, while frameworks may significantly reduce development time and cost, they are dificult to understand and therefore hard to learn to use.We present an environment that supports documenting, browsing and editing of selected aspects offrameworks and framework-based applications on an abstraction level that is not available through static or dynamic program analysis. The main ideas of this environment are a specialized desktop metaphor for visualizing and browsing software architectures, the support of framework-based development by means of architecture templates, and an open tool architecture that supports the integration of any additional tools for visualizing and editing application and framework parts.
Motivation and overviewObject-oriented and component-based programming focus intensely on software reuse. Reusing large libraries and frameworks leads to reduced development time and cost. In addition, welldesigned frameworks may lead to higher flexibility and better overall maintainability [ 11.The drawback of a heavily reuse-oriented approach is the effort that is involved in finding and understanding the reusable assets. Many libraries and frameworks are large and complex. A significant amount of time has to be invested in learning and understanding classes, responsibilities and their collaborations.One way to aid in understanding class libraries and frameworks is to provide various forms of documentation (linear documentation, hypertext cookbooks, tutorials, active cookbooks, diagrams, etc.). Another way is to examine the source code using dedicated tools called browsers. Browsers extract information about a system's architecture and implementation directly from the system itself (source code, run-time information) and present it to the user from a particular viewpoint. Examples of browsers provided by many object-oriented environments are class hierarchy browsers, search engines, import/export analyzers and cross-reference tools. Most software development environments provide moderate to good support for browsing and editing source code, but they lack high-level tools for investigating and manipulating framework and application architectures.We follow a hybrid approach that includes elements from both manual creation of documentation and browsing source code. We present the Architecture Explorer, an environment that supports documenting, browsing and editing of certain aspects of a software system's architec-316 0-7695-0918-5/00 $10.00 Q Zoo0 IEEE 317ture on an abstraction level that is not available from just inspecting the system itself. The main ideas of this environment are a specialized desktop metaphor for visualizing and browsing software architectures, the support of framework-based development by means of architecture templates, and an open tool architecture that supports the integration of any additional tools for visualizing and editing application or framework parts. The remai...