Skip to main content
Log in

Reuse-Conducive Development Environments

  • Published:
Automated Software Engineering Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Alexander, C. 1964. The Synthesis of Form. Cambridge, MA: Harvard University Press.

    Google Scholar 

  • 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.

    Google Scholar 

  • Basili, V.R., Selby, R.W., et al. 1986. Experimentation in software engineering. IEEE transactions on software engineering, SE-12(7):733–743.

    Google Scholar 

  • Belkin, N.J. 2000. Helping people find what they don’t know. Communications of the ACM, 43(8):58–61.

    Google Scholar 

  • Brooks, F.P.J. 1995. The Mythical Man-Month:Essays on Software Engineering, 20th Anniversary edition. Reading, MA: Addison-Wesley.

    Google Scholar 

  • Brown, J.S. and Duguid, P. 2000. The Social Life of Information. Boston, MA: Harvard Business School Press.

    Google Scholar 

  • Devanbu, P., Brachman, R.J., et al. 1991. LaSSIE: A knowledge-based software information system. Communications of the ACM, 34(5):34–49.

    Google Scholar 

  • DiFelice, P. and Fonzi G. 1998. How to write comments suitable for automatic software indexing. Journal of Systems and Software, 42:17–28.

    Google Scholar 

  • 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.

    Google Scholar 

  • Etzkorn, L.H. and Davis, C.G. 1997. Automatically identifying reusable OO legacy code. IEEE Computer, 30(10):66–71.

    Google Scholar 

  • Fafchamps, D. 1994. Organizational factors and reuse. IEEE Software, 11(5):31–41.

    Google Scholar 

  • Fischer, G. 1987a. Cognitive view of reuse and redesign. IEEE Software, Special Issue on Reusability, 4(4):60–72.

    Google Scholar 

  • 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.

    Google Scholar 

  • Fischer, G. 2001. User modeling in human-computer interaction. User Modeling and User-Adapted Interaction, 11(1&2):65–86.

    MATH  Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Furnas, G.W., Landauer, T.K., et al. 1987. The vocabulary problem in human-system communication. Communications of the ACM, 30(11):964–971.

    Google Scholar 

  • Gamma, E., Johnson, R., et al. 1994. Design Patterns—Elements of Reusable Object-Oriented Systems. Reading, MA: Addison-Wesley.

    Google Scholar 

  • Gellerman, S.W. 1963. Motivation and Productivity. New York: Amacom.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Henninger, S. 1997. An evolutionary approach to constructing effective software reuse repositories. ACM Transactions on Software Engineering and Methodology, 6(2):111–140.

    Google Scholar 

  • Isoda, S. 1995. Experiences of a software reuse project. Journal of Systems and Software, 30:171–186.

    Google Scholar 

  • Joos, R. 1994. Software reuse at motolora. IEEE Software, 11(5):42–47.

    Google Scholar 

  • Karat, J., Karat, C.-M., et al. 2000). Affordances, motivation, and the design of user interfaces. Communications of the ACM, 43(8):49–51.

    Google Scholar 

  • Kintsch, W. 1998. Comprehension: A Paradigm for Cognition. Cambridge, UK: Cambridge University Press.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Mili, A., Yacoub, S., et al. 1999. Toward an engineering discipline of software reuse. IEEE Software, 16(5):22–31.

    Google Scholar 

  • Nahapiet, J. and Ghoshal, S. 1998. Social capital, intellectual capital, and the organizational advantage. Academy of Management Review, 23:242–266.

    Google Scholar 

  • Nardi, B.A. 1993. A Small Matter of Programming. Cambridge, MA: The MIT Press.

    Google Scholar 

  • Nardi, B.A., Miller, J.R., et al. 1998. Collaborative, programmable intelligent agents. Communications of the ACM, 41(3):96–104.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Podgurski, A. and Pierce L. 1993. Retrieving reusable software by sampling behavior. ACM Transactions on Software Engineering and Methodology, 2(3):286–303.

    Google Scholar 

  • Poulin, J.S. 1999. Reuse: Been there, done that. Communications of the ACM, 42(5):98–100.

    Google Scholar 

  • Prieto-Diaz, R. 1991. Implementing faceted classification for software reuse. Communications of the ACM, 34(5):88–97.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Rhodes, B.J. and Maes, P. 2000. Just-in-time information retrieval agents. IBM Systems Journal, 39(3&4):685–704.

    Article  Google Scholar 

  • Rittel, H. 1984. Second-generation design methods. In N. Cross (editors) Developments in Design Methodology. New York: Wiley, pp. 317–327.

    Google Scholar 

  • Rittri, M. 1989. Using types as search keys in function libraries. Journal of Functional Programming, 1(1):71–89.

    Article  MathSciNet  Google Scholar 

  • Robbins, J.E. and Redmiles, D.F. 1998. Software architecture critics in the argo design environment. Knowledge-Based Systems, 11:47–60.

    Google Scholar 

  • Salomon, G. (editor) 1993. Distributed Cognitions:Psychological and Educational Considerations. Cambridge, United Kingdom: Cambridge University Press.

    Google Scholar 

  • Salton, G. and McGill, M.J. 1983. Introduction to Modern Information Retrieval. New York: McGraw-Hill.

    MATH  Google Scholar 

  • 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.

    Google Scholar 

  • Simon, H.A. 1996. The Sciences of the Artificial, Third edition. Cambridge, MA: The MIT Press.

    Google Scholar 

  • Soloway, E. and Ehrlich, K. 1984. Empirical studies of programming knowledge. IEEE Transactions on Software Engineering, SE-10(5):595–609.

    Article  Google Scholar 

  • Terveen, L.G. 1995. An overview of human-computer collaboration. Knowledge-Based Systems, 8(2/3):67–81.

    Google Scholar 

  • 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.

    Google Scholar 

  • Williams, M.D. 1984. What makes RABBIT run? In International Journal of Man-Machine Studies. 21, pp. 333–352.

    Article  Google Scholar 

  • 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.

    Google Scholar 

  • Zaremski, A.M. and Wing, J.M. 1997. Specification matching of software components. ACM Transactions on Software Engineering and Methodology, 6(4):333–369.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Yunwen Ye.

Rights and permissions

Reprints 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

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10515-005-6206-x

Keywords

Navigation