1.2 Goal of the Research

Although many factors, such as the lack of managerial commitment and the difficulty in developing good reusable components, affect the widespread uptake of reuse, this research focuses on the cognitive difficulties faced by programmers who try to reuse, because only when programmers are willing and able to put reuse into their daily practice will reuse become fruitful.

This research tries to create a conceptual framework to analyze what hinders programmers from making attempts to locate reusable components and, based on the analysis, it proposes a new approach to the design of component repository systems that can motivate and encourage programmers to reuse by reducing the difficulty of locating components.

By applying cognitive engineering [Norman, 1986] on the reuse process, a cognitive model of reuse is first built. Based on this cognitive model and past research on the effective use of large information repositories [Fischer, 2001], the following two barriers to the component locating process are identified.

Although reusable component repository systems have been an active research area for more than a decade, these two issues, especially the first one, have not been given enough attention. This is because those systems are designed to support the paradigm of development-with-reuse [Rada, 1995], which advocates reuse as a new paradigm for programming. Under this paradigm, the reuse process is treated as an independent process, and programmers have to change their current programming practice to embrace reuse; reusable component repository systems are researched as stand-alone systems under the assumption that programmers are always willing to use these systems and are able to use them with well-defined queries. Consequently, research on component repository systems has focused mainly on the information access mechanism only. Information access is an approach to obtain information that requires users1.1to start the information locating process through browsing or querying.

This research proposes a paradigm shift from development-with-reuse to reuse-within-development. Development-with-reuse is a methodology-centered view of reuse that demands programmers to adapt themselves to the new methodology--reuse. It does not concern itself with the confusions and difficulties faced by programmers who try to reuse. When the approach does not meet its expected success, programmers are labeled, due to their resistance to change, as having the NIH (Not Invented Here) syndrome [Fafchamps, 1994], and education of programmers about the value of reuse is called for.

Conversely, the reuse-within-development paradigm puts programmers back into the center and views reuse as an integral part of the whole programming process. It stresses that reusable component repository systems should serve as extensions to programmers' limited knowledge. Such systems should actively participate in the programming process by providing programmers immediate and easy access to reusable software components instead of being passively waiting for the exploration of programmers after they have made the decision to reuse.

Reuse-within-development needs the support of active component repository systems. Active component repository systems are a subset of active information systems that are equipped with the information delivery mechanism. Unlike the passive information access mechanism by which users have to explicitly launch the information-seeking process by specifying their information needs in the form of well-defined queries or engaging in a series of browsing actions, the information delivery mechanism presents information to users on its own initiative without being prompted by explicit queries. With reusable components delivered by active component repository systems, programmers are able to reuse without changing their current programming practice and environment.


Ph.D. Dissertation by Yunwen Ye, April 20, 2001, Department of Computer Science, University of Colorado