This Article 
 Bibliographic References 
 Add to: 
Hipikat: A Project Memory for Software Development
June 2005 (vol. 31 no. 6)
pp. 446-465
Sociological and technical difficulties, such as a lack of informal encounters, can make it difficult for new members of noncollocated software development teams to learn from their more experienced colleagues. To address this situation, we have developed a tool, named Hipikat, that provides developers with efficient and effective access to the group memory for a software development project that is implicitly formed by all of the artifacts produced during the development. This project memory is built automatically with little or no change to existing work practices. After describing the Hipikat tool, we present two studies investigating Hipikat's usefulness in software modification tasks. One study evaluated the usefulness of Hipikat's recommendations on a sample of 20 modification tasks performed on the Eclipse Java IDE during the development of release 2.1 of the Eclipse software. We describe the study, present quantitative measures of Hipikat's performance, and describe in detail three cases that illustrate a range of issues that we have identified in the results. In the other study, we evaluated whether software developers who are new to a project can benefit from the artifacts that Hipikat recommends from the project memory. We describe the study, present qualitative observations, and suggest implications of using project memory as a learning aid for project newcomers.

[1] S.E. Sim and R.C. Holt, “The Ramp-Up Problem In Software Projects: A Case Study of How Software Immigrants Naturalize,” Proc. 20th Int'l Conf. Software Eng., pp. 361-370, 1998.
[2] L.M. Berlin, “Beyond Program Understanding: A Look at Programming Expertise in Industry,” Proc. Empirical Studies of Programmers: Fifth Workshop, pp. 6-25, 1993.
[3] J.D. Herbsleb, A. Mockus, T.A. Finholt, and R.E. Grinter, “An Empirical Study of Global Software Development: Distance and Speed,” Proc. 23rd Int'l Conf. Software Eng., pp. 81-90, 2001.
[4] M.S. Ackerman and T.W. Malone, “Answer Garden: A Tool for Growing Organizational Memory,” Proc. Conf. Office Automation Systems, pp. 31-39, 1990.
[5] L.M. Berlin, R. Jeffries, V.L. O'Day, A. Paepcke, and C. Wharton, “Where Did You Put It? Issues in the Design and Use of a Group Memory,” Proc. SIGCHI Conf. Human Factors in Computing Systems, pp. 23-30, 1993.
[6] J. Grudin, “Groupware and Social Dynamics: Eight Challenges for Developers,” Comm. ACM, vol. 37, no. 1, pp. 92-105, Jan. 1994.
[7] D. ubrani, G.C. Murphy, J. Singer, and K.S. Booth, “Learning From Project History: A Case Study for Software Development,” Proc. ACM Conf. Computer Supported Cooperative Work (CSCW '04), pp. 82-91, 2004.
[8] L.G. Terveen, P.G. Selfridge, and M.D. Long, “From `Folklore' to `Living Design Memory',” Proc. SIGCHI Conf. Human Factors in Computing Systems, pp. 15-22, 1993.
[9] R. Lougher and T. Rodden, “Supporting Long Term Collaboration in Software Maintenance,” Proc. Conf. Organizational Computing Systems, pp. 228-238, 1993.
[10] B.J. Rhodes and T. Starner, “Remembrance Agent: A Continuously Running Automated Information Retrieval System,” Proc. First Int'l Conf. Practical Application of Intelligent Agents and Multi-Agent Technology (PAAM '96), pp. 487-495, 1996.
[11] Y. Ye and G. Fischer, “Information Delivery in Support of Learning Reusable Software Components on Demand,” Proc. 2002 Int'l Conf. Intelligent User Interfaces (IUI '02), pp. 159-166, 2002.
[12] P. Pirolli and J. Anderson, “The Role of Learning From Examples in the Acquisition of Recursive Programming Skills,” Canadian J. Psychology, vol. 35, pp. 240-272, 1985.
[13] M.B. Rosson and J.M. Carroll, “The Reuse of Uses in Smalltalk Programming,” ACM Trans. Computer-Human Interaction, vol. 3, no. 3, pp. 219-253, 1996.
[14] B.M. Lange and T.G. Moher, “Some Strategies of Reuse in an Object-Oriented Programming Environment,” Proc. SIGCHI Conf. Human Factors in Computing Systems, pp. 69-73, 1989.
[15] E.S. Raymond, The New Hacker's Dictionary, third ed. MIT Press, 1996.
[16] M.B. Rosson, J.M. Carroll, and C. Sweeney, “A View Matcher for Reusing Smalltalk Classes,” Proc. ACM SIGCHI Conf. Human Factors in Computing Systems (CHI '91), pp. 277-283, 1991.
[17] D.F. Redmiles, “Reducing the Variability of Programmers Performance Through Explained Examples,” Proc. ACM INTERCHI '93 Conf. Human Factors in Computing Systems, pp. 67-73, 1993.
[18] H. Gall, M. Jazayeri, and J. Krajewski, “CVS Release History Data for Detecting Logical Couplings,” Proc. Int'l Workshop Principles of Software Evolution (IWPSE '03), pp. 13-23, 2003.
[19] R.E. Grinter, “Using a Configuration Management Tool to Coordinate Software Development,” Proc. Conf. Organizational Computing Systems, pp. 168-177, 1995.
[20] A. Chen, E. Chou, J. Wong, A.Y. Yao, Q. Zhang, S. Zhang, and A. Michail, “CVSSearch: Searching through Source Code Using CVS Comments,” Proc. Int'l Conf. Software Maintenance (ICSM 2001), pp. 364-373, 2001.
[21] A. Mockus and J.D. Herbsleb, “Expertise Browser: A Quantitative Approach to Identifying Expertise,” Proc. 24th Int'l Conf. Software Eng. (ICSE '02), pp. 503-512, 2002.
[22] D.W. McDonald and M.S. Ackerman, “Expertise Recommender: A Flexible Recommendation System and Architecture,” Proc. ACM 2000 Conf. Computer Supported Collaborative Work, pp. 231-240, 2000.
[23] T. Zimmermann, P. Weisgerber, S. Diehl, and A. Zeller, “Mining Version Histories to Guide Software Changes,” Proc. 26th Int'l Conf. Software Eng. (ICSE '04), pp. 563-572, 2004.
[24] A.T.T. Ying, G.C. Murphy, R. Ng, and M.C. Chu-Carroll, “Predicting Source Code Changes by Mining Revision History,” IEEE Trans. Software Eng., vol. 30, pp. 574-586, Sept. 2004.
[25] P.P. Chen, “The Entity-Relationship ModelToward a Unified View of Data,” ACM Trans. Database Systems, vol. 1, no. 1, pp. 9-36, Mar. 1976.
[26] A. Mockus, R.T. Fielding, and J. Herbsleb, “Two Case Studies of Open Source Software Development: Apache and Mozilla,” ACM Trans. Software Eng. and Methodology, vol. 11, no. 3, pp. 1-38, July 2002.
[27] D. Box, D. Ehnebuske, G. Kakivaya, A. Layman, N. Mendelsohn, H.F. Nielsen, S. Thatte, and D. Winer, Simple Object Access Protocol (SOAP) 1.1, World Wide Web Consortium, 2000.
[28] F.-C. Cheong, Internet Agents: Spiders, Wanderers, Brokers, and Bots. Indianapolis, In: New Riders Publishing, 1996.
[29] D.M. German, “Mining CVS Repositories, the Softchange Experience,” Proc. First Int'l Workshop Mining Software Repositories (MSR '04), pp. 17-21, May 2004.
[30] S. Dumais, “Improving the Retrieval of Information from External Sources,” Behavior Research Methods, Instrument, and Computers, vol. 23, no. 2, pp. 229-236, 1991.
[31] S.C. Deerwester, S.T. Dumais, T.K. Landauer, G.W. Furnas, and R.A. Harshman, “Indexing by Latent Semantic Analysis,” J. the Am. Soc. of Information Science, vol. 41, no. 6, pp. 391-407, 1990.
[32] G. Salton and M.J. McGill, Introduction to Modern Information Retrieval. McGraw-Hill, 1983.
[33] D. ubrani, “Project History as a Group Memory: Learning from the Past,” PhD dissertation, Univ. of British Columbia, 2004.
[34] M.A. Hearst, “TextTiling: A Quantitative Approach to Discourse Segmentation,” Computational Linguistics, vol. 23, no. 1, pp. 33-64, Mar. 1997.
[35] A. Arampatzis, “Adaptive and Temporally-Dependent Document Filtering,” PhD dissertation, Katholieke Univ. Nijmegen, Nijmegen, The Netherlands, 2001.
[36] M. Balabanovi and Y. Shoham, “Fab: Content-Based Collaborative Recommendation,” Comm. ACM, vol. 40, no. 3, pp. 66-72, Mar. 1997.
[37] W. Hill, L. Stead, M. Rosenstein, and G. Furnas, “Recommending and Evaluating Choices in a Virtual Community of Use,” Proc. ACM Conf. Human Factors in Computing Systems, vol. 1, pp. 194-201, 1995.
[38] U. Shardanand and P. Maes, “Social Information Filtering: Algorithms for Automating `Word of Mouth',” Proc. ACM Conf. Human Factors in Computing Systems, vol. 1, pp. 210-217, 1995.
[39] J.A. Konstan, B.N. Miller, D. Maltz, J.L. Herlocker, L.R. Gordon, and J. Riedl, “GroupLens: Applying Collaborative Filtering to Usenet News,” Comm. ACM, vol. 40, no. 3, pp. 77-87, Mar. 1997.
[40] M. Chalmers, K. Rodden, and D. Brodbeck, “The Order of Things: Activity-Centred Information Access,” Proc. Seventh World Wide Web Conf., pp. 359-367, 1998.
[41] R.B. Allen, P. Obry, and M. Littman, “An Interface for Navigating Clustered Document Sets Returned by Queries,” Proc. Conf. Organizational Computing Systems (COOCS '93), pp. 166-171, 1993.
[42] V. Sabol, W. Kienreich, M. Granitzer, J. Becker, K. Tochtermann, and K. Andrews, “Applications of a Lightweight, Web-Based Retrieval, Clustering, and Visualisation Framework,” Proc. Conf. Practical Aspects of Knowledge Management (PAKM '02), pp. 359-368, 2002.
[43] C.-M. Chen, N. Stoffel, M. Post, C. Basu, D. Bassu, and C. Behrens, “Telcordia LSI Engine: Implementation and Scalability Issues,” Proc. 11th Int'l Workshop Research Issues in Data Eng. (RIDE '01), pp. 51-58, 2001.
[44] C. Tang, S. Dwarkadas, and Z. Xu, “On Scaling Latent Semantic Indexing for Large Peer-to-Peer Systems,” Proc. 27th Ann. Int'l Conf. Research and Development in Information Retrieval (SIGIR '04), pp. 112-121, 2004.

Index Terms:
Index Terms- Software development teams, project memory, software artifacts, recommender system, user studies.
Davor Cubranic, Gail C. Murphy, Janice Singer, Kellogg S. Booth, "Hipikat: A Project Memory for Software Development," IEEE Transactions on Software Engineering, vol. 31, no. 6, pp. 446-465, June 2005, doi:10.1109/TSE.2005.71
Usage of this product signifies your acceptance of the Terms of Use.