ABSTRACT
Software maintenance is a relevant and expensive phase of the software development process. Developers have to deal with legacy and undocumented code that hinders the comprehension of the software system at hand. Enhancing program comprehension by means of recommender systems in the Integrated Development Environment (IDE) is a solution to assist developers in these tasks. The recommender systems proposed so far generally share common weaknesses: they are not proactive, they consider a single type of data-source, and in case of multiple data-source, relevant items are suggested together without considering interactions among them. We envision a future where recommender systems follow a holistic approach: They provide knowledge regarding a programming context by considering information beyond the one provided by single elements in the context of the software development. The recommender system should consider different elements such as development artifact (e.g., bug reports, mailing lists), and online resources (e.g., blogs, Q&A web sites, API documentation), developers activities, repository history etc. The provided information should be novel and emerge from the semantic links created by the analysis of the interactions among these elements.
- A. Bacchelli, M. D’Ambros, and M. Lanza. Are popular classes more defect prone? In Proceedings of FASE 2010 (13th international conference on Fundamental Approaches to Software Engineering), pages 59–73. Springer-Verlag, 2010. Google ScholarDigital Library
- A. Bacchelli, L. Ponzanelli, and M. Lanza. Harnessing stack overflow for the ide. In Proceedings of RSSE 2012 (3rd International Workshop on Recommendation Systems for Software Engineering), pages 26–30. IEEE CS Press, 2012.Google Scholar
- V. R. Basili, L. C. Briand, and W. L. Melo. A validation of object-oriented design metrics as quality indicators. IEEE Transactions on Software Engineering, 22(10):751–761, Oct. 1996. Google ScholarDigital Library
- A. Bragdon, S. P. Reiss, R. Zeleznik, S. Karumuri, W. Cheung, J. Kaplan, C. Coleman, F. Adeputra, and J. J. Laviola. Code bubbles: Rethinking the user interface paradigm of integrated development environments. In Proceedings of ICSE 2010 (32nd ACM /IEEE International Conference on Software Engineering), pages 293–296. ACM, 2010. Google ScholarDigital Library
- T. Corbi. Program Understanding: Challenge for the 1990s. IBM Systems Journal, 28(2):294–306, 1989. Google ScholarDigital Library
- D. Cubranic and G. Murphy. Hipikat: recommending pertinent software development artifacts. In Proceedings of ICSE 2003 (25th IEEE International Conference on Software Engineering), pages 408–418. IEEE CS Press, 2003. Google ScholarDigital Library
- A. Davis. 201 Principles of Software Development. McGraw-Hill, 1995. Google ScholarDigital Library
- R. DeLine and K. Rowan. Code canvas: zooming towards better development environments. In Proceedings of ICSE 2010 (32nd ACM /IEEE International Conference on Software Engineering), pages 207–210. ACM, 2010. Google ScholarDigital Library
- M. Goldman and R. Miller. Codetrail: Connecting source code and web resources. Journal of Visual Languages & Computing, pages 223––235, 2009. Google ScholarDigital Library
- R. Holmes and A. Begel. Deep intellisense: a tool for rehydrating evaporated information. In Proceedings of MSR 2008 (5th international working conference on Mining software repositories), pages 23–26. ACM, 2008. Google ScholarDigital Library
- R. Holmes, R. Walker, and G. Murphy. Strathcona example recommendation tool. SIGSOFT Software Engineering Notes, 30:237–240, 2005. Google ScholarDigital Library
- O. Kononenko, D. Dietrich, R. Sharma, and R. Holmes. Automatically locating relevant programming help online. In Proceedings of VL /HCC 2012 (The IEEE Symposium on Visual Languages and Human-Centric Computing), pages 127–134. IEEE, 2012.Google Scholar
- D. Lam, S. L. Rohall, C. Schmandt, and M. K. Stern. Exploiting e-mail structure to improve summarization. In Proceeding of CSCW 2002 (ACM Conference on Computer Supported Cooperative). ACM, 2002.Google Scholar
- T. D. LaToza, G. Venolia, and R. DeLine. Maintaining mental models: a study of developer work habits. In Proceedings of ICSE 2006 (28th ACM International Conference on Software Engineering), pages 492–501. ACM, 2006. Google ScholarDigital Library
- B. Lientz and B. Swanson. Problems in Application Software Maintenance. Communications of the ACM, 24(11):763–769, 1981. Google ScholarDigital Library
- L. Mamykina, B. Manoim, M. Mittal, G. Hripcsak, and B. Hartmann. Design lessons from the fastest Q&A site in the west. In Proceedings of CHI 2011 (29th Conference on Human factors in computing systems), pages 2857––2866. ACM, 2011. Google ScholarDigital Library
- R. Moser, W. Pedrycz, and G. Succi. A comparative analysis of the e fficiency of change metrics and static code attributes for defect prediction. In Proceedings of ICSE 2008 (30th International Conference on Software Engineering), pages 181–190. ACM, 2008. Google ScholarDigital Library
- N. Nagappan, T. Ball, and A. Zeller. Mining metrics to predict component failures. In Proceedings of ICSE 2006 (28th International Conference on Software Engineering), pages 452–461. ACM, 2006. Google ScholarDigital Library
- L. Ponzanelli, A. Bacchelli, and M. Lanza. Leveraging crowd knowledge for software comprehension and development. In Proceedings of CSMR 2013 (17th IEEE European Conference on Software Maintenance and Reengineering), pages 59–66. IEEE, 2013. Google ScholarDigital Library
- L. Ponzanelli, A. Bacchelli, and M. Lanza. Seahawk: Stack Overflow in the IDE. In Proceedings of ICSE 2013 (35th ACM /IEEE International Conference on Software Engineering), pages 1295–1298. IEEE CS Press, 2013. Google ScholarDigital Library
- S. Rastkar, G. Murphy, and G. Murray. Summarizing software artifacts: a case study of bug reports. In Proceedings of ICSE 2010 (32nd ACM /IEEE International Conference on Software Engineering), pages 505–514. ACM, 2010. Google ScholarDigital Library
- M. P. Robillard, R. J. Walker, and T. Zimmermann. Recommendation systems for software engineering. IEEE Software, 27(4):80–86, 2010. Google ScholarDigital Library
- N. Sawadsky and G. Murphy. Fishtail: from task context to source code examples. In Proceedings of TOPI 2011 (1st Workshop on Developing Tools as Plug-ins), pages 48–51. ACM, 2011. Google ScholarDigital Library
- I. Sommerville. Software Engineering. Addison-Wesley, 7th edition, 2004. Google ScholarDigital Library
- A. M. Sonia Haiduc, Jairo Aponte. Supporting program comprehension with source code summarization. In Proceedings of ICSE 2010 (32nd ACM /IEEE International Conference on Software Engineering), pages 223–226. ACM, 2010. Google ScholarDigital Library
- K. Spärck Jones. Automatic summarising: The state of the art. Information Processing and Management, 43(6):1449–1481, Nov. 2007. Google ScholarDigital Library
- J. Stylos and B. A. Myers. Mica: A web-search tool for finding api components and examples. In Proceedings of VL /HCC (The IEEE Symposium on Visual Languages and Human-Centric Computing), pages 195–202, 2006. Google ScholarDigital Library
- C. Treude, O. Barzilay, and M. A. Storey. How do programmers ask and answer questions on the web? (NIER track). In Proceedings of ICSE 2011 (33rd International Conference on Software Engineering), pages 804–807. ACM, 2011. Google ScholarDigital Library
- T. Zimmermann, R. Premraj, and A. Zeller. Predicting defects for eclipse. In Proceedings of PROMISE 2007 (3rd International Workshop on Predictor Models in Software Engineering), page 9. IEEE Computer Society, 2007. Google ScholarDigital Library
- T. Zimmermann, P. Weißgerber, S. Diehl, and A. Zeller. Mining version histories to guide software changes. In 26th International Conference on Software Engineering (ICSE 2004), pages 563–572. IEEE CS Press, 2004. Google ScholarDigital Library
Index Terms
- Holistic recommender systems for software engineering
Recommendations
Acquiring User Information Needs for Recommender Systems
WI-IAT '13: Proceedings of the 2013 IEEE/WIC/ACM International Joint Conferences on Web Intelligence (WI) and Intelligent Agent Technologies (IAT) - Volume 03Most recommender systems attempt to use collaborative filtering, content-based filtering or hybrid approach to recommend items to new users. Collaborative filtering recommends items to new users based on their similar neighbours, and content-based ...
Investigating serendipity in recommender systems based on real user feedback
SAC '18: Proceedings of the 33rd Annual ACM Symposium on Applied ComputingOver the past several years, research in recommender systems has emphasized the importance of serendipity, but there is still no consensus on the definition of this concept and whether serendipitous items should be recommended is still not a well-...
A Scalable, Accurate Hybrid Recommender System
WKDD '10: Proceedings of the 2010 Third International Conference on Knowledge Discovery and Data MiningRecommender systems apply machine learning techniques for filtering unseen information and can predict whether a user would like a given resource. There are three main types of recommender systems: collaborative filtering, content-based filtering, and ...
Comments