Lecturer: Prof. Davide Di Ruscio

Abstract: Open-source software (OSS) forges contain rich data sources useful for supporting development activities. Several techniques and tools have been promoted to provide open-source developers with innovative features, aiming to obtain improvements in development effort, cost savings, and developer productivity. In the context of the EU H2020 CROSSMINER and TYPHON projects, different recommendation systems have been conceived to assist software programmers in different phases of the development process by providing them with various artifacts, such as third-party libraries, or documentation about how to use the APIs being adopted, or relevant API function calls. To develop such recommendations, various technical choices have been made to overcome issues related to several aspects, including the lack of baselines, limited data availability, decisions about the performance measures, and evaluation approaches. This lecture introduces Recommendation Systems in Software Engineering (RSSE) and describes the challenges that have been encountered in the context of the CROSSMINER and TYPHON projects. Specific attention is devoted to present the intricacies related to the development and evaluation techniques that have been employed to conceive and evaluate the CROSSMINER recommendation systems. The lessons that have been learned while working on the project are also discussed.



  • Lecture 1, 21/07/2022, 10:00-13:00:  Development of complex software systems by reusing third-party open-source components. [MS Teams code: 9kkf5ny]
  • Lecture 2, 22/07/2022, 10:00-13:00: The recommendation systems developed in the CROSSMINER and TYPHON projects [MS Teams code: 9kkf5ny]


Related literature

  1. P. Robillard, W. Maalej, R. J. Walker, e T. Zimmermann, A c. di, Recommendation Systems in Software Engineering. Berlin, Heidelberg: Springer Berlin Heidelberg, 2014. doi: 10.1007/978-3-642-45135-5.
  2. Juri Di Rocco, Davide Di Ruscio, Claudio Di Sipio, Phuong T. Nguyen, Riccardo Rubei, “Development of recommendation systems for software engineering: the CROSSMINER experience” Empirical Software Engineering (EMSE), 2021, pre-print https://arxiv.org/abs/2103.06987
  3. Phuong T. Nguyen, Juri Di Rocco, Claudio Di Sipio, Davide Di Ruscio, Massimiliano Di Penta “Recommending API Function Calls and Code Snippets to Support Software Development” IEEE Transactions on Software Engineering (TSE), 2021, ISSN: 1939-3520, DOI: 10.1109/TSE.2021.3059907
  4. Phuong T. Nguyen, Juri Di Rocco, Davide Di Ruscio, Massimiliano Di Penta, “CrossRec: Supporting Software Developers by Recommending Third-party Libraries” Journal of Systems and Software (JSS), 2020, ISSN: 0164-1212, DOI: 10.1016/j.jss.2019.110460
  5. Phuong T. Nguyen, Juri Di Rocco, Riccardo Rubei, Davide Di Ruscio, “An Automated Approach to Assess the Similarity of GitHub Repositories” Software Quality Journal (SQJ), 2020, ISSN: 0963-9314, DOI: 10.1007/s11219-019-09483-0
  6. Andrea Capiluppi, Davide Di Ruscio, Juri Di Rocco, Phuong T. Nguyen, Nemitari Ajienka, “Detecting Java Software Similarities by using Different Clustering Techniques” Information and Software Technology (IST), 2020, ISSN: 0950-5849, DOI: 10.1016/j.infsof.2020.106279
  7. Riccardo Rubei, Claudio Di Sipio, Phuong T. Nguyen, Juri Di Rocco, Davide Di Ruscio, “PostFinder: Mining Stack Overflow posts to support software developers” Information and Software and Technology (IST), 2020, ISSN: 0950-5849, DOI: 10.1016/j.infsof.2020.106367
  8. Phuong T. Nguyen, Juri Di Rocco, Davide Di Ruscio, Lina Ochoa, Thomas Degueule, Massimiliano Di Penta, “FOCUS: A Recommender System for Mining API Function Calls and Usage Patterns” In Proceedings of the 41st International Conference on Software Engineering, ICSE 2019, DOI: 10.1109/ICSE.2019.00109
[COURSE] Development of recommendation systems in software engineering: challenges and lessons learned