Abstract:Software developers interact with APIs on a daily basis and, therefore, often face the need to learn how to use new APIs suitable for their purposes. Previous work has shown that recommending usage patterns to developers facilitates the learning process. Current approaches to usage pattern recommendation, however, still suffer from high redundancy and poor run-time performance. In this paper, we reformulate the problem of usage pattern recommendation in terms of a collaborativefiltering recommender system. We … Show more
“…Concerning the data preprocessing phase, we reported the most common ones used in software development, i.e., techniques that mine source code, documentation, and software projects. Such strategies have been excerpted both from existing RSSE as well as recommender systems that we have actually implemented [5,[16][17][18][19]25] in the context of the CROSSMINER project. According to the peculiar nature of data sources, one technique is more suitable rather than another.…”
Section: Design Features Of Recommender Systemsmentioning
confidence: 99%
“…Capturing context Producing recommendation Presenting recommendation Strathcona [7] AST parsing Keyword extraction Six heuristic functions IDE integration Sourcerer [12] AST parsing Indexing Custom ranking scheme (Heuristic) Web interface FaCoY [9] AST parsing Indexing Alternate query (Heuristic) Web interface PROMPTER [21] NLP Indexing Custom ranking model (Heuristic) IDE integration CrossSim [18] Graph representation Feature extraction Content-based filtering Web interface CrossRec [19] Graph representation Feature extraction Collaborative filtering IDE integration FOCUS [16] Tensor API calls extraction Context-aware collaborative filtering IDE integration AURORA [17] NLP Feature extraction Feed forward neural network Web interface MNB [5] Vectorization Feature extraction Bayesian Network Raw outcomes PostFinder [25] AST Parsing Indexing Heuristics IDE integration is that they reduce the development effort by avoiding complex data structures. Despite this, they may reach sub-optimal results compared to more sophisticated techniques and they should be carefully selected considering the context of the recommendations.…”
Section: Recommendation System Data Preprocessingmentioning
confidence: 99%
“…We have partially realized the paradigm presented in Fig. 1 in a series of recent work [16][17][18][19]. In particular, various components, which are listed in the gray rows of Table 1, have been properly implemented and evaluated using real-world datasets (marked as the bold edges in Fig.…”
Section: Preparatory Workmentioning
confidence: 99%
“…FOCUS [16] supports the development activities by recommending API function calls. After the extraction of relevant elements from the developer's source code, the tool encodes these elements in a tensor and searches for possible matching by using a contextaware collaborative-filtering technique.…”
In recent years, recommender systems have gained an increasingly crucial role in software engineering. Such systems allow developers to exploit a plethora of reusable artifacts, including source code and documentation, which can support the development activities. However, recommender systems are complex tools that are difficult to personalize or fine-tune if developers want to improve them for increasing the relevance of the retrievable recommendations. In this paper, we propose a low-code development approach to engineering recommender systems. Low-code platforms enable the creation and deployment of fully functional applications by mainly using visual abstractions and interfaces and requiring little or no procedural code. Thus, we aim to foster a low-code way of building recommender systems by means of a metamodel to represent the peculiar components. Then, dedicated supporting tools are also proposed to help developers easily model and build their custom recommender systems. Preliminary evaluations of the approach have been conducted by reimplementing real recommender systems, confirming the feasibility of developing them in a low-code manner. CCS CONCEPTS • Software and its engineering → Graphical user interface languages; Application specific development environments.
“…Concerning the data preprocessing phase, we reported the most common ones used in software development, i.e., techniques that mine source code, documentation, and software projects. Such strategies have been excerpted both from existing RSSE as well as recommender systems that we have actually implemented [5,[16][17][18][19]25] in the context of the CROSSMINER project. According to the peculiar nature of data sources, one technique is more suitable rather than another.…”
Section: Design Features Of Recommender Systemsmentioning
confidence: 99%
“…Capturing context Producing recommendation Presenting recommendation Strathcona [7] AST parsing Keyword extraction Six heuristic functions IDE integration Sourcerer [12] AST parsing Indexing Custom ranking scheme (Heuristic) Web interface FaCoY [9] AST parsing Indexing Alternate query (Heuristic) Web interface PROMPTER [21] NLP Indexing Custom ranking model (Heuristic) IDE integration CrossSim [18] Graph representation Feature extraction Content-based filtering Web interface CrossRec [19] Graph representation Feature extraction Collaborative filtering IDE integration FOCUS [16] Tensor API calls extraction Context-aware collaborative filtering IDE integration AURORA [17] NLP Feature extraction Feed forward neural network Web interface MNB [5] Vectorization Feature extraction Bayesian Network Raw outcomes PostFinder [25] AST Parsing Indexing Heuristics IDE integration is that they reduce the development effort by avoiding complex data structures. Despite this, they may reach sub-optimal results compared to more sophisticated techniques and they should be carefully selected considering the context of the recommendations.…”
Section: Recommendation System Data Preprocessingmentioning
confidence: 99%
“…We have partially realized the paradigm presented in Fig. 1 in a series of recent work [16][17][18][19]. In particular, various components, which are listed in the gray rows of Table 1, have been properly implemented and evaluated using real-world datasets (marked as the bold edges in Fig.…”
Section: Preparatory Workmentioning
confidence: 99%
“…FOCUS [16] supports the development activities by recommending API function calls. After the extraction of relevant elements from the developer's source code, the tool encodes these elements in a tensor and searches for possible matching by using a contextaware collaborative-filtering technique.…”
In recent years, recommender systems have gained an increasingly crucial role in software engineering. Such systems allow developers to exploit a plethora of reusable artifacts, including source code and documentation, which can support the development activities. However, recommender systems are complex tools that are difficult to personalize or fine-tune if developers want to improve them for increasing the relevance of the retrievable recommendations. In this paper, we propose a low-code development approach to engineering recommender systems. Low-code platforms enable the creation and deployment of fully functional applications by mainly using visual abstractions and interfaces and requiring little or no procedural code. Thus, we aim to foster a low-code way of building recommender systems by means of a metamodel to represent the peculiar components. Then, dedicated supporting tools are also proposed to help developers easily model and build their custom recommender systems. Preliminary evaluations of the approach have been conducted by reimplementing real recommender systems, confirming the feasibility of developing them in a low-code manner. CCS CONCEPTS • Software and its engineering → Graphical user interface languages; Application specific development environments.
“…Having access to similar software projects helps developers speed up their development process. By looking at similar Open Source Software (OSS) projects, for example, developers are able to learn how relevant classes are implemented, and in some certain extent, to reuse useful source code [6,7,9].…”
Background-Research on empirical software engineering has increasingly been conducted by analysing and measuring vast amounts of software systems. Hundreds, thousands and even millions of systems have been (and are) considered by researchers, and often within the same study, in order to test theories, demonstrate approaches or run prediction models. A much less investigated aspect is whether the collected metrics might be context-specific, or whether systems should be better analysed in clusters. Objective-The objectives of this study are (i) to define a set of clustering techniques that might be used to group similar software systems, and (ii) to evaluate whether a suite of well-known object-oriented metrics is context-specific, and its values differ along the defined clusters. Method-We group software systems based on three different clustering techniques, and we collect the values of the metrics suite in each cluster. We then test whether clusters are statistically different between each other, using the Kolgomorov-Smirnov (KS) hypothesis testing. Results-Our results show that, for two of the used techniques, the KS null hypothesis (e.g., the clusters come from the same population) is rejected for
Software similarity in different programming codes is a rapidly evolving field because of its numerous applications in software development, software cloning, software plagiarism, and software forensics. Currently, software researchers and developers search cross‐language open‐source repositories for similar applications for a variety of reasons, such as reusing programming code, analyzing different implementations, and looking for a better application. However, it is a challenging task because each programming language has a unique syntax and semantic structure. In this paper, a novel tool called Cross‐Language Software Similarity (CroLSSim) is designed to detect similar software applications written in different programming codes. First, the Abstract Syntax Tree (AST) features are collected from different programming codes. These are high‐quality features that can show the abstract view of each program. Then, Methods Description (MDrep) in combination with AST is used to examine the relationship among different method calls. Second, the Term Frequency Inverse Document Frequency approach is used to retrieve the local and global weights from AST‐MDrep features. Third, the Latent Semantic Analysis‐based features extraction and selection method is proposed to extract the semantic anchors in reduced dimensional space. Fourth, the Convolution Neural Network (CNN)‐based features extraction method is proposed to mine the deep features. Finally, a hybrid deep learning model of CNN‐Long‐Short‐Term Memory is designed to detect semantically similar software applications from these latent variables. The data set contains approximately 9.5K Java, 8.8K C#, and 7.4K C++ software applications obtained from GitHub. The proposed approach outperforms as compared with the state‐of‐the‐art methods.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.