In order to create a procedural reading technique for reusing code and design in an object-oriented framework, we created two reading techniques, each based on a different model of the framework.
The most common description of a framework uses a class hierarchy to describe the functionality supported by the framework and an object model to describe how the dynamic behavior is implemented. Most of the common descriptions of a framework in the literature (e.g. [Lewis95], [Taligent95]) present a model of the framework similar to this one. To teach subjects how to use this model, we created a set of guidelines that could be used to gain an understanding of the class hierarchy. The guidelines help developers understand the functionality provided by the framework by concentrating on abstract classes in the hierarchy to provide an understanding of the broad classes of functionality, then proceed through deeper and deeper levels of concrete classes to find the most specific instantiation. We refer to this procedure as the Hierarchy-Based (HB) procedure, to emphasize that the underlying model of the framework is the class hierarchy.
As an alternative model, we decided to look at the framework through a set of example applications which, taken together, were meant to illustrate the range of functionality and behavior provided by the framework. Although a detailed examination of learning frameworks by means of examples has not been undertaken, learning by example also seemed a promising approach. Sets of example applications have been used to document some frameworks (the framework we used came with such a set) and the approach has been recommended for similar types of activities: such as learning effective techniques for problem solving [Chi87], or learning how to write programs in a new programming language [Koltun83, Rosson90]. It has also been argued that learning by examples is well-suited for "domains where multiple organizational principles and irregularities in interaction exist" [Brandt97], which may be a fair assessment of the large hierarchy of classes in a framework. To help subjects use examples to learn the framework we created a set of guidelines that would guide exploration through the example set, to particular examples, to particular objects in the implementation, to particular lines of code in the object. This procedure is referred to as the Example-Based (EB) procedure.
Please note that these reading techniques contain many references which are specific to the ET++ framework, to which they were originally tailored. Making these techniques applicable in other environments will require tailoring the techniques to the tool set available in your own environment.
Our study also uncovered important differences between the two techniques. For example, the example-based technique was much better suited to novice users of the framework. Our experiences with the two techniques are described more fully elsewhere in this lab package.