Software reuse holds the promise that complex software systems can be built faster, at lower cost, and with higher quality by reusing existing software artifacts. However, despite numerous success stories and decades of research, the promise has not been fulfilled. This situation has lead to a renewed "interest in understanding how and where reuse can be effective and why it has proven so difficult to bring the seemingly simple idea of software reuse to the forefront of software development" (Krueger, 1992, p. 133).
This research investigates the cognitive issues individuals face when trying to reuse a given object-oriented analysis (OOA) artifact. The two overarching research questions are: (1) How is a given OOA (re)used to solve a new problem__ __ (2) How do different types of OOA artifact and different levels of expertise impact reuse__ __
An experimental study is conducted with thirty-seven participants, including undergraduate and graduate students and professional OO developers. Participants think-aloud as they perform an OOA task. Six experimental conditions were studied: three "good" analogy/reuse conditions, two "poor" analogy/reuse conditions, and one control condition. In the first five conditions, participants are given an OOA artifact to reuse; in the sixth condition, no artifact is provided.
Quantitative and qualitative analysis of the verbal protocols shows that analogical mapping explains a large portion of the reuse process. More reuse occurred in the theoretically good analogy conditions than in any other condition. Neither novice nor experienced analysts reused the theoretically poor analogies. The good analogies were structurally similar (i.e., common inter- and intra-object relationships) whereas the poor analogies were structurally dissimilar. Thus structural similarity is critical to making an artifact reusable.
Comparing experts and novices, novices engaged in more reuse activity than did experts. However, the novices' reuse activity was often unproductive, whereas the experts were able to quickly and accurately recognize and apply the analogy. Thus, while novices engaged in more reuse activity, they were not as successful at reusing as were the experts. These findings contribute to our understanding of the reuse process and have implications for tool development to better support reuse.
Recommendations
Analogical reasoning for reuse of object-oriented specifications
ICCBR'03: Proceedings of the 5th international conference on Case-based reasoning: Research and DevelopmentSoftware reuse means to use again software components built successfully for previous projects. To be successful, techniques for reuse should be incorporated into the development environment. This paper presents an approach where analogical reasoning is ...