Papers by Qusay Idrees Sarhan

arXiv (Cornell University), Dec 2, 2020
Software module clustering is an unsupervised learning method used to cluster software entities (... more Software module clustering is an unsupervised learning method used to cluster software entities (e.g., classes, modules, or files) with similar features. The obtained clusters may be used to study, analyze, and understand the software entities' structure and behavior. Implementing software module clustering with optimal results is challenging. Accordingly, researchers have addressed many aspects of software module clustering in the past decade. Thus, it is essential to present the research evidence that has been published in this area. In this study, 143 research papers from well-known literature databases that examined software module clustering were reviewed to extract useful data. The obtained data were then used to answer several research questions regarding state-of-the-art clustering approaches, applications of clustering in software engineering, clustering processes, clustering algorithms, and evaluation methods. Several research gaps and challenges in software module clustering are discussed in this paper to provide a useful reference for researchers in this field.

We present a plug-in called "CharmFL" for the PyCharm IDE. It employs Spectrum-based Fault Locali... more We present a plug-in called "CharmFL" for the PyCharm IDE. It employs Spectrum-based Fault Localization to automatically analyze Python programs and produces a ranked list of potentially faulty program elements (i.e., statements, functions, etc.). Our tool offers advanced features, e.g., it enables the users to give their feedback on the suspicious elements to help re-rank them, thus improving the fault localization process. The tool utilizes contextual information about program elements complementary to the spectrum data. The users can explore function call graphs during a failed test. Thus they can investigate the data flow traces of any failed test case or construct a causal inference model for the location of the fault. The tool has been used with a set of experimental use cases. • Software and its engineering → Dynamic analysis; Software maintenance tools; Integrated and visual development environments; Software testing and debugging; • Human-centered computing → Interactive systems and tools.
Effective Spectrum Based Fault Localization Using Contextual Based Importance Weight
Communications in computer and information science, 2022

Spectrum-Based Fault Localization (SBFL) computes suspicion scores, using risk evaluation formula... more Spectrum-Based Fault Localization (SBFL) computes suspicion scores, using risk evaluation formulas, for program elements (e.g., statements, methods, or classes) by counting how often each element is executed or not executed by passing versus failing test cases. The elements are then ranked from most suspicious to least suspicious based on their scores. The elements with the highest scores are thought to be the most faulty. The final ranking list of program elements helps testers during the debugging process when attempting to locate the source of a bug in the program under test. In this paper, we present an approach that gives more importance to program elements that are executed by more failed test cases compared to other elements. In essence, we are emphasizing the failing test cases factor because there are comparably much less failing tests than passing ones. We multiply each element's suspicion score obtained by an SBFL formula by this importance weight, which is the ratio of covering failing tests over all failing tests. The proposed approach can be applied to SBFL formulas without modifying their structures. The experimental results of our study show that our approach achieved a better performance in terms of average ranking compared to the underlying SBFL formulas. It also improved the Top-N categories and increased the number of cases in which the faulty method became the top-ranked element.
New Ranking Formulas to Improve Spectrum Based Fault Localization Via Systematic Search
Systematically Generated Formulas for Spectrum-Based Fault Localization
2023 IEEE International Conference on Software Testing, Verification and Validation Workshops (ICSTW)
SFLaaS: Software Fault Localization as a Service
2023 IEEE Conference on Software Testing, Verification and Validation (ICST)
Poster: Improving Spectrum Based Fault Localization For Python Programs Using Weighted Code Elements
2023 IEEE Conference on Software Testing, Verification and Validation (ICST)
Experimental Evaluation of A New Ranking Formula for Spectrum based Fault Localization
2022 IEEE 22nd International Working Conference on Source Code Analysis and Manipulation (SCAM)

Proceedings of the 13th International Workshop on Automating Test Case Design, Selection and Evaluation
Spectrum-Based Fault Localization (SBFL) is one of the most popular genres of Fault Localization ... more Spectrum-Based Fault Localization (SBFL) is one of the most popular genres of Fault Localization (FL) methods among researchers. One possibility to increase the practical usefulness of related tools is to involve interactivity between the user and the core FL algorithm. In this setting, the developer provides feedback to the fault localization algorithm while iterating through the elements suggested by the algorithm. This way, the proposed elements can be influenced in the hope to reach the faulty element earlier (we call the proposed approach Interactive Fault Localization, or iFL). With this work, we would like to propose a presentation of our recent achievements in this topic. In particular, we overview the basic approach, and the supporting tools that we implemented for the actual usage of the method in different contexts: iFL4Eclipse for Java developers using the Eclipse IDE, and CharmFL for Python developers using the PyCharm IDE. Our aim is to provide an insight into the practicalities and effectiveness of the iFL approach, while acquiring valuable feedback. In addition, with the demonstration we would like to catalyse the discussion with researchers on the topic. • Software and its engineering → Dynamic analysis; Software maintenance tools; Integrated and visual development environments; Software testing and debugging; • Human-centered computing → Interactive systems and tools.
Uploads
Papers by Qusay Idrees Sarhan