Advertisement

Developer Profiles for Recommendation Systems

  • Annie T. T. Ying
  • Martin P. Robillard
Chapter

Abstract

Developer profiles are representations that capture the characteristics of a software developer, including software development knowledge, organizational information, and communication networks. In recommendation systems in software engineering, developer profiles can be used for personalizing recommendations and for recommending developers who can assist with a task. This chapter describes techniques for capturing, representing, storing, and using developer profiles.

Keywords

Recommendation System Application Programming Interface User Profile Task Context Organizational Information 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Notes

Acknowledgments

We are grateful for the help from the following people and organizations: Christoph Treude helped us greatly improve the structure of the chapter since early on and provided us comments on a previous draft. Ben Steichen acted as a reviewer external to software engineering, provided us with his expert advice on user modeling, and gave us numerous pointers to work in the user modeling community. The editors of this book provided guidance and feedback throughout the whole writing process. Mik Kersten and Yunwen Ye kindly allowed us to reproduce figures from their respective theses. Finally, NSERC and McGill have provided financial support.

References

  1. 1.
    Anand, S., Mobasher, B.: Intelligent techniques for web personalization. In: Revised Selected Papers of the IJCAI Workshop on Intelligent Techniques for Web Personalization. Lecture Notes in Computer Science, vol. 3169, pp. 1–36 (2005). doi:10.1007/11577935_1Google Scholar
  2. 2.
    Anvik, J., Murphy, G.C.: Determining implementation expertise from bug reports. In: Proceedings of the International Workshop on Mining Software Repositories (2007). doi:10.1109/MSR.2007.7Google Scholar
  3. 3.
    Anvik, J., Murphy, G.C.: Reducing the effort of bug report triage: Recommenders for development-oriented decisions. ACM Trans. Software Eng. Methodol. 20(3), 10:1–10:35 (2011). doi:10.1145/2000791.2000794Google Scholar
  4. 4.
    Bachmann, A., Bird, C., Rahman, F., Devanbu, P., Bernstein, A.: The missing links: bugs and bug-fix commits. In: Proceedings of the ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 97–106 (2010). doi:10.1145/1882291.1882308Google Scholar
  5. 5.
    Bird, C., Gourley, A., Devanbu, P., Gertz, M., Swaminathan, A.: Mining email social networks. In: Proceedings of the International Workshop on Mining Software Repositories, pp. 137–143 (2006). doi:10.1145/1137983.1138016Google Scholar
  6. 6.
    Canny, J.: Collaborative filtering with privacy. In: Proceedings of the IEEE Symposium on Security and Privacy, pp. 45–57 (2002). doi:10.1109/SECPRI.2002.1004361Google Scholar
  7. 7.
    Cataldo, M., Wagstrom, P.A., Herbsleb, J.D., Carley, K.M.: Identification of coordination requirements: Implications for the design of collaboration and awareness tools. In: Proceedings of the ACM Conference on Computer Supported Cooperative Work, pp. 353–362 (2006). doi:10.1145/1180875.1180929Google Scholar
  8. 8.
    Cheng, L.T., de Souza, C.R.B., Hupfer, S., Patterson, J., Ross, S.: Building collaboration into IDEs. ACM Queue 1(9), 40–50 (2003). doi:10.1145/966789.966803CrossRefGoogle Scholar
  9. 9.
    Coman, I.D., Sillitti, A.: Automated identification of tasks in development sessions. In: Proceedings of the IEEE International Conference on Program Comprehenension, pp. 212–217 (2008). doi:10.1109/ICPC.2008.16Google Scholar
  10. 10.
    Dagenais, B., Hendren, L.: Enabling static analysis for partial Java programs. In: Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 313–328 (2008). doi:10.1145/1449955.1449790Google Scholar
  11. 11.
    de Alwis, B., Murphy, G.C.: Using visual momentum to explain disorientation in the Eclipse IDE. In: Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing, pp. 51–54 (2006). doi:10.1109/VLHCC.2006.49Google Scholar
  12. 12.
    Findlater, L., McGrenere, J., Modjeska, D.: Evaluation of a role-based approach for customizing a complex development environment. In: Proceedings of the ACM SIGCHI Conference on Human Factors in Computing Systems, pp. 1267–1270 (2008). doi:10.1145/1357054.1357251Google Scholar
  13. 13.
    Fischer, G.: User modeling in human–computer interaction. User Model. User-Adapt. Interact. 11(1), 65–86 (2001). doi:10.1023/A:1011145532042CrossRefzbMATHGoogle Scholar
  14. 14.
    Fritz, T., Ou, J., Murphy, G.C., Murphy-Hill, E.: A degree-of-knowledge model to capture source code familiarity. In: Proceedings of the ACM/IEEE International Conference on Software Engineering, vol. 1, pp. 385–394 (2010). doi:10.1145/1806799.1806856Google Scholar
  15. 15.
    Gauch, S., Speretta, M., Chandramouli, A., Micarelli, A.: User profiles for personalized information access. In: Brusilovsky, P., Kobsa, A., Nejdl, W. (eds.) The Adaptive Web: Methods and Strategies of Web Personalization. Lecture Notes in Computer Science, vol. 4321, Chap.  2, pp. 54–89. Springer, Berlin (2007). doi:10.1007/978-3-540-72079-9_2CrossRefGoogle Scholar
  16. 16.
    Google Official Blog: Personalized search for everyone. URL http://googleblog.blogspot.de/2009/12/personalized-search-for-everyone.html (2009). Retrieved 9 Oct 2013
  17. 17.
    Herbsleb, J.D.: Global software engineering: the future of socio-technical coordination. In: Proceedings of the Future of Software Engineering, pp. 188–198 (2007). doi:10.1109/FOSE.2007.5Google Scholar
  18. 18.
    Herzig, K., Zeller, A.: Mining bug data: a practitioner’s guide. In: Robillard, M., Maalej, W., Walker, R.J., Zimmermann, T. (eds.) Recommendation Systems in Software Engineering. Springer, Berlin (2014)Google Scholar
  19. 19.
    Jameson, A.: Adaptive interfaces and agents. In: Sears, A., Jacko, J.A. (eds.) The Human-Computer Interaction Handbook: Fundamentals, Evolving Technologies and Emerging Applications, 2nd edn., pp. 433–458. CRC Press, West Palm Beach (2008)Google Scholar
  20. 20.
    Keenoy, K., Levene, M.: Personalisation of web search. In: Proceedings of the IJCAI Workshop on Intelligent Techniques for Web Personalization. Lecture Notes in Computer Science, vol. 3169, pp. 201–228 (2005). doi:10.1007/11577935_11Google Scholar
  21. 21.
    Kelly, D., Teevan, J.: Implicit feedback for inferring user preference: a bibliography. ACM SIGIR Forum 37(2), 18–28 (2003). doi:10.1145/959258.959260CrossRefGoogle Scholar
  22. 22.
    Kersten, M., Murphy, G.C.: Mylar: A degree-of-interest model for IDEs. In: Proceedings of the International Conference on Aspect-Oriented Software Development, pp. 159–168 (2005). doi:10.1145/1052898.1052912Google Scholar
  23. 23.
    Kersten, M., Murphy, G.C.: Using task context to improve programmer productivity. In: Proceedings of the ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 1–11 (2006). doi:10.1145/1181775.1181777Google Scholar
  24. 24.
    Kobsa, A.: Privacy-enhanced personalization. Commun. ACM 50(8), 24–33 (2007). doi:10.1145/1278201.1278202CrossRefGoogle Scholar
  25. 25.
    Kobsa, A.: Privacy-enhanced web personalization. In: Brusilovsky, P., Kobsa, A., Nejdl, W. (eds.) The Adaptive Web: Methods and Strategies of Web Personalization, Chap.  21, pp. 628–670. Springer (2007). doi:10.1007/978-3-540-72079-9_21
  26. 26.
    Lam, S.K.T., Frankowski, D., Riedl, J.: Do you trust your recommendations?: an exploration of security and privacy issues in recommender systems. In: Proceedings of the International Conference on Emerging Trends in Information and Communication Security. Lecture Notes in Computer Science, vol. 3995, pp. 14–29 (2006). doi:10.1007/11766155_2Google Scholar
  27. 27.
    Lee, T., Nam, J., Han, D., Kim, S., In, H.P.: Micro interaction metrics for defect prediction. In: Proceedings of the European Software Engineering Conference/ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 311–321 (2011). doi:10.1145/2025113.2025156Google Scholar
  28. 28.
    Ma, D., Schuler, D., Zimmermann, T., Sillito, J.: Expert recommendation with usage expertise. In: Proceedings of the IEEE International Conference on Software Maintenance, pp. 535–538 (2009). doi:10.1109/ICSM.2009.5306386Google Scholar
  29. 29.
    Maalej, W., Fritz, T., Robbes, R.: Collecting and processing interaction data for recommendation systems. In: Robillard, M., Maalej, W., Walker, R.J., Zimmermann, T. (eds.) Recommendation Systems in Software Engineering. Springer, Berlin (2014)Google Scholar
  30. 30.
    Manning, C.D., Raghavan, P., Schutze, H.: Introduction to Information Retrieval. Cambridge University Press, Cambridge (2008)CrossRefzbMATHGoogle Scholar
  31. 31.
    Matter, D., Kuhn, A., Nierstrasz, O.: Assigning bug reports using a vocabulary-based expertise model of developers. In: Proceedings of the International Working Conference on Mining Software Repositories, pp. 131–140 (2009). doi:10.1109/MSR.2009.5069491Google Scholar
  32. 32.
    McDonald, D.W., Ackerman, M.S.: Expertise recommender: a flexible recommendation system and architecture. In: Proceedings of the ACM Conference on Computer Supported Cooperative Work, pp. 231–240 (2000). doi:10.1145/358916.358994Google Scholar
  33. 33.
    Menzies, T.: Data mining: a tutorial. In: Robillard, M., Maalej, W., Walker, R.J., Zimmermann, T. (eds.) Recommendation Systems in Software Engineering. Springer, Berlin (2014)Google Scholar
  34. 34.
    Minto, S., Murphy, G.C.: Recommending emergent teams. In: Proceedings of the International Workshop on Mining Software Repositories, pp. 5:1–5:8 (2007). doi:10.1109/MSR.2007.27Google Scholar
  35. 35.
    Mockus, A., Herbsleb, J.D.: Expertise browser: a quantitative approach to identifying expertise. In: Proceedings of the ACM/IEEE International Conference on Software Engineering, pp. 503–512 (2002). doi:10.1145/581339.581401Google Scholar
  36. 36.
    Montaner, M., López, B., De La Rosa, J.L.: A taxonomy of recommender agents on the internet. Artif. Intell. Rev. 19(4), 285–330 (2003). doi:10.1023/A:1022850703159CrossRefGoogle Scholar
  37. 37.
    Nagappan, N., Ball, T.: Use of relative code churn measures to predict system defect density. In: Proceedings of the ACM/IEEE International Conference on Software Engineering, pp. 284–292 (2005). doi:10.1145/1062455.1062514Google Scholar
  38. 38.
    Nagappan, N., Murphy, B., Basili, V.: The influence of organizational structure on software quality: an empirical case study. In: Proceedings of the ACM/IEEE International Conference on Software Engineering, pp. 521–530 (2008). doi:10.1145/1368088.1368160Google Scholar
  39. 39.
    Ohira, M., Ohsugi, N., Ohoka, T., Matsumoto, K.: Accelerating cross-project knowledge collaboration using collaborative filtering and social networks. In: Proceedings of the International Workshop on Mining Software Repositories, pp. 15:1–15:5 (2005). doi:10.1145/1083142.1083163Google Scholar
  40. 40.
    Pariser, E.: The Filter Bubble: What the Internet Is Hiding from You. Penguin Press HC, New York (2011)Google Scholar
  41. 41.
    Ricci, F., Rokach, L., Shapira, B.: Introduction to Recommender Systems Handbook. In: Ricci, F., Rokach, L., Shapira, B. (eds.) Recommender Systems Handbook, pp. 1–35. Springer, Berlin (2011). doi:10.1007/978-0-387-85820-3_1CrossRefGoogle Scholar
  42. 42.
    Robbes, R., Lanza, M.: Characterizing and understanding development sessions. In: Proceedings of the IEEE International Conference on Program Comprehension, pp. 155–166 (2007). doi:10.1109/ICPC.2007.12Google Scholar
  43. 43.
    Robbes, R., Lanza, M.: Improving code completion with program history. Autom. Software Eng. Int. J. 17(2), 181–212 (2010). doi:10.1007/s10515-010-0064-xCrossRefGoogle Scholar
  44. 44.
    Robillard, M.P., Coelho, W., Murphy, G.C.: How effective developers investigate source code: an exploratory study. IEEE Trans. Software Eng. 30(12), 889–903 (2004). doi:10.1109/TSE.2004.101CrossRefGoogle Scholar
  45. 45.
    Schuler, D., Zimmermann, T.: Mining usage expertise from version archives. In: Proceedings of the International Workshop on Mining Software Repositories, pp. 121–124 (2008). doi:10.1145/1370750.1370779Google Scholar
  46. 46.
    Singer, J., Elves, R., Storey, M.A.D.: NavTracks: supporting navigation in software maintenance. In: Proceedings of the IEEE International Conference on Software Maintenance, pp. 325–334 (2005). doi:10.1109/ICSM.2005.66Google Scholar
  47. 47.
    Sleeman, D., Brown, J.S.: Intelligent Tutoring Systems. Academic, New York (1982)Google Scholar
  48. 48.
    Steichen, B., Ashman, H., Wade, V.: A comparative survey of personalised information retrieval and adaptive hypermedia techniques. Inf. Process. Manag. 48(4), 698–724 (2012). doi:10.1016/j.ipm.2011.12.004CrossRefGoogle Scholar
  49. 49.
    Teevan, J., Dumais, S.T., Horvitz, E.: Personalizing search via automated analysis of interests and activities. In: Proceedings of the ACM SIGIR International Conference on Research and Development in Information Retrieval, pp. 449–456 (2005). doi:10.1145/1076034.1076111Google Scholar
  50. 50.
    Viriyakattiyaporn, P., Murphy, G.C.: Improving program navigation with an active help system. In: Proceedings of the IBM Centre for Advanced Studies Conference on Collaborative Research, pp. 27–41 (2010). doi:10.1145/1923947.1923951Google Scholar
  51. 51.
    Wahlster, W., Kobsa, A.: User models in dialog systems. In: Kobsa, A., Wahlster, W. (eds.) User Models in Dialog Systems, Symbolic Computation, Chap.  1, pp. 4–34. Springer, Berlin (1989). doi:10.1007/978-3-642-83230-7_1CrossRefGoogle Scholar
  52. 52.
    White, R.W., Ruthven, I., Jose, J.M.: Finding relevant documents using top ranking sentences: an evaluation of two alternative schemes. In: Proceedings of the ACM SIGIR International Conference on Research and Development in Information Retrieval, pp. 57–64 (2002). doi:10.1145/564376.564389Google Scholar
  53. 53.
    Ye, Y.: Supporting component-based software development with active component repository systems. Ph.D. thesis, Department of Computer Science, University of Colorado, Boulder (2001)Google Scholar
  54. 54.
    Ye, Y., Fischer, G.: Supporting reuse by delivering task-relevant and personalized information. In: Proceedings of the ACM/IEEE International Conference on Software Engineering, pp. 513–523 (2002). doi:10.1145/581339.581402Google Scholar
  55. 55.
    Ye, Y., Yamamoto, Y., Nakakoji, K.: A socio-technical framework for supporting programmers. In: Proceedings of the European Software Engineering Conference/ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 351–360 (2007). doi:10.1145/1287624.1287674Google Scholar
  56. 56.
    Ye, Y., Yamamoto, Y., Nakakoji, K., Nishinaka, Y., Asada, M.: Searching the library and asking the peers: learning to use Java APIs on demand. In: Proceedings of the International Symposium on Principles and Practice of Programming in Java, pp. 41–50 (2007). doi:10.1145/1294325.1294332Google Scholar
  57. 57.
    Ying, A.T.T., Robillard, M.P.: The influence of the task on programmer behaviour. In: Proceedings of the IEEE International Conference on Program Comprehension, pp. 31–40 (2011). doi:10.1109/ICPC.2011.35Google Scholar
  58. 58.
    Zimmermann, T., Weißgerber, P.: Preprocessing CVS data for fine-grained analysis. In: Proceedings of the International Workshop on Mining Software Repositories, pp. 2–6 (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2014

Authors and Affiliations

  1. 1.McGill UniversityMontréalCanada

Personalised recommendations