31 research outputs found
Reengineering legacy software products into software product line
Ph.DDOCTOR OF PHILOSOPH
TGMM: Combining Parse Tree with GPU for Scalable Multilingual and Multi-Granularity Code Clone Detection
The rapid evolution of programming languages and software systems has
necessitated the implementation of multilingual and scalable clone detection
tools. However, it is difficult to achieve the above requirements at the same
time. Most existing tools only focus on one challenge. In this work, we propose
TGMM, a tree and GPU-based tool for multilingual and multi-granularity code
clone detection. By generating parse trees based on user-provided grammar
files, TGMM can extract code blocks at a specified granularity and detect
Type-3 clones efficiently. In order to show the performance of TGMM, we compare
it with seven state-of-the-art tools in terms of recall, precision, and
execution time. TGMM ranks first in execution time and precision, while its
recall is comparable to the others. Moreover, we analyzed the language
extensibility of TGMM across 30 mainstream programming languages. Out of these,
a total of 25 languages were supported, while the remaining five currently lack
the necessary grammar files. Finally, we analyzed the clone characteristics of
nine popular languages at five common granularities, hoping to inspire future
researchers. The source code of TGMM is available at:
https://github.com/TGMM24/TGMM.git.Comment: 14 pages, 7 figure
Feedback-based debugging
National Research Foundation (NRF) Singapor
Detecting differences across multiple instances of code clones
Clone detectors find similar code fragments (i.e., instances of code clones) and report large numbers of them for industrial systems. To maintain or manage code clones, developers often have to in-vestigate differences of multiple cloned code fragments. However, existing program differencing techniques compare only two code fragments at a time. Developers then have to manually combine several pairwise differencing results. In this paper, we present an approach to automatically detecting differences across multiple clone instances. We have implemented our approach as an Eclipse plugin and evaluated its accuracy with three Java software systems. Our evaluation shows that our algorithm has precision over 97.66% and recall over 95.63 % in three open source Java projects. We also conducted a user study of 18 developers to evaluate the use-fulness of our approach for eight clone-related refactoring tasks. Our study shows that our approach can significantly improve de-velopers ’ performance in refactoring decisions, refactoring details, and task completion time on clone-related refactoring tasks. Au-tomatically detecting differences across multiple clone instances also opens opportunities for building practical applications of code clones in software maintenance, such as auto-generation of appli-cation skeleton, intelligent simultaneous code editing
Optimizing selection of competing services with probabilistic hierarchical refinement
Recently, many large enterprises (e.g., Netflix, Amazon) have decomposed their monolithic application into services, and composed them to fulfill their business functionalities. Many hosting services on the cloud, with different Quality of Service (QoS) (e.g., availability, cost), can be used to host the services. This is an example of competing services. QoS is crucial for the satisfaction of users. It is important to choose a set of services that maximize the overall QoS, and satisfy all QoS requirements for the service composition. This problem, known as optimal service selection, is NP-hard. Therefore, an effective method for reducing the search space and guiding the search process is highly desirable. To this end, we introduce a novel technique, called Probabilistic Hierarchical Refinement (ProHR). ProHR effectively reduces the search space by removing competing services that cannot be part of the selection. ProHR provides two methods, probabilistic ranking and hierarchical refinement, that enable smart exploration of the reduced search space. Unlike existing approaches that perform poorly when QoS requirements become stricter, ProHR maintains high performance and accuracy, independent of the strictness of the QoS requirements. ProHR has been evaluated on a publicly available dataset, and has shown significant improvement over existing approaches.No Full Tex