Abstract
Software developers must interact with large amounts of different types of information and perform many different activities to build a software system. To ease the finding of information and hone workflows, there has been growing interest in building recommenders that are intended to help software developers work more effectively. Building an effective recommender requires a deep understanding of the problem that is the target of a recommender, analysis of different aspects of the approach taken to perform the recommendations and design and evaluation of the mechanisms used to present recommendations to a developer. In this chapter, we outline the different steps that must be taken to develop an effective recommender system to aid software development.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
www.eclipse.org, verified 15/11/14.
- 2.
stackoverflow.com, verified 18/02/15.
- 3.
http://www.eclipse.org/jdt/overview.php#JDT_Text, verified 02/14/15.
- 4.
http://msdn.microsoft.com/en-us/library/hcw1s69b.aspx, verified 02/14/15.
- 5.
QuickFix is an Eclipse tool that can be triggered to get context sensitive support.
- 6.
Also called the ramp-up problem [97].
- 7.
Counted from an eclipse cheat-sheet at http://de.scribd.com/doc/60629986/Eclipse-Keyboard-Shortcuts.
- 8.
Following the argument that too many context switches between the use of different tools can significantly impact the productivity of a developer [73].
References
Achar, A., Laxman, S., Viswanathan, R., Sastry, P.: Discovering injective episodes with general partial orders. Data Min. Knowl. Discov. 25(1), 67–108 (2012)
Agrawal, R., Imieliński, T., Swami, A.: Mining association rules between sets of items in large databases. In: SIGMOD Record, vol. 22, pp. 207–216. ACM (1993)
Agrawal, R., Srikant, R., et al.: Fast algorithms for mining association rules. Proc. of VLDB 1215, 487–499 (1994)
Amann, S., Proksch, S., Mezini, M.: Method-call recommendations from implicit developer feedback. In: Proceedings of the International Workshop on CrowdSourcing in Software Engineering, pp. 5–6. ACM (2014)
Ausubel, D.P.: The Psychology of Meaningful Verbal Learning. Grune and Stratton, New York (1963)
Ausubel, D.P., Novak, J.D., Hanesian, H., et al.: Educational Psychology: A Cognitive View. Holt, Rinehart and Winston, New York (1968)
Baxter, P., Jack, S.: Qualitative case study methodology: study design and implementation for novice researchers. Qual. Rep. 13(4), 544–559 (2008)
Berg, E.A.: A simple objective technique for measuring flexibility in thinking. J. Gen. Psychol. 39(1), 15–22 (1948)
Beyer, H., Holtzblatt, K.: Contextual Design: A Customer-Centered Approach to Systems Designs. Morgan Kaufmann, San Fransisco (1997)
Blum, A.L., Langley, P.: Selection of relevant features and examples in machine learning. Artif. Intell. 97(1), 245–271 (1997)
Booth, W.C., Colomb, G.G., Williams, J.M.: The Craft of Research. University of Chicago Press, Chicago (2003)
Bruch, M., Monperrus, M., Mezini, M.: Learning from examples to improve code completion systems. In: Proceedings of ESEC/FSE, pp. 213–222. ACM (2009)
Bruch, M., Schäfer, T., Mezini, M.: FrUiT: IDE support for framework understanding. In: Proceedings of the 2006 OOPSLA Workshop on Eclipse Technology eXchange, pp. 55–59. ACM (2006)
Buxton, B.: Sketching User Experiences: Getting the Design Right and the Right Design. Morgan Kaufmann, Amsterdam (2010)
Carroll, J.M.: Scenario-based Design: Envisioning Work and Technology in System Development. Wiley, New York (1995)
Carroll, J.M.: Making Use: Scenario-Based Design of Human-Computer Interactions. MIT Press, Cambridge (2000)
Cooper, A.: The Inmates are Running the Asylum: Why High-Tech Products Drive Us Crazy and How to Restore the Sanity, vol. 261. Sams Indianapolis, Indianapolis (1999)
Cooper, A.: The origin of personas. Innovation 23(1), 26–29 (2004)
Coxon, A.P.M.: Sorting Data: Collection and Analysis, vol. 127. Sage Publications, USA (1999)
Crystal, A., Ellington, B.: Task analysis and human-computer interaction: approaches, techniques, and levels of analysis. In: Proceedings of AMCIS, p. 391 (2004)
Davis, J., Goadrich, M.: The relationship between precision-recall and ROC curves. In: Proceedings of the International Conference on Machine Learning, pp. 233–240. ACM (2006)
DeLine, R., Czerwinski, M., Robertson, G.: Easing program comprehension by sharing navigation data. In: IEEE Symposium on Visual Languages and Human-Centric Computing, pp. 241–248. IEEE (2005)
Dempster, A.P., Laird, N.M., Rubin, D.B.: Maximum likelihood from incomplete data via the EM algorithm. J. R. Stat. Soc. Ser. B (Methodol.) 39, 1–38 (1977)
Diehl, S.: Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software. Springer, Heidelberg (2007)
Djajadiningrat, J.P., Gaver, W.W., Fres, J.: Interaction relabelling and extreme characters: methods for exploring aesthetic interactions. In: Proceedings of the Conference on Designing Interactive Systems: Processes, Practices, Methods, and Techniques, pp. 66–71. ACM (2000)
Dow, S., MacIntyre, B., Lee, J., Oezbek, C., Bolter, J.D., Gandy, M.: Wizard of Oz support throughout an iterative design process. IEEE Pervasive Comput. 4(4), 18–26 (2005)
Flanagan, J.C.: The critical incident technique. Psychol. Bull. 51(4), 327 (1954)
Fonteyn, M.E., Kuipers, B., Grobe, S.J.: A description of think aloud method and protocol analysis. Qual. Health Res. 3(4), 430–441 (1993)
Foster, S.R., Griswold, W.G., Lerner, S.: WitchDoctor: IDE support for real-time auto-completion of refactorings. In: Proceedings of the International Conference on Software Engineering, ICSE 2012, pp. 222–232. IEEE Press, Piscataway (2012)
Furnas, G., Landauer, T., Gomez, L., Dumais, S.: The vocabulary problem in human-system communication. Commun. ACM 30(11), 964–971 (1987)
Gabel, M., Su, Z.: Online inference and enforcement of temporal properties. In: Proceedings of the International Conference on Software Engineering, pp. 15–24. ACM (2010)
Goldberg, D., Nichols, D., Oki, B.M., Terry, D.: Using collaborative filtering to weave an information tapestry. Commun. ACM 35(12), 61–70 (1992)
Goodwin, K.: Designing for the Digital Age: How to Create Human-Centered Products and Services. Wiley, New York (2011)
Gould, J.D., Conti, J., Hovanyecz, T.: Composing letters with a simulated listening typewriter. Commun. ACM 26(4), 295–308 (1983)
Gousios, G.: The GHTorrent dataset and tool suite. In: Proceedings of the 10th Working Conference on Mining Software Repositories, pp. 233–236 (2013)
Gutman, J.: A means-end chain model based on consumer categorization processes. J. Mark. 46, 60–72 (1982)
Hackos, J.T., Redish, J.: User and Task Analysis for Interface Design. Wiley, New York (1998)
Hariri, N., Castro-Herrer, C., Cleland-Huang, J., Mobasher, B.: Recommendation systems in requirements discovery. In: Robillard, M.P., Walker, R.J., Zimmermann, T. (eds.) Recommendation Systems in Software Engineering, Chap. 17, pp. 455–476. Springer, Heidelberg (2014)
Hawley, M.: Laddering: A Research Interview Technique for Uncovering Core Values. UX Matters (2009)
Heinemann, L., Bauer, V., Herrmannsdoerfer, M., Hummel, B.: Identifier-based context-dependent API method recommendation. In: Proceedings of CSMR (2012)
Heinemann, L., Hummel, B.: Recommending API methods based on identifier contexts. In: Proceedings of the International Workshop on Search-Driven Development: Users, Infrastructure, Tools, and Evaluation, pp. 1–4. ACM (2011)
Henß, S., Monperrus, M., Mezini, M.: Semi-automatically extracting FAQs to improve accessibility of software development knowledge. In: Proceedings of the International Conference on Software Engineering, ICSE 2012, pp. 793–803. IEEE Press, Piscataway (2012)
Hindle, A., Barr, E.T., Su, Z., Gabel, M., Devanbu, P.: On the naturalness of software. In: Proceedings of the International Conference on Software Engineering, pp. 837–847. IEEE (2012)
Holmes, R., Murphy, G.C.: Using structural context to recommend source code examples. In: Proceedings of the International Conference on Software Engineering, pp. 117–125. ACM (2005)
Holmes, R., Walker, R.J., Murphy, G.C.: Strathcona example recommendation tool. In: Proceedings of ESEC/FSE, pp. 237–240. ACM, New York (2005)
Holtzblatt, K., Wendell, J.B., Wood, S.: Rapid Contextual Design: A How-to Guide to Key Techniques for User-Centered Design. Elsevier, San Francisco (2004)
Houde, S., Hill, C.: What do prototypes prototype. Handb. Hum.-Comput. Interact. 2, 367–381 (1997)
Hummel, O.: Facilitating the comparison of software retrieval systems through a reference reuse collection. In: Proceedings of the ICSE Workshop on Search-Driven Development: Users, Infrastructure, Tools and Evaluation, pp. 17–20. ACM (2010)
Inozemtseva, L., Holmes, R., Walker, R.J.: Recommendation systems in-the-small. In: Robillard, M.P., Maalej, W., Walker, R.J., Zimmermann, T. (eds.) Recommendation Systems in Software Engineering, Chap. 4, pp. 77–92. Springer, Heidelberg (2014)
Jannach, D., Zanker, M., Felfernig, A., Friedrich, G.: Recommender Systems: An Introduction. Cambridge University Press, Cambridge (2010)
Kelly, D., Belkin, N.J.: Reading time, scrolling and interaction: exploring implicit sources of user preferences for relevance feedback. In: Proceedings of the SIGIR Conference on Research and Development in Information Retrieval, pp. 408–409. ACM (2001)
Kersten, M.: Focusing knowledge work with task context. Ph.D. thesis, University of British Columbia (2007)
Kersten, M., Murphy, G.C.: Using task context to improve programmer productivity. In: Young, M., Devanbu, P.T. (eds.) Proceedings of FSE, pp. 1–11. ACM (2006)
Kirwan, B., Ainsworth, L.K.: A Guide to Task Analysis: The Task Analysis Working Group. CRC Press, Boca Raton (1992)
Kuniavsky, M.: Observing the User Experience: A Practitioner’s Guide to User Research. Morgan Kaufmann, Boston (2003)
Laxman, S., Sastry, P., Unnikrishnan, K.: Discovering frequent episodes and learning hidden markov models: a formal connection. IEEE Trans. Knowl. Data Eng. 17(11), 1505–1517 (2005)
Lee, S., Kang, S.: Clustering navigation sequences to create contexts for guiding code navigation. J. Syst. Softw. 86(8), 2154–2165 (2013)
Lessmann, S., Baesens, B., Mues, C., Pietsch, S.: Benchmarking classification models for software defect prediction: a proposed framework and novel findings. Trans. Softw. Eng. 34(4), 485–496 (2008)
Li, Z., Zhou, Y.: Pr-miner: automatically extracting implicit programming rules and detecting violations in large software code. In: ACM SIGSOFT Software Engineering Notes, vol. 30, pp. 306–315. ACM (2005)
Lidwell, W., Holden, K., Butler, J.: Universal Principles of Design, Revised and Updated: 125 Ways to Enhance Usability, Influence Perception, Increase Appeal, Make Better Design Decisions, and Teach Through Design. Rockport Publishers, Rockport (2010)
Livshits, B., Zimmermann, T.: Dynamine: finding common error patterns by mining software revision histories. In: ACM SIGSOFT Software Engineering Notes, vol. 30, pp. 296–305. ACM (2005)
Lloyd, S.: Least squares quantization in PCM. IEEE Trans. Inf. Theor. 28(2), 129–137 (1982)
Lo, D., Khoo, S.C.: Quark: empirical assessment of automaton-based specification miners. In: Proceedings of Working Conference on Reverse Engineering, pp. 51–60. IEEE (2006)
Lovins, J.B.: Development of a Stemming Algorithm. MIT Information Processing Group, Electronic Systems Laboratory, Cambridge (1968)
Lozano, A., Kellens, A., Mens, K., Arevalo, G., et al.: Mentor: mining entities to rules. In: Proceedings of the Belgian-Netherlands Evolution Workshop (2010)
Martin, B., Hanington, B., Hanington, B.M.: Universal Methods of Design: 100 Ways to Research Complex Problems, Develop Innovative Ideas, and Design Effective Solutions. Rockport Publishers, Rockport (2012)
Maulsby, D., Greenberg, S., Mander, R.: Prototyping an intelligent agent through wizard of Oz. In: Proceedings of the INTERACT 1993 and CHI 1993 Conference on Human Factors in Computing Systems, pp. 277–284. ACM (1993)
McCallum, A., Nigam, K., Ungar, L.H.: Efficient clustering of high-dimensional data sets with application to reference matching. In: Proceedings of the Sixth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp. 169–178. ACM (2000)
McCarey, F., Cinnéide, M.O., Kushmerick, N.: A case study on recommending reusable software components using collaborative filtering. In: Proceedings of the MSR, pp. 117–121. IET (2004)
Meyer, A., Fritz, T., Murphy, G., Zimmermann, T.: Software developers’ perceptions of productivity. In: Proceedings of the ACM SIGSOFT Foundations of Software Engineering, pp. 19–29 (2014)
Meyer, A.N., Fritz, T., Murphy, G.C., Zimmermann, T.: Software developers’ perceptions of productivity. In: Proceedings of SIGSOFT International Symposium on Foundations of Software Engineering (2014)
Michail, A.: Data mining library reuse patterns using generalized association rules. In: Proceedings of the International Conference on Software Engineering, pp. 167–176. ACM (2000)
Monsell, S.: Task switching. Elsevier TRENDS Cogn. Sci. 7(3), 134–140 (2003)
Murphy, G.C., Kersten, M., Findlater, L.: How are java software developers using the elipse IDE? IEEE Softw. 23(4), 76–83 (2006)
Murphy-Hill, E., Black, A.: An interactive ambient visualization for code smells (2010)
Murphy-Hill, E., Jiresal, R., Murphy, G.C.: Improving software developers’ fluency by recommending development environment commands. In: Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, FSE 2012, pp. 42:1–42:11. ACM (2012). http://doi.acm.org/10.1145/2393596.2393645
Murphy-Hill, E., Murphy, G.C.: Recommendation delivery. In: Robillard, M.P., Maalej, W., Walker, R.J., Zimmermann, T. (eds.) Recommendation Systems in Software Engineering, Chap. 9, pp. 223–242. Springer, Heidelberg (2014)
Muşlu, K., Brun, Y., Holmes, R., Ernst, M.D., Notkin, D.: Speculative analysis of integrated development environment recommendations. ACM SIGPLAN Not. 47(10), 669–682 (2012)
Nagappan, M., Zimmermann, T., Bird, C.: Diversity in software engineering research. In: Proceedings of ESEC/FSE, pp. 466–476. ACM (2013)
Nguyen, A.T., Nguyen, T.T., Nguyen, H.A., Tamrawi, A., Nguyen, H.V., Al-Kofahi, J., Nguyen, T.N.: Graph-based pattern-oriented, context-sensitive source code completion. In: Proceedings of the International Conference on Software Engineering, pp. 69–79. IEEE Press (2012)
Nguyen, H.A., Nguyen, T.T., Pham, N.H., Al-Kofahi, J.M., Nguyen, T.N.: Accurate and efficient structural characteristic feature extraction for clone detection. In: Chechik, M., Wirsing, M. (eds.) FASE 2009. LNCS, vol. 5503, pp. 440–455. Springer, Heidelberg (2009)
Nguyen, T.T., Nguyen, A.T., Nguyen, H.A., Nguyen, T.N.: A statistical semantic language model for source code. In: Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering, pp. 532–542. ACM (2013)
Nguyen, T.T., Nguyen, H.A., Pham, N.H., Al-Kofahi, J.M., Nguyen, T.N.: Graph-based mining of multiple object usage patterns. In: Proceedings of ESEC/FSE, pp. 383–392. ACM (2009)
Nielsen, J.: Card Sorting: How Many Users to Test. Jakob Nielsen’s Alertbox (2004)
Nielsen, J., Molich, R.: Heuristic evaluation of user interfaces. In: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, pp. 249–256. ACM (1990)
Nielsen, J., Sano, D.: Design of sunweb-sun microsystems’ intranet. Useit.com (1994)
Novak, J.D.: Learning How to Learn. Cambridge University Press, Cambridge (1984)
Novak, J.D., Cañas, A.J.: The theory underlying concept maps and how to construct and use them. Technical report HMC CmapTools 2006–01, Institute for Human and Machine Computation (2008)
Patel, S., Bosley, W., Culyba, D., Haskell, S.A., Hosmer, A., Jackson, T., Liesegang, S.J., Stepniewicz, P., Valenti, J., Zayat, S., et al.: A guided performance interface for augmenting social experiences with an interactive animatronic character. In: AIIDE, pp. 72–79 (2006)
Ponzanelli, L., Bavota, G., Di Penta, M., Oliveto, R., Lanza, M.: Mining StackOverflow to turn the IDE into a self-confident programming prompter. In: Proceedings of the 11th Working Conference on Mining Software Repositories, MSR 2014, pp. 102–111. ACM (2014)
Pradel, M., Gross, T.R.: Leveraging test generation and specification mining for automated bug detection without false positives. In: International Conference on Software Engineering, pp. 288–298. IEEE (2012)
Pradel, M., Jaspan, C., Aldrich, J., Gross, T.R.: Statically checking API protocol conformance with mined multi-object specifications. In: Proceedings of the International Conference on Software Engineering, pp. 925–935. IEEE Press (2012)
Preszler, R.: Cooperative concept mapping: improving performance in undergraduate biology. J. Coll. Sci. Teach. 33(6), 30–35 (2004)
Proksch, S., Amann, S., Mezini, M.: Towards standardized evaluation of developer-assistance tools. In: Proceedings of the 4th International Workshop on Recommendation Systems for Software Engineering, pp. 14–18. ACM (2014)
Reynolds, T.J., Gutman, J.: Laddering theory, method, analysis, and interpretation. J. Advertising Res. 28(1), 11–31 (1988)
Robillard, M.P.: Topology analysis of software dependencies. ACM Trans. Softw. Eng. Methodol. 17(4), 18 (2008)
Robillard, M., Walker, R., Zimmermann, T.: Recommendation systems for software engineering. Software 27(4), 80–86 (2010)
Robles, G.: Replicating MSR: a study of the potential replicability of papers published in the mining software repositories proceedings. In: Proceedings of Mining Software Repositories, pp. 171–180. IEEE (2010)
Rosenberg, M.J.: Cognitive structure and attitudinal affect. J. Abnorm. Soc. Psychol. 53(3), 367 (1956)
Ryan, G.W., Bernard, H.R.: Data Management and Analysis Methods. Handbook of Qualitative Research (2000)
Sahavechaphan, N., Claypool, K.: Xsnippet: mining for sample code. ACM Sigplan Not. 41(10), 413–430 (2006)
Salton, G., Wong, A., Yang, C.S.: A vector space model for automatic indexing. Commun. ACM 18(11), 613–620 (1975)
Schwarz, P.: The Art of the Long View–Planning for the Future in an Uncertain World. Currency Doubleday, New York (1991)
Serenko, A.: The use of interface agents for email notification in critical incidents. Int. J. Hum.-Comput. Stud. 64(11), 1084–1098 (2006)
Serenko, A., Stach, A.: The impact of expectation disconfirmation on customer loyalty and recommendation behavior: investigating online travel and tourism services. J. Inf. Technol. Manag. 20(3), 26–41 (2009)
Singer, J., Elves, R., Storey, M.A.: Navtracks: supporting navigation in software maintenance. In: Proceedings of the IEEE International Conference on Software Maintenance, ICSM 2005, pp. 325–334. IEEE Computer Society, Washington, DC, USA (2005)
Sjøberg, D.I., Hannay, J.E., Hansen, O., Kampenes, V.B., Karahasanovic, A., Liborg, N.K., Rekdal, A.C.: A survey of controlled experiments in software engineering. Trans. Softw. Eng. 31(9), 733–753 (2005)
Sommer, B., Sommer, R.: A Practical Guide to Behavioral Research: Tools and Techniques. Oxford University Press, Oxford (1991)
Spencer, D.: Card Sorting: Designing Usable Categories. Rosenfeld Media, New York (2009)
Subramanian, S., Inozemtseva, L., Holmes, R.: Live API documentation. In: Proceedings of the International Conference on Software Engineering, ICSE 2014, pp. 643–652. ACM (2014)
Terveen, L., Hill, W.: Beyond recommender systems: helping people help each other. HCI New Millennium 1, 487–509 (2001)
Thummalapenta, S., Xie, T.: Parseweb: a programmer assistant for reusing open source code on the web. In: Proceedings of the International Conference on Automated Software Engineering, pp. 204–213. ACM (2007)
Urquhart, C., Light, A., Thomas, R., Barker, A., Yeoman, A., Cooper, J., Armstrong, C., Fenton, R., Lonsdale, R., Spink, S.: Critical incident technique and explicitation interviewing in studies of information behavior. Libr. Inf. Sci. Res. 25(1), 63–88 (2003)
Wansink, B.: Using laddering to understand and leverage a brand’s equity. Qual. Mark. Res.: Int. J. 6(2), 111–118 (2003)
Warfel, T.Z.: Prototyping: A Practitioner’s Guide. Rosenfeld Media, New York (2009)
Wasson, C.: Ethnography in the field of design. Hum. Organ. 59(4), 377–388 (2000)
Wasylkowski, A., Zeller, A., Lindig, C.: Detecting object usage anomalies. In: Proceedings of ESEC/FSE, pp. 35–44. ACM, New York (2007)
Weimer, M., Karatzoglou, A., Bruch, M.: Maximum margin code recommendation. In: Proceedings of the Conference on Recommender Systems (2009)
Wharton, C., Rieman, J., Lewis, C., Polson, P.: The cognitive walkthrough method: a practitioner’s guide. In: Usability Inspection Methods, pp. 105–140. Wiley Inc. (1994)
Zeisel, J.: Inquiry by Design: Tools for Environment-Behaviour Research. CUP Archive (1984)
Zeisel, J.: Inquiry by Design: Environment/Behavior/Neuroscience in Architecture, Interiors, Landscape, and Planning. WW Norton and Co, York (2006)
Acknowledgements
We thank the organizers of the Laser 2014 Summer School for an invigorating week of discussion, which has carried through the writing of this chapter. We also thank the anonymous reviewer for the valuable comments and suggestions to improve the quality of the paper.
The work presented in this paper was partially funded by NSERC and by the German Federal Ministry of Education and Research (BMBF) within the Software Campus projects KaVE (grant no. 01IS12054), and IndRe (grant no. 01IS12057).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this chapter
Cite this chapter
Proksch, S., Bauer, V., Murphy, G.C. (2015). How to Build a Recommendation System for Software Engineering. In: Meyer, B., Nordio, M. (eds) Software Engineering. LASER LASER 2013 2014. Lecture Notes in Computer Science(), vol 8987. Springer, Cham. https://doi.org/10.1007/978-3-319-28406-4_1
Download citation
DOI: https://doi.org/10.1007/978-3-319-28406-4_1
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-28405-7
Online ISBN: 978-3-319-28406-4
eBook Packages: Computer ScienceComputer Science (R0)