Abstract
Despite its well-recognized benefits, software reuse has not met its expected success due to technical, cognitive, and social difficulties. We have systematically analyzed the reuse problem (especially the cognitive and social difficulties faced by software developers who reuse) from a multidimensional perspective, drawing on our long-term research on information retrieval, human-computer interaction, and knowledge-based systems. Based on this analysis, we propose the concept of reuse-conducive development environments, which encourage and enable software developers to reuse through the smooth integration of reuse repository systems and development environments. We have designed, implemented, and evaluated CodeBroker—a reuse-conducive development environment—that autonomously locates and delivers task-relevant and personalized components into the current software development environment. Empirical evaluations of CodeBroker have shown that the system is effective in promoting reuse by enabling software developers to reuse components unknown to them, reducing the difficulties in locating components, and augmenting the programming capability of software developers.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Alexander, C. 1964. The Synthesis of Form. Cambridge, MA: Harvard University Press.
Anquetil, N. and Lethbridge, T. 1998. Extracting concepts from file names: A new file clustering criterion. In Proceedings of 20th International Conference on Software Engineering (ICSE’98), Kyoto, Japan, pp. 84–93.
Basili, V., Briand, L., et al. 1996. How reuse influences productivity in object-oriented systems. Communications of the ACM, 39(10):104–116.
Basili, V.R., Selby, R.W., et al. 1986. Experimentation in software engineering. IEEE transactions on software engineering, SE-12(7):733–743.
Belkin, N.J. 2000. Helping people find what they don’t know. Communications of the ACM, 43(8):58–61.
Brooks, F.P.J. 1995. The Mythical Man-Month:Essays on Software Engineering, 20th Anniversary edition. Reading, MA: Addison-Wesley.
Brown, J.S. and Duguid, P. 2000. The Social Life of Information. Boston, MA: Harvard Business School Press.
Devanbu, P., Brachman, R.J., et al. 1991. LaSSIE: A knowledge-based software information system. Communications of the ACM, 34(5):34–49.
DiFelice, P. and Fonzi G. 1998. How to write comments suitable for automatic software indexing. Journal of Systems and Software, 42:17–28.
Drummond, C., Ionescu, D., et al. 2000. A learning agent that assists the browsing of software libraries. IEEE Transactions on Software Engineering, 26(12):1179–1196.
Etzkorn, L.H. and Davis, C.G. 1997. Automatically identifying reusable OO legacy code. IEEE Computer, 30(10):66–71.
Fafchamps, D. 1994. Organizational factors and reuse. IEEE Software, 11(5):31–41.
Fischer, G. 1987a. Cognitive view of reuse and redesign. IEEE Software, Special Issue on Reusability, 4(4):60–72.
Fischer, G. 1987b. A critic for LISP. In Proceedings of the 10th International Joint Conference on Artificial Intelligence, Los Altos, CA, pp. 177–184.
Fischer, G. 1998. Seeding, evolutionary growth and reseeding: Constructing, capturing and evolving knowledge in domain-oriented design environments. Automated Software Engineering, 5(4):447–464.
Fischer, G. 2001. User modeling in human-computer interaction. User Modeling and User-Adapted Interaction, 11(1&2):65–86.
Fischer, G. 2002. Beyond “couch potatoes”: From consumers to designers and active contributors. First Monday (Peer-Reviewed Journal on the Internet), 7(12):http://firstmonday.org/issues/issue7_12/fischer/.
Fischer, G., Henninger, S., et al. 1991. Cognitive tools for locating and comprehending software objects for reuse. In Proceedings of 13th International Conference on Software Engineering (ICSE’91), Austin, TX, pp. 318–328.
Fischer, G., Lemke, A.C., et al. 1985. Knowledge-based help systems. In Human Factors in Computing Systems (CHI’85), San Francisco, CA, pp. 161–167.
Fischer, G., Nakakoji, K., et al. 1998. Embedding critics in design environments. In M.T. Maybury and W. Wahlster (editors) Readings in Intelligent User Interfaces. San Francisco, CA: Morgan Kaufman, pp. 537–561.
Fischer, G., Scharff, E. et al. 2003. Fostering social creativity by increasing . In M. Huysman and V. Wulf, (editors) Social Capital, (in press).
Fischer, G. and Ye, Y. 2001. Personalizing delivered information in a software reuse environment. In Proceedings of 8th International Conference on User Modeling, Sonthofen, Germany, pp. 178–187.
Frakes, W.B. and Fox, C.J. 1995. Sixteen questions about software reuse. Communications of the ACM, 38(6):75–87.
Frakes, W.B. and Fox, C.J. 1996. Quality improvement using a software reuse failure modes model. IEEE Transactions on Software Engineering, 22(4):274–279.
Frakes, W.B. and Pole, T.P. 1994. An empirical study of representation methods for reusable software components. IEEE Transactions on Software Engineering, 20(8):617–630.
Furnas, G.W., Landauer, T.K., et al. 1987. The vocabulary problem in human-system communication. Communications of the ACM, 30(11):964–971.
Gamma, E., Johnson, R., et al. 1994. Design Patterns—Elements of Reusable Object-Oriented Systems. Reading, MA: Addison-Wesley.
Gellerman, S.W. 1963. Motivation and Productivity. New York: Amacom.
Griss, M.L. 2000. Implementing product-line features with component reuse. In Proceedings of the 6th International Conference on Software Reuse (ICSR6), Vienna, Austria, pp. 137–152.
Grudin, J. 1994. Groupware and social dynamics: Eight challenges for developers. Communications of the ACM, 37(1):92–105.
Harman, D. 1995. Overview of the third retrieval conference (TREC-3). In D. Harman (editors) The Third REtrieval Conference. Gaithersburg, MD: National institute of standards and technology special publication, pp. 1–19.
Henninger, S. 1997. An evolutionary approach to constructing effective software reuse repositories. ACM Transactions on Software Engineering and Methodology, 6(2):111–140.
Isoda, S. 1995. Experiences of a software reuse project. Journal of Systems and Software, 30:171–186.
Joos, R. 1994. Software reuse at motolora. IEEE Software, 11(5):42–47.
Karat, J., Karat, C.-M., et al. 2000). Affordances, motivation, and the design of user interfaces. Communications of the ACM, 43(8):49–51.
Kintsch, W. 1998. Comprehension: A Paradigm for Cognition. Cambridge, UK: Cambridge University Press.
Landauer, T.K. and Dumais, S.T. 1997. A solution to plato’s problem: The latent semantic analysis theory of acquisition, induction and representation of knowledge. Psychological Review, 104(2):211–240.
Lange, B.M. and Moher, T.G. 1989. Some strategies of reuse in an object-oriented programming environment. In Proceedings of Human Factors in Computing Systems, Austin, TX, pp. 69–73.
Lieberman, H. 1997. Autonomous interface agents. In Proceedings of Human Factors in Computing Systems (CHI’97), Altanta, GA, pp. 67–74.
Lieberman, H., Fry, C., et al. 2001. Exploring the web with reconnaisssance agents. Communications of the ACM, 44(8):69–75.
Maarek, Y.S., Berry, D.M., et al. 1991. An information retrieval approach for automatically constructing software libraries. IEEE Transactions on Software Engineering, 17(8):800–813.
Maletic, J.I. and Marcus A. 2001. Supporting program comprehension using semantic and structural information. In Proceedings of 23rd International Conference on Software Engineering (ICSE’01), Toronto, Canada, pp. 103–112.
Michail, A. and Notkin, D. 1999. Assessing software libraries by browsing similar classes, functions and relationships. In Proceedings of 21st International Conference on Software Engineering (ICSE’99), Los Angeles, CA, pp. 463–472.
Mili, A., Mili, R., et al. 1997. Storing and retrieving software components: A refinement-based system. IEEE Transactions on Software Engineering, 23(7):445–460.
Mili, A., Mili, R., et al. 1998. A survey of software reuse libraries. In W. Frakes (editors) Bussum, Systematic Software Reuse. The Netherlands: Baltzer Science, pp. 317–347.
Mili, A., Yacoub, S., et al. 1999. Toward an engineering discipline of software reuse. IEEE Software, 16(5):22–31.
Nahapiet, J. and Ghoshal, S. 1998. Social capital, intellectual capital, and the organizational advantage. Academy of Management Review, 23:242–266.
Nardi, B.A. 1993. A Small Matter of Programming. Cambridge, MA: The MIT Press.
Nardi, B.A., Miller, J.R., et al. 1998. Collaborative, programmable intelligent agents. Communications of the ACM, 41(3):96–104.
Ostertag, E., Hendler, J., et al. 1992. Computing similarity in a reuse library system: An AI-based approach. ACM Transactions on Software Engineering and Methodology, 1(3):205–228.
Owen, D. 1986. Answers first, then questions. In D.A. Norman and S.W. Draper, (editors) User Centered System Design, New Perspectives on Human-Computer Interaction. Hillsdale, NJ:Erlbaum, pp. 361–375.
Podgurski, A. and Pierce L. 1993. Retrieving reusable software by sampling behavior. ACM Transactions on Software Engineering and Methodology, 2(3):286–303.
Poulin, J.S. 1999. Reuse: Been there, done that. Communications of the ACM, 42(5):98–100.
Prieto-Diaz, R. 1991. Implementing faceted classification for software reuse. Communications of the ACM, 34(5):88–97.
Prieto-Diaz, R. 1996. Reuse as a new paradigm for software development. In M. Sarshar, (editors). Systematic Reuse: Issues in Initiating and Improving a Reuse Program. Springer, pp. 1–13.
Raymond, E.S. and Young, B. 2001. The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary. Sebastopol, CA: O’Reilly.
Revelle, W. 1993. Individual differences in personality and motivation:’non-cognitive’ determinants of cognitive performance. In A. Baddely and L. Weiskrantz (editors) Attention: Selection, Awareness and Control: A Tribute to Donald Broadbrent. Oxford: Oxford University Press, pp. 346–373.
Rhodes, B.J. and Maes, P. 2000. Just-in-time information retrieval agents. IBM Systems Journal, 39(3&4):685–704.
Rittel, H. 1984. Second-generation design methods. In N. Cross (editors) Developments in Design Methodology. New York: Wiley, pp. 317–327.
Rittri, M. 1989. Using types as search keys in function libraries. Journal of Functional Programming, 1(1):71–89.
Robbins, J.E. and Redmiles, D.F. 1998. Software architecture critics in the argo design environment. Knowledge-Based Systems, 11:47–60.
Salomon, G. (editor) 1993. Distributed Cognitions:Psychological and Educational Considerations. Cambridge, United Kingdom: Cambridge University Press.
Salton, G. and McGill, M.J. 1983. Introduction to Modern Information Retrieval. New York: McGraw-Hill.
Schmidt, D.C. 1999. Why software reuse has failed and how to make it work for you. C++ Report. 11(1).
Sen, A. 1997. The role of opportunism in the software design reuse process. IEEE Transactions on Software Engineering, 23(7):418–436.
Simon, H.A. 1996. The Sciences of the Artificial, Third edition. Cambridge, MA: The MIT Press.
Soloway, E. and Ehrlich, K. 1984. Empirical studies of programming knowledge. IEEE Transactions on Software Engineering, SE-10(5):595–609.
Terveen, L.G. 1995. An overview of human-computer collaboration. Knowledge-Based Systems, 8(2/3):67–81.
Tracz, W. 1990. The 3 cons of software reuse. In Proceedings of 3rd Annual Workshop on Institutionalizing Software Reuse, Syracuse, NY.
Visser, W. 1990. More or less following a plan during design: Opportunistic deviations in specification. International Journal of Man-Machine Studies, 33(3):247–278.
Williams, M.D. 1984. What makes RABBIT run? In International Journal of Man-Machine Studies. 21, pp. 333–352.
Ye, Y. 2001. Supporting component-based software development with active component repository systems. Ph.D. Dissertation, Department of Computer Science, University of Colorado, Boulder, CO, available at http://l3d.cs.colorado.edu/~yunwen/thesis/.
Ye, Y. and Fischer, G. 2002. Information delivery in support of learning reusable software components on demand. In Proceedings of 2002 International Conference on Intelligent User Interfaces (IUI’02), San Francisco, CA, pp. 159–166.
Ye, Y., Fischer, G., et al. 2000. Integrating active information delivery and reuse repository systems. In Proceedings of ACM SIGSOFT 8th International Symposium on Foundations of Software Engineering (FSE8), San Diego, CA, pp. 60–68.
Ye, Y. and Kishida, K. 2003. Toward an understanding of the motivation of open source software developers. In Proceedings of 2003 International Conference on Software Engineering (ICSE’03), Portland, OR, pp. 419–429.
Zaremski, A.M. and Wing, J.M. 1995. Signature matching: A tool for using software libraries. ACM Transactions on Software Engineering and Methodology, 4(2):146–170.
Zaremski, A.M. and Wing, J.M. 1997. Specification matching of software components. ACM Transactions on Software Engineering and Methodology, 6(4):333–369.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Ye, Y., Fischer, G. Reuse-Conducive Development Environments. Autom Software Eng 12, 199–235 (2005). https://doi.org/10.1007/s10515-005-6206-x
Issue Date:
DOI: https://doi.org/10.1007/s10515-005-6206-x
Keywords
- software reuse
- reuse-conducive environments
- high-functionality applications
- information delivery
- relevance to the task-at-hand
- personalization
- location
- comprehension
- modification model
- latent semantic analysis
- centralized and decentralized development of reuse repositories
- seeding
- evolutionary growth
- reseeding model
- CodeBroker